• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 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 "libcef/common/extensions/extensions_api_provider.h"
6 
7 #include "libcef/common/extensions/chrome_generated_schemas.h"
8 
9 #include "cef/grit/cef_resources.h"
10 //#include "cef/libcef/common/extensions/api/generated_schemas.h"
11 #include "cef/libcef/common/extensions/api/cef_api_features.h"
12 #include "cef/libcef/common/extensions/api/cef_manifest_features.h"
13 #include "cef/libcef/common/extensions/api/cef_permission_features.h"
14 #include "chrome/common/extensions/chrome_manifest_handlers.h"
15 #include "chrome/common/extensions/permissions/chrome_api_permissions.h"
16 #include "extensions/common/features/json_feature_provider_source.h"
17 #include "extensions/common/permissions/permissions_info.h"
18 
19 namespace extensions {
20 
CefExtensionsAPIProvider()21 CefExtensionsAPIProvider::CefExtensionsAPIProvider() {}
22 
AddAPIFeatures(FeatureProvider * provider)23 void CefExtensionsAPIProvider::AddAPIFeatures(FeatureProvider* provider) {
24   AddCEFAPIFeatures(provider);
25 }
26 
AddManifestFeatures(FeatureProvider * provider)27 void CefExtensionsAPIProvider::AddManifestFeatures(FeatureProvider* provider) {
28   AddCEFManifestFeatures(provider);
29 }
30 
AddPermissionFeatures(FeatureProvider * provider)31 void CefExtensionsAPIProvider::AddPermissionFeatures(
32     FeatureProvider* provider) {
33   AddCEFPermissionFeatures(provider);
34 }
35 
AddBehaviorFeatures(FeatureProvider * provider)36 void CefExtensionsAPIProvider::AddBehaviorFeatures(FeatureProvider* provider) {
37   // No CEF-specific behavior features.
38 }
39 
AddAPIJSONSources(JSONFeatureProviderSource * json_source)40 void CefExtensionsAPIProvider::AddAPIJSONSources(
41     JSONFeatureProviderSource* json_source) {
42   // Extension API features specific to CEF. See
43   // libcef/common/extensions/api/README.txt for additional details.
44   json_source->LoadJSON(IDR_CEF_EXTENSION_API_FEATURES);
45 }
46 
IsAPISchemaGenerated(const std::string & name)47 bool CefExtensionsAPIProvider::IsAPISchemaGenerated(const std::string& name) {
48   // Schema for CEF-only APIs.
49   // TODO(cef): Enable if/when CEF exposes its own Mojo APIs. See
50   // libcef/common/extensions/api/README.txt for details.
51   // if (api::cef::CefGeneratedSchemas::IsGenerated(name))
52   //   return true;
53 
54   // Chrome APIs whitelisted by CEF.
55   if (api::cef::ChromeGeneratedSchemas::IsGenerated(name))
56     return true;
57 
58   return false;
59 }
60 
GetAPISchema(const std::string & name)61 base::StringPiece CefExtensionsAPIProvider::GetAPISchema(
62     const std::string& name) {
63   // Schema for CEF-only APIs.
64   // TODO(cef): Enable if/when CEF exposes its own Mojo APIs. See
65   // libcef/common/extensions/api/README.txt for details.
66   // if (api::cef::CefGeneratedSchemas::IsGenerated(name))
67   //   return api::cef::CefGeneratedSchemas::Get(name);
68 
69   // Chrome APIs whitelisted by CEF.
70   if (api::cef::ChromeGeneratedSchemas::IsGenerated(name))
71     return api::cef::ChromeGeneratedSchemas::Get(name);
72 
73   return base::StringPiece();
74 }
75 
RegisterPermissions(PermissionsInfo * permissions_info)76 void CefExtensionsAPIProvider::RegisterPermissions(
77     PermissionsInfo* permissions_info) {
78   permissions_info->RegisterPermissions(
79       chrome_api_permissions::GetPermissionInfos(),
80       chrome_api_permissions::GetPermissionAliases());
81 }
82 
RegisterManifestHandlers()83 void CefExtensionsAPIProvider::RegisterManifestHandlers() {
84   RegisterChromeManifestHandlers();
85 }
86 
87 }  // namespace extensions
88