summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorsatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-03 22:49:08 +0000
committersatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-03 22:49:08 +0000
commit382eac442970acad60dbde5bbca20268234a6630 (patch)
tree0bf47425d15910d7349337be526f638c808c7f74 /chrome
parent8592b371914e0f8b48af46371567bb18f575e2a4 (diff)
downloadchromium_src-382eac442970acad60dbde5bbca20268234a6630.zip
chromium_src-382eac442970acad60dbde5bbca20268234a6630.tar.gz
chromium_src-382eac442970acad60dbde5bbca20268234a6630.tar.bz2
chromeos: Split NetworkChangeNotifierChromeos initialization.
Defer the observer setup from the constructor to chromeos_browser_main_chromeos.cc. The motivation is to solve a dependency issue between NetworkChangeNotifierChromeos and DBusThreadManager, that'll replace CrosLibrary. BUG=chromium-os:22459 TEST=networking on Chrome OS works as before. Review URL: http://codereview.chromium.org/8423077 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108564 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.cc6
-rw-r--r--chrome/browser/chromeos/net/cros_network_change_notifier_factory.cc15
-rw-r--r--chrome/browser/chromeos/net/cros_network_change_notifier_factory.h6
-rw-r--r--chrome/browser/chromeos/net/network_change_notifier_chromeos.cc22
-rw-r--r--chrome/browser/chromeos/net/network_change_notifier_chromeos.h6
5 files changed, 42 insertions, 13 deletions
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index c4126ea..2ea3c88 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/chromeos/dbus/session_manager_client.h"
#include "chrome/browser/chromeos/login/session_manager_observer.h"
#include "chrome/browser/chromeos/net/cros_network_change_notifier_factory.h"
+#include "chrome/browser/chromeos/net/network_change_notifier_chromeos.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/defaults.h"
#include "chrome/common/chrome_switches.h"
@@ -158,4 +159,9 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopStart() {
if (parsed_command_line().HasSwitch(switches::kEnableBluetooth)) {
chromeos::BluetoothManager::Initialize();
}
+
+ // Initialize the network change notifier for Chrome OS. The network
+ // change notifier starts to monitor changes from the power manager and
+ // the network manager.
+ chromeos::CrosNetworkChangeNotifierFactory::GetInstance()->Init();
}
diff --git a/chrome/browser/chromeos/net/cros_network_change_notifier_factory.cc b/chrome/browser/chromeos/net/cros_network_change_notifier_factory.cc
index ad38c6c..2f210da 100644
--- a/chrome/browser/chromeos/net/cros_network_change_notifier_factory.cc
+++ b/chrome/browser/chromeos/net/cros_network_change_notifier_factory.cc
@@ -7,8 +7,21 @@
namespace chromeos {
+namespace {
+
+NetworkChangeNotifierChromeos* g_network_change_notifier = NULL;
+
+} // namespace
+
net::NetworkChangeNotifier* CrosNetworkChangeNotifierFactory::CreateInstance() {
- return new NetworkChangeNotifierChromeos();
+ DCHECK(!g_network_change_notifier);
+ g_network_change_notifier = new NetworkChangeNotifierChromeos();
+ return g_network_change_notifier;
+}
+
+// static
+NetworkChangeNotifierChromeos* CrosNetworkChangeNotifierFactory::GetInstance() {
+ return g_network_change_notifier;
}
} // namespace net
diff --git a/chrome/browser/chromeos/net/cros_network_change_notifier_factory.h b/chrome/browser/chromeos/net/cros_network_change_notifier_factory.h
index 73c7663..c0ff618 100644
--- a/chrome/browser/chromeos/net/cros_network_change_notifier_factory.h
+++ b/chrome/browser/chromeos/net/cros_network_change_notifier_factory.h
@@ -11,7 +11,7 @@
namespace chromeos {
-class NetworkChangeNotifier;
+class NetworkChangeNotifierChromeos;
// CrosNetworkChangeNotifierFactory creates ChromeOS-specific specialization of
// NetworkChangeNotifier.
@@ -22,6 +22,10 @@ class CrosNetworkChangeNotifierFactory
// Overrides of net::NetworkChangeNotifierFactory.
virtual net::NetworkChangeNotifier* CreateInstance() OVERRIDE;
+
+ // Gets the instance of the NetworkChangeNotifier for Chrome OS.
+ // This is used for setting up the notifier at startup.
+ static NetworkChangeNotifierChromeos* GetInstance();
};
} // namespace net
diff --git a/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc b/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
index eb6503b..44b5604 100644
--- a/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
+++ b/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
@@ -65,15 +65,6 @@ NetworkChangeNotifierChromeos::NetworkChangeNotifierChromeos()
connection_state_(chromeos::STATE_UNKNOWN),
online_notification_task_(NULL) {
- chromeos::NetworkLibrary* net =
- chromeos::CrosLibrary::Get()->GetNetworkLibrary();
- net->AddNetworkManagerObserver(this);
-
- chromeos::PowerLibrary* power =
- chromeos::CrosLibrary::Get()->GetPowerLibrary();
- power->AddObserver(this);
-
- UpdateNetworkState(net);
BrowserThread::PostDelayedTask(
BrowserThread::UI, FROM_HERE,
base::Bind(
@@ -98,6 +89,17 @@ NetworkChangeNotifierChromeos::~NetworkChangeNotifierChromeos() {
power->RemoveObserver(this);
}
+void NetworkChangeNotifierChromeos::Init() {
+ chromeos::NetworkLibrary* network_library =
+ chromeos::CrosLibrary::Get()->GetNetworkLibrary();
+ network_library->AddNetworkManagerObserver(this);
+
+ chromeos::CrosLibrary::Get()->GetPowerLibrary()
+ ->AddObserver(this);
+
+ UpdateNetworkState(network_library);
+}
+
void NetworkChangeNotifierChromeos::PowerChanged(
const PowerSupplyStatus& status) {
}
@@ -257,4 +259,4 @@ void NetworkChangeNotifierChromeos::UpdateInitialState(
self->UpdateNetworkState(net);
}
-} // namespace net
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/net/network_change_notifier_chromeos.h b/chrome/browser/chromeos/net/network_change_notifier_chromeos.h
index 434035e..eeedce3 100644
--- a/chrome/browser/chromeos/net/network_change_notifier_chromeos.h
+++ b/chrome/browser/chromeos/net/network_change_notifier_chromeos.h
@@ -26,6 +26,10 @@ class NetworkChangeNotifierChromeos
NetworkChangeNotifierChromeos();
virtual ~NetworkChangeNotifierChromeos();
+ // Initializes the network change notifier. Starts to observe changes
+ // from the power manager and the network manager.
+ void Init();
+
private:
friend class OnlineStatusReportThreadTask;
@@ -72,6 +76,6 @@ class NetworkChangeNotifierChromeos
DISALLOW_COPY_AND_ASSIGN(NetworkChangeNotifierChromeos);
};
-} // namespace net
+} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_CHANGE_NOTIFIER_CHROMEOS_H_