Index: chrome/browser/chromeos/proxy_config_service_impl.cc |
diff --git a/chrome/browser/chromeos/proxy_config_service_impl.cc b/chrome/browser/chromeos/proxy_config_service_impl.cc |
index 4e63069a79562f6c5f95e8ff7b207f68ec309155..6e07ba70cbe2ab19f24d75b078e88c488a2211b5 100644 |
--- a/chrome/browser/chromeos/proxy_config_service_impl.cc |
+++ b/chrome/browser/chromeos/proxy_config_service_impl.cc |
@@ -117,6 +117,13 @@ void ProxyConfigServiceImpl::DefaultNetworkChanged( |
DetermineEffectiveConfigFromDefaultNetwork(); |
} |
+void ProxyConfigServiceImpl::OnShuttingDown() { |
+ // Ownership of this class is complicated. Stop observing NetworkStateHandler |
+ // when the class shuts down. |
+ NetworkHandler::Get()->network_state_handler()->RemoveObserver(this, |
+ FROM_HERE); |
+} |
+ |
// static |
bool ProxyConfigServiceImpl::IgnoreProxy(const PrefService* profile_prefs, |
const std::string network_profile_path, |
@@ -167,6 +174,9 @@ bool ProxyConfigServiceImpl::IgnoreProxy(const PrefService* profile_prefs, |
} |
void ProxyConfigServiceImpl::DetermineEffectiveConfigFromDefaultNetwork() { |
+ if (!NetworkHandler::IsInitialized()) |
+ return; |
+ |
NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); |
const NetworkState* network = handler->DefaultNetwork(); |