chrome_extensions_api_client.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/extensions/api/chrome_extensions_api_client.h" 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/files/file_path.h" 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/extensions/api/storage/sync_value_store_cache.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/guest_view/app_view/app_view_guest.h" 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/guest_view/extension_options/extension_options_guest.h" 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/guest_view/web_view/web_view_guest.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/public/browser/browser_context.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/browser/browser_thread.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "device/hid/hid_service.h" 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/extensions/api/storage/managed_value_store_cache.h" 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace extensions { 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)ChromeExtensionsAPIClient::ChromeExtensionsAPIClient() {} 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)ChromeExtensionsAPIClient::~ChromeExtensionsAPIClient() {} 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void ChromeExtensionsAPIClient::AddAdditionalValueStoreCaches( 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context, 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const scoped_refptr<SettingsStorageFactory>& factory, 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const scoped_refptr<ObserverListThreadSafe<SettingsObserver> >& observers, 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::map<settings_namespace::Namespace, ValueStoreCache*>* caches) { 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Add support for chrome.storage.sync. 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) (*caches)[settings_namespace::SYNC] = 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) new SyncValueStoreCache(factory, observers, context->GetPath()); 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Add support for chrome.storage.managed. 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) (*caches)[settings_namespace::MANAGED] = 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) new ManagedValueStoreCache(context, factory, observers); 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool ChromeExtensionsAPIClient::AppViewInternalAttachFrame( 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch content::BrowserContext* browser_context, 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& url, 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int guest_instance_id, 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& guest_extension_id) { 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return AppViewGuest::CompletePendingRequest(browser_context, 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch url, 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch guest_instance_id, 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch guest_extension_id); 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool ChromeExtensionsAPIClient::AppViewInternalDenyRequest( 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch content::BrowserContext* browser_context, 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int guest_instance_id, 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& guest_extension_id) { 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return AppViewGuest::CompletePendingRequest(browser_context, 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch GURL(), 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch guest_instance_id, 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch guest_extension_id); 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)device::HidService* ChromeExtensionsAPIClient::GetHidService() { 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!hid_service_) { 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) hid_service_.reset(device::HidService::Create( 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserThread::GetMessageLoopProxyForThread( 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserThread::UI))); 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return hid_service_.get(); 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void ChromeExtensionsAPIClient::RegisterGuestViewTypes() { 736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) AppViewGuest::Register(); 746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ExtensionOptionsGuest::Register(); 756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) WebViewGuest::Register(); 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace extensions 79