Files
electron/shell/common/extensions/electron_extensions_api_provider.cc
electron-roller[bot] 9daf416097 chore: bump chromium to 122.0.6261.6 (29-x-y) (#40959)
* chore: bump chromium in DEPS to 122.0.6240.1

* chore: bump chromium in DEPS to 122.0.6241.6

* chore: bump chromium in DEPS to 122.0.6245.1

* chore: bump chromium in DEPS to 122.0.6247.1

* chore: bump chromium in DEPS to 122.0.6249.1

* chore: bump chromium in DEPS to 122.0.6251.1

* chore: bump chromium in DEPS to 122.0.6253.1

* chore: bump chromium in DEPS to 122.0.6255.1

* chore: bump chromium in DEPS to 122.0.6257.1

* chore: bump chromium in DEPS to 122.0.6259.1

* chore: bump chromium in DEPS to 122.0.6259.3

* chore: bump chromium in DEPS to 122.0.6259.5

* chore: bump chromium in DEPS to 122.0.6260.0

* chore: bump chromium in DEPS to 122.0.6261.1

* chore: bump chromium in DEPS to 122.0.6261.6

* chore: update patches

(cherry picked from commit dde66c3589)

* refactor: extensions replaced StringPiece with string_view

Ref: https://chromium-review.googlesource.com/c/chromium/src/+/5171926
(cherry picked from commit c7031d5c05)

* chore: update patches

(cherry picked from commit 95b04b1fca)

* 5192010: Rename {absl => std}::optional in //chrome/

https://chromium-review.googlesource.com/c/chromium/src/+/5192010
(cherry picked from commit 55e5867614)

* 5109767: CodeHealth: Fix leaked raw_ptr in Linux ProcessSingleton

https://chromium-review.googlesource.com/c/chromium/src/+/5109767
(cherry picked from commit 7b2efc7586)

* 5105227: [media_preview] Show requested device in permission bubble

https://chromium-review.googlesource.com/c/chromium/src/+/5105227
(cherry picked from commit 10d61636c6)

* chore: update patches

(cherry picked from commit d04ebc7b07)

* 5180720: Polish tiled browser window UI on Linux | https://chromium-review.googlesource.com/c/chromium/src/+/5180720

(cherry picked from commit 3dbbb67dbc)

* chore: update patches

(cherry picked from commit 18a5961e4e)

* chore: update patches

(cherry picked from commit 69e0bfefcc)

* 5186276: [autopip] Make "allow once" per navigation | https://chromium-review.googlesource.com/c/chromium/src/+/5186276

(cherry picked from commit 412f70681a)

* chore: update patches

(cherry picked from commit e4d2a2ded0)

* 5190661: Automated T* -> raw_ptr<T> rewrite "refresh" | https://chromium-review.googlesource.com/c/chromium/src/+/5190661

(cherry picked from commit 6b41b72130)

* 5206106: Make sure RenderFrameHosts are active when printing | https://chromium-review.googlesource.com/c/chromium/src/+/5206106

(cherry picked from commit 9a788c0c60)

* 5202674: Reland "Automated T* -> raw_ptr<T> rewrite 'refresh'"

https://chromium-review.googlesource.com/c/chromium/src/+/5202674
(cherry picked from commit 55daca952d)

* fixup CodeHealth: Fix leaked raw_ptr in Linux ProcessSingleton

https://chromium-review.googlesource.com/c/chromium/src/+/5109767
(cherry picked from commit 047898ba92)

* fixup 5206106: Make sure RenderFrameHosts are active when printing

(cherry picked from commit 715c534cd8)

* Make legacy ToV8() helpers private to ScriptPromiseResolver, their only user

https://chromium-review.googlesource.com/c/chromium/src/+/5207474
(cherry picked from commit 9a10062d8c)

* fixup CodeHealth: Fix leaked raw_ptr in Linux ProcessSingleton

(cherry picked from commit a1f643b25e)

* fixup 5186276: [autopip] Make "allow once" per navigation

https://chromium-review.googlesource.com/c/chromium/src/+/5186276
(cherry picked from commit e3c40ed923)

* 5191363: Mark LOG(FATAL) [[noreturn]]

https://chromium-review.googlesource.com/c/chromium/src/+/5191363
(cherry picked from commit 8037cef988)

* fixup 5186276: [autopip] Make "allow once" per navigation

https://chromium-review.googlesource.com/c/chromium/src/+/5186276
(cherry picked from commit e60c31dd4f)

* fixup Make legacy ToV8() helpers private to ScriptPromiseResolver

 https://chromium-review.googlesource.com/c/chromium/src/+/5207474

(cherry picked from commit b02108e0c0)

* chore: update patches

(cherry picked from commit 96e8574115)

* chore: update patches

(cherry picked from commit e0f51957be)

* chore: restore patch that was mistakenly removed

(cherry picked from commit 4057b5439c)

* 5181931: Improve LoginHandler (Part 9 / N)

https://chromium-review.googlesource.com/c/chromium/src/+/5181931
(cherry picked from commit 6ad8028fe8)

* Dispatch SiteInstanceGotProcess() only when both process and site are set.

https://chromium-review.googlesource.com/c/chromium/src/+/5142354
(cherry picked from commit a871198a23)

* 5171446: [AsyncSB] Pass navigation_id into CreateURLLoaderThrottles

https://chromium-review.googlesource.com/c/chromium/src/+/5171446
(cherry picked from commit ebf2efcedd)

* 5213708: Move DownloadTargetInfo into components/download

https://chromium-review.googlesource.com/c/chromium/src/+/5213708
(cherry picked from commit c361ded147)

* extensions: Add a loader for Controlled Frame embedder scripts

https://chromium-review.googlesource.com/c/chromium/src/+/5202765
(cherry picked from commit 63d2773d15)

* [CSC][Zoom] Add initial_zoom_level to DisplayMediaInformation

https://chromium-review.googlesource.com/c/chromium/src/+/5168626
(cherry picked from commit a4b5c9ce31)

* fix: suppress clang -Wimplicit-const-int-float-conversion

(cherry picked from commit 979bde6683)

* fixup 5191363: Mark LOG(FATAL) [[noreturn]] for Windows

 https://chromium-review.googlesource.com/c/chromium/src/+/5191363

(cherry picked from commit 759f1740a8)

* 5167921: Remove Widget::IsTranslucentWindowOpacitySupported

https://chromium-review.googlesource.com/c/chromium/src/+/5167921

Also
5148392: PinnedState: Support pinned state in PlatformWindowState | https://chromium-review.googlesource.com/c/chromium/src/+/5148392

(cherry picked from commit 53d9c82a57)

* fixup: 5180720: Polish tiled browser window UI on Linux

https://chromium-review.googlesource.com/c/chromium/src/+/5180720
(cherry picked from commit e565db5095)

* 5170669: clipboard: Migrate DOMException constructors to RejectWith-

https://chromium-review.googlesource.com/c/chromium/src/+/5170669
(cherry picked from commit 5409118134)

* 5178824: [Fullscreen] Record UKM data

https://chromium-review.googlesource.com/c/chromium/src/+/5178824
(cherry picked from commit 3d53a6ec01)

* chore: update patches after rebase

(cherry picked from commit 3a6a335a05)

* chore: update patches after cherry picks

* chore: update patches after rebase

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-01-25 15:19:31 -05:00

112 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 "base/strings/utf_string_conversions.h"
#include "chrome/common/extensions/chrome_manifest_url_handlers.h"
#include "chrome/common/extensions/manifest_handlers/minimum_chrome_version_checker.h"
#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_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 {
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::make_span(permissions_to_register);
}
base::span<const Alias> GetPermissionAliases() {
return base::span<const Alias>();
}
} // 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