chore: bump chromium to 138.0.7178.0 (main) (#47086)

* chore: bump chromium in DEPS to 138.0.7178.0

* 6351556: [source-phase-imports] Support Wasm Source Phase Imports

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

* chore: update patches

* 6509682: extensions: Use ChromeExtensionsBrowserClient on desktop Android, part 2

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
This commit is contained in:
electron-roller[bot]
2025-05-15 12:47:07 -05:00
committed by GitHub
parent 9a7b73b533
commit 883f48b9b4
30 changed files with 141 additions and 111 deletions

View File

@@ -438,6 +438,7 @@ int ElectronBrowserMainParts::PreMainMessageLoopRun() {
// BrowserContextKeyedAPIServiceFactories require an ExtensionsBrowserClient.
extensions_browser_client_ =
std::make_unique<ElectronExtensionsBrowserClient>();
extensions_browser_client_->Init();
extensions::ExtensionsBrowserClient::Set(extensions_browser_client_.get());
extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt();

View File

@@ -55,24 +55,27 @@ using extensions::ExtensionsBrowserClient;
namespace electron {
ElectronExtensionsBrowserClient::ElectronExtensionsBrowserClient()
: api_client_(std::make_unique<extensions::ElectronExtensionsAPIClient>()),
process_manager_delegate_(
std::make_unique<extensions::ElectronProcessManagerDelegate>()),
extension_cache_(std::make_unique<extensions::NullExtensionCache>()) {
// Electron does not have a concept of channel, so leave UNKNOWN to
// enable all channel-dependent extension APIs.
extensions::SetCurrentChannel(version_info::Channel::UNKNOWN);
resource_manager_ =
std::make_unique<extensions::ElectronComponentExtensionResourceManager>();
: extension_cache_(std::make_unique<extensions::NullExtensionCache>()) {
AddAPIProvider(
std::make_unique<extensions::CoreExtensionsBrowserAPIProvider>());
AddAPIProvider(
std::make_unique<extensions::ElectronExtensionsBrowserAPIProvider>());
// Electron does not have a concept of channel, so leave UNKNOWN to
// enable all channel-dependent extension APIs.
extensions::SetCurrentChannel(version_info::Channel::UNKNOWN);
}
ElectronExtensionsBrowserClient::~ElectronExtensionsBrowserClient() = default;
void ElectronExtensionsBrowserClient::Init() {
process_manager_delegate_ =
std::make_unique<extensions::ElectronProcessManagerDelegate>();
api_client_ = std::make_unique<extensions::ElectronExtensionsAPIClient>();
resource_manager_ =
std::make_unique<extensions::ElectronComponentExtensionResourceManager>();
}
bool ElectronExtensionsBrowserClient::IsShuttingDown() {
return electron::Browser::Get()->is_shutting_down();
}

View File

@@ -51,6 +51,7 @@ class ElectronExtensionsBrowserClient
const ElectronExtensionsBrowserClient&) = delete;
// ExtensionsBrowserClient overrides:
void Init() override;
bool IsShuttingDown() override;
bool AreExtensionsDisabled(const base::CommandLine& command_line,
content::BrowserContext* context) override;

View File

@@ -211,18 +211,19 @@ bool AllowWasmCodeGenerationCallback(v8::Local<v8::Context> context,
return node::AllowWasmCodeGenerationCallback(context, source);
}
v8::MaybeLocal<v8::Promise> HostImportModuleDynamically(
v8::MaybeLocal<v8::Promise> HostImportModuleWithPhaseDynamically(
v8::Local<v8::Context> context,
v8::Local<v8::Data> v8_host_defined_options,
v8::Local<v8::Value> v8_referrer_resource_url,
v8::Local<v8::String> v8_specifier,
v8::Local<v8::FixedArray> v8_import_assertions) {
v8::ModuleImportPhase import_phase,
v8::Local<v8::FixedArray> v8_import_attributes) {
if (node::Environment::GetCurrent(context) == nullptr) {
if (electron::IsBrowserProcess() || electron::IsUtilityProcess())
return {};
return blink::V8Initializer::HostImportModuleDynamically(
return blink::V8Initializer::HostImportModuleWithPhaseDynamically(
context, v8_host_defined_options, v8_referrer_resource_url,
v8_specifier, v8_import_assertions);
v8_specifier, import_phase, v8_import_attributes);
}
// If we're running with contextIsolation enabled in the renderer process,
@@ -232,15 +233,29 @@ v8::MaybeLocal<v8::Promise> HostImportModuleDynamically(
blink::WebLocalFrame::FrameForContext(context);
if (!frame || frame->GetScriptContextWorldId(context) !=
electron::WorldIDs::ISOLATED_WORLD_ID) {
return blink::V8Initializer::HostImportModuleDynamically(
return blink::V8Initializer::HostImportModuleWithPhaseDynamically(
context, v8_host_defined_options, v8_referrer_resource_url,
v8_specifier, v8_import_assertions);
v8_specifier, import_phase, v8_import_attributes);
}
}
// TODO: Switch to node::loader::ImportModuleDynamicallyWithPhase
// once we land the Node.js version that has it in upstream.
CHECK(import_phase == v8::ModuleImportPhase::kEvaluation);
return node::loader::ImportModuleDynamically(
context, v8_host_defined_options, v8_referrer_resource_url, v8_specifier,
v8_import_assertions);
v8_import_attributes);
}
v8::MaybeLocal<v8::Promise> HostImportModuleDynamically(
v8::Local<v8::Context> context,
v8::Local<v8::Data> v8_host_defined_options,
v8::Local<v8::Value> v8_referrer_resource_url,
v8::Local<v8::String> v8_specifier,
v8::Local<v8::FixedArray> v8_import_attributes) {
return HostImportModuleWithPhaseDynamically(
context, v8_host_defined_options, v8_referrer_resource_url, v8_specifier,
v8::ModuleImportPhase::kEvaluation, v8_import_attributes);
}
void HostInitializeImportMetaObject(v8::Local<v8::Context> context,
@@ -779,6 +794,8 @@ std::shared_ptr<node::Environment> NodeBindings::CreateEnvironment(
node::SetIsolateUpForNode(context->GetIsolate(), is);
context->GetIsolate()->SetHostImportModuleDynamicallyCallback(
HostImportModuleDynamically);
context->GetIsolate()->SetHostImportModuleWithPhaseDynamicallyCallback(
HostImportModuleWithPhaseDynamically);
context->GetIsolate()->SetHostInitializeImportMetaObjectCallback(
HostInitializeImportMetaObject);