mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update to Chromium version 123.0.6312.0 (#1262506)
- MacOS ARM64 Official builds are currently failing due to https://issues.chromium.org/issues/326898585
This commit is contained in:
@@ -91,7 +91,7 @@
|
||||
#include "components/pdf/browser/pdf_document_helper.h"
|
||||
#include "components/pdf/browser/pdf_navigation_throttle.h"
|
||||
#include "components/pdf/browser/pdf_url_loader_request_interceptor.h"
|
||||
#include "components/pdf/common/internal_plugin_helpers.h"
|
||||
#include "components/pdf/common/constants.h"
|
||||
#include "components/policy/core/common/policy_pref_names.h"
|
||||
#include "components/spellcheck/common/spellcheck.mojom.h"
|
||||
#include "components/version_info/version_info.h"
|
||||
@@ -118,7 +118,6 @@
|
||||
#include "extensions/browser/api/automation_internal/automation_event_router.h"
|
||||
#include "extensions/browser/api/mime_handler_private/mime_handler_private.h"
|
||||
#include "extensions/browser/event_router.h"
|
||||
#include "extensions/browser/extension_message_filter.h"
|
||||
#include "extensions/browser/extension_protocols.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/extension_web_contents_observer.h"
|
||||
@@ -397,13 +396,6 @@ void AlloyContentBrowserClient::RenderProcessWillLaunch(
|
||||
content::RenderProcessHost* host) {
|
||||
Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext());
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_LEGACY_IPC)
|
||||
if (extensions::ExtensionsEnabled()) {
|
||||
host->AddFilter(
|
||||
new extensions::ExtensionMessageFilter(host->GetID(), profile));
|
||||
}
|
||||
#endif
|
||||
|
||||
// If the renderer process crashes then the host may already have
|
||||
// CefBrowserInfoManager as an observer. Try to remove it first before adding
|
||||
// to avoid DCHECKs.
|
||||
@@ -881,19 +873,6 @@ void AlloyContentBrowserClient::ExposeInterfacesToRenderer(
|
||||
associated_registry->AddInterface<extensions::mojom::RendererHost>(
|
||||
base::BindRepeating(&extensions::RendererStartupHelper::BindForRenderer,
|
||||
render_process_host->GetID()));
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS_LEGACY_IPC)
|
||||
associated_registry->AddInterface<extensions::mojom::EventRouter>(
|
||||
base::BindRepeating(&extensions::EventRouter::BindForRenderer,
|
||||
host->GetID()));
|
||||
associated_registry->AddInterface<extensions::mojom::ServiceWorkerHost>(
|
||||
base::BindRepeating(&extensions::ServiceWorkerHost::BindReceiver,
|
||||
host->GetID()));
|
||||
associated_registry
|
||||
->AddInterface<extensions::mojom::RendererAutomationRegistry>(
|
||||
base::BindRepeating(
|
||||
&extensions::AutomationEventRouter::BindForRenderer,
|
||||
host->GetID()));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -910,7 +889,6 @@ void AlloyContentBrowserClient::
|
||||
associated_registry.AddInterface<extensions::mojom::RendererHost>(
|
||||
base::BindRepeating(&extensions::RendererStartupHelper::BindForRenderer,
|
||||
service_worker_version_info.process_id));
|
||||
#if !BUILDFLAG(ENABLE_EXTENSIONS_LEGACY_IPC)
|
||||
associated_registry.AddInterface<extensions::mojom::ServiceWorkerHost>(
|
||||
base::BindRepeating(&extensions::ServiceWorkerHost::BindReceiver,
|
||||
service_worker_version_info.process_id));
|
||||
@@ -922,7 +900,6 @@ void AlloyContentBrowserClient::
|
||||
associated_registry.AddInterface<extensions::mojom::EventRouter>(
|
||||
base::BindRepeating(&extensions::EventRouter::BindForRenderer,
|
||||
service_worker_version_info.process_id));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1196,7 +1173,7 @@ void AlloyContentBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories(
|
||||
}
|
||||
}
|
||||
|
||||
bool AlloyContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
void AlloyContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
content::BrowserContext* browser_context,
|
||||
content::RenderFrameHost* frame,
|
||||
int render_process_id,
|
||||
@@ -1204,7 +1181,7 @@ bool AlloyContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
const url::Origin& request_initiator,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
||||
header_client,
|
||||
bool* bypass_redirect_checks,
|
||||
@@ -1217,9 +1194,8 @@ bool AlloyContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
type == URLLoaderFactoryType::kDownload, request_initiator);
|
||||
|
||||
net_service::ProxyURLLoaderFactory::CreateProxy(
|
||||
browser_context, factory_receiver, header_client,
|
||||
browser_context, factory_builder, header_client,
|
||||
std::move(request_handler));
|
||||
return true;
|
||||
}
|
||||
|
||||
void AlloyContentBrowserClient::OnNetworkServiceCreated(
|
||||
|
@@ -179,7 +179,7 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient {
|
||||
int render_frame_id,
|
||||
const std::optional<url::Origin>& request_initiator_origin,
|
||||
NonNetworkURLLoaderFactoryMap* factories) override;
|
||||
bool WillCreateURLLoaderFactory(
|
||||
void WillCreateURLLoaderFactory(
|
||||
content::BrowserContext* browser_context,
|
||||
content::RenderFrameHost* frame,
|
||||
int render_process_id,
|
||||
@@ -187,7 +187,7 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient {
|
||||
const url::Origin& request_initiator,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
||||
header_client,
|
||||
bool* bypass_redirect_checks,
|
||||
|
@@ -226,7 +226,7 @@ void ChromeContentBrowserClientCef::OverrideWebkitPrefs(
|
||||
web_contents->SetPageBaseBackgroundColor(base_background_color);
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
void ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
content::BrowserContext* browser_context,
|
||||
content::RenderFrameHost* frame,
|
||||
int render_process_id,
|
||||
@@ -234,7 +234,7 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
const url::Origin& request_initiator,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
||||
header_client,
|
||||
bool* bypass_redirect_checks,
|
||||
@@ -246,15 +246,16 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
// profiles::CreateSystemProfileForUserManager.
|
||||
auto profile = Profile::FromBrowserContext(browser_context);
|
||||
if (!CefBrowserContext::FromProfile(profile)) {
|
||||
return ChromeContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
ChromeContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
browser_context, frame, render_process_id, type, request_initiator,
|
||||
navigation_id, ukm_source_id, factory_receiver, header_client,
|
||||
navigation_id, ukm_source_id, factory_builder, header_client,
|
||||
bypass_redirect_checks, disable_secure_dns, factory_override,
|
||||
navigation_response_task_runner);
|
||||
return;
|
||||
}
|
||||
|
||||
// Based on content/browser/devtools/devtools_instrumentation.cc
|
||||
// WillCreateURLLoaderFactoryInternal.
|
||||
// WillCreateURLLoaderFactoryParams::Run.
|
||||
network::mojom::URLLoaderFactoryOverridePtr cef_override(
|
||||
network::mojom::URLLoaderFactoryOverride::New());
|
||||
// If caller passed some existing overrides, use those.
|
||||
@@ -276,32 +277,31 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
}
|
||||
|
||||
// TODO(chrome): Is it necessary to proxy |header_client| callbacks?
|
||||
bool use_proxy = ChromeContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
ChromeContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
browser_context, frame, render_process_id, type, request_initiator,
|
||||
navigation_id, ukm_source_id,
|
||||
&(intercepting_factory->overridden_factory_receiver),
|
||||
navigation_id, ukm_source_id, factory_builder,
|
||||
/*header_client=*/nullptr, bypass_redirect_checks, disable_secure_dns,
|
||||
handler_override, navigation_response_task_runner);
|
||||
|
||||
if (use_proxy) {
|
||||
DCHECK(intercepting_factory->overriding_factory);
|
||||
DCHECK(intercepting_factory->overridden_factory_receiver);
|
||||
if (!factory_override) {
|
||||
// Not a subresource navigation, so just override the target receiver.
|
||||
mojo::FusePipes(std::move(*factory_receiver),
|
||||
std::move(cef_override->overriding_factory));
|
||||
*factory_receiver = std::move(cef_override->overridden_factory_receiver);
|
||||
} else if (!*factory_override) {
|
||||
// No other overrides, so just returns ours as is.
|
||||
*factory_override = network::mojom::URLLoaderFactoryOverride::New(
|
||||
std::move(cef_override->overriding_factory),
|
||||
std::move(cef_override->overridden_factory_receiver), false);
|
||||
}
|
||||
// ... else things are already taken care of, as handler_override was
|
||||
// pointing to factory override and we've done all magic in-place.
|
||||
DCHECK(!cef_override->overriding_factory);
|
||||
DCHECK(!cef_override->overridden_factory_receiver);
|
||||
DCHECK(intercepting_factory->overriding_factory);
|
||||
DCHECK(intercepting_factory->overridden_factory_receiver);
|
||||
if (!factory_override) {
|
||||
// Not a subresource navigation, so just override the target receiver.
|
||||
auto [receiver, remote] = factory_builder.Append();
|
||||
mojo::FusePipes(std::move(receiver),
|
||||
std::move(cef_override->overriding_factory));
|
||||
mojo::FusePipes(std::move(cef_override->overridden_factory_receiver),
|
||||
std::move(remote));
|
||||
} else if (!*factory_override) {
|
||||
// No other overrides, so just returns ours as is.
|
||||
*factory_override = network::mojom::URLLoaderFactoryOverride::New(
|
||||
std::move(cef_override->overriding_factory),
|
||||
std::move(cef_override->overridden_factory_receiver), false);
|
||||
}
|
||||
// ... else things are already taken care of, as handler_override was
|
||||
// pointing to factory override and we've done all magic in-place.
|
||||
DCHECK(!cef_override->overriding_factory);
|
||||
DCHECK(!cef_override->overridden_factory_receiver);
|
||||
|
||||
auto request_handler = net_service::CreateInterceptedRequestHandler(
|
||||
browser_context, frame, render_process_id,
|
||||
@@ -309,10 +309,8 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
type == URLLoaderFactoryType::kDownload, request_initiator);
|
||||
|
||||
net_service::ProxyURLLoaderFactory::CreateProxy(
|
||||
browser_context, factory_receiver, header_client,
|
||||
browser_context, factory_builder, header_client,
|
||||
std::move(request_handler));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClientCef::HandleExternalProtocol(
|
||||
|
@@ -55,7 +55,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient {
|
||||
bool* no_javascript_access) override;
|
||||
void OverrideWebkitPrefs(content::WebContents* web_contents,
|
||||
blink::web_pref::WebPreferences* prefs) override;
|
||||
bool WillCreateURLLoaderFactory(
|
||||
void WillCreateURLLoaderFactory(
|
||||
content::BrowserContext* browser_context,
|
||||
content::RenderFrameHost* frame,
|
||||
int render_process_id,
|
||||
@@ -63,7 +63,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient {
|
||||
const url::Origin& request_initiator,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
||||
header_client,
|
||||
bool* bypass_redirect_checks,
|
||||
|
@@ -205,9 +205,7 @@ class CefDevToolsFrontend::NetworkResourceLoader
|
||||
|
||||
bool encoded = !base::IsStringUTF8(chunk);
|
||||
if (encoded) {
|
||||
std::string encoded_string;
|
||||
base::Base64Encode(chunk, &encoded_string);
|
||||
chunkValue = base::Value(std::move(encoded_string));
|
||||
chunkValue = base::Value(base::Base64Encode(chunk));
|
||||
} else {
|
||||
chunkValue = base::Value(chunk);
|
||||
}
|
||||
|
@@ -61,7 +61,7 @@ bool CefComponentExtensionResourceManager::IsComponentExtensionResource(
|
||||
|
||||
const ui::TemplateReplacements*
|
||||
CefComponentExtensionResourceManager::GetTemplateReplacementsForExtension(
|
||||
const std::string& extension_id) const {
|
||||
const ExtensionId& extension_id) const {
|
||||
auto it = template_replacements_.find(extension_id);
|
||||
return it != template_replacements_.end() ? &it->second : nullptr;
|
||||
}
|
||||
|
@@ -9,6 +9,7 @@
|
||||
|
||||
#include "base/files/file_path.h"
|
||||
#include "extensions/browser/component_extension_resource_manager.h"
|
||||
#include "extensions/common/extension_id.h"
|
||||
|
||||
namespace webui {
|
||||
struct ResourcePath;
|
||||
@@ -33,7 +34,7 @@ class CefComponentExtensionResourceManager
|
||||
const base::FilePath& resource_path,
|
||||
int* resource_id) const override;
|
||||
const ui::TemplateReplacements* GetTemplateReplacementsForExtension(
|
||||
const std::string& extension_id) const override;
|
||||
const ExtensionId& extension_id) const override;
|
||||
|
||||
private:
|
||||
void AddComponentResourceEntries(const webui::ResourcePath* entries,
|
||||
@@ -45,7 +46,7 @@ class CefComponentExtensionResourceManager
|
||||
|
||||
// A map from an extension ID to its i18n template replacements.
|
||||
using TemplateReplacementMap =
|
||||
std::map<std::string, ui::TemplateReplacements>;
|
||||
std::map<ExtensionId, ui::TemplateReplacements>;
|
||||
TemplateReplacementMap template_replacements_;
|
||||
};
|
||||
|
||||
|
@@ -33,6 +33,7 @@
|
||||
#include "content/public/browser/notification_source.h"
|
||||
#include "content/public/browser/plugin_service.h"
|
||||
#include "content/public/browser/render_process_host.h"
|
||||
#include "content/public/common/webplugininfo.h"
|
||||
#include "extensions/browser/api/app_runtime/app_runtime_api.h"
|
||||
#include "extensions/browser/extension_prefs.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
@@ -44,7 +45,6 @@
|
||||
#include "extensions/browser/unloaded_extension_reason.h"
|
||||
#include "extensions/browser/user_script_manager.h"
|
||||
#include "extensions/common/constants.h"
|
||||
#include "extensions/common/extension_messages.h"
|
||||
#include "extensions/common/file_util.h"
|
||||
#include "extensions/common/manifest_constants.h"
|
||||
#include "extensions/common/manifest_handlers/mime_types_handler.h"
|
||||
|
@@ -131,18 +131,24 @@ class CefMediaAccessQuery {
|
||||
blink::MediaStreamDevices audio_devices;
|
||||
blink::MediaStreamDevices video_devices;
|
||||
|
||||
if (device_audio_requested()) {
|
||||
if (device_audio_requested() &&
|
||||
!request_.requested_audio_device_ids.empty() &&
|
||||
!request_.requested_audio_device_ids.front().empty()) {
|
||||
// Pick the desired device or fall back to the first available of the
|
||||
// given type.
|
||||
CefMediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice(
|
||||
request_.requested_audio_device_id, true, false, &audio_devices);
|
||||
request_.requested_audio_device_ids.front(), true, false,
|
||||
&audio_devices);
|
||||
}
|
||||
|
||||
if (device_video_requested()) {
|
||||
if (device_video_requested() &&
|
||||
!request_.requested_video_device_ids.empty() &&
|
||||
!request_.requested_video_device_ids.front().empty()) {
|
||||
// Pick the desired device or fall back to the first available of the
|
||||
// given type.
|
||||
CefMediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice(
|
||||
request_.requested_video_device_id, false, true, &video_devices);
|
||||
request_.requested_video_device_ids.front(), false, true,
|
||||
&video_devices);
|
||||
}
|
||||
|
||||
if (desktop_audio_requested()) {
|
||||
@@ -152,13 +158,14 @@ class CefMediaAccessQuery {
|
||||
|
||||
if (desktop_video_requested()) {
|
||||
content::DesktopMediaID media_id;
|
||||
if (request_.requested_video_device_id.empty()) {
|
||||
if (!request_.requested_video_device_ids.empty() &&
|
||||
!request_.requested_video_device_ids.front().empty()) {
|
||||
media_id = content::DesktopMediaID::Parse(
|
||||
request_.requested_video_device_ids.front());
|
||||
} else {
|
||||
media_id =
|
||||
content::DesktopMediaID(content::DesktopMediaID::TYPE_SCREEN,
|
||||
-1 /* webrtc::kFullDesktopScreenId */);
|
||||
} else {
|
||||
media_id =
|
||||
content::DesktopMediaID::Parse(request_.requested_video_device_id);
|
||||
}
|
||||
video_devices.emplace_back(request_.video_type, media_id.ToString(),
|
||||
"Screen");
|
||||
|
@@ -1349,16 +1349,14 @@ void ProxyURLLoaderFactory::SetDisconnectCallback(
|
||||
// static
|
||||
void ProxyURLLoaderFactory::CreateProxy(
|
||||
content::BrowserContext* browser_context,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
||||
header_client,
|
||||
std::unique_ptr<InterceptedRequestHandler> request_handler) {
|
||||
CEF_REQUIRE_UIT();
|
||||
DCHECK(request_handler);
|
||||
|
||||
auto proxied_receiver = std::move(*factory_receiver);
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory_remote;
|
||||
*factory_receiver = target_factory_remote.InitWithNewPipeAndPassReceiver();
|
||||
auto [factory_receiver, target_factory_remote] = factory_builder.Append();
|
||||
|
||||
mojo::PendingReceiver<network::mojom::TrustedURLLoaderHeaderClient>
|
||||
header_client_receiver;
|
||||
@@ -1373,7 +1371,7 @@ void ProxyURLLoaderFactory::CreateProxy(
|
||||
CEF_POST_TASK(
|
||||
CEF_IOT,
|
||||
base::BindOnce(
|
||||
&ProxyURLLoaderFactory::CreateOnIOThread, std::move(proxied_receiver),
|
||||
&ProxyURLLoaderFactory::CreateOnIOThread, std::move(factory_receiver),
|
||||
std::move(target_factory_remote), std::move(header_client_receiver),
|
||||
base::Unretained(resource_context), std::move(request_handler)));
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
#include "mojo/public/cpp/bindings/receiver_set.h"
|
||||
#include "services/network/public/cpp/url_loader_factory_builder.h"
|
||||
#include "services/network/public/mojom/network_context.mojom.h"
|
||||
#include "services/network/public/mojom/url_loader_factory.mojom.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
@@ -146,7 +147,7 @@ class ProxyURLLoaderFactory
|
||||
// Create a proxy object on the UI thread.
|
||||
static void CreateProxy(
|
||||
content::BrowserContext* browser_context,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
||||
header_client,
|
||||
std::unique_ptr<InterceptedRequestHandler> request_handler);
|
||||
|
@@ -35,54 +35,34 @@ scoped_refptr<URLLoaderFactoryGetter> URLLoaderFactoryGetter::Create(
|
||||
auto loader_factory = browser_context->GetDefaultStoragePartition()
|
||||
->GetURLLoaderFactoryForBrowserProcess();
|
||||
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory> proxy_factory_remote;
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>
|
||||
proxy_factory_receiver;
|
||||
network::URLLoaderFactoryBuilder factory_builder;
|
||||
|
||||
// Create an intermediate pipe that can be used to proxy the request's
|
||||
// URLLoaderFactory.
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory>
|
||||
maybe_proxy_factory_remote;
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>
|
||||
maybe_proxy_factory_receiver =
|
||||
maybe_proxy_factory_remote.InitWithNewPipeAndPassReceiver();
|
||||
|
||||
bool should_proxy = false;
|
||||
int render_process_id = -1;
|
||||
|
||||
if (render_frame_host) {
|
||||
render_process_id = render_frame_host->GetProcess()->GetID();
|
||||
|
||||
// Allow DevTools to potentially inject itself into the proxy pipe.
|
||||
should_proxy =
|
||||
content::devtools_instrumentation::WillCreateURLLoaderFactory(
|
||||
static_cast<content::RenderFrameHostImpl*>(render_frame_host),
|
||||
false /* is_navigation */, false /* is_download */,
|
||||
&maybe_proxy_factory_receiver, nullptr /* factory_override */);
|
||||
content::devtools_instrumentation::WillCreateURLLoaderFactoryParams::
|
||||
ForFrame(static_cast<content::RenderFrameHostImpl*>(render_frame_host))
|
||||
.Run(false /* is_navigation */, false /* is_download */,
|
||||
factory_builder, nullptr /* factory_override */);
|
||||
}
|
||||
|
||||
auto browser_client = CefAppManager::Get()->GetContentClient()->browser();
|
||||
|
||||
// Allow the Content embedder to inject itself if it wants to.
|
||||
should_proxy |= browser_client->WillCreateURLLoaderFactory(
|
||||
browser_client->WillCreateURLLoaderFactory(
|
||||
browser_context, render_frame_host, render_process_id,
|
||||
content::ContentBrowserClient::URLLoaderFactoryType::kDocumentSubResource,
|
||||
url::Origin(), absl::nullopt /* navigation_id */, ukm::SourceIdObj(),
|
||||
&maybe_proxy_factory_receiver, nullptr /* header_client */,
|
||||
factory_builder, nullptr /* header_client */,
|
||||
nullptr /* bypass_redirect_checks */, nullptr /* disable_secure_dns */,
|
||||
nullptr /* factory_override */,
|
||||
nullptr /* navigation_response_task_runner */);
|
||||
|
||||
// If anyone above indicated that they care about proxying, pass the
|
||||
// intermediate pipe along to the URLLoaderFactoryGetter.
|
||||
if (should_proxy) {
|
||||
proxy_factory_remote = std::move(maybe_proxy_factory_remote);
|
||||
proxy_factory_receiver = std::move(maybe_proxy_factory_receiver);
|
||||
}
|
||||
|
||||
return base::WrapRefCounted(new URLLoaderFactoryGetter(
|
||||
loader_factory->Clone(), std::move(proxy_factory_remote),
|
||||
std::move(proxy_factory_receiver)));
|
||||
loader_factory->Clone(), std::move(factory_builder)));
|
||||
}
|
||||
|
||||
// Based on CreateFactory from
|
||||
@@ -104,25 +84,15 @@ URLLoaderFactoryGetter::GetURLLoaderFactory() {
|
||||
auto loader_factory =
|
||||
network::SharedURLLoaderFactory::Create(std::move(loader_factory_info_));
|
||||
|
||||
if (proxy_factory_receiver_.is_valid()) {
|
||||
loader_factory->Clone(std::move(proxy_factory_receiver_));
|
||||
lazy_factory_ =
|
||||
base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
|
||||
std::move(proxy_factory_remote_));
|
||||
} else {
|
||||
lazy_factory_ = loader_factory;
|
||||
}
|
||||
lazy_factory_ = std::move(factory_builder_).Finish(loader_factory);
|
||||
return lazy_factory_;
|
||||
}
|
||||
|
||||
URLLoaderFactoryGetter::URLLoaderFactoryGetter(
|
||||
std::unique_ptr<network::PendingSharedURLLoaderFactory> loader_factory_info,
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory> proxy_factory_remote,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>
|
||||
proxy_factory_receiver)
|
||||
network::URLLoaderFactoryBuilder factory_builder)
|
||||
: loader_factory_info_(std::move(loader_factory_info)),
|
||||
proxy_factory_remote_(std::move(proxy_factory_remote)),
|
||||
proxy_factory_receiver_(std::move(proxy_factory_receiver)) {}
|
||||
factory_builder_(std::move(factory_builder)) {}
|
||||
|
||||
URLLoaderFactoryGetter::~URLLoaderFactoryGetter() = default;
|
||||
|
||||
|
@@ -9,6 +9,7 @@
|
||||
#include "base/memory/ref_counted.h"
|
||||
#include "base/task/sequenced_task_runner.h"
|
||||
#include "base/task/sequenced_task_runner_helpers.h"
|
||||
#include "services/network/public/cpp/url_loader_factory_builder.h"
|
||||
#include "services/network/public/mojom/url_loader_factory.mojom.h"
|
||||
|
||||
namespace content {
|
||||
@@ -52,19 +53,14 @@ class URLLoaderFactoryGetter
|
||||
|
||||
URLLoaderFactoryGetter(std::unique_ptr<network::PendingSharedURLLoaderFactory>
|
||||
loader_factory_info,
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory>
|
||||
proxy_factory_remote,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>
|
||||
proxy_factory_receiver);
|
||||
network::URLLoaderFactoryBuilder factory_builder);
|
||||
~URLLoaderFactoryGetter();
|
||||
|
||||
void DeleteOnCorrectThread() const;
|
||||
|
||||
std::unique_ptr<network::PendingSharedURLLoaderFactory> loader_factory_info_;
|
||||
scoped_refptr<network::SharedURLLoaderFactory> lazy_factory_;
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory> proxy_factory_remote_;
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>
|
||||
proxy_factory_receiver_;
|
||||
network::URLLoaderFactoryBuilder factory_builder_;
|
||||
scoped_refptr<base::SequencedTaskRunner> task_runner_;
|
||||
};
|
||||
|
||||
|
@@ -145,7 +145,7 @@ void CefHostDisplayClientOSR::CreateLayeredWindowUpdater(
|
||||
layered_window_updater_->SetActive(active_);
|
||||
}
|
||||
|
||||
#if BUILDFLAG(IS_LINUX)
|
||||
#if BUILDFLAG(IS_LINUX) && BUILDFLAG(IS_OZONE_X11)
|
||||
void CefHostDisplayClientOSR::DidCompleteSwapWithNewSize(
|
||||
const gfx::Size& size) {}
|
||||
#endif
|
||||
|
@@ -37,7 +37,7 @@ class CefHostDisplayClientOSR : public viz::HostDisplayClient {
|
||||
mojo::PendingReceiver<viz::mojom::LayeredWindowUpdater> receiver)
|
||||
override;
|
||||
|
||||
#if BUILDFLAG(IS_LINUX)
|
||||
#if BUILDFLAG(IS_LINUX) && BUILDFLAG(IS_OZONE_X11)
|
||||
void DidCompleteSwapWithNewSize(const gfx::Size& size) override;
|
||||
#endif
|
||||
|
||||
|
@@ -488,17 +488,17 @@ void CefRenderWidgetHostViewOSR::SetDisplayFeatureForTesting(
|
||||
DCHECK(false);
|
||||
}
|
||||
|
||||
blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::LockMouse(
|
||||
blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::LockPointer(
|
||||
bool request_unadjusted_movement) {
|
||||
return blink::mojom::PointerLockResult::kPermissionDenied;
|
||||
}
|
||||
|
||||
blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::ChangeMouseLock(
|
||||
blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::ChangePointerLock(
|
||||
bool request_unadjusted_movement) {
|
||||
return blink::mojom::PointerLockResult::kPermissionDenied;
|
||||
}
|
||||
|
||||
void CefRenderWidgetHostViewOSR::UnlockMouse() {}
|
||||
void CefRenderWidgetHostViewOSR::UnlockPointer() {}
|
||||
|
||||
void CefRenderWidgetHostViewOSR::TakeFallbackContentFrom(
|
||||
content::RenderWidgetHostView* view) {
|
||||
@@ -1549,6 +1549,10 @@ void CefRenderWidgetHostViewOSR::ShowSharePicker(
|
||||
blink::mojom::ShareService::ShareCallback callback) {
|
||||
std::move(callback).Run(blink::mojom::ShareError::INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
uint64_t CefRenderWidgetHostViewOSR::GetNSViewId() const {
|
||||
return 0;
|
||||
}
|
||||
#endif // BUILDFLAG(IS_MAC)
|
||||
|
||||
void CefRenderWidgetHostViewOSR::OnPaint(const gfx::Rect& damage_rect,
|
||||
|
@@ -133,11 +133,11 @@ class CefRenderWidgetHostViewOSR
|
||||
std::optional<content::DisplayFeature> GetDisplayFeature() override;
|
||||
void SetDisplayFeatureForTesting(
|
||||
const content::DisplayFeature* display_feature) override;
|
||||
blink::mojom::PointerLockResult LockMouse(
|
||||
blink::mojom::PointerLockResult LockPointer(
|
||||
bool request_unadjusted_movement) override;
|
||||
blink::mojom::PointerLockResult ChangeMouseLock(
|
||||
blink::mojom::PointerLockResult ChangePointerLock(
|
||||
bool request_unadjusted_movement) override;
|
||||
void UnlockMouse() override;
|
||||
void UnlockPointer() override;
|
||||
void TakeFallbackContentFrom(content::RenderWidgetHostView* view) override;
|
||||
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
@@ -151,6 +151,7 @@ class CefRenderWidgetHostViewOSR
|
||||
const std::string& url,
|
||||
const std::vector<std::string>& file_paths,
|
||||
blink::mojom::ShareService::ShareCallback callback) override;
|
||||
uint64_t GetNSViewId() const override;
|
||||
#endif // BUILDFLAG(IS_MAC)
|
||||
|
||||
// RenderWidgetHostViewBase implementation.
|
||||
|
@@ -67,6 +67,10 @@ class CefWebContentsViewOSR : public content::WebContentsView,
|
||||
void OnCapturerCountChanged() override {}
|
||||
void UpdateWindowControlsOverlay(const gfx::Rect& bounding_rect) override {}
|
||||
void TransferDragSecurityInfo(content::WebContentsView* view) override {}
|
||||
content::BackForwardTransitionAnimationManager*
|
||||
GetBackForwardTransitionAnimationManager() override {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#if BUILDFLAG(IS_MAC)
|
||||
bool CloseTabAfterEventTrackingIfNeeded() override { return false; }
|
||||
|
@@ -18,7 +18,6 @@
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/task/thread_pool.h"
|
||||
#include "base/values.h"
|
||||
#include "chrome/browser/accessibility/accessibility_ui.h"
|
||||
#include "chrome/browser/download/download_prefs.h"
|
||||
#include "chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h"
|
||||
#include "chrome/browser/media/router/media_router_feature.h"
|
||||
@@ -31,6 +30,7 @@
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ssl/ssl_config_service_manager.h"
|
||||
#include "chrome/browser/themes/theme_service.h"
|
||||
#include "chrome/browser/ui/webui/accessibility/accessibility_ui.h"
|
||||
#include "chrome/browser/ui/webui/print_preview/policy_settings.h"
|
||||
#include "chrome/common/buildflags.h"
|
||||
#include "chrome/common/chrome_switches.h"
|
||||
|
@@ -104,7 +104,7 @@ CEF_PANEL_IMPL_T CefRefPtr<CefLayout> CEF_PANEL_IMPL_D::GetLayout() {
|
||||
|
||||
CEF_PANEL_IMPL_T void CEF_PANEL_IMPL_D::Layout() {
|
||||
CEF_REQUIRE_VALID_RETURN_VOID();
|
||||
return ParentClass::root_view()->Layout();
|
||||
ParentClass::root_view()->DeprecatedLayoutImmediately();
|
||||
}
|
||||
|
||||
CEF_PANEL_IMPL_T void CEF_PANEL_IMPL_D::AddChildView(CefRefPtr<CefView> view) {
|
||||
|
@@ -73,7 +73,7 @@ CEF_VIEW_VIEW_T class CefViewView : public ViewsViewClass {
|
||||
gfx::Size GetMinimumSize() const override;
|
||||
gfx::Size GetMaximumSize() const override;
|
||||
int GetHeightForWidth(int w) const override;
|
||||
void Layout() override;
|
||||
void Layout(views::View::PassKey) override;
|
||||
void ViewHierarchyChanged(
|
||||
const views::ViewHierarchyChangedDetails& details) override;
|
||||
void AddedToWidget() override;
|
||||
@@ -163,8 +163,8 @@ CEF_VIEW_VIEW_T int CEF_VIEW_VIEW_D::GetHeightForWidth(int w) const {
|
||||
return result;
|
||||
}
|
||||
|
||||
CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::Layout() {
|
||||
ParentClass::Layout();
|
||||
CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::Layout(views::View::PassKey) {
|
||||
ParentClass::template LayoutSuperclass<ParentClass>(this);
|
||||
|
||||
// If Layout() did not provide a size then use the preferred size.
|
||||
if (ParentClass::size().IsEmpty()) {
|
||||
|
@@ -264,9 +264,9 @@ class CaptionlessFrameView : public views::NonClientFrameView {
|
||||
// Nothing to do here.
|
||||
}
|
||||
|
||||
void Layout() override {
|
||||
void Layout(views::View::PassKey) override {
|
||||
client_view_bounds_.SetRect(0, 0, width(), height());
|
||||
views::NonClientFrameView::Layout();
|
||||
LayoutSuperclass<views::NonClientFrameView>(this);
|
||||
}
|
||||
|
||||
gfx::Size CalculatePreferredSize() const override {
|
||||
|
@@ -28,7 +28,7 @@
|
||||
#include "chrome/common/chrome_paths.h"
|
||||
#include "chrome/common/chrome_switches.h"
|
||||
#include "chrome/common/media/cdm_registration.h"
|
||||
#include "components/pdf/common/internal_plugin_helpers.h"
|
||||
#include "components/pdf/common/constants.h"
|
||||
#include "content/public/common/cdm_info.h"
|
||||
#include "content/public/common/content_constants.h"
|
||||
#include "content/public/common/content_plugin_info.h"
|
||||
|
@@ -192,13 +192,7 @@ bool SetCrashKeyValue(const base::StringPiece& key,
|
||||
#if BUILDFLAG(IS_POSIX)
|
||||
// Be aware that logging is not initialized at the time this method is called.
|
||||
void BasicStartupComplete(base::CommandLine* command_line) {
|
||||
CefCrashReporterClient* crash_client = g_crash_reporter_client.Pointer();
|
||||
if (crash_client->ReadCrashConfigFile()) {
|
||||
#if !BUILDFLAG(IS_MAC)
|
||||
// Crashpad requires this switch on Linux.
|
||||
command_line->AppendSwitch(switches::kEnableCrashpad);
|
||||
#endif
|
||||
}
|
||||
g_crash_reporter_client.Pointer()->ReadCrashConfigFile();
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -227,12 +221,6 @@ void PreSandboxStartup(const base::CommandLine& command_line,
|
||||
#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC)
|
||||
void ZygoteForked(base::CommandLine* command_line,
|
||||
const std::string& process_type) {
|
||||
CefCrashReporterClient* crash_client = g_crash_reporter_client.Pointer();
|
||||
if (crash_client->HasCrashConfigFile()) {
|
||||
// Crashpad requires this switch on Linux.
|
||||
command_line->AppendSwitch(switches::kEnableCrashpad);
|
||||
}
|
||||
|
||||
InitCrashReporter(*command_line, process_type);
|
||||
|
||||
if (g_crash_reporting_enabled) {
|
||||
|
@@ -228,7 +228,7 @@ bool MakeCefCookie(const net::CanonicalCookie& cc, CefCookie& cookie) {
|
||||
CefString(&cookie.value).FromString(cc.Value());
|
||||
CefString(&cookie.domain).FromString(cc.Domain());
|
||||
CefString(&cookie.path).FromString(cc.Path());
|
||||
cookie.secure = cc.IsSecure();
|
||||
cookie.secure = cc.SecureAttribute();
|
||||
cookie.httponly = cc.IsHttpOnly();
|
||||
cookie.creation = CefBaseTime(cc.CreationDate());
|
||||
cookie.last_access = CefBaseTime(cc.LastAccessDate());
|
||||
@@ -284,4 +284,4 @@ bool MakeCefCookie(const GURL& url,
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace net_service
|
||||
} // namespace net_service
|
||||
|
@@ -133,9 +133,7 @@ CefString CefBase64Encode(const void* data, size_t data_size) {
|
||||
}
|
||||
|
||||
base::StringPiece input(static_cast<const char*>(data), data_size);
|
||||
std::string output;
|
||||
base::Base64Encode(input, &output);
|
||||
return output;
|
||||
return base::Base64Encode(input);
|
||||
}
|
||||
|
||||
CefRefPtr<CefBinaryValue> CefBase64Decode(const CefString& data) {
|
||||
|
@@ -58,7 +58,7 @@
|
||||
#include "chrome/renderer/plugins/chrome_plugin_placeholder.h"
|
||||
#include "components/content_settings/core/common/content_settings_types.h"
|
||||
#include "components/nacl/common/nacl_constants.h"
|
||||
#include "components/pdf/common/internal_plugin_helpers.h"
|
||||
#include "components/pdf/common/constants.h"
|
||||
#include "components/pdf/renderer/internal_plugin_renderer_helpers.h"
|
||||
#include "components/printing/renderer/print_render_frame_helper.h"
|
||||
#include "components/spellcheck/renderer/spellcheck.h"
|
||||
|
@@ -44,6 +44,8 @@ cef_dom_form_control_type_t GetCefFormControlType(FormControlType type) {
|
||||
return DOM_FORM_CONTROL_TYPE_BUTTON_RESET;
|
||||
case FormControlType::kButtonSelectList:
|
||||
return DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST;
|
||||
case FormControlType::kButtonPopover:
|
||||
return DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER;
|
||||
case FormControlType::kFieldset:
|
||||
return DOM_FORM_CONTROL_TYPE_FIELDSET;
|
||||
case FormControlType::kInputButton:
|
||||
|
@@ -37,6 +37,7 @@
|
||||
#include "content/renderer/render_frame_impl.h"
|
||||
#include "third_party/blink/public/mojom/frame/frame.mojom-blink.h"
|
||||
#include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h"
|
||||
#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
|
||||
#include "third_party/blink/public/platform/web_data.h"
|
||||
#include "third_party/blink/public/platform/web_string.h"
|
||||
#include "third_party/blink/public/platform/web_url.h"
|
||||
@@ -65,6 +66,10 @@ std::string GetDebugString(blink::WebLocalFrame* frame) {
|
||||
return "frame " + render_frame_util::GetIdentifier(frame);
|
||||
}
|
||||
|
||||
v8::Isolate* GetFrameIsolate(blink::WebLocalFrame* frame) {
|
||||
return frame->GetAgentGroupScheduler()->Isolate();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
CefFrameImpl::CefFrameImpl(CefBrowserImpl* browser, blink::WebLocalFrame* frame)
|
||||
@@ -233,7 +238,7 @@ CefRefPtr<CefV8Context> CefFrameImpl::GetV8Context() {
|
||||
CEF_REQUIRE_RT_RETURN(nullptr);
|
||||
|
||||
if (frame_) {
|
||||
v8::Isolate* isolate = blink::MainThreadIsolate();
|
||||
v8::Isolate* isolate = GetFrameIsolate(frame_);
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
return new CefV8ContextImpl(isolate, frame_->MainWorldScriptContext());
|
||||
} else {
|
||||
@@ -661,7 +666,7 @@ void CefFrameImpl::MaybeInitializeScriptContext() {
|
||||
// via DidCommitProvisionalLoad prior to https://crrev.com/5150754880a.
|
||||
// Otherwise, a script context may never be created for a frame that doesn't
|
||||
// contain JS code.
|
||||
v8::HandleScope handle_scope(blink::MainThreadIsolate());
|
||||
v8::HandleScope handle_scope(GetFrameIsolate(frame_));
|
||||
frame_->MainWorldScriptContext();
|
||||
}
|
||||
|
||||
|
@@ -147,7 +147,7 @@ void CefRenderFrameObserver::DidCreateScriptContext(
|
||||
CefRefPtr<CefFrameImpl> framePtr = browserPtr->GetWebFrameImpl(frame);
|
||||
|
||||
if (handler) {
|
||||
v8::Isolate* isolate = blink::MainThreadIsolate();
|
||||
v8::Isolate* isolate = context->GetIsolate();
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
v8::Context::Scope scope(context);
|
||||
v8::MicrotasksScope microtasks_scope(isolate,
|
||||
@@ -181,7 +181,7 @@ void CefRenderFrameObserver::WillReleaseScriptContext(
|
||||
CefRefPtr<CefFrameImpl> framePtr = browserPtr->GetWebFrameImpl(frame);
|
||||
|
||||
if (handler) {
|
||||
v8::Isolate* isolate = blink::MainThreadIsolate();
|
||||
v8::Isolate* isolate = context->GetIsolate();
|
||||
v8::HandleScope handle_scope(isolate);
|
||||
|
||||
// The released context should not be used for script execution.
|
||||
|
Reference in New Issue
Block a user