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 a5abbd1621b2192ea4ca82a2c5324ae37124d180..988b9210cb67c7d887f4b232a97e69b04d7c7052 100644 |
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
@@ -304,7 +304,9 @@ class DBusServices { |
// Always initialize these handlers which should not conflict with |
// NetworkLibrary. |
- NetworkHandler::Initialize(); |
+ NetworkHandler::Initialize( |
+ content::BrowserThread::GetMessageLoopProxyForThread( |
+ content::BrowserThread::IO)); |
CertLibrary::Initialize(); |
// Initialize the network change notifier for Chrome OS. The network |
@@ -382,8 +384,6 @@ ChromeBrowserMainPartsChromeos::~ChromeBrowserMainPartsChromeos() { |
if (KioskModeSettings::Get()->IsKioskModeEnabled()) |
ShutdownKioskModeScreensaver(); |
- dbus_services_.reset(); |
- |
// To be precise, logout (browser shutdown) is not yet done, but the |
// remaining work is negligible, hence we say LogoutDone here. |
BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", false); |
@@ -838,7 +838,11 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { |
} |
void ChromeBrowserMainPartsChromeos::PostDestroyThreads() { |
+ // Destroy DBus services immediately after threads are stopped. |
+ dbus_services_.reset(); |
+ |
ChromeBrowserMainPartsLinux::PostDestroyThreads(); |
+ |
// Destroy DeviceSettingsService after g_browser_process. |
DeviceSettingsService::Shutdown(); |
} |