| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "apps/shell/browser/shell_extensions_browser_client.h" | 5 #include "extensions/shell/browser/shell_extensions_browser_client.h" |
| 6 | 6 |
| 7 #include "apps/shell/browser/shell_app_sorting.h" | |
| 8 #include "apps/shell/browser/shell_extension_system_factory.h" | |
| 9 #include "apps/shell/browser/shell_extension_web_contents_observer.h" | |
| 10 #include "apps/shell/browser/shell_runtime_api_delegate.h" | |
| 11 #include "apps/shell/common/api/generated_api.h" | |
| 12 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 13 #include "base/prefs/pref_service_factory.h" | 8 #include "base/prefs/pref_service_factory.h" |
| 14 #include "base/prefs/testing_pref_store.h" | 9 #include "base/prefs/testing_pref_store.h" |
| 15 #include "components/pref_registry/pref_registry_syncable.h" | 10 #include "components/pref_registry/pref_registry_syncable.h" |
| 16 #include "components/user_prefs/user_prefs.h" | 11 #include "components/user_prefs/user_prefs.h" |
| 17 #include "extensions/browser/api/extensions_api_client.h" | 12 #include "extensions/browser/api/extensions_api_client.h" |
| 18 #include "extensions/browser/app_sorting.h" | 13 #include "extensions/browser/app_sorting.h" |
| 19 #include "extensions/browser/extension_function_registry.h" | 14 #include "extensions/browser/extension_function_registry.h" |
| 20 #include "extensions/browser/extension_host_delegate.h" | 15 #include "extensions/browser/extension_host_delegate.h" |
| 21 #include "extensions/browser/extension_prefs.h" | 16 #include "extensions/browser/extension_prefs.h" |
| 22 #include "extensions/common/api/generated_api.h" | 17 #include "extensions/common/api/generated_api.h" |
| 18 #include "extensions/shell/browser/shell_app_sorting.h" |
| 19 #include "extensions/shell/browser/shell_extension_system_factory.h" |
| 20 #include "extensions/shell/browser/shell_extension_web_contents_observer.h" |
| 21 #include "extensions/shell/browser/shell_runtime_api_delegate.h" |
| 22 #include "extensions/shell/common/api/generated_api.h" |
| 23 | 23 |
| 24 using content::BrowserContext; | 24 using content::BrowserContext; |
| 25 | 25 |
| 26 namespace extensions { | 26 namespace extensions { |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 // See chrome::RegisterProfilePrefs() in chrome/browser/prefs/browser_prefs.cc | 29 // See chrome::RegisterProfilePrefs() in chrome/browser/prefs/browser_prefs.cc |
| 30 void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry) { | 30 void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry) { |
| 31 ExtensionPrefs::RegisterProfilePrefs(registry); | 31 ExtensionPrefs::RegisterProfilePrefs(registry); |
| 32 } | 32 } |
| 33 | 33 |
| 34 // A minimal ExtensionHostDelegate. | 34 // A minimal ExtensionHostDelegate. |
| 35 class ShellExtensionHostDelegate : public ExtensionHostDelegate { | 35 class ShellExtensionHostDelegate : public ExtensionHostDelegate { |
| 36 public: | 36 public: |
| 37 ShellExtensionHostDelegate() {} | 37 ShellExtensionHostDelegate() {} |
| 38 virtual ~ShellExtensionHostDelegate() {} | 38 virtual ~ShellExtensionHostDelegate() {} |
| 39 | 39 |
| 40 // ExtensionHostDelegate implementation. | 40 // ExtensionHostDelegate implementation. |
| 41 virtual void OnExtensionHostCreated(content::WebContents* web_contents) | 41 virtual void OnExtensionHostCreated( |
| 42 OVERRIDE; | 42 content::WebContents* web_contents) OVERRIDE; |
| 43 | 43 |
| 44 virtual void OnRenderViewCreatedForBackgroundPage(ExtensionHost* host) | 44 virtual void OnRenderViewCreatedForBackgroundPage( |
| 45 OVERRIDE {} | 45 ExtensionHost* host) OVERRIDE {} |
| 46 | 46 |
| 47 virtual content::JavaScriptDialogManager* GetJavaScriptDialogManager() | 47 virtual content::JavaScriptDialogManager* GetJavaScriptDialogManager() |
| 48 OVERRIDE { | 48 OVERRIDE { |
| 49 // TODO(jamescook): Create a JavaScriptDialogManager or reuse the one from | 49 // TODO(jamescook): Create a JavaScriptDialogManager or reuse the one from |
| 50 // content_shell. | 50 // content_shell. |
| 51 NOTREACHED(); | 51 NOTREACHED(); |
| 52 return NULL; | 52 return NULL; |
| 53 } | 53 } |
| 54 | 54 |
| 55 virtual void CreateTab(content::WebContents* web_contents, | 55 virtual void CreateTab(content::WebContents* web_contents, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 // recycle some of the RegisterProfilePrefs() code in Chrome. | 89 // recycle some of the RegisterProfilePrefs() code in Chrome. |
| 90 // TODO(jamescook): Convert this to PrefRegistrySimple. | 90 // TODO(jamescook): Convert this to PrefRegistrySimple. |
| 91 user_prefs::PrefRegistrySyncable* pref_registry = | 91 user_prefs::PrefRegistrySyncable* pref_registry = |
| 92 new user_prefs::PrefRegistrySyncable; | 92 new user_prefs::PrefRegistrySyncable; |
| 93 // Prefs should be registered before the PrefService is created. | 93 // Prefs should be registered before the PrefService is created. |
| 94 RegisterPrefs(pref_registry); | 94 RegisterPrefs(pref_registry); |
| 95 prefs_ = factory.Create(pref_registry).Pass(); | 95 prefs_ = factory.Create(pref_registry).Pass(); |
| 96 user_prefs::UserPrefs::Set(browser_context_, prefs_.get()); | 96 user_prefs::UserPrefs::Set(browser_context_, prefs_.get()); |
| 97 } | 97 } |
| 98 | 98 |
| 99 ShellExtensionsBrowserClient::~ShellExtensionsBrowserClient() {} | 99 ShellExtensionsBrowserClient::~ShellExtensionsBrowserClient() { |
| 100 } |
| 100 | 101 |
| 101 bool ShellExtensionsBrowserClient::IsShuttingDown() { | 102 bool ShellExtensionsBrowserClient::IsShuttingDown() { |
| 102 return false; | 103 return false; |
| 103 } | 104 } |
| 104 | 105 |
| 105 bool ShellExtensionsBrowserClient::AreExtensionsDisabled( | 106 bool ShellExtensionsBrowserClient::AreExtensionsDisabled( |
| 106 const base::CommandLine& command_line, | 107 const base::CommandLine& command_line, |
| 107 BrowserContext* context) { | 108 BrowserContext* context) { |
| 108 return false; | 109 return false; |
| 109 } | 110 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 138 return false; | 139 return false; |
| 139 } | 140 } |
| 140 | 141 |
| 141 bool ShellExtensionsBrowserClient::IsExtensionIncognitoEnabled( | 142 bool ShellExtensionsBrowserClient::IsExtensionIncognitoEnabled( |
| 142 const std::string& extension_id, | 143 const std::string& extension_id, |
| 143 content::BrowserContext* context) const { | 144 content::BrowserContext* context) const { |
| 144 return false; | 145 return false; |
| 145 } | 146 } |
| 146 | 147 |
| 147 bool ShellExtensionsBrowserClient::CanExtensionCrossIncognito( | 148 bool ShellExtensionsBrowserClient::CanExtensionCrossIncognito( |
| 148 const extensions::Extension* extension, | 149 const Extension* extension, |
| 149 content::BrowserContext* context) const { | 150 content::BrowserContext* context) const { |
| 150 return false; | 151 return false; |
| 151 } | 152 } |
| 152 | 153 |
| 153 bool ShellExtensionsBrowserClient::IsWebViewRequest( | 154 bool ShellExtensionsBrowserClient::IsWebViewRequest( |
| 154 net::URLRequest* request) const { | 155 net::URLRequest* request) const { |
| 155 return false; | 156 return false; |
| 156 } | 157 } |
| 157 | 158 |
| 158 net::URLRequestJob* | 159 net::URLRequestJob* |
| (...skipping 15 matching lines...) Expand all Loading... |
| 174 return false; | 175 return false; |
| 175 } | 176 } |
| 176 | 177 |
| 177 PrefService* ShellExtensionsBrowserClient::GetPrefServiceForContext( | 178 PrefService* ShellExtensionsBrowserClient::GetPrefServiceForContext( |
| 178 BrowserContext* context) { | 179 BrowserContext* context) { |
| 179 return prefs_.get(); | 180 return prefs_.get(); |
| 180 } | 181 } |
| 181 | 182 |
| 182 void ShellExtensionsBrowserClient::GetEarlyExtensionPrefsObservers( | 183 void ShellExtensionsBrowserClient::GetEarlyExtensionPrefsObservers( |
| 183 content::BrowserContext* context, | 184 content::BrowserContext* context, |
| 184 std::vector<ExtensionPrefsObserver*>* observers) const {} | 185 std::vector<ExtensionPrefsObserver*>* observers) const { |
| 186 } |
| 185 | 187 |
| 186 ProcessManagerDelegate* | 188 ProcessManagerDelegate* |
| 187 ShellExtensionsBrowserClient::GetProcessManagerDelegate() const { | 189 ShellExtensionsBrowserClient::GetProcessManagerDelegate() const { |
| 188 return NULL; | 190 return NULL; |
| 189 } | 191 } |
| 190 | 192 |
| 191 scoped_ptr<ExtensionHostDelegate> | 193 scoped_ptr<ExtensionHostDelegate> |
| 192 ShellExtensionsBrowserClient::CreateExtensionHostDelegate() { | 194 ShellExtensionsBrowserClient::CreateExtensionHostDelegate() { |
| 193 return scoped_ptr<ExtensionHostDelegate>(new ShellExtensionHostDelegate); | 195 return scoped_ptr<ExtensionHostDelegate>(new ShellExtensionHostDelegate); |
| 194 } | 196 } |
| 195 | 197 |
| 196 bool ShellExtensionsBrowserClient::DidVersionUpdate(BrowserContext* context) { | 198 bool ShellExtensionsBrowserClient::DidVersionUpdate(BrowserContext* context) { |
| 197 // TODO(jamescook): We might want to tell extensions when app_shell updates. | 199 // TODO(jamescook): We might want to tell extensions when app_shell updates. |
| 198 return false; | 200 return false; |
| 199 } | 201 } |
| 200 | 202 |
| 201 scoped_ptr<AppSorting> ShellExtensionsBrowserClient::CreateAppSorting() { | 203 scoped_ptr<AppSorting> ShellExtensionsBrowserClient::CreateAppSorting() { |
| 202 return scoped_ptr<AppSorting>(new apps::ShellAppSorting); | 204 return scoped_ptr<AppSorting>(new ShellAppSorting); |
| 203 } | 205 } |
| 204 | 206 |
| 205 bool ShellExtensionsBrowserClient::IsRunningInForcedAppMode() { | 207 bool ShellExtensionsBrowserClient::IsRunningInForcedAppMode() { |
| 206 return false; | 208 return false; |
| 207 } | 209 } |
| 208 | 210 |
| 209 ApiActivityMonitor* ShellExtensionsBrowserClient::GetApiActivityMonitor( | 211 ApiActivityMonitor* ShellExtensionsBrowserClient::GetApiActivityMonitor( |
| 210 BrowserContext* context) { | 212 BrowserContext* context) { |
| 211 // app_shell doesn't monitor API function calls or events. | 213 // app_shell doesn't monitor API function calls or events. |
| 212 return NULL; | 214 return NULL; |
| 213 } | 215 } |
| 214 | 216 |
| 215 ExtensionSystemProvider* | 217 ExtensionSystemProvider* |
| 216 ShellExtensionsBrowserClient::GetExtensionSystemFactory() { | 218 ShellExtensionsBrowserClient::GetExtensionSystemFactory() { |
| 217 return ShellExtensionSystemFactory::GetInstance(); | 219 return ShellExtensionSystemFactory::GetInstance(); |
| 218 } | 220 } |
| 219 | 221 |
| 220 void ShellExtensionsBrowserClient::RegisterExtensionFunctions( | 222 void ShellExtensionsBrowserClient::RegisterExtensionFunctions( |
| 221 ExtensionFunctionRegistry* registry) const { | 223 ExtensionFunctionRegistry* registry) const { |
| 222 // Register core extension-system APIs. | 224 // Register core extension-system APIs. |
| 223 extensions::core_api::GeneratedFunctionRegistry::RegisterAll(registry); | 225 core_api::GeneratedFunctionRegistry::RegisterAll(registry); |
| 224 | 226 |
| 225 // Register chrome.shell APIs. | 227 // Register chrome.shell APIs. |
| 226 apps::shell_api::GeneratedFunctionRegistry::RegisterAll(registry); | 228 shell_api::GeneratedFunctionRegistry::RegisterAll(registry); |
| 227 } | 229 } |
| 228 | 230 |
| 229 scoped_ptr<RuntimeAPIDelegate> | 231 scoped_ptr<RuntimeAPIDelegate> |
| 230 ShellExtensionsBrowserClient::CreateRuntimeAPIDelegate( | 232 ShellExtensionsBrowserClient::CreateRuntimeAPIDelegate( |
| 231 content::BrowserContext* context) const { | 233 content::BrowserContext* context) const { |
| 232 return scoped_ptr<RuntimeAPIDelegate>(new apps::ShellRuntimeAPIDelegate()); | 234 return scoped_ptr<RuntimeAPIDelegate>(new ShellRuntimeAPIDelegate()); |
| 233 } | 235 } |
| 234 | 236 |
| 235 ComponentExtensionResourceManager* | 237 ComponentExtensionResourceManager* |
| 236 ShellExtensionsBrowserClient::GetComponentExtensionResourceManager() { | 238 ShellExtensionsBrowserClient::GetComponentExtensionResourceManager() { |
| 237 return NULL; | 239 return NULL; |
| 238 } | 240 } |
| 239 | 241 |
| 240 } // namespace extensions | 242 } // namespace extensions |
| OLD | NEW |