Chromium Code Reviews| 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 d628d9093a639d5f59f635221eba5b9de65ce316..994898ca807d65b5c10d78c69a06fe731651c108 100644 |
| --- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
| +++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc |
| @@ -326,8 +326,11 @@ class DBusServices { |
| } |
| // Initialize the device settings service so that we'll take actions per |
| - // signals sent from the session manager. |
| - DeviceSettingsService::Get()->Initialize( |
| + // signals sent from the session manager. This needs to happen before |
| + // g_browser_process initializes local_state() (which instantiates |
|
Mattias Nissler (ping if slow)
2013/04/17 13:10:30
nit: g_browser_process also instantiates BrowserPo
stevenjb
2013/04/17 16:27:12
Done.
|
| + // BrowserPolicyConnector). |
| + DeviceSettingsService::Initialize(); |
| + DeviceSettingsService::Get()->SetSessionManager( |
| DBusThreadManager::Get()->GetSessionManagerClient(), |
| OwnerKeyUtil::Create()); |
| chromeos::ConnectivityStateHelper::Initialize(); |
| @@ -738,8 +741,10 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { |
| if (NetworkPortalDetector::IsEnabledInCommandLine() && detector) |
| detector->Shutdown(); |
| - // Tell DeviceSettingsService to stop talking to session_manager. |
| - DeviceSettingsService::Get()->Shutdown(); |
| + // Tell DeviceSettingsService to stop talking to session_manager. Do not |
| + // shutdown DeviceSettingsService yet, it might still be accessed by |
| + // BrowserPolicyConnector (owned by g_browser_process). |
| + DeviceSettingsService::Get()->UnsetSessionManager(); |
| // We should remove observers attached to D-Bus clients before |
| // DBusThreadManager is shut down. |
| @@ -793,6 +798,12 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() { |
| ChromeBrowserMainPartsLinux::PostMainMessageLoopRun(); |
| } |
| +void ChromeBrowserMainPartsChromeos::PostDestroyThreads() { |
| + ChromeBrowserMainPartsLinux::PostDestroyThreads(); |
| + // Destroy DeviceSettingsService after g_browser_process. |
| + DeviceSettingsService::Shutdown(); |
| +} |
| + |
| void ChromeBrowserMainPartsChromeos::SetupPlatformFieldTrials() { |
| SetupZramFieldTrial(); |
| } |