chore: bump chromium to 103.0.5046.0 (main) (#33906)

* chore: bump chromium in DEPS to 103.0.5020.0

* chore: bump chromium in DEPS to 103.0.5022.0

* chore: bump chromium in DEPS to 103.0.5024.0

* chore: update patches

* 3587410: [Printing] Remove JobEventDetails

Ref: 3587410

* chore: bump chromium in DEPS to 103.0.5026.0

* chore: update patches

* 3577218: WebUI: Delete webui_resources.grd and related GN targets.

Ref: 3577218

* chore: bump chromium in DEPS to 103.0.5028.0

* chore: update patches

* 3579297: Convert UpdatePrintSettings() to use non-deprecated base::Value APIs.

Ref: 3579297

* 3560622: serial: Add SerialPort.forget() method

Ref: 3560622

* 3581708: Restore original display when moving from tab-fullscreen to browser-fullscreen.

Ref: 3581708

* chore: fix authorization flags lint error

* 3583363: Remove net wrappers around base/strings/escape.h

Ref: 3583363

* fixup! 3560622: serial: Add SerialPort.forget() method

Ref: 3560622

* 3587589: Reland "Propagate the MIME type from DownloadTargetDeterminer to DownloadItem"

Ref: 3587589

* 3584006: Remove IsRenderViewLive from content public

Ref: 3584006

* 3596174: [api] Remove APIs for resurrecting finalizers

Ref: 3596174

* 3368244: Hook SnapshotForContentAnalysis renderer API to scan system prints

Ref: 3368244

* chore: bump chromium in DEPS to 103.0.5030.0

* chore: update patches

* chore: bump chromium in DEPS to 103.0.5032.0

* chore: bump chromium in DEPS to 103.0.5034.0

* chore: bump chromium in DEPS to 103.0.5036.0

* chore: update patches

* 3586363: Introduce PrintRenderFrame.PrintWithParams() for batch printing to PDF

Ref: 3586363

* 3593199: Remove content::PermissionType references and replace them with blink::PermissionType

Ref: 3593199

* 3368244: Hook SnapshotForContentAnalysis renderer API to scan system prints

Ref: 3368244

* chore: lint

* chore: bump chromium in DEPS to 103.0.5038.0

* chore: update patches

* fixup! 3560622: serial: Add SerialPort.forget() method

* 3606495: mac screen capture: add metric

Ref: 3606495

* chore: bump chromium in DEPS to 103.0.5040.0

* chore: update patches

* 3590840: Add IPs to DnsOverHttpsServerConfig

3590840

* stub functions for ElectronSerialDelegate and SerialChooserController to fix link

* 3566412: [base] Remove base/android dependency on post_task.h and officially remove post_task.h!

Ref: 3566412

* 3347944: [content] No longer hand-off whole MainFunctionParams to BrowserMainParts

Ref: 3347944

* fixup! 3566412: [base] Remove base/android dependency on post_task.h and off…
e3ea3e1
…icially remove post_task.h!

* chore: update process_singleton patches for content::GetIOThreadTaskRunner({})

Ref: 2015655: [BrowserThread] Migrate co/pub/br and co/br/scheduler to the new API | 2015655

* chore: migrate base::DeleteSoon to content::GetUIThreadTaskRunner({})->DeleteSoon

Ref: 3566412

* chore: remove duplicate functions for RevokePortPermissionWebInitiated & GetPortInfo

* chore: migrate Linux/Windows methods off of post_task.h

Ref: 3566412

* 64908: Stop building legacy SwiftShader GL in Chromium

https://swiftshader-review.googlesource.com/c/SwiftShader/+/64908

* 3573245: Added Themed versions of RoundedRectBackground and RoundedRectBorder.

Ref: 3573245

* chore: bump chromium in DEPS to 103.0.5042.0

* chore: update patches

* 3571804: [api] Advance API deprecation for V8 version v10.2

3571804

* fixup! 3571804: [api] Advance API deprecation for V8 version v10.2

* build: fix run-clang-format extension matching

* lint

* fix windows build

* how is clang-format still not working for me

* chore: update patches

* 3623985: Replace ad-hoc SetPublicFirstPartySets calls with method in ContentBrowserClient.

3623985

* no need to implement WillProvidePublicFirstPartySets; the default is false

* 3601036: [QT] Introduce ui/views/linux_ui/linux_ui_factory.*

3601036

* 3583363: Remove net wrappers around base/strings/escape.h

3583363

* lint

* chore: bump chromium in DEPS to 103.0.5044.0

* fix conflicts

* chore: update patches

* upgrade nan

* pin version of nan in tests

* replace my hacky deprecated override fix with the fix from upstream

* revert runtime dcheck in v8

* pin nan version at root too

* refactor: tell gyp to use c++17 when building with our node

* Revert "refactor: tell gyp to use c++17 when building with our node"

This reverts commit 41a03a5799a8f40f31555d73d20ea865acfcd192.

* Undo the reversion of 41a03a5799a8f40f31555d73d20ea865acfcd192.

This reverts commit 54440abc598153bd7e259be4a908f0ecc0b33348.

* disable sequential/test-cpu-prof-kill for now

* also sequential/test-diagnostic-dir-cpu-prof

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: Jeremy Rose <japthorp@slack-corp.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
electron-roller[bot] 2022-05-17 12:48:40 -04:00 committed by GitHub
parent 04b33b319b
commit 61374019c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
168 changed files with 1009 additions and 873 deletions

View file

@ -253,6 +253,8 @@ bool ElectronMainDelegate::BasicStartupComplete(int* exit_code) {
auto env = base::Environment::Create();
gin_helper::Locker::SetIsBrowserProcess(IsBrowserProcess(command_line));
// Enable convenient stack printing. This is enabled by default in
// non-official builds.
if (env->HasVar(kElectronEnableStackDumping))

View file

@ -35,6 +35,7 @@
#include "crypto/crypto_buildflags.h"
#include "media/audio/audio_manager.h"
#include "net/dns/public/dns_over_https_config.h"
#include "net/dns/public/dns_over_https_server_config.h"
#include "net/dns/public/util.h"
#include "net/ssl/client_cert_identity.h"
#include "net/ssl/ssl_cert_request_info.h"
@ -1680,17 +1681,18 @@ void ConfigureHostResolver(v8::Isolate* isolate,
// Validate individual server templates prior to batch-assigning to
// doh_config.
std::vector<net::DnsOverHttpsServerConfig> servers;
for (const std::string& server_template : secure_dns_server_strings) {
absl::optional<net::DnsOverHttpsConfig> server_config =
net::DnsOverHttpsConfig::FromString(server_template);
absl::optional<net::DnsOverHttpsServerConfig> server_config =
net::DnsOverHttpsServerConfig::FromString(server_template);
if (!server_config.has_value()) {
thrower.ThrowTypeError(std::string("not a valid DoH template: ") +
server_template);
return;
}
servers.push_back(*server_config);
}
doh_config = *net::DnsOverHttpsConfig::FromStrings(
std::move(secure_dns_server_strings));
doh_config = net::DnsOverHttpsConfig(std::move(servers));
}
if (opts.Has("enableAdditionalDnsQueryTypes") &&

View file

@ -10,7 +10,6 @@
#include <string>
#include <vector>
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "gin/handle.h"
@ -258,8 +257,8 @@ class BaseWindow : public gin_helper::TrackableObject<BaseWindow>,
template <typename... Args>
void EmitEventSoon(base::StringPiece eventName) {
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(base::IgnoreResult(&BaseWindow::Emit<Args...>),
weak_factory_.GetWeakPtr(), eventName));
}

View file

@ -10,7 +10,6 @@
#include "base/mac/scoped_sending_event.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/current_thread.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"

View file

@ -6,7 +6,6 @@
#include <string>
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "gin/handle.h"
@ -39,8 +38,8 @@ void NativeTheme::OnNativeThemeUpdatedOnUI() {
}
void NativeTheme::OnNativeThemeUpdated(ui::NativeTheme* theme) {
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&NativeTheme::OnNativeThemeUpdatedOnUI,
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(&NativeTheme::OnNativeThemeUpdatedOnUI,
base::Unretained(this)));
}

View file

@ -7,7 +7,6 @@
#include <string>
#include "base/callback_helpers.h"
#include "base/task/post_task.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/public/browser/device_service.h"
#include "gin/dictionary.h"

View file

@ -17,7 +17,6 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/task/post_task.h"
#include "chrome/browser/browser_process.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
@ -622,7 +621,7 @@ void Session::SetPermissionRequestHandler(v8::Local<v8::Value> val,
permission_manager->SetPermissionRequestHandler(base::BindRepeating(
[](ElectronPermissionManager::RequestHandler* handler,
content::WebContents* web_contents,
content::PermissionType permission_type,
blink::PermissionType permission_type,
ElectronPermissionManager::StatusCallback callback,
const base::Value& details) {
handler->Run(web_contents, permission_type,
@ -951,8 +950,8 @@ void Session::Preconnect(const gin_helper::Dictionary& options,
}
DCHECK_GT(num_sockets_to_preconnect, 0);
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&StartPreconnectOnUI, base::Unretained(browser_context_),
url, num_sockets_to_preconnect));
}

View file

@ -18,7 +18,6 @@
#include "base/no_destructor.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/current_thread.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
#include "base/threading/scoped_blocking_call.h"
#include "base/threading/sequenced_task_runner_handle.h"
@ -995,8 +994,8 @@ void WebContents::Destroy() {
if (Browser::Get()->is_shutting_down() || IsGuest()) {
DeleteThisIfAlive();
} else {
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(
[](base::WeakPtr<WebContents> contents) {
if (contents)
contents->DeleteThisIfAlive();
@ -3450,7 +3449,7 @@ v8::Local<v8::Promise> WebContents::TakeHeapSnapshot(
void WebContents::GrantDevicePermission(
const url::Origin& origin,
const base::Value* device,
content::PermissionType permissionType,
blink::PermissionType permissionType,
content::RenderFrameHost* render_frame_host) {
granted_devices_[render_frame_host->GetFrameTreeNodeId()][permissionType]
[origin]
@ -3460,7 +3459,7 @@ void WebContents::GrantDevicePermission(
std::vector<base::Value> WebContents::GetGrantedDevices(
const url::Origin& origin,
content::PermissionType permissionType,
blink::PermissionType permissionType,
content::RenderFrameHost* render_frame_host) {
const auto& devices_for_frame_host_it =
granted_devices_.find(render_frame_host->GetFrameTreeNodeId());

View file

@ -21,7 +21,6 @@
#include "content/common/frame.mojom.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/keyboard_event_processing_result.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_widget_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
@ -43,6 +42,7 @@
#include "shell/common/gin_helper/constructible.h"
#include "shell/common/gin_helper/error_thrower.h"
#include "shell/common/gin_helper/pinnable.h"
#include "third_party/blink/public/common/permissions/permission_utils.h"
#include "ui/base/models/image_model.h"
#include "ui/gfx/image/image.h"
@ -61,7 +61,8 @@ class ScriptExecutor;
namespace blink {
struct DeviceEmulationParams;
}
// enum class PermissionType;
} // namespace blink
namespace gin_helper {
class Dictionary;
@ -97,7 +98,7 @@ namespace api {
using DevicePermissionMap = std::map<
int,
std::map<content::PermissionType,
std::map<blink::PermissionType,
std::map<url::Origin, std::vector<std::unique_ptr<base::Value>>>>>;
// Wrapper around the content::WebContents.
@ -439,7 +440,7 @@ class WebContents : public ExclusiveAccessContext,
// To be used in place of ObjectPermissionContextBase::GrantObjectPermission.
void GrantDevicePermission(const url::Origin& origin,
const base::Value* device,
content::PermissionType permissionType,
blink::PermissionType permissionType,
content::RenderFrameHost* render_frame_host);
// Returns the list of devices that |origin| has been granted permission to
@ -447,7 +448,7 @@ class WebContents : public ExclusiveAccessContext,
// ObjectPermissionContextBase::GetGrantedObjects.
std::vector<base::Value> GetGrantedDevices(
const url::Origin& origin,
content::PermissionType permissionType,
blink::PermissionType permissionType,
content::RenderFrameHost* render_frame_host);
// disable copy

View file

@ -9,7 +9,6 @@
#include "base/bind.h"
#include "base/logging.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
@ -72,8 +71,8 @@ net::NSSCertDatabase* GetNSSCertDatabaseForResourceContext(
void CertificateManagerModel::Create(content::BrowserContext* browser_context,
CreationCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
base::PostTask(FROM_HERE, {BrowserThread::IO},
base::BindOnce(&CertificateManagerModel::GetCertDBOnIOThread,
content::GetIOThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(&CertificateManagerModel::GetCertDBOnIOThread,
browser_context->GetResourceContext(),
std::move(callback)));
}
@ -145,8 +144,8 @@ void CertificateManagerModel::DidGetCertDBOnIOThread(
DCHECK_CURRENTLY_ON(BrowserThread::IO);
bool is_user_db_available = !!cert_db->GetPublicSlot();
base::PostTask(
FROM_HERE, {BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&CertificateManagerModel::DidGetCertDBOnUIThread, cert_db,
is_user_db_available, std::move(callback)));
}

View file

@ -21,11 +21,11 @@
#include "base/no_destructor.h"
#include "base/path_service.h"
#include "base/stl_util.h"
#include "base/strings/escape.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "chrome/browser/browser_process.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
@ -57,7 +57,6 @@
#include "electron/shell/common/api/api.mojom.h"
#include "extensions/browser/api/messaging/messaging_api_message_filter.h"
#include "mojo/public/cpp/bindings/binder_map.h"
#include "net/base/escape.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "ppapi/buildflags/buildflags.h"
#include "ppapi/host/ppapi_host.h"
@ -395,9 +394,8 @@ ElectronBrowserClient* ElectronBrowserClient::Get() {
// static
void ElectronBrowserClient::SetApplicationLocale(const std::string& locale) {
if (!BrowserThread::IsThreadInitialized(BrowserThread::IO) ||
!base::PostTask(
FROM_HERE, {BrowserThread::IO},
base::BindOnce(&SetApplicationLocaleOnIOThread, locale))) {
!content::GetIOThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(&SetApplicationLocaleOnIOThread, locale))) {
g_io_thread_application_locale.Get() = locale;
}
*g_application_locale = locale;
@ -964,10 +962,8 @@ ElectronBrowserClient::GetSystemNetworkContext() {
}
std::unique_ptr<content::BrowserMainParts>
ElectronBrowserClient::CreateBrowserMainParts(
content::MainFunctionParams params) {
auto browser_main_parts =
std::make_unique<ElectronBrowserMainParts>(std::move(params));
ElectronBrowserClient::CreateBrowserMainParts(bool /* is_integration_test */) {
auto browser_main_parts = std::make_unique<ElectronBrowserMainParts>();
#if BUILDFLAG(IS_MAC)
browser_main_parts_ = browser_main_parts.get();
@ -1038,7 +1034,7 @@ void HandleExternalProtocolInUI(
if (!permission_helper)
return;
GURL escaped_url(net::EscapeExternalHandlerValue(url.spec()));
GURL escaped_url(base::EscapeExternalHandlerValue(url.spec()));
auto callback = base::BindOnce(&OnOpenExternal, escaped_url);
permission_helper->RequestOpenExternalPermission(std::move(callback),
has_user_gesture, url);
@ -1057,8 +1053,8 @@ bool ElectronBrowserClient::HandleExternalProtocol(
const absl::optional<url::Origin>& initiating_origin,
content::RenderFrameHost* initiator_document,
mojo::PendingRemote<network::mojom::URLLoaderFactory>* out_factory) {
base::PostTask(
FROM_HERE, {BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&HandleExternalProtocolInUI, url,
std::move(web_contents_getter), has_user_gesture));
return true;

View file

@ -181,7 +181,7 @@ class ElectronBrowserClient : public content::ContentBrowserClient,
std::unique_ptr<content::DevToolsManagerDelegate>
CreateDevToolsManagerDelegate() override;
std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
content::MainFunctionParams params) override;
bool /* is_integration_test */) override;
base::FilePath GetDefaultDownloadDirectory() override;
scoped_refptr<network::SharedURLLoaderFactory>
GetSystemSharedURLLoaderFactory() override;

View file

@ -14,8 +14,8 @@
#include "base/files/file_path.h"
#include "base/no_destructor.h"
#include "base/path_service.h"
#include "base/strings/escape.h"
#include "base/strings/string_util.h"
#include "base/task/post_task.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/threading/thread_restrictions.h"
#include "chrome/common/chrome_paths.h"
@ -33,7 +33,6 @@
#include "content/public/browser/cors_origin_pattern_setter.h"
#include "content/public/browser/shared_cors_origin_access_list.h"
#include "content/public/browser/storage_partition.h"
#include "net/base/escape.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/wrapper_shared_url_loader_factory.h"
#include "services/network/public/mojom/network_context.mojom.h"
@ -88,7 +87,7 @@ namespace {
// Convert string to lower case and escape it.
std::string MakePartitionName(const std::string& input) {
return net::EscapePath(base::ToLowerASCII(input));
return base::EscapePath(base::ToLowerASCII(input));
}
} // namespace

View file

@ -74,11 +74,11 @@
#include "ui/base/cursor/cursor_factory.h"
#include "ui/base/ime/linux/linux_input_method_context_factory.h"
#include "ui/gfx/color_utils.h"
#include "ui/gtk/gtk_compat.h" // nogncheck
#include "ui/gtk/gtk_ui_factory.h" // nogncheck
#include "ui/gtk/gtk_util.h" // nogncheck
#include "ui/gtk/gtk_compat.h" // nogncheck
#include "ui/gtk/gtk_util.h" // nogncheck
#include "ui/ozone/public/ozone_platform.h"
#include "ui/views/linux_ui/linux_ui.h"
#include "ui/views/linux_ui/linux_ui_factory.h"
#endif
#if BUILDFLAG(IS_WIN)
@ -179,8 +179,7 @@ class DarkThemeObserver : public ui::NativeThemeObserver {
// static
ElectronBrowserMainParts* ElectronBrowserMainParts::self_ = nullptr;
ElectronBrowserMainParts::ElectronBrowserMainParts(
const content::MainFunctionParams& params)
ElectronBrowserMainParts::ElectronBrowserMainParts()
: fake_browser_process_(std::make_unique<BrowserProcessImpl>()),
browser_(std::make_unique<Browser>()),
node_bindings_(
@ -347,8 +346,8 @@ int ElectronBrowserMainParts::PreCreateThreads() {
}
void ElectronBrowserMainParts::PostCreateThreads() {
base::PostTask(
FROM_HERE, {content::BrowserThread::IO},
content::GetIOThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&tracing::TracingSamplerProfiler::CreateOnChildThread));
}
@ -366,8 +365,7 @@ void ElectronBrowserMainParts::PostDestroyThreads() {
void ElectronBrowserMainParts::ToolkitInitialized() {
#if BUILDFLAG(IS_LINUX)
auto linux_ui = BuildGtkUi();
linux_ui->Initialize();
auto linux_ui = CreateLinuxUi();
DCHECK(ui::LinuxInputMethodContextFactory::instance());
// Try loading gtk symbols used by Electron.
@ -417,11 +415,6 @@ int ElectronBrowserMainParts::PreMainMessageLoopRun() {
// url::Add*Scheme are not threadsafe, this helps prevent data races.
url::LockSchemeRegistries();
// The First-Party Sets feature always expects to be initialized
// CL: https://chromium-review.googlesource.com/c/chromium/src/+/3448551
content::FirstPartySetsHandler::GetInstance()->SetPublicFirstPartySets(
base::File());
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
extensions_client_ = std::make_unique<ElectronExtensionsClient>();
extensions::ExtensionsClient::Set(extensions_client_.get());
@ -446,8 +439,8 @@ int ElectronBrowserMainParts::PreMainMessageLoopRun() {
if (command_line->HasSwitch(switches::kRemoteDebuggingPipe)) {
// --remote-debugging-pipe
auto on_disconnect = base::BindOnce([]() {
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce([]() { Browser::Get()->Quit(); }));
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce([]() { Browser::Get()->Quit(); }));
});
content::DevToolsAgentHost::StartRemoteDebuggingPipeHandler(
std::move(on_disconnect));

View file

@ -12,7 +12,6 @@
#include "base/timer/timer.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_main_parts.h"
#include "content/public/common/main_function_params.h"
#include "electron/buildflags/buildflags.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/device/public/mojom/geolocation_control.mojom.h"
@ -67,7 +66,7 @@ class DarkThemeObserver;
class ElectronBrowserMainParts : public content::BrowserMainParts {
public:
explicit ElectronBrowserMainParts(const content::MainFunctionParams& params);
ElectronBrowserMainParts();
~ElectronBrowserMainParts() override;
// disable copy

View file

@ -15,7 +15,6 @@
#include "base/debug/leak_annotations.h"
#include "base/posix/eintr_wrapper.h"
#include "base/task/post_task.h"
#include "base/threading/platform_thread.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"

View file

@ -10,7 +10,6 @@
#include "base/bind.h"
#include "base/files/file_util.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
#include "base/threading/thread_restrictions.h"
#include "chrome/common/pref_names.h"
@ -144,7 +143,8 @@ void ElectronDownloadManagerDelegate::OnDownloadPathGenerated(
std::move(callback).Run(
path, download::DownloadItem::TARGET_DISPOSITION_PROMPT,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
item->GetMixedContentStatus(), path, base::FilePath(), absl::nullopt,
item->GetMixedContentStatus(), path, base::FilePath(),
std::string() /*mime_type*/, absl::nullopt /*download_schedule*/,
download::DOWNLOAD_INTERRUPT_REASON_NONE);
}
}
@ -184,7 +184,8 @@ void ElectronDownloadManagerDelegate::OnDownloadSaveDialogDone(
std::move(download_callback)
.Run(path, download::DownloadItem::TARGET_DISPOSITION_PROMPT,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
item->GetMixedContentStatus(), path, base::FilePath(), absl::nullopt,
item->GetMixedContentStatus(), path, base::FilePath(),
std::string() /*mime_type*/, absl::nullopt /*download_schedule*/,
interrupt_reason);
}
@ -204,7 +205,8 @@ bool ElectronDownloadManagerDelegate::DetermineDownloadTarget(
download::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
download::DownloadItem::MixedContentStatus::UNKNOWN,
download->GetForcedFilePath(), base::FilePath(), absl::nullopt,
download->GetForcedFilePath(), base::FilePath(),
std::string() /*mime_type*/, absl::nullopt /*download_schedule*/,
download::DOWNLOAD_INTERRUPT_REASON_NONE);
return true;
}
@ -217,7 +219,8 @@ bool ElectronDownloadManagerDelegate::DetermineDownloadTarget(
save_path, download::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
download::DownloadItem::MixedContentStatus::UNKNOWN, save_path,
base::FilePath(), absl::nullopt,
base::FilePath(), std::string() /*mime_type*/,
absl::nullopt /*download_schedule*/,
download::DOWNLOAD_INTERRUPT_REASON_NONE);
return true;
}

View file

@ -13,7 +13,6 @@
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/global_routing_id.h"
#include "content/public/browser/permission_controller.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
@ -30,6 +29,7 @@
#include "shell/common/gin_converters/frame_converter.h"
#include "shell/common/gin_converters/value_converter.h"
#include "shell/common/gin_helper/event_emitter_caller.h"
#include "third_party/blink/public/common/permissions/permission_utils.h"
namespace electron {
@ -54,7 +54,7 @@ void PermissionRequestResponseCallbackWrapper(
class ElectronPermissionManager::PendingRequest {
public:
PendingRequest(content::RenderFrameHost* render_frame_host,
const std::vector<content::PermissionType>& permissions,
const std::vector<blink::PermissionType>& permissions,
StatusesCallback callback)
: render_process_id_(render_frame_host->GetProcess()->GetID()),
render_frame_id_(render_frame_host->GetGlobalId()),
@ -69,10 +69,10 @@ class ElectronPermissionManager::PendingRequest {
if (status == blink::mojom::PermissionStatus::GRANTED) {
const auto permission = permissions_[permission_id];
if (permission == content::PermissionType::MIDI_SYSEX) {
if (permission == blink::PermissionType::MIDI_SYSEX) {
content::ChildProcessSecurityPolicy::GetInstance()
->GrantSendMidiSysExMessage(render_process_id_);
} else if (permission == content::PermissionType::GEOLOCATION) {
} else if (permission == blink::PermissionType::GEOLOCATION) {
ElectronBrowserMainParts::Get()
->GetGeolocationControl()
->UserDidOptIntoLocationServices();
@ -99,7 +99,7 @@ class ElectronPermissionManager::PendingRequest {
int render_process_id_;
content::GlobalRenderFrameHostId render_frame_id_;
StatusesCallback callback_;
std::vector<content::PermissionType> permissions_;
std::vector<blink::PermissionType> permissions_;
std::vector<blink::mojom::PermissionStatus> results_;
size_t remaining_results_;
};
@ -133,7 +133,7 @@ void ElectronPermissionManager::SetDevicePermissionHandler(
}
void ElectronPermissionManager::RequestPermission(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
@ -144,21 +144,21 @@ void ElectronPermissionManager::RequestPermission(
}
void ElectronPermissionManager::RequestPermissionWithDetails(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::DictionaryValue* details,
StatusCallback response_callback) {
RequestPermissionsWithDetails(
std::vector<content::PermissionType>(1, permission), render_frame_host,
std::vector<blink::PermissionType>(1, permission), render_frame_host,
requesting_origin, user_gesture, details,
base::BindOnce(PermissionRequestResponseCallbackWrapper,
std::move(response_callback)));
}
void ElectronPermissionManager::RequestPermissions(
const std::vector<content::PermissionType>& permissions,
const std::vector<blink::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
@ -169,7 +169,7 @@ void ElectronPermissionManager::RequestPermissions(
}
void ElectronPermissionManager::RequestPermissionsWithDetails(
const std::vector<content::PermissionType>& permissions,
const std::vector<blink::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
@ -183,11 +183,11 @@ void ElectronPermissionManager::RequestPermissionsWithDetails(
if (request_handler_.is_null()) {
std::vector<blink::mojom::PermissionStatus> statuses;
for (auto permission : permissions) {
if (permission == content::PermissionType::MIDI_SYSEX) {
if (permission == blink::PermissionType::MIDI_SYSEX) {
content::ChildProcessSecurityPolicy::GetInstance()
->GrantSendMidiSysExMessage(
render_frame_host->GetProcess()->GetID());
} else if (permission == content::PermissionType::GEOLOCATION) {
} else if (permission == blink::PermissionType::GEOLOCATION) {
ElectronBrowserMainParts::Get()
->GetGeolocationControl()
->UserDidOptIntoLocationServices();
@ -234,12 +234,12 @@ void ElectronPermissionManager::OnPermissionResponse(
}
void ElectronPermissionManager::ResetPermission(
content::PermissionType permission,
blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {}
blink::mojom::PermissionStatus ElectronPermissionManager::GetPermissionStatus(
content::PermissionType permission,
blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
base::DictionaryValue details;
@ -252,7 +252,7 @@ blink::mojom::PermissionStatus ElectronPermissionManager::GetPermissionStatus(
ElectronPermissionManager::SubscriptionId
ElectronPermissionManager::SubscribePermissionStatusChange(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
@ -264,7 +264,7 @@ void ElectronPermissionManager::UnsubscribePermissionStatusChange(
SubscriptionId id) {}
bool ElectronPermissionManager::CheckPermissionWithDetails(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
const base::DictionaryValue* details) const {
@ -285,10 +285,10 @@ bool ElectronPermissionManager::CheckPermissionWithDetails(
"isMainFrame",
render_frame_host && render_frame_host->GetParent() == nullptr);
switch (permission) {
case content::PermissionType::AUDIO_CAPTURE:
case blink::PermissionType::AUDIO_CAPTURE:
mutable_details.SetStringKey("mediaType", "audio");
break;
case content::PermissionType::VIDEO_CAPTURE:
case blink::PermissionType::VIDEO_CAPTURE:
mutable_details.SetStringKey("mediaType", "video");
break;
default:
@ -299,7 +299,7 @@ bool ElectronPermissionManager::CheckPermissionWithDetails(
}
bool ElectronPermissionManager::CheckDevicePermission(
content::PermissionType permission,
blink::PermissionType permission,
const url::Origin& origin,
const base::Value* device,
content::RenderFrameHost* render_frame_host) const {
@ -314,7 +314,7 @@ bool ElectronPermissionManager::CheckDevicePermission(
for (const auto& granted_device : granted_devices) {
if (permission ==
static_cast<content::PermissionType>(
static_cast<blink::PermissionType>(
WebContentsPermissionHelper::PermissionType::HID)) {
if (device->FindIntKey(kHidVendorIdKey) !=
granted_device.FindIntKey(kHidVendorIdKey) ||
@ -332,7 +332,7 @@ bool ElectronPermissionManager::CheckDevicePermission(
*device_serial_number == *serial_number)
return true;
} else if (permission ==
static_cast<content::PermissionType>(
static_cast<blink::PermissionType>(
WebContentsPermissionHelper::PermissionType::SERIAL)) {
#if BUILDFLAG(IS_WIN)
if (device->FindStringKey(kDeviceInstanceIdKey) ==
@ -374,7 +374,7 @@ bool ElectronPermissionManager::CheckDevicePermission(
}
void ElectronPermissionManager::GrantDevicePermission(
content::PermissionType permission,
blink::PermissionType permission,
const url::Origin& origin,
const base::Value* device,
content::RenderFrameHost* render_frame_host) const {
@ -390,7 +390,7 @@ void ElectronPermissionManager::GrantDevicePermission(
blink::mojom::PermissionStatus
ElectronPermissionManager::GetPermissionStatusForFrame(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin) {
base::DictionaryValue details;
@ -402,7 +402,7 @@ ElectronPermissionManager::GetPermissionStatusForFrame(
blink::mojom::PermissionStatus
ElectronPermissionManager::GetPermissionStatusForCurrentDocument(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderFrameHost* render_frame_host) {
return GetPermissionStatus(
permission, render_frame_host->GetLastCommittedOrigin().GetURL(),
@ -411,7 +411,7 @@ ElectronPermissionManager::GetPermissionStatusForCurrentDocument(
blink::mojom::PermissionStatus
ElectronPermissionManager::GetPermissionStatusForWorker(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
const GURL& worker_origin) {
return GetPermissionStatus(permission, worker_origin, worker_origin);

View file

@ -39,12 +39,12 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate {
using StatusesCallback = base::OnceCallback<void(
const std::vector<blink::mojom::PermissionStatus>&)>;
using RequestHandler = base::RepeatingCallback<void(content::WebContents*,
content::PermissionType,
blink::PermissionType,
StatusCallback,
const base::Value&)>;
using CheckHandler =
base::RepeatingCallback<bool(content::WebContents*,
content::PermissionType,
blink::PermissionType,
const GURL& requesting_origin,
const base::Value&)>;
@ -57,49 +57,48 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate {
void SetDevicePermissionHandler(const DeviceCheckHandler& handler);
// content::PermissionControllerDelegate:
void RequestPermission(content::PermissionType permission,
void RequestPermission(blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
StatusCallback callback) override;
void RequestPermissionWithDetails(content::PermissionType permission,
void RequestPermissionWithDetails(blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::DictionaryValue* details,
StatusCallback callback);
void RequestPermissions(
const std::vector<content::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
StatusesCallback callback) override;
void RequestPermissions(const std::vector<blink::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
StatusesCallback callback) override;
void RequestPermissionsWithDetails(
const std::vector<content::PermissionType>& permissions,
const std::vector<blink::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
const base::DictionaryValue* details,
StatusesCallback callback);
blink::mojom::PermissionStatus GetPermissionStatusForFrame(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin) override;
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderFrameHost* render_frame_host) override;
bool CheckPermissionWithDetails(content::PermissionType permission,
bool CheckPermissionWithDetails(blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
const base::DictionaryValue* details) const;
bool CheckDevicePermission(content::PermissionType permission,
bool CheckDevicePermission(blink::PermissionType permission,
const url::Origin& origin,
const base::Value* object,
content::RenderFrameHost* render_frame_host) const;
void GrantDevicePermission(content::PermissionType permission,
void GrantDevicePermission(blink::PermissionType permission,
const url::Origin& origin,
const base::Value* object,
content::RenderFrameHost* render_frame_host) const;
@ -110,19 +109,19 @@ class ElectronPermissionManager : public content::PermissionControllerDelegate {
blink::mojom::PermissionStatus status);
// content::PermissionControllerDelegate:
void ResetPermission(content::PermissionType permission,
void ResetPermission(blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
blink::mojom::PermissionStatus GetPermissionStatus(
content::PermissionType permission,
blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
blink::mojom::PermissionStatus GetPermissionStatusForWorker(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
const GURL& worker_origin) override;
SubscriptionId SubscribePermissionStatusChange(
content::PermissionType permission,
blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,

View file

@ -13,7 +13,6 @@
#include "base/strings/strcat.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.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"

View file

@ -14,7 +14,6 @@
#include "base/memory/ptr_util.h"
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h"
@ -78,7 +77,7 @@ void ElectronExtensionMessageFilter::OnDestruct() const {
if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
delete this;
} else {
base::DeleteSoon(FROM_HERE, {BrowserThread::UI}, this);
content::GetUIThreadTaskRunner({})->DeleteSoon(FROM_HERE, this);
}
}

View file

@ -13,7 +13,6 @@
#include "base/files/file_util.h"
#include "base/json/json_string_value_serializer.h"
#include "base/path_service.h"
#include "base/task/post_task.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/grit/browser_resources.h"
#include "components/value_store/value_store_factory_impl.h"
@ -204,11 +203,12 @@ AppSorting* ElectronExtensionSystem::app_sorting() {
void ElectronExtensionSystem::RegisterExtensionWithRequestContexts(
const Extension* extension,
base::OnceClosure callback) {
base::PostTaskAndReply(FROM_HERE, {BrowserThread::IO},
base::BindOnce(&InfoMap::AddExtension, info_map(),
base::RetainedRef(extension),
base::Time::Now(), false, false),
std::move(callback));
content::GetIOThreadTaskRunner({})->PostTaskAndReply(
FROM_HERE,
base::BindOnce(&InfoMap::AddExtension, info_map(),
base::RetainedRef(extension), base::Time::Now(), false,
false),
std::move(callback));
}
void ElectronExtensionSystem::UnregisterExtensionWithRequestContexts(

View file

@ -9,7 +9,6 @@
#include "base/bind.h"
#include "base/memory/ptr_util.h"
#include "base/path_service.h"
#include "base/task/post_task.h"
#include "build/build_config.h"
#include "chrome/browser/extensions/chrome_url_request_util.h"
#include "chrome/common/chrome_paths.h"
@ -301,8 +300,8 @@ void ElectronExtensionsBrowserClient::BroadcastEventToRenderers(
std::unique_ptr<base::ListValue> args,
bool dispatch_to_off_the_record_profiles) {
if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
base::PostTask(
FROM_HERE, {BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(
&ElectronExtensionsBrowserClient::BroadcastEventToRenderers,
base::Unretained(this), histogram_value, event_name,

View file

@ -9,7 +9,6 @@
#include "base/bind.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
@ -122,8 +121,8 @@
*/
- (void)runCallback:(bool)isProductValid {
if (callback_) {
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(std::move(callback_), isProductValid));
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(std::move(callback_), isProductValid));
}
// Release this delegate.
[self release];

View file

@ -8,7 +8,6 @@
#include "base/bind.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
@ -75,8 +74,8 @@ using InAppTransactionCallback = base::RepeatingCallback<void(
}
// Send the callback to the browser thread.
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(callback_, converted));
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(callback_, converted));
}
/**

View file

@ -10,7 +10,6 @@
#include "base/bind.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
@ -83,8 +82,8 @@
}
// Send the callback to the browser thread.
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(std::move(callback_), converted));
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(std::move(callback_), converted));
[self release];
}

View file

@ -16,7 +16,6 @@
#include "base/mac/mac_util.h"
#include "base/mac/scoped_cftyperef.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h"
#include "components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h"
#include "components/remote_cocoa/browser/scoped_cg_window_id.h"
#include "content/public/browser/browser_accessibility_state.h"
@ -1000,8 +999,8 @@ void NativeWindowMac::OnDisplayMetricsChanged(const display::Display& display,
if (!is_simple_fullscreen_)
return;
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&NativeWindow::UpdateFrame, GetWeakPtr()));
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(&NativeWindow::UpdateFrame, GetWeakPtr()));
}
void NativeWindowMac::SetSimpleFullScreen(bool simple_fullscreen) {
@ -1779,8 +1778,8 @@ bool NativeWindowMac::CanMaximize() const {
}
void NativeWindowMac::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) {
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&NativeWindow::RedrawTrafficLights, GetWeakPtr()));
}

View file

@ -11,7 +11,6 @@
#include <vector>
#include "base/strings/stringprintf.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
#include "content/public/browser/file_url_loader.h"
#include "electron/fuses.h"

View file

@ -15,7 +15,6 @@
#include "base/logging.h"
#include "base/strings/string_util_win.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "shell/browser/notifications/notification_delegate.h"
@ -600,8 +599,8 @@ ToastEventHandler::~ToastEventHandler() = default;
IFACEMETHODIMP ToastEventHandler::Invoke(
ABI::Windows::UI::Notifications::IToastNotification* sender,
IInspectable* args) {
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&Notification::NotificationClicked, notification_));
if (IsDebuggingNotifications())
LOG(INFO) << "Notification clicked";
@ -612,8 +611,8 @@ IFACEMETHODIMP ToastEventHandler::Invoke(
IFACEMETHODIMP ToastEventHandler::Invoke(
ABI::Windows::UI::Notifications::IToastNotification* sender,
ABI::Windows::UI::Notifications::IToastDismissedEventArgs* e) {
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&Notification::NotificationDismissed, notification_));
if (IsDebuggingNotifications())
LOG(INFO) << "Notification dismissed";
@ -628,8 +627,8 @@ IFACEMETHODIMP ToastEventHandler::Invoke(
e->get_ErrorCode(&error);
std::string errorMessage =
"Notification failed. HRESULT:" + std::to_string(error);
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&Notification::NotificationFailed,
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(&Notification::NotificationFailed,
notification_, errorMessage));
if (IsDebuggingNotifications())
LOG(INFO) << errorMessage;

View file

@ -12,7 +12,6 @@
#include "base/callback_helpers.h"
#include "base/location.h"
#include "base/memory/ptr_util.h"
#include "base/task/post_task.h"
#include "base/task/single_thread_task_runner.h"
#include "base/time/time.h"
#include "components/viz/common/features.h"
@ -757,8 +756,8 @@ void OffScreenRenderWidgetHostView::ReleaseResize() {
hold_resize_ = false;
if (pending_resize_) {
pending_resize_ = false;
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(
&OffScreenRenderWidgetHostView::SynchronizeVisualProperties,
weak_ptr_factory_.GetWeakPtr()));
@ -862,8 +861,8 @@ void OffScreenRenderWidgetHostView::SendMouseWheelEvent(
// Scrolling outside of the popup widget so destroy it.
// Execute asynchronously to avoid deleting the widget from inside some
// other callback.
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&OffScreenRenderWidgetHostView::CancelWidget,
popup_host_view_->weak_ptr_factory_.GetWeakPtr()));
}

View file

@ -11,7 +11,6 @@
#include "base/memory/read_only_shared_memory_region.h"
#include "base/memory/ref_counted.h"
#include "base/memory/ref_counted_memory.h"
#include "base/task/post_task.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/printing/print_job_manager.h"
#include "chrome/browser/printing/printer_query.h"
@ -42,8 +41,8 @@ void StopWorker(int document_cookie) {
std::unique_ptr<printing::PrinterQuery> printer_query =
queue->PopPrinterQuery(document_cookie);
if (printer_query.get()) {
base::PostTask(FROM_HERE, {BrowserThread::IO},
base::BindOnce(&printing::PrinterQuery::StopWorker,
content::GetIOThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(&printing::PrinterQuery::StopWorker,
std::move(printer_query)));
}
}

View file

@ -81,6 +81,19 @@ void ElectronSerialDelegate::RemoveObserver(content::RenderFrameHost* frame,
}
}
void ElectronSerialDelegate::RevokePortPermissionWebInitiated(
content::RenderFrameHost* frame,
const base::UnguessableToken& token) {
// TODO(nornagon/jkleinsc): pass this on to the chooser context
}
const device::mojom::SerialPortInfo* ElectronSerialDelegate::GetPortInfo(
content::RenderFrameHost* frame,
const base::UnguessableToken& token) {
// TODO(nornagon/jkleinsc): pass this on to the chooser context
return nullptr;
}
SerialChooserController* ElectronSerialDelegate::ControllerForFrame(
content::RenderFrameHost* render_frame_host) {
auto mapping = controller_map_.find(render_frame_host);

View file

@ -39,6 +39,12 @@ class ElectronSerialDelegate : public content::SerialDelegate {
Observer* observer) override;
void RemoveObserver(content::RenderFrameHost* frame,
Observer* observer) override;
void RevokePortPermissionWebInitiated(
content::RenderFrameHost* frame,
const base::UnguessableToken& token) override;
const device::mojom::SerialPortInfo* GetPortInfo(
content::RenderFrameHost* frame,
const base::UnguessableToken& token) override;
void DeleteControllerForFrame(content::RenderFrameHost* render_frame_host);

View file

@ -90,6 +90,11 @@ SerialChooserContext::SerialChooserContext() = default;
SerialChooserContext::~SerialChooserContext() = default;
void SerialChooserContext::OnPermissionRevoked(const url::Origin& origin) {
for (auto& observer : port_observer_list_)
observer.OnPermissionRevoked(origin);
}
void SerialChooserContext::GrantPortPermission(
const url::Origin& origin,
const device::mojom::SerialPortInfo& port,
@ -116,6 +121,16 @@ bool SerialChooserContext::HasPortPermission(
render_frame_host);
}
void SerialChooserContext::RevokePortPermissionWebInitiated(
const url::Origin& origin,
const base::UnguessableToken& token) {
auto it = port_info_.find(token);
if (it == port_info_.end())
return;
return OnPermissionRevoked(origin);
}
// static
bool SerialChooserContext::CanStorePersistentEntry(
const device::mojom::SerialPortInfo& port) {
@ -150,6 +165,13 @@ bool SerialChooserContext::CanStorePersistentEntry(
#endif // BUILDFLAG(IS_WIN)
}
const device::mojom::SerialPortInfo* SerialChooserContext::GetPortInfo(
const base::UnguessableToken& token) {
DCHECK(is_initialized_);
auto it = port_info_.find(token);
return it == port_info_.end() ? nullptr : it->second.get();
}
device::mojom::SerialPortManager* SerialChooserContext::GetPortManager() {
EnsurePortManagerConnection();
return port_manager_.get();

View file

@ -55,6 +55,9 @@ class SerialChooserContext : public KeyedService,
SerialChooserContext(const SerialChooserContext&) = delete;
SerialChooserContext& operator=(const SerialChooserContext&) = delete;
// ObjectPermissionContextBase::PermissionObserver:
void OnPermissionRevoked(const url::Origin& origin);
// Serial-specific interface for granting and checking permissions.
void GrantPortPermission(const url::Origin& origin,
const device::mojom::SerialPortInfo& port,
@ -72,15 +75,30 @@ class SerialChooserContext : public KeyedService,
base::WeakPtr<SerialChooserContext> AsWeakPtr();
bool is_initialized_ = false;
// Map from port token to port info.
std::map<base::UnguessableToken, device::mojom::SerialPortInfoPtr> port_info_;
// SerialPortManagerClient implementation.
void OnPortAdded(device::mojom::SerialPortInfoPtr port) override;
void OnPortRemoved(device::mojom::SerialPortInfoPtr port) override;
void RevokePortPermissionWebInitiated(const url::Origin& origin,
const base::UnguessableToken& token);
// Only call this if you're sure |port_info_| has been initialized
// before-hand. The returned raw pointer is owned by |port_info_| and will be
// destroyed when the port is removed.
const device::mojom::SerialPortInfo* GetPortInfo(
const base::UnguessableToken& token);
private:
void EnsurePortManagerConnection();
void SetUpPortManagerConnection(
mojo::PendingRemote<device::mojom::SerialPortManager> manager);
void OnPortManagerConnectionError();
void RevokeObjectPermissionInternal(const url::Origin& origin,
const base::Value& object,
bool revoked_by_website);
mojo::Remote<device::mojom::SerialPortManager> port_manager_;
mojo::Receiver<device::mojom::SerialPortManagerClient> client_receiver_{this};

View file

@ -116,6 +116,10 @@ void SerialChooserController::OnPortRemoved(
}
}
void SerialChooserController::OnPortManagerConnectionError() {
// TODO(nornagon/jkleinsc): report event
}
void SerialChooserController::OnDeviceChosen(const std::string& port_id) {
if (port_id.empty()) {
RunCallback(/*port=*/nullptr);

View file

@ -46,7 +46,8 @@ class SerialChooserController final : public SerialChooserContext::PortObserver,
// SerialChooserContext::PortObserver:
void OnPortAdded(const device::mojom::SerialPortInfo& port) override;
void OnPortRemoved(const device::mojom::SerialPortInfo& port) override;
void OnPortManagerConnectionError() override {}
void OnPortManagerConnectionError() override;
void OnPermissionRevoked(const url::Origin& origin) override {}
private:
api::Session* GetSession();

View file

@ -291,9 +291,10 @@ bool ElectronBundleMover::AuthorizedInstall(NSString* srcPath,
AuthorizationItem myItems = {kAuthorizationRightExecute, 0, NULL, 0};
AuthorizationRights myRights = {1, &myItems};
AuthorizationFlags myFlags = (AuthorizationFlags)(
kAuthorizationFlagInteractionAllowed | kAuthorizationFlagExtendRights |
kAuthorizationFlagPreAuthorize);
AuthorizationFlags myFlags =
(AuthorizationFlags)(kAuthorizationFlagInteractionAllowed |
kAuthorizationFlagExtendRights |
kAuthorizationFlagPreAuthorize);
err = AuthorizationCopyRights(myAuthorizationRef, &myRights, NULL, myFlags,
NULL);

View file

@ -12,7 +12,6 @@
#include "base/mac/foundation_util.h"
#include "base/strings/sys_string_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/mac/url_conversions.h"
@ -227,7 +226,8 @@ static base::scoped_nsobject<NSMenu> recentDocumentsMenuSwap_;
if (model_)
model_->MenuWillClose();
if (!closeCallback.is_null()) {
base::PostTask(FROM_HERE, {BrowserThread::UI}, std::move(closeCallback));
content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE,
std::move(closeCallback));
}
}
}
@ -536,7 +536,8 @@ static base::scoped_nsobject<NSMenu> recentDocumentsMenuSwap_;
// Post async task so that itemSelected runs before the close callback
// deletes the controller from the map which deallocates it
if (!closeCallback.is_null()) {
base::PostTask(FROM_HERE, {BrowserThread::UI}, std::move(closeCallback));
content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE,
std::move(closeCallback));
}
}
}

View file

@ -117,8 +117,8 @@ void DevToolsManagerDelegate::HandleCommand(
// Since we only have one method and it is supposed to close Electron,
// we don't need to add this complexity. Should we decide to support
// methods like Browser.setWindowBounds, we'll need to do it though.
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce([]() { Browser::Get()->Quit(); }));
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce([]() { Browser::Get()->Quit(); }));
return;
}
std::move(callback).Run(message);

View file

@ -16,7 +16,6 @@
#include "base/mac/mac_util.h"
#include "base/mac/scoped_cftyperef.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h"
#include "base/threading/thread_restrictions.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
@ -301,8 +300,8 @@ void ResolvePromiseInNextTick(gin_helper::Promise<v8::Local<v8::Value>> promise,
// users will run in the microtask, we have to delay the resolution until
// next tick, otherwise crash like this may happen:
// https://github.com/electron/electron/issues/26884
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(
[](gin_helper::Promise<v8::Local<v8::Value>> promise,
v8::Global<v8::Value> global) {

View file

@ -20,7 +20,6 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
#include "content/public/browser/browser_thread.h"
#include "shell/browser/ui/gtk/app_indicator_icon_menu.h"

View file

@ -19,7 +19,6 @@
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "base/values.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"

View file

@ -17,7 +17,6 @@
#include "base/mac/scoped_nsobject.h"
#include "base/no_destructor.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "shell/browser/native_window.h"
@ -178,8 +177,8 @@ void ShowMessageBox(const MessageBoxSettings& settings,
// users will run in the callback, we have to delay running the callback
// until next tick, otherwise crash like this may happen:
// https://github.com/electron/electron/issues/26884
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(std::move(callback_), response, suppressed));
};
[alert beginSheetModalForWindow:window completionHandler:handler];

View file

@ -16,7 +16,6 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/lock.h"
#include "base/task/post_task.h"
#include "base/win/scoped_gdi_object.h"
#include "shell/browser/browser.h"
#include "shell/browser/native_window_views.h"

View file

@ -10,7 +10,6 @@
#include "base/message_loop/message_pump_mac.h"
#include "base/strings/sys_string_conversions.h"
#include "base/task/current_thread.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "shell/browser/ui/cocoa/NSString+ANSI.h"
@ -365,8 +364,8 @@ void TrayIconCocoa::PopUpOnUI(ElectronMenuModel* menu_model) {
void TrayIconCocoa::PopUpContextMenu(const gfx::Point& pos,
ElectronMenuModel* menu_model) {
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(&TrayIconCocoa::PopUpOnUI, weak_factory_.GetWeakPtr(),
base::Unretained(menu_model)));
}

View file

@ -10,7 +10,6 @@
#include <utility>
#include "base/bind.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
namespace {

View file

@ -38,8 +38,7 @@ MenuBar::MenuBar(NativeWindow* window, RootView* root_view)
RefreshColorCache(theme);
UpdateViewColors();
#if BUILDFLAG(IS_WIN)
SetBackground(
views::CreateThemedSolidBackground(this, ui::kColorMenuBackground));
SetBackground(views::CreateThemedSolidBackground(ui::kColorMenuBackground));
background_color_ = GetBackground()->get_color();
#endif
SetFocusBehavior(FocusBehavior::ALWAYS);

View file

@ -6,7 +6,6 @@
#include <memory>
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "shell/browser/ui/views/menu_bar.h"
@ -134,8 +133,8 @@ views::MenuItemView* MenuDelegate::GetSiblingMenu(
button_to_open_ = button;
// Switching menu asynchronously to avoid crash.
if (!switch_in_progress) {
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&views::MenuRunner::Cancel,
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(&views::MenuRunner::Cancel,
base::Unretained(menu_runner_.get())));
}
}

View file

@ -13,6 +13,7 @@
#include "base/callback_helpers.h"
#include "base/command_line.h"
#include "base/json/json_writer.h"
#include "base/strings/escape.h"
#include "base/strings/pattern.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
@ -37,7 +38,6 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/browser/web_ui_data_source.h"
#include "net/base/escape.h"
#include "shell/browser/native_window.h"
#include "shell/browser/window_list.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
@ -95,7 +95,7 @@ std::unique_ptr<base::DictionaryValue> BuildTargetDescriptor(
target_data->SetInteger(kProcessIdField, process_id);
target_data->SetInteger(kRoutingIdField, routing_id);
target_data->SetString(kUrlField, url.spec());
target_data->SetString(kNameField, net::EscapeForHTML(name));
target_data->SetString(kNameField, base::EscapeForHTML(name));
target_data->SetInteger(kPidField, base::GetProcId(handle));
target_data->SetString(kFaviconUrlField, favicon_url.spec());
target_data->SetInteger(kAccessibilityModeField, accessibility_mode.mode());

View file

@ -8,7 +8,7 @@
#include <utility>
#include "base/memory/scoped_refptr.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
namespace dialog_thread {
@ -33,8 +33,8 @@ void Run(base::OnceCallback<R()> execute, base::OnceCallback<void(R)> done) {
[](TaskRunner task_runner, base::OnceCallback<R()> execute,
base::OnceCallback<void(R)> done) {
R r = std::move(execute).Run();
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(
[](TaskRunner task_runner, base::OnceCallback<void(R)> done,
R r) {

View file

@ -61,7 +61,7 @@ WebContentsPermissionHelper::WebContentsPermissionHelper(
WebContentsPermissionHelper::~WebContentsPermissionHelper() = default;
void WebContentsPermissionHelper::RequestPermission(
content::PermissionType permission,
blink::PermissionType permission,
base::OnceCallback<void(bool)> callback,
bool user_gesture,
const base::DictionaryValue* details) {
@ -75,7 +75,7 @@ void WebContentsPermissionHelper::RequestPermission(
}
bool WebContentsPermissionHelper::CheckPermission(
content::PermissionType permission,
blink::PermissionType permission,
const base::DictionaryValue* details) const {
auto* rfh = web_contents_->GetMainFrame();
auto* permission_manager = static_cast<ElectronPermissionManager*>(
@ -86,7 +86,7 @@ bool WebContentsPermissionHelper::CheckPermission(
}
bool WebContentsPermissionHelper::CheckDevicePermission(
content::PermissionType permission,
blink::PermissionType permission,
const url::Origin& origin,
const base::Value* device,
content::RenderFrameHost* render_frame_host) const {
@ -97,7 +97,7 @@ bool WebContentsPermissionHelper::CheckDevicePermission(
}
void WebContentsPermissionHelper::GrantDevicePermission(
content::PermissionType permission,
blink::PermissionType permission,
const url::Origin& origin,
const base::Value* device,
content::RenderFrameHost* render_frame_host) const {
@ -110,7 +110,7 @@ void WebContentsPermissionHelper::GrantDevicePermission(
void WebContentsPermissionHelper::RequestFullscreenPermission(
base::OnceCallback<void(bool)> callback) {
RequestPermission(
static_cast<content::PermissionType>(PermissionType::FULLSCREEN),
static_cast<blink::PermissionType>(PermissionType::FULLSCREEN),
std::move(callback));
}
@ -135,14 +135,13 @@ void WebContentsPermissionHelper::RequestMediaAccessPermission(
// The permission type doesn't matter here, AUDIO_CAPTURE/VIDEO_CAPTURE
// are presented as same type in content_converter.h.
RequestPermission(content::PermissionType::AUDIO_CAPTURE, std::move(callback),
RequestPermission(blink::PermissionType::AUDIO_CAPTURE, std::move(callback),
false, &details);
}
void WebContentsPermissionHelper::RequestWebNotificationPermission(
base::OnceCallback<void(bool)> callback) {
RequestPermission(content::PermissionType::NOTIFICATIONS,
std::move(callback));
RequestPermission(blink::PermissionType::NOTIFICATIONS, std::move(callback));
}
void WebContentsPermissionHelper::RequestPointerLockPermission(
@ -151,7 +150,7 @@ void WebContentsPermissionHelper::RequestPointerLockPermission(
base::OnceCallback<void(content::WebContents*, bool, bool, bool)>
callback) {
RequestPermission(
static_cast<content::PermissionType>(PermissionType::POINTER_LOCK),
static_cast<blink::PermissionType>(PermissionType::POINTER_LOCK),
base::BindOnce(std::move(callback), web_contents_, user_gesture,
last_unlocked_by_target),
user_gesture);
@ -164,7 +163,7 @@ void WebContentsPermissionHelper::RequestOpenExternalPermission(
base::DictionaryValue details;
details.SetString("externalURL", url.spec());
RequestPermission(
static_cast<content::PermissionType>(PermissionType::OPEN_EXTERNAL),
static_cast<blink::PermissionType>(PermissionType::OPEN_EXTERNAL),
std::move(callback), user_gesture, &details);
}
@ -176,7 +175,7 @@ bool WebContentsPermissionHelper::CheckMediaAccessPermission(
details.SetString("mediaType", MediaStreamTypeToString(type));
// The permission type doesn't matter here, AUDIO_CAPTURE/VIDEO_CAPTURE
// are presented as same type in content_converter.h.
return CheckPermission(content::PermissionType::AUDIO_CAPTURE, &details);
return CheckPermission(blink::PermissionType::AUDIO_CAPTURE, &details);
}
bool WebContentsPermissionHelper::CheckSerialAccessPermission(
@ -184,7 +183,7 @@ bool WebContentsPermissionHelper::CheckSerialAccessPermission(
base::DictionaryValue details;
details.SetString("securityOrigin", embedding_origin.GetURL().spec());
return CheckPermission(
static_cast<content::PermissionType>(PermissionType::SERIAL), &details);
static_cast<blink::PermissionType>(PermissionType::SERIAL), &details);
}
bool WebContentsPermissionHelper::CheckSerialPortPermission(
@ -192,7 +191,7 @@ bool WebContentsPermissionHelper::CheckSerialPortPermission(
base::Value device,
content::RenderFrameHost* render_frame_host) const {
return CheckDevicePermission(
static_cast<content::PermissionType>(PermissionType::SERIAL), origin,
static_cast<blink::PermissionType>(PermissionType::SERIAL), origin,
&device, render_frame_host);
}
@ -201,7 +200,7 @@ void WebContentsPermissionHelper::GrantSerialPortPermission(
base::Value device,
content::RenderFrameHost* render_frame_host) const {
return GrantDevicePermission(
static_cast<content::PermissionType>(PermissionType::SERIAL), origin,
static_cast<blink::PermissionType>(PermissionType::SERIAL), origin,
&device, render_frame_host);
}
@ -210,7 +209,7 @@ bool WebContentsPermissionHelper::CheckHIDAccessPermission(
base::DictionaryValue details;
details.SetString("securityOrigin", embedding_origin.GetURL().spec());
return CheckPermission(
static_cast<content::PermissionType>(PermissionType::HID), &details);
static_cast<blink::PermissionType>(PermissionType::HID), &details);
}
bool WebContentsPermissionHelper::CheckHIDDevicePermission(
@ -218,8 +217,8 @@ bool WebContentsPermissionHelper::CheckHIDDevicePermission(
base::Value device,
content::RenderFrameHost* render_frame_host) const {
return CheckDevicePermission(
static_cast<content::PermissionType>(PermissionType::HID), origin,
&device, render_frame_host);
static_cast<blink::PermissionType>(PermissionType::HID), origin, &device,
render_frame_host);
}
void WebContentsPermissionHelper::GrantHIDDevicePermission(
@ -227,8 +226,8 @@ void WebContentsPermissionHelper::GrantHIDDevicePermission(
base::Value device,
content::RenderFrameHost* render_frame_host) const {
return GrantDevicePermission(
static_cast<content::PermissionType>(PermissionType::HID), origin,
&device, render_frame_host);
static_cast<blink::PermissionType>(PermissionType::HID), origin, &device,
render_frame_host);
}
WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsPermissionHelper);

View file

@ -7,9 +7,9 @@
#include "base/values.h"
#include "content/public/browser/media_stream_request.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/web_contents_user_data.h"
#include "third_party/blink/public/common/mediastream/media_stream_request.h"
#include "third_party/blink/public/common/permissions/permission_utils.h"
namespace electron {
@ -25,7 +25,7 @@ class WebContentsPermissionHelper
delete;
enum class PermissionType {
POINTER_LOCK = static_cast<int>(content::PermissionType::NUM) + 1,
POINTER_LOCK = static_cast<int>(blink::PermissionType::NUM) + 1,
FULLSCREEN,
OPEN_EXTERNAL,
SERIAL,
@ -73,20 +73,20 @@ class WebContentsPermissionHelper
explicit WebContentsPermissionHelper(content::WebContents* web_contents);
friend class content::WebContentsUserData<WebContentsPermissionHelper>;
void RequestPermission(content::PermissionType permission,
void RequestPermission(blink::PermissionType permission,
base::OnceCallback<void(bool)> callback,
bool user_gesture = false,
const base::DictionaryValue* details = nullptr);
bool CheckPermission(content::PermissionType permission,
bool CheckPermission(blink::PermissionType permission,
const base::DictionaryValue* details) const;
bool CheckDevicePermission(content::PermissionType permission,
bool CheckDevicePermission(blink::PermissionType permission,
const url::Origin& origin,
const base::Value* device,
content::RenderFrameHost* render_frame_host) const;
void GrantDevicePermission(content::PermissionType permission,
void GrantDevicePermission(blink::PermissionType permission,
const url::Origin& origin,
const base::Value* device,
content::RenderFrameHost* render_frame_host) const;

View file

@ -46,7 +46,7 @@ void WebContentsZoomController::SetEmbedderZoomController(
}
void WebContentsZoomController::SetZoomLevel(double level) {
if (!web_contents()->GetRenderViewHost()->IsRenderViewLive() ||
if (!web_contents()->GetMainFrame()->IsRenderFrameLive() ||
blink::PageZoomValuesEqual(GetZoomLevel(), level) ||
zoom_mode_ == ZoomMode::kDisabled)
return;

View file

@ -15,7 +15,6 @@
#include "base/logging.h"
#include "base/pickle.h"
#include "base/strings/string_number_conversions.h"
#include "base/task/post_task.h"
#include "base/threading/thread_restrictions.h"
#include "base/values.h"
#include "electron/fuses.h"

View file

@ -134,67 +134,67 @@ bool Converter<blink::mojom::PermissionStatus>::FromV8(
}
// static
v8::Local<v8::Value> Converter<content::PermissionType>::ToV8(
v8::Local<v8::Value> Converter<blink::PermissionType>::ToV8(
v8::Isolate* isolate,
const content::PermissionType& val) {
const blink::PermissionType& val) {
using PermissionType = electron::WebContentsPermissionHelper::PermissionType;
// Based on mappings from content/browser/devtools/protocol/browser_handler.cc
// Not all permissions are currently used by Electron but this will future
// proof these conversions.
switch (val) {
case content::PermissionType::ACCESSIBILITY_EVENTS:
case blink::PermissionType::ACCESSIBILITY_EVENTS:
return StringToV8(isolate, "accessibility-events");
case content::PermissionType::AR:
case blink::PermissionType::AR:
return StringToV8(isolate, "ar");
case content::PermissionType::BACKGROUND_FETCH:
case blink::PermissionType::BACKGROUND_FETCH:
return StringToV8(isolate, "background-fetch");
case content::PermissionType::BACKGROUND_SYNC:
case blink::PermissionType::BACKGROUND_SYNC:
return StringToV8(isolate, "background-sync");
case content::PermissionType::CLIPBOARD_READ_WRITE:
case blink::PermissionType::CLIPBOARD_READ_WRITE:
return StringToV8(isolate, "clipboard-read");
case content::PermissionType::CLIPBOARD_SANITIZED_WRITE:
case blink::PermissionType::CLIPBOARD_SANITIZED_WRITE:
return StringToV8(isolate, "clipboard-sanitized-write");
case content::PermissionType::LOCAL_FONTS:
case blink::PermissionType::LOCAL_FONTS:
return StringToV8(isolate, "local-fonts");
case content::PermissionType::IDLE_DETECTION:
case blink::PermissionType::IDLE_DETECTION:
return StringToV8(isolate, "idle-detection");
case content::PermissionType::MIDI_SYSEX:
case blink::PermissionType::MIDI_SYSEX:
return StringToV8(isolate, "midiSysex");
case content::PermissionType::NFC:
case blink::PermissionType::NFC:
return StringToV8(isolate, "nfc");
case content::PermissionType::NOTIFICATIONS:
case blink::PermissionType::NOTIFICATIONS:
return StringToV8(isolate, "notifications");
case content::PermissionType::PAYMENT_HANDLER:
case blink::PermissionType::PAYMENT_HANDLER:
return StringToV8(isolate, "payment-handler");
case content::PermissionType::PERIODIC_BACKGROUND_SYNC:
case blink::PermissionType::PERIODIC_BACKGROUND_SYNC:
return StringToV8(isolate, "periodic-background-sync");
case content::PermissionType::DURABLE_STORAGE:
case blink::PermissionType::DURABLE_STORAGE:
return StringToV8(isolate, "persistent-storage");
case content::PermissionType::GEOLOCATION:
case blink::PermissionType::GEOLOCATION:
return StringToV8(isolate, "geolocation");
case content::PermissionType::CAMERA_PAN_TILT_ZOOM:
case content::PermissionType::AUDIO_CAPTURE:
case content::PermissionType::VIDEO_CAPTURE:
case blink::PermissionType::CAMERA_PAN_TILT_ZOOM:
case blink::PermissionType::AUDIO_CAPTURE:
case blink::PermissionType::VIDEO_CAPTURE:
return StringToV8(isolate, "media");
case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
case blink::PermissionType::PROTECTED_MEDIA_IDENTIFIER:
return StringToV8(isolate, "mediaKeySystem");
case content::PermissionType::MIDI:
case blink::PermissionType::MIDI:
return StringToV8(isolate, "midi");
case content::PermissionType::WAKE_LOCK_SCREEN:
case blink::PermissionType::WAKE_LOCK_SCREEN:
return StringToV8(isolate, "screen-wake-lock");
case content::PermissionType::SENSORS:
case blink::PermissionType::SENSORS:
return StringToV8(isolate, "sensors");
case content::PermissionType::STORAGE_ACCESS_GRANT:
case blink::PermissionType::STORAGE_ACCESS_GRANT:
return StringToV8(isolate, "storage-access");
case content::PermissionType::VR:
case blink::PermissionType::VR:
return StringToV8(isolate, "vr");
case content::PermissionType::WAKE_LOCK_SYSTEM:
case blink::PermissionType::WAKE_LOCK_SYSTEM:
return StringToV8(isolate, "system-wake-lock");
case content::PermissionType::WINDOW_PLACEMENT:
case blink::PermissionType::WINDOW_PLACEMENT:
return StringToV8(isolate, "window-placement");
case content::PermissionType::DISPLAY_CAPTURE:
case blink::PermissionType::DISPLAY_CAPTURE:
return StringToV8(isolate, "display-capture");
case content::PermissionType::NUM:
case blink::PermissionType::NUM:
break;
}

View file

@ -7,10 +7,10 @@
#include <utility>
#include "content/public/browser/permission_type.h"
#include "content/public/common/referrer.h"
#include "content/public/common/stop_find_action.h"
#include "gin/converter.h"
#include "third_party/blink/public/common/permissions/permission_utils.h"
#include "third_party/blink/public/mojom/choosers/popup_menu.mojom.h"
#include "third_party/blink/public/mojom/permissions/permission_status.mojom.h"
@ -47,9 +47,9 @@ struct Converter<blink::mojom::PermissionStatus> {
};
template <>
struct Converter<content::PermissionType> {
struct Converter<blink::PermissionType> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate,
const content::PermissionType& val);
const blink::PermissionType& val);
};
template <>

View file

@ -15,7 +15,7 @@ namespace {
struct TranslaterHolder {
explicit TranslaterHolder(v8::Isolate* isolate)
: handle(isolate, v8::External::New(isolate, this)) {
handle.SetWeak(this, &GC, v8::WeakCallbackType::kFinalizer);
handle.SetWeak(this, &GC, v8::WeakCallbackType::kParameter);
}
~TranslaterHolder() {
if (!handle.IsEmpty()) {

View file

@ -13,4 +13,10 @@ Locker::Locker(v8::Isolate* isolate) {
Locker::~Locker() = default;
void Locker::SetIsBrowserProcess(bool is_browser_process) {
g_is_browser_process = is_browser_process;
}
bool Locker::g_is_browser_process = false;
} // namespace gin_helper

View file

@ -23,13 +23,17 @@ class Locker {
// Returns whether current process is browser process, currently we detect it
// by checking whether current has used V8 Lock, but it might be a bad idea.
static inline bool IsBrowserProcess() { return v8::Locker::WasEverUsed(); }
static inline bool IsBrowserProcess() { return g_is_browser_process; }
static void SetIsBrowserProcess(bool is_browser_process);
private:
void* operator new(size_t size);
void operator delete(void*, size_t);
std::unique_ptr<v8::Locker> locker_;
static bool g_is_browser_process;
};
} // namespace gin_helper

View file

@ -65,8 +65,8 @@ v8::Local<v8::Promise::Resolver> PromiseBase::GetInner() const {
void Promise<void>::ResolvePromise(Promise<void> promise) {
if (gin_helper::Locker::IsBrowserProcess() &&
!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) {
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce([](Promise<void> promise) { promise.Resolve(); },
std::move(promise)));
} else {

View file

@ -11,7 +11,6 @@
#include <utility>
#include "base/strings/string_piece.h"
#include "base/task/post_task.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "shell/common/gin_converters/std_converter.h"
@ -48,8 +47,8 @@ class PromiseBase {
static void RejectPromise(PromiseBase&& promise, base::StringPiece errmsg) {
if (gin_helper::Locker::IsBrowserProcess() &&
!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) {
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(
// Note that this callback can not take StringPiece,
// as StringPiece only references string internally and
@ -91,8 +90,8 @@ class Promise : public PromiseBase {
static void ResolvePromise(Promise<RT> promise, RT result) {
if (gin_helper::Locker::IsBrowserProcess() &&
!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) {
base::PostTask(FROM_HERE, {content::BrowserThread::UI},
base::BindOnce([](Promise<RT> promise,
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce([](Promise<RT> promise,
RT result) { promise.Resolve(result); },
std::move(promise), std::move(result)));
} else {

View file

@ -21,9 +21,9 @@
#include "base/files/file_util.h"
#include "base/logging.h"
#include "base/stl_util.h"
#include "base/strings/escape.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool.h"
#include "base/threading/scoped_blocking_call.h"
#include "base/win/registry.h"
@ -32,7 +32,6 @@
#include "base/win/windows_version.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/escape.h"
#include "shell/common/electron_paths.h"
#include "ui/base/win/shell.h"
#include "url/gurl.h"
@ -243,7 +242,7 @@ std::string OpenExternalOnWorkerThread(
// parameters unexpected by the external program. This url should already
// have been escaped.
std::wstring escaped_url =
L"\"" + base::UTF8ToWide(net::EscapeExternalHandlerValue(url.spec())) +
L"\"" + base::UTF8ToWide(base::EscapeExternalHandlerValue(url.spec())) +
L"\"";
std::wstring working_dir = options.working_dir.value();

View file

@ -389,9 +389,10 @@ std::unique_ptr<base::Value> V8ValueConverter::FromV8Array(
std::unique_ptr<v8::Context::Scope> scope;
// If val was created in a different context than our current one, change to
// that context, but change back after val is converted.
if (!val->CreationContext().IsEmpty() &&
val->CreationContext() != isolate->GetCurrentContext())
scope = std::make_unique<v8::Context::Scope>(val->CreationContext());
if (!val->GetCreationContextChecked().IsEmpty() &&
val->GetCreationContextChecked() != isolate->GetCurrentContext())
scope =
std::make_unique<v8::Context::Scope>(val->GetCreationContextChecked());
auto result = std::make_unique<base::ListValue>();
@ -445,9 +446,10 @@ std::unique_ptr<base::Value> V8ValueConverter::FromV8Object(
std::unique_ptr<v8::Context::Scope> scope;
// If val was created in a different context than our current one, change to
// that context, but change back after val is converted.
if (!val->CreationContext().IsEmpty() &&
val->CreationContext() != isolate->GetCurrentContext())
scope = std::make_unique<v8::Context::Scope>(val->CreationContext());
if (!val->GetCreationContextChecked().IsEmpty() &&
val->GetCreationContextChecked() != isolate->GetCurrentContext())
scope =
std::make_unique<v8::Context::Scope>(val->GetCreationContextChecked());
auto result = std::make_unique<base::DictionaryValue>();
v8::Local<v8::Array> property_names;

View file

@ -188,7 +188,7 @@ v8::MaybeLocal<v8::Value> PassValueToOtherContext(
// creation context of the original method. If it's not we proceed
// with the proxy logic
if (maybe_original_fn.ToLocal(&proxy_func) && proxy_func->IsFunction() &&
proxy_func.As<v8::Object>()->CreationContext() ==
proxy_func.As<v8::Object>()->GetCreationContextChecked() ==
destination_context) {
return v8::MaybeLocal<v8::Value>(proxy_func);
}
@ -408,7 +408,8 @@ void ProxyFunctionWrapper(const v8::FunctionCallbackInfo<v8::Value>& info) {
return;
v8::Local<v8::Function> func = func_value.As<v8::Function>();
v8::Local<v8::Context> func_owning_context = func->CreationContext();
v8::Local<v8::Context> func_owning_context =
func->GetCreationContextChecked();
{
v8::Context::Scope func_owning_context_scope(func_owning_context);
@ -636,9 +637,9 @@ void OverrideGlobalValueFromIsolatedWorld(
{
v8::Context::Scope main_context_scope(main_context);
context_bridge::ObjectCache object_cache;
v8::MaybeLocal<v8::Value> maybe_proxy =
PassValueToOtherContext(value->CreationContext(), main_context, value,
&object_cache, support_dynamic_properties, 1);
v8::MaybeLocal<v8::Value> maybe_proxy = PassValueToOtherContext(
value->GetCreationContextChecked(), main_context, value, &object_cache,
support_dynamic_properties, 1);
DCHECK(!maybe_proxy.IsEmpty());
auto proxy = maybe_proxy.ToLocalChecked();
@ -672,16 +673,16 @@ bool OverrideGlobalPropertyFromIsolatedWorld(
v8::Local<v8::Value> getter_proxy;
v8::Local<v8::Value> setter_proxy;
if (!getter->IsNullOrUndefined()) {
v8::MaybeLocal<v8::Value> maybe_getter_proxy =
PassValueToOtherContext(getter->CreationContext(), main_context,
getter, &object_cache, false, 1);
v8::MaybeLocal<v8::Value> maybe_getter_proxy = PassValueToOtherContext(
getter->GetCreationContextChecked(), main_context, getter,
&object_cache, false, 1);
DCHECK(!maybe_getter_proxy.IsEmpty());
getter_proxy = maybe_getter_proxy.ToLocalChecked();
}
if (!setter->IsNullOrUndefined() && setter->IsObject()) {
v8::MaybeLocal<v8::Value> maybe_setter_proxy =
PassValueToOtherContext(getter->CreationContext(), main_context,
setter, &object_cache, false, 1);
v8::MaybeLocal<v8::Value> maybe_setter_proxy = PassValueToOtherContext(
getter->GetCreationContextChecked(), main_context, setter,
&object_cache, false, 1);
DCHECK(!maybe_setter_proxy.IsEmpty());
setter_proxy = maybe_setter_proxy.ToLocalChecked();
}

View file

@ -4,7 +4,6 @@
#include <string>
#include "base/task/post_task.h"
#include "base/values.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_frame_observer.h"

View file

@ -102,7 +102,7 @@ struct Converter<blink::WebCssOrigin> {
namespace electron {
content::RenderFrame* GetRenderFrame(v8::Local<v8::Object> value) {
v8::Local<v8::Context> context = value->CreationContext();
v8::Local<v8::Context> context = value->GetCreationContextChecked();
if (context.IsEmpty())
return nullptr;
blink::WebLocalFrame* frame = blink::WebLocalFrame::FrameForContext(context);
@ -161,9 +161,9 @@ class ScriptExecutionCallback : public blink::WebScriptExecutionCallback {
{
v8::TryCatch try_catch(isolate);
context_bridge::ObjectCache object_cache;
maybe_result = PassValueToOtherContext(result->CreationContext(),
promise_.GetContext(), result,
&object_cache, false, 0);
maybe_result = PassValueToOtherContext(
result->GetCreationContextChecked(), promise_.GetContext(), result,
&object_cache, false, 0);
if (maybe_result.IsEmpty() || try_catch.HasCaught()) {
success = false;
}
@ -206,7 +206,7 @@ class ScriptExecutionCallback : public blink::WebScriptExecutionCallback {
bool should_clone_value =
!(value->IsObject() &&
promise_.GetContext() ==
value.As<v8::Object>()->CreationContext()) &&
value.As<v8::Object>()->GetCreationContextChecked()) &&
value->IsObject();
if (should_clone_value) {
CopyResultToCallingContextAndFinalize(isolate,

View file

@ -601,7 +601,7 @@ void RendererClientBase::AllowGuestViewElementDefinition(
v8::Local<v8::Object> context,
v8::Local<v8::Function> register_cb) {
v8::HandleScope handle_scope(isolate);
v8::Context::Scope context_scope(context->CreationContext());
v8::Context::Scope context_scope(context->GetCreationContextChecked());
blink::WebCustomElement::EmbedderNamesAllowedScope embedder_names_scope;
content::RenderFrame* render_frame = GetRenderFrame(context);
@ -609,8 +609,8 @@ void RendererClientBase::AllowGuestViewElementDefinition(
return;
render_frame->GetWebFrame()->RequestExecuteV8Function(
context->CreationContext(), register_cb, v8::Null(isolate), 0, nullptr,
nullptr);
context->GetCreationContextChecked(), register_cb, v8::Null(isolate), 0,
nullptr, nullptr);
}
} // namespace electron