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