summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r--chrome/browser/chromeos/extensions/file_browser_event_router.cc25
-rw-r--r--chrome/browser/chromeos/extensions/file_browser_event_router.h9
-rw-r--r--chrome/browser/chromeos/imageburner/burn_manager.cc7
-rw-r--r--chrome/browser/chromeos/imageburner/burn_manager.h10
-rw-r--r--chrome/browser/chromeos/login/login_utils.cc14
-rw-r--r--chrome/browser/chromeos/net/connectivity_state_helper.cc65
-rw-r--r--chrome/browser/chromeos/net/connectivity_state_helper.h20
-rw-r--r--chrome/browser/chromeos/net/connectivity_state_helper_observer.h21
-rw-r--r--chrome/browser/chromeos/net/mock_connectivity_state_helper.h8
9 files changed, 133 insertions, 46 deletions
diff --git a/chrome/browser/chromeos/extensions/file_browser_event_router.cc b/chrome/browser/chromeos/extensions/file_browser_event_router.cc
index 47d690b..aad1609 100644
--- a/chrome/browser/chromeos/extensions/file_browser_event_router.cc
+++ b/chrome/browser/chromeos/extensions/file_browser_event_router.cc
@@ -12,7 +12,6 @@
#include "base/prefs/public/pref_change_registrar.h"
#include "base/stl_util.h"
#include "base/values.h"
-#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/drive/drive_cache.h"
#include "chrome/browser/chromeos/drive/drive_file_system_interface.h"
#include "chrome/browser/chromeos/drive/drive_file_system_util.h"
@@ -22,6 +21,7 @@
#include "chrome/browser/chromeos/login/base_login_display_host.h"
#include "chrome/browser/chromeos/login/screen_locker.h"
#include "chrome/browser/chromeos/login/user_manager.h"
+#include "chrome/browser/chromeos/net/connectivity_state_helper.h"
#include "chrome/browser/extensions/event_names.h"
#include "chrome/browser/extensions/event_router.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -272,14 +272,10 @@ void FileBrowserEventRouter::Shutdown() {
system_service->drive_service()->RemoveObserver(this);
}
- chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
- if (cros_library) {
- chromeos::NetworkLibrary* network_library =
- cros_library->GetNetworkLibrary();
- if (network_library)
- network_library->RemoveNetworkManagerObserver(this);
+ if (chromeos::ConnectivityStateHelper::IsInitialized()) {
+ chromeos::ConnectivityStateHelper::Get()->
+ RemoveNetworkManagerObserver(this);
}
-
profile_ = NULL;
}
@@ -305,14 +301,10 @@ void FileBrowserEventRouter::ObserveFileSystemEvents() {
system_service->file_system()->AddObserver(this);
}
- chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
- if (cros_library) {
- chromeos::NetworkLibrary* network_library =
- cros_library->GetNetworkLibrary();
- if (network_library)
- network_library->AddNetworkManagerObserver(this);
+ if (chromeos::ConnectivityStateHelper::IsInitialized()) {
+ chromeos::ConnectivityStateHelper::Get()->
+ AddNetworkManagerObserver(this);
}
-
suspend_state_delegate_.reset(new SuspendStateDelegateImpl());
pref_change_registrar_->Init(profile_->GetPrefs());
@@ -533,8 +525,7 @@ void FileBrowserEventRouter::OnFormatEvent(
}
}
-void FileBrowserEventRouter::OnNetworkManagerChanged(
- chromeos::NetworkLibrary* network_library) {
+void FileBrowserEventRouter::NetworkManagerChanged() {
if (!profile_ ||
!extensions::ExtensionSystem::Get(profile_)->event_router()) {
NOTREACHED();
diff --git a/chrome/browser/chromeos/extensions/file_browser_event_router.h b/chrome/browser/chromeos/extensions/file_browser_event_router.h
index 868c042..46459c9 100644
--- a/chrome/browser/chromeos/extensions/file_browser_event_router.h
+++ b/chrome/browser/chromeos/extensions/file_browser_event_router.h
@@ -14,9 +14,9 @@
#include "base/memory/scoped_ptr.h"
#include "base/string16.h"
#include "base/synchronization/lock.h"
-#include "chrome/browser/chromeos/cros/network_library.h"
#include "chrome/browser/chromeos/drive/drive_file_system_observer.h"
#include "chrome/browser/chromeos/drive/drive_resource_metadata.h"
+#include "chrome/browser/chromeos/net/connectivity_state_helper_observer.h"
#include "chrome/browser/google_apis/drive_service_interface.h"
#include "chrome/browser/google_apis/operation_registry.h"
#include "chromeos/disks/disk_mount_manager.h"
@@ -35,7 +35,7 @@ class DriveFileSystemInterface;
class FileBrowserEventRouter
: public base::RefCountedThreadSafe<FileBrowserEventRouter>,
public chromeos::disks::DiskMountManager::Observer,
- public chromeos::NetworkLibrary::NetworkManagerObserver,
+ public chromeos::ConnectivityStateHelperObserver,
public drive::DriveFileSystemObserver,
public google_apis::DriveServiceObserver {
public:
@@ -88,9 +88,8 @@ class FileBrowserEventRouter
chromeos::FormatError error_code,
const std::string& device_path) OVERRIDE;
- // chromeos::NetworkLibrary::NetworkManagerObserver override.
- virtual void OnNetworkManagerChanged(
- chromeos::NetworkLibrary* network_library) OVERRIDE;
+ // chromeos::ConnectivityStateHelperObserver override.
+ virtual void NetworkManagerChanged() OVERRIDE;
// drive::DriveServiceObserver overrides.
virtual void OnProgressUpdate(
diff --git a/chrome/browser/chromeos/imageburner/burn_manager.cc b/chrome/browser/chromeos/imageburner/burn_manager.cc
index cae7667..7939f5b 100644
--- a/chrome/browser/chromeos/imageburner/burn_manager.cc
+++ b/chrome/browser/chromeos/imageburner/burn_manager.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/cros/burn_library.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/net/connectivity_state_helper.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/browser/browser_thread.h"
@@ -204,7 +205,7 @@ BurnManager::BurnManager()
state_machine_(new StateMachine()),
bytes_image_download_progress_last_reported_(0),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
- CrosLibrary::Get()->GetNetworkLibrary()->AddNetworkManagerObserver(this);
+ ConnectivityStateHelper::Get()->AddNetworkManagerObserver(this);
CrosLibrary::Get()->GetBurnLibrary()->AddObserver(this);
base::WeakPtr<BurnManager> weak_ptr(weak_ptr_factory_.GetWeakPtr());
device_handler_.SetCallbacks(
@@ -217,7 +218,7 @@ BurnManager::~BurnManager() {
file_util::Delete(image_dir_, true);
}
CrosLibrary::Get()->GetBurnLibrary()->RemoveObserver(this);
- CrosLibrary::Get()->GetNetworkLibrary()->RemoveNetworkManagerObserver(this);
+ ConnectivityStateHelper::Get()->RemoveNetworkManagerObserver(this);
}
// static
@@ -418,7 +419,7 @@ void BurnManager::BurnProgressUpdated(BurnLibrary* object,
Observer, observers_, OnBurnProgressUpdated(event, status));
}
-void BurnManager::OnNetworkManagerChanged(NetworkLibrary* obj) {
+void BurnManager::NetworkManagerChanged() {
// TODO(hidehiko): Split this into a class to write tests.
if (state_machine_->state() == StateMachine::INITIAL && IsNetworkConnected())
FOR_EACH_OBSERVER(Observer, observers_, OnNetworkDetected());
diff --git a/chrome/browser/chromeos/imageburner/burn_manager.h b/chrome/browser/chromeos/imageburner/burn_manager.h
index ba67dc6..a7c7a22 100644
--- a/chrome/browser/chromeos/imageburner/burn_manager.h
+++ b/chrome/browser/chromeos/imageburner/burn_manager.h
@@ -16,8 +16,8 @@
#include "base/observer_list.h"
#include "base/time.h"
#include "chrome/browser/chromeos/cros/burn_library.h"
-#include "chrome/browser/chromeos/cros/network_library.h"
#include "chrome/browser/chromeos/imageburner/burn_device_handler.h"
+#include "chrome/browser/chromeos/net/connectivity_state_helper_observer.h"
#include "chromeos/disks/disk_mount_manager.h"
#include "googleurl/src/gurl.h"
#include "net/url_request/url_fetcher_delegate.h"
@@ -180,7 +180,7 @@ class StateMachine {
// BurnController and helper classes defined above.
class BurnManager : public net::URLFetcherDelegate,
public BurnLibrary::Observer,
- public NetworkLibrary::NetworkManagerObserver {
+ public ConnectivityStateHelperObserver {
public:
// Interface for classes that need to observe events for the burning image
@@ -293,13 +293,13 @@ class BurnManager : public net::URLFetcherDelegate,
int64 current,
int64 total) OVERRIDE;
- // BurnLibrary::Observer orverrides.
+ // BurnLibrary::Observer overrides.
virtual void BurnProgressUpdated(BurnLibrary* object,
BurnEvent event,
const ImageBurnStatus& status) OVERRIDE;
- // NetworkLibrary::NetworkManagerObserver interface.
- virtual void OnNetworkManagerChanged(NetworkLibrary* obj) OVERRIDE;
+ // ConnectivityStateHelperObserver override.
+ virtual void NetworkManagerChanged() OVERRIDE;
// Creates directory image will be downloaded to.
// Must be called from FILE thread.
diff --git a/chrome/browser/chromeos/login/login_utils.cc b/chrome/browser/chromeos/login/login_utils.cc
index a97a024..e571ae4 100644
--- a/chrome/browser/chromeos/login/login_utils.cc
+++ b/chrome/browser/chromeos/login/login_utils.cc
@@ -32,7 +32,6 @@
#include "chrome/browser/chromeos/boot_times_loader.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/cros/cryptohome_library.h"
-#include "chrome/browser/chromeos/cros/network_library.h"
#include "chrome/browser/chromeos/input_method/input_method_configuration.h"
#include "chrome/browser/chromeos/input_method/input_method_manager.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
@@ -45,6 +44,7 @@
#include "chrome/browser/chromeos/login/screen_locker.h"
#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/net/connectivity_state_helper.h"
+#include "chrome/browser/chromeos/net/connectivity_state_helper_observer.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/cros_settings_names.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -719,13 +719,12 @@ scoped_refptr<Authenticator> LoginUtilsImpl::CreateAuthenticator(
// We use a special class for this so that it can be safely leaked if we
// never connect. At shutdown the order is not well defined, and it's possible
// for the infrastructure needed to unregister might be unstable and crash.
-class WarmingObserver : public NetworkLibrary::NetworkManagerObserver,
+class WarmingObserver : public ConnectivityStateHelperObserver,
public content::NotificationObserver {
public:
WarmingObserver()
: url_request_context_getter_(NULL) {
- NetworkLibrary* netlib = CrosLibrary::Get()->GetNetworkLibrary();
- netlib->AddNetworkManagerObserver(this);
+ ConnectivityStateHelper::Get()->AddNetworkManagerObserver(this);
// During tests, the browser_process may not be initialized yet causing
// this to fail.
if (g_browser_process) {
@@ -739,15 +738,16 @@ class WarmingObserver : public NetworkLibrary::NetworkManagerObserver,
virtual ~WarmingObserver() {}
// If we're now connected, prewarm the auth url.
- virtual void OnNetworkManagerChanged(NetworkLibrary* netlib) OVERRIDE {
- if (netlib->Connected()) {
+ virtual void NetworkManagerChanged() OVERRIDE {
+ ConnectivityStateHelper* csh = ConnectivityStateHelper::Get();
+ if (csh->IsConnected()) {
const int kConnectionsNeeded = 1;
chrome_browser_net::PreconnectOnUIThread(
GURL(GaiaUrls::GetInstance()->client_login_url()),
chrome_browser_net::UrlInfo::EARLY_LOAD_MOTIVATED,
kConnectionsNeeded,
url_request_context_getter_);
- netlib->RemoveNetworkManagerObserver(this);
+ csh->RemoveNetworkManagerObserver(this);
delete this;
}
}
diff --git a/chrome/browser/chromeos/net/connectivity_state_helper.cc b/chrome/browser/chromeos/net/connectivity_state_helper.cc
index 515e985..505ac7d 100644
--- a/chrome/browser/chromeos/net/connectivity_state_helper.cc
+++ b/chrome/browser/chromeos/net/connectivity_state_helper.cc
@@ -10,6 +10,7 @@
#include "chromeos/chromeos_switches.h"
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
+#include "chromeos/network/network_state_handler_observer.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
namespace chromeos {
@@ -19,17 +20,23 @@ static ConnectivityStateHelper* g_connectivity_state_helper = NULL;
// Implementation of the connectivity state helper that uses the network
// state handler for fetching connectivity state.
class ConnectivityStateHelperImpl
- : public ConnectivityStateHelper {
+ : public ConnectivityStateHelper,
+ public NetworkStateHandlerObserver {
public:
ConnectivityStateHelperImpl();
virtual ~ConnectivityStateHelperImpl();
+ // NetworkStateHandler overrides.
virtual bool IsConnected() OVERRIDE;
virtual bool IsConnectedType(const std::string& type) OVERRIDE;
virtual bool IsConnectingType(const std::string& type) OVERRIDE;
virtual std::string NetworkNameForType(const std::string& type) OVERRIDE;
virtual std::string DefaultNetworkName() OVERRIDE;
virtual bool DefaultNetworkOnline() OVERRIDE;
+ virtual void RequestScan() const OVERRIDE;
+
+ // NetworkStateHandlerObserver overrides.
+ virtual void NetworkManagerChanged() OVERRIDE;
private:
NetworkStateHandler* network_state_handler_;
@@ -38,22 +45,32 @@ class ConnectivityStateHelperImpl
// Implementation of the connectivity state helper that uses the network
// library for fetching connectivity state.
class ConnectivityStateHelperNetworkLibrary
- : public ConnectivityStateHelper {
+ : public ConnectivityStateHelper,
+ public NetworkLibrary::NetworkManagerObserver {
public:
ConnectivityStateHelperNetworkLibrary();
virtual ~ConnectivityStateHelperNetworkLibrary();
+ // ConnectivityStateHelper overrides.
virtual bool IsConnected() OVERRIDE;
virtual bool IsConnectedType(const std::string& type) OVERRIDE;
virtual bool IsConnectingType(const std::string& type) OVERRIDE;
virtual std::string NetworkNameForType(const std::string& type) OVERRIDE;
virtual std::string DefaultNetworkName() OVERRIDE;
virtual bool DefaultNetworkOnline() OVERRIDE;
+ virtual void RequestScan() const OVERRIDE;
+
+ // NetworkLibrary::NetworkManagerObserver overrides.
+ virtual void OnNetworkManagerChanged(NetworkLibrary* network_library);
private:
NetworkLibrary* network_library_;
};
+ConnectivityStateHelper::ConnectivityStateHelper() {}
+
+ConnectivityStateHelper::~ConnectivityStateHelper() {}
+
// static
void ConnectivityStateHelper::Initialize() {
CHECK(!g_connectivity_state_helper);
@@ -75,6 +92,11 @@ void ConnectivityStateHelper::InitializeForTesting(
}
// static
+bool ConnectivityStateHelper::IsInitialized() {
+ return g_connectivity_state_helper != NULL;
+}
+
+// static
void ConnectivityStateHelper::Shutdown() {
CHECK(g_connectivity_state_helper);
delete g_connectivity_state_helper;
@@ -88,11 +110,24 @@ ConnectivityStateHelper* ConnectivityStateHelper::Get() {
return g_connectivity_state_helper;
}
+void ConnectivityStateHelper::AddNetworkManagerObserver(
+ ConnectivityStateHelperObserver* observer) {
+ network_manager_observers_.AddObserver(observer);
+}
+
+void ConnectivityStateHelper::RemoveNetworkManagerObserver(
+ ConnectivityStateHelperObserver* observer) {
+ network_manager_observers_.RemoveObserver(observer);
+}
+
ConnectivityStateHelperImpl::ConnectivityStateHelperImpl() {
network_state_handler_ = NetworkStateHandler::Get();
+ network_state_handler_->AddObserver(this);
}
-ConnectivityStateHelperImpl::~ConnectivityStateHelperImpl() {}
+ConnectivityStateHelperImpl::~ConnectivityStateHelperImpl() {
+ NetworkStateHandler::Get()->RemoveObserver(this);
+}
bool ConnectivityStateHelperImpl::IsConnected() {
return network_state_handler_->ConnectedNetworkByType(
@@ -135,16 +170,28 @@ bool ConnectivityStateHelperImpl::DefaultNetworkOnline() {
return true;
}
+void ConnectivityStateHelperImpl::RequestScan() const {
+ network_state_handler_->RequestScan();
+}
+
+void ConnectivityStateHelperImpl::NetworkManagerChanged() {
+ FOR_EACH_OBSERVER(ConnectivityStateHelperObserver, network_manager_observers_,
+ NetworkManagerChanged());
+}
+
////////////////////////////////////////////////////////////////////////////////
// NetworkLibrary implementation.
//
ConnectivityStateHelperNetworkLibrary::ConnectivityStateHelperNetworkLibrary() {
network_library_ = CrosLibrary::Get()->GetNetworkLibrary();
+ network_library_->AddNetworkManagerObserver(this);
}
ConnectivityStateHelperNetworkLibrary::~ConnectivityStateHelperNetworkLibrary()
-{}
+{
+ network_library_->RemoveNetworkManagerObserver(this);
+}
bool ConnectivityStateHelperNetworkLibrary::IsConnected() {
return network_library_->Connected();
@@ -206,4 +253,14 @@ bool ConnectivityStateHelperNetworkLibrary::DefaultNetworkOnline() {
return true;
}
+void ConnectivityStateHelperNetworkLibrary::RequestScan() const {
+ network_library_->RequestNetworkScan();
+}
+
+void ConnectivityStateHelperNetworkLibrary::OnNetworkManagerChanged(
+ NetworkLibrary* network_library) {
+ FOR_EACH_OBSERVER(ConnectivityStateHelperObserver, network_manager_observers_,
+ NetworkManagerChanged());
+}
+
} // namespace chromeos
diff --git a/chrome/browser/chromeos/net/connectivity_state_helper.h b/chrome/browser/chromeos/net/connectivity_state_helper.h
index 030b5c6..e41a7b1 100644
--- a/chrome/browser/chromeos/net/connectivity_state_helper.h
+++ b/chrome/browser/chromeos/net/connectivity_state_helper.h
@@ -5,9 +5,10 @@
#ifndef CHROME_BROWSER_CHROMEOS_NET_CONNECTIVITY_STATE_HELPER_H_
#define CHROME_BROWSER_CHROMEOS_NET_CONNECTIVITY_STATE_HELPER_H_
+#include "base/observer_list.h"
#include "chrome/browser/chromeos/cros/network_library.h"
+#include "chrome/browser/chromeos/net/connectivity_state_helper_observer.h"
#include "chromeos/network/network_state_handler.h"
-#include "chromeos/network/network_state_handler_observer.h"
namespace chromeos {
@@ -16,7 +17,7 @@ namespace chromeos {
// appropriate source (e.g. NetworkStateHandler).
class ConnectivityStateHelper {
public:
- virtual ~ConnectivityStateHelper() {}
+ virtual ~ConnectivityStateHelper();
// Initializes the state helper singleton to use the default (network state
// handler) implementation or the network library implementation based
@@ -27,6 +28,9 @@ class ConnectivityStateHelper {
// (say,a MockConnectivityStateHelper) implementation.
static void InitializeForTesting(ConnectivityStateHelper* csh);
+ // Returns true if the global instance has been initialized.
+ static bool IsInitialized();
+
static void Shutdown();
static ConnectivityStateHelper* Get();
@@ -49,8 +53,18 @@ class ConnectivityStateHelper {
// Returns true if we have a default network and are in online state.
virtual bool DefaultNetworkOnline() = 0;
+ // Request a network scan.
+ virtual void RequestScan() const = 0;
+
+ // Add/remove observers for listening to connection manager changes.
+ virtual void AddNetworkManagerObserver(
+ ConnectivityStateHelperObserver* observer);
+ virtual void RemoveNetworkManagerObserver(
+ ConnectivityStateHelperObserver* observer);
+
protected:
- ConnectivityStateHelper() {}
+ ConnectivityStateHelper();
+ ObserverList<ConnectivityStateHelperObserver> network_manager_observers_;
};
} // namespace chromeos
diff --git a/chrome/browser/chromeos/net/connectivity_state_helper_observer.h b/chrome/browser/chromeos/net/connectivity_state_helper_observer.h
new file mode 100644
index 0000000..4fe943e
--- /dev/null
+++ b/chrome/browser/chromeos/net/connectivity_state_helper_observer.h
@@ -0,0 +1,21 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_NET_CONNECTIVITY_STATE_HELPER_OBSERVER_H_
+#define CHROME_BROWSER_CHROMEOS_NET_CONNECTIVITY_STATE_HELPER_OBSERVER_H_
+
+namespace chromeos {
+
+// A common observer interface used by the ConnectivityStateHelper object to
+// relay observing events received from the (older) NetworkLibrary or the (new)
+// NetworkStateHandler implementations.
+class ConnectivityStateHelperObserver {
+ public:
+ // Called when there's a change on the connection manager.
+ virtual void NetworkManagerChanged() = 0;
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_NET_CONNECTIVITY_STATE_HELPER_OBSERVER_H_
diff --git a/chrome/browser/chromeos/net/mock_connectivity_state_helper.h b/chrome/browser/chromeos/net/mock_connectivity_state_helper.h
index 159f46d..70a599f 100644
--- a/chrome/browser/chromeos/net/mock_connectivity_state_helper.h
+++ b/chrome/browser/chromeos/net/mock_connectivity_state_helper.h
@@ -9,6 +9,7 @@
#include <string>
+#include "chrome/browser/chromeos/net/connectivity_state_helper_observer.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace chromeos {
@@ -23,10 +24,13 @@ class MockConnectivityStateHelper : public ConnectivityStateHelper {
MOCK_METHOD1(NetworkNameForType, std::string(const std::string&));
MOCK_METHOD0(DefaultNetworkName, std::string(void));
MOCK_METHOD0(DefaultNetworkOnline, bool(void));
+ MOCK_CONST_METHOD0(RequestScan, void(void));
+ MOCK_METHOD1(AddNetworkManagerObserver,
+ void(ConnectivityStateHelperObserver*));
+ MOCK_METHOD1(RemoveNetworkManagerObserver,
+ void(ConnectivityStateHelperObserver*));
};
-
-
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_NET_MOCK_CONNECTIVITY_STATE_HELPER_H_