1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/extensions/api/chrome_extensions_api_client.h" 6 7#include "base/files/file_path.h" 8#include "chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h" 9#include "chrome/browser/extensions/api/storage/sync_value_store_cache.h" 10#include "chrome/browser/extensions/api/web_request/chrome_extension_web_request_event_router_delegate.h" 11#include "chrome/browser/guest_view/app_view/chrome_app_view_guest_delegate.h" 12#include "chrome/browser/guest_view/extension_options/chrome_extension_options_guest_delegate.h" 13#include "chrome/browser/guest_view/mime_handler_view/chrome_mime_handler_view_guest_delegate.h" 14#include "chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.h" 15#include "chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h" 16#include "content/public/browser/browser_context.h" 17#include "content/public/browser/browser_thread.h" 18#include "extensions/browser/api/declarative/rules_registry_service.h" 19#include "extensions/browser/guest_view/web_view/web_view_guest.h" 20#include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" 21 22#if defined(ENABLE_CONFIGURATION_POLICY) 23#include "chrome/browser/extensions/api/storage/managed_value_store_cache.h" 24#endif 25 26namespace extensions { 27 28ChromeExtensionsAPIClient::ChromeExtensionsAPIClient() {} 29 30ChromeExtensionsAPIClient::~ChromeExtensionsAPIClient() {} 31 32void ChromeExtensionsAPIClient::AddAdditionalValueStoreCaches( 33 content::BrowserContext* context, 34 const scoped_refptr<SettingsStorageFactory>& factory, 35 const scoped_refptr<ObserverListThreadSafe<SettingsObserver> >& observers, 36 std::map<settings_namespace::Namespace, ValueStoreCache*>* caches) { 37 // Add support for chrome.storage.sync. 38 (*caches)[settings_namespace::SYNC] = 39 new SyncValueStoreCache(factory, observers, context->GetPath()); 40 41#if defined(ENABLE_CONFIGURATION_POLICY) 42 // Add support for chrome.storage.managed. 43 (*caches)[settings_namespace::MANAGED] = 44 new ManagedValueStoreCache(context, factory, observers); 45#endif 46} 47 48AppViewGuestDelegate* ChromeExtensionsAPIClient::CreateAppViewGuestDelegate() 49 const { 50 return new ChromeAppViewGuestDelegate(); 51} 52 53ExtensionOptionsGuestDelegate* 54ChromeExtensionsAPIClient::CreateExtensionOptionsGuestDelegate( 55 ExtensionOptionsGuest* guest) const { 56 return new ChromeExtensionOptionsGuestDelegate(guest); 57} 58 59scoped_ptr<MimeHandlerViewGuestDelegate> 60ChromeExtensionsAPIClient::CreateMimeHandlerViewGuestDelegate( 61 MimeHandlerViewGuest* guest) const { 62 return scoped_ptr<ChromeMimeHandlerViewGuestDelegate>( 63 new ChromeMimeHandlerViewGuestDelegate(guest)) 64 .PassAs<MimeHandlerViewGuestDelegate>(); 65} 66 67WebViewGuestDelegate* ChromeExtensionsAPIClient::CreateWebViewGuestDelegate( 68 WebViewGuest* web_view_guest) const { 69 return new ChromeWebViewGuestDelegate(web_view_guest); 70} 71 72WebViewPermissionHelperDelegate* ChromeExtensionsAPIClient:: 73 CreateWebViewPermissionHelperDelegate( 74 WebViewPermissionHelper* web_view_permission_helper) const { 75 return new ChromeWebViewPermissionHelperDelegate(web_view_permission_helper); 76} 77 78scoped_refptr<RulesRegistry> ChromeExtensionsAPIClient::GetRulesRegistry( 79 content::BrowserContext* browser_context, 80 const RulesRegistry::WebViewKey& webview_key, 81 const std::string& event_name) { 82 return RulesRegistryService::Get(browser_context)-> 83 GetRulesRegistry(webview_key, event_name); 84} 85 86WebRequestEventRouterDelegate* 87ChromeExtensionsAPIClient::CreateWebRequestEventRouterDelegate() const { 88 return new ChromeExtensionWebRequestEventRouterDelegate(); 89} 90 91scoped_refptr<ContentRulesRegistry> 92ChromeExtensionsAPIClient::CreateContentRulesRegistry( 93 content::BrowserContext* browser_context, 94 RulesCacheDelegate* cache_delegate) const { 95 return scoped_refptr<ContentRulesRegistry>( 96 new ChromeContentRulesRegistry(browser_context, cache_delegate)); 97} 98 99} // namespace extensions 100