Index: chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
index 6df5bd325db2aee599977e87c71eb42c77a064ba..2071583322ba2eb2e7c54c998ec6eaa42dde98a7 100644 |
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
@@ -91,6 +91,8 @@ |
#include "content/public/common/main_function_params.h" |
#include "grit/platform_locale_settings.h" |
#include "net/base/network_change_notifier.h" |
+#include "net/base/network_change_notifier_chromeos.h" |
+#include "net/base/network_change_notifier_factory_chromeos.h" |
#include "net/url_request/url_request.h" |
namespace chromeos { |
@@ -252,7 +254,10 @@ class DBusServices { |
// Initialize the network change notifier for Chrome OS. The network |
// change notifier starts to monitor changes from the power manager and |
// the network manager. |
- CrosNetworkChangeNotifierFactory::GetInstance()->Init(); |
+ if (!CommandLine::ForCurrentProcess()->HasSwitch( |
+ chromeos::switches::kEnableNewNetworkHandlers)) { |
+ CrosNetworkChangeNotifierFactory::GetInstance()->Init(); |
+ } |
// Likewise, initialize the upgrade detector for Chrome OS. The upgrade |
// detector starts to monitor changes from the update engine. |
@@ -285,6 +290,9 @@ class DBusServices { |
chromeos::NetworkStateHandler::Initialize(); |
chromeos::NetworkConfigurationHandler::Initialize(); |
network_handlers_initialized_ = true; |
+ // TODO(gauravsh): This needs re-factoring. NetworkChangeNotifier choice |
+ // needs to be made before about:flags are processed. |
+ net::NetworkChangeNotifierFactoryChromeos::GetInstance()->Initialize(); |
} |
~DBusServices() { |
@@ -376,9 +384,18 @@ void ChromeBrowserMainPartsChromeos::PreMainMessageLoopStart() { |
// Replace the default NetworkChangeNotifierFactory with ChromeOS specific |
// implementation. This must be done before BrowserMainLoop calls |
// net::NetworkChangeNotifier::Create() in MainMessageLoopStart(). |
- net::NetworkChangeNotifier::SetFactory( |
- new CrosNetworkChangeNotifierFactory()); |
- |
+ net::NetworkChangeNotifierFactory* network_change_factory; |
+ // Note: At the time this is called, we have not processed about:flags |
+ // so this requires that the network handler flag was passed in at the command |
+ // line. |
+ if (!CommandLine::ForCurrentProcess()->HasSwitch( |
+ chromeos::switches::kEnableNewNetworkHandlers)) { |
+ network_change_factory = new CrosNetworkChangeNotifierFactory(); |
+ } else { |
+ LOG(ERROR) << "Using new connection change notifier."; |
stevenjb
2012/12/13 19:28:22
Let's make this a WARNING instead of an ERROR, it
gauravsh
2012/12/15 00:42:45
Done.
|
+ network_change_factory = new net::NetworkChangeNotifierFactoryChromeos(); |
+ } |
+ net::NetworkChangeNotifier::SetFactory(network_change_factory); |
ChromeBrowserMainPartsLinux::PreMainMessageLoopStart(); |
} |
@@ -393,7 +410,6 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopStart() { |
// Threads are initialized between MainMessageLoopStart and MainMessageLoopRun. |
// about_flags settings are applied in ChromeBrowserMainParts::PreCreateThreads. |
- |
void ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun() { |
// Must be called after about_flags settings are applied (see note above). |
dbus_services_->InitializeNetworkHandlers(); |
@@ -633,6 +649,8 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { |
// the network manager. |
if (CrosNetworkChangeNotifierFactory::GetInstance()) |
CrosNetworkChangeNotifierFactory::GetInstance()->Shutdown(); |
+ if (net::NetworkChangeNotifierFactoryChromeos::GetInstance()) |
+ net::NetworkChangeNotifierFactoryChromeos::GetInstance()->Shutdown(); |
if (chromeos::NetworkPortalDetector::IsEnabled() && |
chromeos::NetworkPortalDetector::GetInstance()) { |