diff options
author | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-03 22:49:08 +0000 |
---|---|---|
committer | satorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-03 22:49:08 +0000 |
commit | 382eac442970acad60dbde5bbca20268234a6630 (patch) | |
tree | 0bf47425d15910d7349337be526f638c808c7f74 /chrome | |
parent | 8592b371914e0f8b48af46371567bb18f575e2a4 (diff) | |
download | chromium_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')
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_ |