![electron-roller[bot]](/assets/img/avatar_default.png)
* chore: bump chromium in DEPS to 133.0.6858.0 * chore: bump chromium in DEPS to 133.0.6860.0 * chore: update patches v8/revert_fastapi_remove_dynamic_overload_resolution.patch had some additions due to6023139
* 6044060: Reland "Moves shared GN templates into //build/config/apple."6044060
* Revert "6023139: [fastapi] Add support for attribute setters"6023139
* Update printing.patch The removed include is present in the original source file now, just slightly before where it was being added. 6015430: Reduce platform-like buildflags in sandbox code Refs:6015430
* 6039836: Migrate Command::IsMediaKey to be a member of ui::Accelerator6039836
* 6038659: [CodeHealth] Clean up the feature ZstdContentEncoding6038659
* chore: bump chromium in DEPS to 133.0.6862.0 * chore: update patches * 72747: crypto: switch to C++ https://boringssl-review.googlesource.com/c/boringssl/+/72747 * fixup! 72747: crypto: switch to C++ https://boringssl-review.googlesource.com/c/boringssl/+/72747 * chore: gen libc++ filenames * 6042601: [shared storage] Implement with_lock option for methods from response headers6042601
* chore: bump chromium in DEPS to 133.0.6864.0 * chore: bump chromium in DEPS to 133.0.6866.0 * chore: bump chromium in DEPS to 133.0.6868.0 * chore: bump chromium in DEPS to 133.0.6870.0 * chore: bump chromium in DEPS to 133.0.6872.0 * chore: bump chromium in DEPS to 133.0.6874.0 * chore: bump chromium in DEPS to 133.0.6876.0 * 6039992: Fix false activation logic for context menu. |6039992
* chore: update patches * chore: update patches * chore: bump chromium in DEPS to 133.0.6878.0 * chore: update patches * [Build] Organize //components/dbus into a single component Xref:6055280
* Merge //components/dbus/* into a single //components/dbus, which matches how most components are organized. This avoids having many small shared libraries which incurs unnecessary overhead. * Limit visibility of //components/dbus/* to //components/dbus * fixup! Update _LIBCPP_ABI_VERSION to always have a default value while keeping unstable false due to changes in llvm https://github.com/llvm/llvm-project/pull/112094 * 6040416: Let s know which widget the input came on. |6040416
* 6056267: [MPArch guest view] Fix authentication for MPArch guests |6056267
* make_span() is deprecated: https://issues.chromium.org/issues/341907909 * fixup: https://issues.chromium.org/issues/341907909 * chore: delete extra bracket from removing make_span commit * fixup: 6059305: Make WTF::UTF8ConversionMode a scoped enum |6059305
* 6051058: CookieInclusionStatus: Remove ctors which bypass invariants |6051058
* 6038981: Remove most remaining CHECK(false)s |6038981
* build: use third_party/simdutf in Node.js * chore: node ./script/gen-libc++-filenames.js * chore: fix strict-cast conversion error in subspan() Xref:6044946
* chore: fix strict-cast conversion error in base::as_bytes() Xref:6044946
* chore: fix strict-cast conversion error in span.split_at() Xref:6044946
* chore: use shorthand target name * chore: better docs in build_add_public_config_simdutf_config.patch --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: clavin <clavin@electronjs.org> Co-authored-by: alice <alice@makenotion.com> Co-authored-by: Charles Kerr <charles@charleskerr.com>
113 lines
4.2 KiB
C++
113 lines
4.2 KiB
C++
// Copyright 2018 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/common/extensions/electron_extensions_api_provider.h"
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
#include "base/containers/span.h"
|
|
#include "chrome/common/extensions/chrome_manifest_url_handlers.h"
|
|
#include "chrome/common/extensions/manifest_handlers/minimum_chrome_version_checker.h" // nogncheck
|
|
#include "electron/buildflags/buildflags.h"
|
|
#include "electron/shell/common/extensions/api/generated_schemas.h"
|
|
#include "extensions/common/alias.h"
|
|
#include "extensions/common/features/feature_provider.h"
|
|
#include "extensions/common/features/json_feature_provider_source.h"
|
|
#include "extensions/common/features/simple_feature.h"
|
|
#include "extensions/common/manifest_constants.h"
|
|
#include "extensions/common/manifest_handler.h"
|
|
#include "extensions/common/manifest_handler_registry.h"
|
|
#include "extensions/common/manifest_handlers/permissions_parser.h"
|
|
#include "extensions/common/manifest_url_handlers.h"
|
|
#include "extensions/common/permissions/permissions_info.h"
|
|
#include "shell/common/extensions/api/api_features.h"
|
|
#include "shell/common/extensions/api/manifest_features.h"
|
|
#include "shell/common/extensions/api/permission_features.h"
|
|
|
|
namespace extensions {
|
|
namespace {
|
|
|
|
constexpr APIPermissionInfo::InitInfo permissions_to_register[] = {
|
|
{mojom::APIPermissionID::kDevtools, "devtools",
|
|
APIPermissionInfo::kFlagImpliesFullURLAccess |
|
|
APIPermissionInfo::kFlagCannotBeOptional |
|
|
APIPermissionInfo::kFlagInternal},
|
|
{mojom::APIPermissionID::kResourcesPrivate, "resourcesPrivate",
|
|
APIPermissionInfo::kFlagCannotBeOptional},
|
|
#if BUILDFLAG(ENABLE_PDF_VIEWER)
|
|
{mojom::APIPermissionID::kPdfViewerPrivate, "pdfViewerPrivate"},
|
|
#endif
|
|
{mojom::APIPermissionID::kManagement, "management"},
|
|
{mojom::APIPermissionID::kTab, "tabs",
|
|
APIPermissionInfo::kFlagRequiresManagementUIWarning},
|
|
{mojom::APIPermissionID::kScripting, "scripting",
|
|
APIPermissionInfo::kFlagRequiresManagementUIWarning},
|
|
};
|
|
base::span<const APIPermissionInfo::InitInfo> GetPermissionInfos() {
|
|
return base::span(permissions_to_register);
|
|
}
|
|
base::span<const Alias> GetPermissionAliases() {
|
|
return {};
|
|
}
|
|
|
|
} // namespace
|
|
} // namespace extensions
|
|
|
|
namespace electron {
|
|
|
|
ElectronExtensionsAPIProvider::ElectronExtensionsAPIProvider() = default;
|
|
ElectronExtensionsAPIProvider::~ElectronExtensionsAPIProvider() = default;
|
|
|
|
void ElectronExtensionsAPIProvider::AddAPIFeatures(
|
|
extensions::FeatureProvider* provider) {
|
|
extensions::AddElectronAPIFeatures(provider);
|
|
}
|
|
|
|
void ElectronExtensionsAPIProvider::AddManifestFeatures(
|
|
extensions::FeatureProvider* provider) {
|
|
extensions::AddElectronManifestFeatures(provider);
|
|
}
|
|
|
|
void ElectronExtensionsAPIProvider::AddPermissionFeatures(
|
|
extensions::FeatureProvider* provider) {
|
|
extensions::AddElectronPermissionFeatures(provider);
|
|
}
|
|
|
|
void ElectronExtensionsAPIProvider::AddBehaviorFeatures(
|
|
extensions::FeatureProvider* provider) {
|
|
// No shell-specific behavior features.
|
|
}
|
|
|
|
void ElectronExtensionsAPIProvider::AddAPIJSONSources(
|
|
extensions::JSONFeatureProviderSource* json_source) {
|
|
// json_source->LoadJSON(IDR_SHELL_EXTENSION_API_FEATURES);
|
|
}
|
|
|
|
bool ElectronExtensionsAPIProvider::IsAPISchemaGenerated(
|
|
const std::string& name) {
|
|
return extensions::api::ElectronGeneratedSchemas::IsGenerated(name);
|
|
}
|
|
|
|
std::string_view ElectronExtensionsAPIProvider::GetAPISchema(
|
|
const std::string& name) {
|
|
return extensions::api::ElectronGeneratedSchemas::Get(name);
|
|
}
|
|
|
|
void ElectronExtensionsAPIProvider::RegisterPermissions(
|
|
extensions::PermissionsInfo* permissions_info) {
|
|
permissions_info->RegisterPermissions(extensions::GetPermissionInfos(),
|
|
extensions::GetPermissionAliases());
|
|
}
|
|
|
|
void ElectronExtensionsAPIProvider::RegisterManifestHandlers() {
|
|
extensions::ManifestHandlerRegistry* registry =
|
|
extensions::ManifestHandlerRegistry::Get();
|
|
registry->RegisterHandler(
|
|
std::make_unique<extensions::DevToolsPageHandler>());
|
|
registry->RegisterHandler(
|
|
std::make_unique<extensions::MinimumChromeVersionChecker>());
|
|
}
|
|
|
|
} // namespace electron
|