Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / chrome_extensions_api_client.cc
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/storage/sync_value_store_cache.h"
9 #include "chrome/browser/guest_view/app_view/app_view_guest.h"
10 #include "chrome/browser/guest_view/extension_options/extension_options_guest.h"
11 #include "chrome/browser/guest_view/web_view/web_view_guest.h"
12 #include "content/public/browser/browser_context.h"
13 #include "content/public/browser/browser_thread.h"
14 #include "device/hid/hid_service.h"
15
16 #if defined(ENABLE_CONFIGURATION_POLICY)
17 #include "chrome/browser/extensions/api/storage/managed_value_store_cache.h"
18 #endif
19
20 namespace extensions {
21
22 ChromeExtensionsAPIClient::ChromeExtensionsAPIClient() {}
23
24 ChromeExtensionsAPIClient::~ChromeExtensionsAPIClient() {}
25
26 void ChromeExtensionsAPIClient::AddAdditionalValueStoreCaches(
27     content::BrowserContext* context,
28     const scoped_refptr<SettingsStorageFactory>& factory,
29     const scoped_refptr<ObserverListThreadSafe<SettingsObserver> >& observers,
30     std::map<settings_namespace::Namespace, ValueStoreCache*>* caches) {
31   // Add support for chrome.storage.sync.
32   (*caches)[settings_namespace::SYNC] =
33       new SyncValueStoreCache(factory, observers, context->GetPath());
34
35 #if defined(ENABLE_CONFIGURATION_POLICY)
36   // Add support for chrome.storage.managed.
37   (*caches)[settings_namespace::MANAGED] =
38       new ManagedValueStoreCache(context, factory, observers);
39 #endif
40 }
41
42 bool ChromeExtensionsAPIClient::AppViewInternalAttachFrame(
43     content::BrowserContext* browser_context,
44     const GURL& url,
45     int guest_instance_id,
46     const std::string& guest_extension_id) {
47   return AppViewGuest::CompletePendingRequest(browser_context,
48                                               url,
49                                               guest_instance_id,
50                                               guest_extension_id);
51 }
52
53 bool ChromeExtensionsAPIClient::AppViewInternalDenyRequest(
54     content::BrowserContext* browser_context,
55     int guest_instance_id,
56     const std::string& guest_extension_id) {
57   return AppViewGuest::CompletePendingRequest(browser_context,
58                                               GURL(),
59                                               guest_instance_id,
60                                               guest_extension_id);
61 }
62
63 device::HidService* ChromeExtensionsAPIClient::GetHidService() {
64   if (!hid_service_) {
65     hid_service_.reset(device::HidService::Create(
66         content::BrowserThread::GetMessageLoopProxyForThread(
67             content::BrowserThread::UI)));
68   }
69   return hid_service_.get();
70 }
71
72 void ChromeExtensionsAPIClient::RegisterGuestViewTypes() {
73   AppViewGuest::Register();
74   ExtensionOptionsGuest::Register();
75   WebViewGuest::Register();
76 }
77
78 }  // namespace extensions