mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
* chore: bump chromium in DEPS to 118.0.5951.0 * chore: update printing.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4727894 No logic changes, but patch needed to be manually re-applied due to upstream code shear * chore: update port_autofill_colors_to_the_color_pipeline.patch No manual changes; patch applied with fuzz * chore: update patches * chore: bump chromium in DEPS to 118.0.5953.0 * chore: update patches * chore: bump chromium in DEPS to 118.0.5955.0 * chore: update patches * chore: bump chromium in DEPS to 118.0.5957.0 * chore: update patches * chore: include path of native_web_keyboard_event.h Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4758689 * chore: remove reference to eextensions/browser/notification-types.h Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4771627 * chore: update references to renamed upstream field NativeWebKeyboardEvent.skip_if_unhandled (formerly known as skip_in_browser Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4758689 Need a second pair of eyes on this commit. In particular the reference in content_converter.cc, skipInBrowser, seems to not be set or documented anywhere? Is this unused/vestigal code? * chore: sync signature of ElectronExtensionsBrowserClient::IsValidContext() to upstream change Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4784198 * chore: add auto_pip_setting_helper.[cc,h] to chromium_src build Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4688277 Exiting upstream code used by chromium_src now depends on this new upstream class * chore: bump chromium in DEPS to 118.0.5959.0 * chore: update add_maximized_parameter_to_linuxui_getwindowframeprovider.patch Xref: add_maximized_parameter_to_linuxui_getwindowframeprovider.patch manually adjust patch to minor upstream chagnes * chore: update patches * chore: bump chromium in DEPS to 118.0.5961.0 * chore: bump chromium in DEPS to 118.0.5963.0 * chore: update patches * 4780994: Rename various base files to "apple" since iOS uses them too https://chromium-review.googlesource.com/c/chromium/src/+/4780994 * Many files moved from `mac` -> `apple` This commit follows a handful of CLs that simply rename files/symbols to change `mac` to `apple` to signify their use across both macOS and iOS: - 4784010: Move scoped_nsautorelease_pool to base/apple, leave a forwarding header - 4790744: Move foundation_util to base/apple, leave a forwarding header - 4790741: Move scoped_cftypreref to base/apple, leave a forwarding header - 4787627: Move and rename macOS+iOS base/ files in PA to "apple" - 4780399: Move OSStatus logging to base/apple - 4787387: Remove forwarding headers - 4781113: Rename message_pump_mac to "apple" because iOS uses it too * fixup minor patch update error A function param got dropped from this patch somewhere earlier * chore: bump chromium in DEPS to 118.0.5965.2 * chore: update patches * 4799213: Move ScopedTypeRef and ScopedCFTypeRef into base::apple:: https://chromium-review.googlesource.com/c/chromium/src/+/4799213 * Fix removed include to BrowserContext In crrev.com/c/4767962 an include to BrowserContext was removed, which was necessary for compilation. This broke only for us because "chrome/browser/profiles/profile.h" includes that class, but we remove all references to profiles. * chore: bump chromium in DEPS to 118.0.5967.0 * chore: update patches * chore: bump chromium in DEPS to 118.0.5969.0 * chore: update patches * chore: bump chromium in DEPS to 118.0.5971.0 * chore: bump chromium in DEPS to 118.0.5973.0 * chore: update patches * 4772121: [OOPIF PDF] Replace PDFWebContentsHelper with PDFDocumentHelper https://chromium-review.googlesource.com/c/chromium/src/+/4772121 * 4811164: [Extensions] Do some cleanup in ChromeManagementAPIDelegate. https://chromium-review.googlesource.com/c/chromium/src/+/4811164 * 4809488: Remove duplicate dnd functionality between Web and Renderer prefs https://chromium-review.googlesource.com/c/chromium/src/+/4809488 Given that this is no longer an option of web preferences, we should consider deprecating this option and then removing it. * chore: bump chromium in DEPS to 118.0.5975.0 * chore: update patches * fixup! chore: add auto_pip_settings_helper.{cc|h} to chromium_src build * Reland "[windows] Remove RegKey::DeleteEmptyKey" Refs https://chromium-review.googlesource.com/c/chromium/src/+/4813255 * Ensure StrCat means StrCat Refs https://chromium-review.googlesource.com/c/chromium/src/+/1117180 * fixup! Remove RegKey::DeleteEmptyKey * Consistently reject large p and large q in DH Refs https://boringssl-review.googlesource.com/c/boringssl/+/62226 --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: clavin <clavin@electronjs.org> Co-authored-by: deepak1556 <hop2deep@gmail.com>
222 lines
8.4 KiB
C++
222 lines
8.4 KiB
C++
// Copyright 2014 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.
|
|
|
|
// TODO(sentialx): emit relevant events in Electron's session?
|
|
#include "shell/browser/extensions/api/management/electron_management_api_delegate.h"
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <utility>
|
|
|
|
#include "base/functional/bind.h"
|
|
#include "base/strings/strcat.h"
|
|
#include "base/strings/stringprintf.h"
|
|
#include "base/strings/utf_string_conversions.h"
|
|
#include "chrome/common/extensions/extension_metrics.h"
|
|
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
|
|
#include "chrome/common/webui_url_constants.h"
|
|
#include "content/public/browser/browser_context.h"
|
|
#include "content/public/browser/web_contents.h"
|
|
#include "extensions/browser/api/management/management_api.h"
|
|
#include "extensions/browser/api/management/management_api_constants.h"
|
|
#include "extensions/browser/disable_reason.h"
|
|
#include "extensions/browser/extension_prefs.h"
|
|
#include "extensions/browser/extension_registry.h"
|
|
#include "extensions/browser/extension_system.h"
|
|
#include "extensions/common/api/management.h"
|
|
#include "extensions/common/extension.h"
|
|
#include "services/data_decoder/public/cpp/data_decoder.h"
|
|
#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h"
|
|
|
|
namespace {
|
|
class ManagementSetEnabledFunctionInstallPromptDelegate
|
|
: public extensions::InstallPromptDelegate {
|
|
public:
|
|
ManagementSetEnabledFunctionInstallPromptDelegate(
|
|
content::WebContents* web_contents,
|
|
content::BrowserContext* browser_context,
|
|
const extensions::Extension* extension,
|
|
base::OnceCallback<void(bool)> callback) {
|
|
// TODO(sentialx): emit event
|
|
}
|
|
~ManagementSetEnabledFunctionInstallPromptDelegate() override = default;
|
|
|
|
// disable copy
|
|
ManagementSetEnabledFunctionInstallPromptDelegate(
|
|
const ManagementSetEnabledFunctionInstallPromptDelegate&) = delete;
|
|
ManagementSetEnabledFunctionInstallPromptDelegate& operator=(
|
|
const ManagementSetEnabledFunctionInstallPromptDelegate&) = delete;
|
|
|
|
private:
|
|
base::WeakPtrFactory<ManagementSetEnabledFunctionInstallPromptDelegate>
|
|
weak_factory_{this};
|
|
};
|
|
|
|
class ManagementUninstallFunctionUninstallDialogDelegate
|
|
: public extensions::UninstallDialogDelegate {
|
|
public:
|
|
ManagementUninstallFunctionUninstallDialogDelegate(
|
|
extensions::ManagementUninstallFunctionBase* function,
|
|
const extensions::Extension* target_extension,
|
|
bool show_programmatic_uninstall_ui) {
|
|
// TODO(sentialx): emit event
|
|
}
|
|
|
|
~ManagementUninstallFunctionUninstallDialogDelegate() override = default;
|
|
|
|
// disable copy
|
|
ManagementUninstallFunctionUninstallDialogDelegate(
|
|
const ManagementUninstallFunctionUninstallDialogDelegate&) = delete;
|
|
ManagementUninstallFunctionUninstallDialogDelegate& operator=(
|
|
const ManagementUninstallFunctionUninstallDialogDelegate&) = delete;
|
|
};
|
|
|
|
} // namespace
|
|
|
|
ElectronManagementAPIDelegate::ElectronManagementAPIDelegate() = default;
|
|
|
|
ElectronManagementAPIDelegate::~ElectronManagementAPIDelegate() = default;
|
|
|
|
bool ElectronManagementAPIDelegate::LaunchAppFunctionDelegate(
|
|
const extensions::Extension* extension,
|
|
content::BrowserContext* context) const {
|
|
// Note: Chromium looks for an existing profile and determines whether
|
|
// the user has set a launch preference
|
|
// See: https://chromium-review.googlesource.com/c/chromium/src/+/4389621
|
|
// For Electron, this should always return the default (true).
|
|
// TODO(sentialx): emit event
|
|
extensions::RecordAppLaunchType(extension_misc::APP_LAUNCH_EXTENSION_API,
|
|
extension->GetType());
|
|
return true;
|
|
}
|
|
|
|
GURL ElectronManagementAPIDelegate::GetFullLaunchURL(
|
|
const extensions::Extension* extension) const {
|
|
return extensions::AppLaunchInfo::GetFullLaunchURL(extension);
|
|
}
|
|
|
|
extensions::LaunchType ElectronManagementAPIDelegate::GetLaunchType(
|
|
const extensions::ExtensionPrefs* prefs,
|
|
const extensions::Extension* extension) const {
|
|
// TODO(sentialx)
|
|
return extensions::LAUNCH_TYPE_DEFAULT;
|
|
}
|
|
|
|
std::unique_ptr<extensions::InstallPromptDelegate>
|
|
ElectronManagementAPIDelegate::SetEnabledFunctionDelegate(
|
|
content::WebContents* web_contents,
|
|
content::BrowserContext* browser_context,
|
|
const extensions::Extension* extension,
|
|
base::OnceCallback<void(bool)> callback) const {
|
|
return std::make_unique<ManagementSetEnabledFunctionInstallPromptDelegate>(
|
|
web_contents, browser_context, extension, std::move(callback));
|
|
}
|
|
|
|
std::unique_ptr<extensions::UninstallDialogDelegate>
|
|
ElectronManagementAPIDelegate::UninstallFunctionDelegate(
|
|
extensions::ManagementUninstallFunctionBase* function,
|
|
const extensions::Extension* target_extension,
|
|
bool show_programmatic_uninstall_ui) const {
|
|
return std::make_unique<ManagementUninstallFunctionUninstallDialogDelegate>(
|
|
function, target_extension, show_programmatic_uninstall_ui);
|
|
}
|
|
|
|
bool ElectronManagementAPIDelegate::CreateAppShortcutFunctionDelegate(
|
|
extensions::ManagementCreateAppShortcutFunction* function,
|
|
const extensions::Extension* extension,
|
|
std::string* error) const {
|
|
return false; // TODO(sentialx): route event and return true
|
|
}
|
|
|
|
std::unique_ptr<extensions::AppForLinkDelegate>
|
|
ElectronManagementAPIDelegate::GenerateAppForLinkFunctionDelegate(
|
|
extensions::ManagementGenerateAppForLinkFunction* function,
|
|
content::BrowserContext* context,
|
|
const std::string& title,
|
|
const GURL& launch_url) const {
|
|
// TODO(sentialx)
|
|
return nullptr;
|
|
}
|
|
|
|
bool ElectronManagementAPIDelegate::CanContextInstallWebApps(
|
|
content::BrowserContext* context) const {
|
|
// TODO(sentialx)
|
|
return false;
|
|
}
|
|
|
|
void ElectronManagementAPIDelegate::InstallOrLaunchReplacementWebApp(
|
|
content::BrowserContext* context,
|
|
const GURL& web_app_url,
|
|
InstallOrLaunchWebAppCallback callback) const {
|
|
// TODO(sentialx)
|
|
}
|
|
|
|
void ElectronManagementAPIDelegate::EnableExtension(
|
|
content::BrowserContext* context,
|
|
const std::string& extension_id) const {
|
|
// const extensions::Extension* extension =
|
|
// extensions::ExtensionRegistry::Get(context)->GetExtensionById(
|
|
// extension_id, extensions::ExtensionRegistry::EVERYTHING);
|
|
|
|
// TODO(sentialx): we don't have ExtensionService
|
|
// If the extension was disabled for a permissions increase, the Management
|
|
// API will have displayed a re-enable prompt to the user, so we know it's
|
|
// safe to grant permissions here.
|
|
// extensions::ExtensionSystem::Get(context)
|
|
// ->extension_service()
|
|
// ->GrantPermissionsAndEnableExtension(extension);
|
|
}
|
|
|
|
void ElectronManagementAPIDelegate::DisableExtension(
|
|
content::BrowserContext* context,
|
|
const extensions::Extension* source_extension,
|
|
const std::string& extension_id,
|
|
extensions::disable_reason::DisableReason disable_reason) const {
|
|
// TODO(sentialx): we don't have ExtensionService
|
|
// extensions::ExtensionSystem::Get(context)
|
|
// ->extension_service()
|
|
// ->DisableExtensionWithSource(source_extension, extension_id,
|
|
// disable_reason);
|
|
}
|
|
|
|
bool ElectronManagementAPIDelegate::UninstallExtension(
|
|
content::BrowserContext* context,
|
|
const std::string& transient_extension_id,
|
|
extensions::UninstallReason reason,
|
|
std::u16string* error) const {
|
|
// TODO(sentialx): we don't have ExtensionService
|
|
// return extensions::ExtensionSystem::Get(context)
|
|
// ->extension_service()
|
|
// ->UninstallExtension(transient_extension_id, reason, error);
|
|
return false;
|
|
}
|
|
|
|
void ElectronManagementAPIDelegate::SetLaunchType(
|
|
content::BrowserContext* context,
|
|
const std::string& extension_id,
|
|
extensions::LaunchType launch_type) const {
|
|
// TODO(sentialx)
|
|
// extensions::SetLaunchType(context, extension_id, launch_type);
|
|
}
|
|
|
|
GURL ElectronManagementAPIDelegate::GetIconURL(
|
|
const extensions::Extension* extension,
|
|
int icon_size,
|
|
ExtensionIconSet::MatchType match,
|
|
bool grayscale) const {
|
|
GURL icon_url(base::StringPrintf("%s%s/%d/%d%s",
|
|
chrome::kChromeUIExtensionIconURL,
|
|
extension->id().c_str(), icon_size, match,
|
|
grayscale ? "?grayscale=true" : ""));
|
|
CHECK(icon_url.is_valid());
|
|
return icon_url;
|
|
}
|
|
|
|
GURL ElectronManagementAPIDelegate::GetEffectiveUpdateURL(
|
|
const extensions::Extension& extension,
|
|
content::BrowserContext* context) const {
|
|
// TODO(codebytere): we do not currently support ExtensionManagement.
|
|
return GURL::EmptyGURL();
|
|
}
|