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()21CefExtensionsAPIProvider::CefExtensionsAPIProvider() {} 22 AddAPIFeatures(FeatureProvider * provider)23void CefExtensionsAPIProvider::AddAPIFeatures(FeatureProvider* provider) { 24 AddCEFAPIFeatures(provider); 25 } 26 AddManifestFeatures(FeatureProvider * provider)27void CefExtensionsAPIProvider::AddManifestFeatures(FeatureProvider* provider) { 28 AddCEFManifestFeatures(provider); 29 } 30 AddPermissionFeatures(FeatureProvider * provider)31void CefExtensionsAPIProvider::AddPermissionFeatures( 32 FeatureProvider* provider) { 33 AddCEFPermissionFeatures(provider); 34 } 35 AddBehaviorFeatures(FeatureProvider * provider)36void CefExtensionsAPIProvider::AddBehaviorFeatures(FeatureProvider* provider) { 37 // No CEF-specific behavior features. 38 } 39 AddAPIJSONSources(JSONFeatureProviderSource * json_source)40void 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)47bool 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)61base::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)76void CefExtensionsAPIProvider::RegisterPermissions( 77 PermissionsInfo* permissions_info) { 78 permissions_info->RegisterPermissions( 79 chrome_api_permissions::GetPermissionInfos(), 80 chrome_api_permissions::GetPermissionAliases()); 81 } 82 RegisterManifestHandlers()83void CefExtensionsAPIProvider::RegisterManifestHandlers() { 84 RegisterChromeManifestHandlers(); 85 } 86 87 } // namespace extensions 88