Index: apps/shell/shell_browser_main_parts.cc |
diff --git a/apps/shell/shell_browser_main_parts.cc b/apps/shell/shell_browser_main_parts.cc |
index 06fecad8485cf9fe606feff56226fa7e6aaf8bf5..e8cb3d7aebe5c6ee1ef17dc2d3cd5aadefd83665 100644 |
--- a/apps/shell/shell_browser_main_parts.cc |
+++ b/apps/shell/shell_browser_main_parts.cc |
@@ -13,9 +13,10 @@ |
#include "base/files/file_path.h" |
#include "base/path_service.h" |
#include "base/run_loop.h" |
-#include "chrome/browser/extensions/extension_system_factory.h" |
+#include "chrome/browser/extensions/extension_system.h" |
#include "chrome/common/chrome_paths.h" |
#include "chromeos/chromeos_paths.h" |
+#include "components/browser_context_keyed_service/browser_context_dependency_manager.h" |
#include "content/public/common/result_codes.h" |
#include "extensions/common/extension_paths.h" |
#include "ui/aura/env.h" |
@@ -27,8 +28,18 @@ |
using content::BrowserContext; |
using extensions::Extension; |
+using extensions::ExtensionSystem; |
+using extensions::ShellExtensionSystem; |
namespace apps { |
+namespace { |
+ |
+void EnsureBrowserContextKeyedServiceFactoriesBuilt() { |
+ // TODO(jamescook): Register additional BrowserContextKeyedService factories |
+ // here. See ChromeBrowserMainExtraPartsProfiles for details. |
+} |
+ |
+} // namespace |
ShellBrowserMainParts::ShellBrowserMainParts( |
const content::MainFunctionParams& parameters) |
@@ -77,15 +88,16 @@ void ShellBrowserMainParts::PreMainMessageLoopRun() { |
extensions::ExtensionsClient::Set(extensions_client_.get()); |
extensions_browser_client_.reset( |
- new ShellExtensionsBrowserClient(browser_context_.get())); |
+ new extensions::ShellExtensionsBrowserClient(browser_context_.get())); |
extensions::ExtensionsBrowserClient::Set(extensions_browser_client_.get()); |
- // TODO(jamescook): Initialize policy::ProfilePolicyConnector. |
- |
+ // Create our custom ExtensionSystem first because other |
+ // BrowserContextKeyedServices depend on it. |
CreateExtensionSystem(); |
- // TODO(jamescook): Create the rest of the services using |
- // BrowserContextDependencyManager::CreateBrowserContextServices. |
+ EnsureBrowserContextKeyedServiceFactoriesBuilt(); |
+ BrowserContextDependencyManager::GetInstance()->CreateBrowserContextServices( |
+ browser_context_.get()); |
CreateRootWindow(); |
@@ -111,16 +123,13 @@ bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) { |
void ShellBrowserMainParts::PostMainMessageLoopRun() { |
DestroyRootWindow(); |
- // TODO(jamescook): Destroy the rest of the services with |
- // BrowserContextDependencyManager::DestroyBrowserContextServices. |
+ BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices( |
+ browser_context_.get()); |
+ extension_system_ = NULL; |
extensions::ExtensionsBrowserClient::Set(NULL); |
extensions_browser_client_.reset(); |
browser_context_.reset(); |
aura::Env::DeleteInstance(); |
- |
- LOG(WARNING) << "-----------------------------------"; |
- LOG(WARNING) << "app_shell is expected to crash now."; |
- LOG(WARNING) << "-----------------------------------"; |
} |
void ShellBrowserMainParts::OnRootWindowHostCloseRequested( |
@@ -149,12 +158,8 @@ void ShellBrowserMainParts::DestroyRootWindow() { |
void ShellBrowserMainParts::CreateExtensionSystem() { |
DCHECK(browser_context_); |
- extension_system_ = |
- new extensions::ShellExtensionSystem(browser_context_.get()); |
- extensions::ExtensionSystemFactory::GetInstance()->SetCustomInstance( |
- extension_system_); |
- // Must occur after setting the instance above, as it will end up calling |
- // ExtensionSystem::Get(). |
+ extension_system_ = static_cast<ShellExtensionSystem*>( |
+ ExtensionSystem::GetForBrowserContext(browser_context_.get())); |
extension_system_->InitForRegularProfile(true); |
} |