diff --git a/BUILD.gn b/BUILD.gn index 4f9dfd061..5925bc04b 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -687,8 +687,6 @@ static_library("libcef_static") { "libcef/renderer/render_frame_observer.h", "libcef/renderer/render_frame_util.cc", "libcef/renderer/render_frame_util.h", - "libcef/renderer/render_message_filter.cc", - "libcef/renderer/render_message_filter.h", "libcef/renderer/render_thread_observer.cc", "libcef/renderer/render_thread_observer.h", "libcef/renderer/render_urlrequest_impl.cc", @@ -807,7 +805,6 @@ static_library("libcef_static") { "//media", "//media/blink", "//net", - "//net:net_with_v8", "//pdf", "//ppapi/buildflags", "//printing/buildflags", @@ -822,7 +819,7 @@ static_library("libcef_static") { "//third_party/cld_3/src/src:cld_3", "//third_party/hunspell", "//third_party/leveldatabase", - "//third_party/libxml", + "//third_party/libxml:libxml", "//third_party/widevine/cdm:headers", "//third_party/widevine/cdm", "//third_party/icu", @@ -1200,7 +1197,6 @@ source_set("cef_content_browser_overlay_manifest") { source_set("cef_content_renderer_overlay_manifest") { sources = [ - "libcef/common/service_manifests/cef_content_renderer_overlay_manifest.cc", "libcef/common/service_manifests/cef_content_renderer_overlay_manifest.h", ] @@ -1311,6 +1307,8 @@ repack("pak_extensions") { # Add associated .h files in the make_pack_header("resources") target. sources = [ "$root_gen_dir/chrome/component_extension_resources.pak", + "$root_gen_dir/content/browser/resources/media/media_internals_resources.pak", + "$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak", "$root_gen_dir/extensions/extensions_renderer_resources.pak", "$root_gen_dir/extensions/extensions_resources.pak", "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak", @@ -1322,6 +1320,8 @@ repack("pak_extensions") { # listed both here and in the libcef_static target. public_deps = [ "//chrome/browser/resources:component_extension_resources", + "//content/browser/resources/media:media_internals_resources", + "//content/browser/webrtc/resources", "//extensions:extensions_renderer_resources", "//extensions:extensions_resources_grd", "//mojo/public/js:resources", @@ -1393,7 +1393,7 @@ repack("pak") { # listed both here and in the libcef_static target. public_deps = [ "//chrome/browser:resources", - "//chrome/browser/resources:net_internals_resources", + "//chrome/browser/resources/net_internals:net_internals_resources", "//chrome/browser/resources:print_preview_resources", "//chrome/common:resources", "//components/resources:components_resources", @@ -1544,7 +1544,6 @@ if (is_mac) { if (v8_use_external_startup_data) { sources += [ - "$root_out_dir/natives_blob.bin", "$root_out_dir/snapshot_blob.bin", ] public_deps += [ "//v8" ] diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index e13d3ee98..77fef47fa 100644 --- a/CHROMIUM_BUILD_COMPATIBILITY.txt +++ b/CHROMIUM_BUILD_COMPATIBILITY.txt @@ -7,5 +7,5 @@ # https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding { - 'chromium_checkout': 'refs/tags/79.0.3945.1' + 'chromium_checkout': 'refs/tags/80.0.3987.0' } diff --git a/cmake/cef_variables.cmake.in b/cmake/cef_variables.cmake.in index cb3399c8b..4b3b58de8 100644 --- a/cmake/cef_variables.cmake.in +++ b/cmake/cef_variables.cmake.in @@ -218,7 +218,6 @@ if(OS_LINUX) libcef.so libEGL.so libGLESv2.so - natives_blob.bin snapshot_blob.bin v8_context_snapshot.bin swiftshader @@ -481,7 +480,6 @@ if(OS_WINDOWS) libcef.dll libEGL.dll libGLESv2.dll - natives_blob.bin snapshot_blob.bin v8_context_snapshot.bin swiftshader diff --git a/include/base/cef_logging.h b/include/base/cef_logging.h index 8d8bb889e..ba93097a5 100644 --- a/include/base/cef_logging.h +++ b/include/base/cef_logging.h @@ -144,9 +144,9 @@ // Always define the DCHECK_IS_ON macro which is used from other CEF headers. #if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) -#define DCHECK_IS_ON() 0 +#define DCHECK_IS_ON() false #else -#define DCHECK_IS_ON() 1 +#define DCHECK_IS_ON() true #endif #elif defined(USING_CHROMIUM_INCLUDES) diff --git a/libcef/browser/browser_context.cc b/libcef/browser/browser_context.cc index 2e096f180..fe79bdddb 100644 --- a/libcef/browser/browser_context.cc +++ b/libcef/browser/browser_context.cc @@ -37,7 +37,7 @@ #include "components/proxy_config/pref_proxy_config_tracker_impl.h" #include "components/user_prefs/user_prefs.h" #include "components/visitedlink/browser/visitedlink_event_listener.h" -#include "components/visitedlink/browser/visitedlink_master.h" +#include "components/visitedlink/browser/visitedlink_writer.h" #include "components/zoom/zoom_event_manager.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -167,8 +167,8 @@ base::LazyInstance::Leaky g_manager = LAZY_INSTANCE_INITIALIZER; } // namespace // Creates and manages VisitedLinkEventListener objects for each -// CefBrowserContext sharing the same VisitedLinkMaster. -class CefVisitedLinkListener : public visitedlink::VisitedLinkMaster::Listener { +// CefBrowserContext sharing the same VisitedLinkWriter. +class CefVisitedLinkListener : public visitedlink::VisitedLinkWriter::Listener { public: CefVisitedLinkListener() { DCHECK(listener_map_.empty()); } @@ -186,7 +186,7 @@ class CefVisitedLinkListener : public visitedlink::VisitedLinkMaster::Listener { listener_map_.erase(it); } - // visitedlink::VisitedLinkMaster::Listener methods. + // visitedlink::VisitedLinkWriter::Listener methods. void NewTable(base::ReadOnlySharedMemoryRegion* table_region) override { CEF_REQUIRE_UIT(); @@ -341,7 +341,7 @@ void CefBrowserContext::Initialize() { if (!cache_path_.empty()) visited_link_path = cache_path_.Append(FILE_PATH_LITERAL("Visited Links")); visitedlink_listener_ = new CefVisitedLinkListener; - visitedlink_master_.reset(new visitedlink::VisitedLinkMaster( + visitedlink_master_.reset(new visitedlink::VisitedLinkWriter( visitedlink_listener_, this, !visited_link_path.empty(), false, visited_link_path, 0)); visitedlink_listener_->CreateListenerForContext(this); @@ -582,7 +582,7 @@ HostContentSettingsMap* CefBrowserContext::GetHostContentSettingsMap() { plugin_policy = CONTENT_SETTING_BLOCK; } host_content_settings_map_->SetDefaultContentSetting( - CONTENT_SETTINGS_TYPE_PLUGINS, plugin_policy); + ContentSettingsType::PLUGINS, plugin_policy); } } return host_content_settings_map_.get(); diff --git a/libcef/browser/browser_context.h b/libcef/browser/browser_context.h index 2250d47f7..bd110a183 100644 --- a/libcef/browser/browser_context.h +++ b/libcef/browser/browser_context.h @@ -95,7 +95,7 @@ class CefExtensionSystem; } namespace visitedlink { -class VisitedLinkMaster; +class VisitedLinkWriter; } // Main entry point for configuring behavior on a per-browser basis. An instance @@ -298,7 +298,7 @@ class CefBrowserContext : public ChromeProfileStub, std::unique_ptr download_manager_delegate_; std::unique_ptr ssl_host_state_delegate_; scoped_refptr host_content_settings_map_; - std::unique_ptr visitedlink_master_; + std::unique_ptr visitedlink_master_; // |visitedlink_listener_| is owned by visitedlink_master_. CefVisitedLinkListener* visitedlink_listener_; bool should_persist_session_cookies_ = false; diff --git a/libcef/browser/browser_host_impl.cc b/libcef/browser/browser_host_impl.cc index 81f0404ee..55ce4b19e 100644 --- a/libcef/browser/browser_host_impl.cc +++ b/libcef/browser/browser_host_impl.cc @@ -591,7 +591,7 @@ void CefBrowserHostImpl::CloseBrowser(bool force_close) { } content::WebContents* contents = web_contents(); - if (contents && contents->NeedToFireBeforeUnload()) { + if (contents && contents->NeedToFireBeforeUnloadOrUnload()) { // Will result in a call to BeforeUnloadFired() and, if the close isn't // canceled, CloseContents(). contents->DispatchBeforeUnload(false /* auto_cancel */); @@ -763,8 +763,9 @@ void CefBrowserHostImpl::DownloadImage( return; web_contents()->DownloadImage( - gurl, is_favicon, max_image_size * gfx::ImageSkia::GetMaxSupportedScale(), - bypass_cache, base::BindOnce(OnDownloadImage, max_image_size, callback)); + gurl, is_favicon, max_image_size, + max_image_size * gfx::ImageSkia::GetMaxSupportedScale(), bypass_cache, + base::BindOnce(OnDownloadImage, max_image_size, callback)); } void CefBrowserHostImpl::Print() { @@ -1639,30 +1640,6 @@ void CefBrowserHostImpl::LoadMainFrameURL(const std::string& url, } } -void CefBrowserHostImpl::OnFrameFocused(CefRefPtr frame) { - DCHECK(frame); - - CefRefPtr previous_frame; - { - base::AutoLock lock_scope(state_lock_); - previous_frame = focused_frame_; - if (frame->IsMain()) - focused_frame_ = nullptr; - else - focused_frame_ = frame; - } - - if (!previous_frame) { - // The main frame is focused by default. - previous_frame = browser_info_->GetMainFrame(); - } - - if (previous_frame->GetIdentifier() != frame->GetIdentifier()) { - previous_frame->SetFocused(false); - frame->SetFocused(true); - } -} - void CefBrowserHostImpl::OnDidFinishLoad(CefRefPtr frame, const GURL& validated_url, int http_status_code) { @@ -2108,8 +2085,7 @@ void CefBrowserHostImpl::LoadingStateChanged(content::WebContents* source, } } -void CefBrowserHostImpl::LoadProgressChanged(content::WebContents* source, - double progress) { +void CefBrowserHostImpl::LoadProgressChanged(double progress) { if (client_.get()) { CefRefPtr handler = client_->GetDisplayHandler(); if (handler.get()) { @@ -2740,6 +2716,34 @@ bool CefBrowserHostImpl::OnMessageReceived( return false; } +void CefBrowserHostImpl::OnFrameFocused( + content::RenderFrameHost* render_frame_host) { + CefRefPtr frame = + static_cast(GetFrameForHost(render_frame_host).get()); + if (!frame || frame->IsFocused()) + return; + + CefRefPtr previous_frame; + { + base::AutoLock lock_scope(state_lock_); + previous_frame = focused_frame_; + if (frame->IsMain()) + focused_frame_ = nullptr; + else + focused_frame_ = frame; + } + + if (!previous_frame) { + // The main frame is focused by default. + previous_frame = browser_info_->GetMainFrame(); + } + + if (previous_frame->GetIdentifier() != frame->GetIdentifier()) { + previous_frame->SetFocused(false); + frame->SetFocused(true); + } +} + void CefBrowserHostImpl::AccessibilityEventReceived( const content::AXEventNotificationDetails& content_event_bundle) { // Only needed in windowless mode. diff --git a/libcef/browser/browser_host_impl.h b/libcef/browser/browser_host_impl.h index 6c1c79525..5b30b9e96 100644 --- a/libcef/browser/browser_host_impl.h +++ b/libcef/browser/browser_host_impl.h @@ -313,7 +313,6 @@ class CefBrowserHostImpl : public CefBrowserHost, const std::string& extra_headers); // Called from CefFrameHostImpl. - void OnFrameFocused(CefRefPtr frame); void OnDidFinishLoad(CefRefPtr frame, const GURL& validated_url, int http_status_code); @@ -386,8 +385,7 @@ class CefBrowserHostImpl : public CefBrowserHost, bool* was_blocked) override; void LoadingStateChanged(content::WebContents* source, bool to_different_document) override; - void LoadProgressChanged(content::WebContents* source, - double progress) override; + void LoadProgressChanged(double progress) override; void CloseContents(content::WebContents* source) override; void UpdateTargetURL(content::WebContents* source, const GURL& url) override; bool DidAddMessageToConsole(content::WebContents* source, @@ -493,6 +491,7 @@ class CefBrowserHostImpl : public CefBrowserHost, bool OnMessageReceived(const IPC::Message& message) override; bool OnMessageReceived(const IPC::Message& message, content::RenderFrameHost* render_frame_host) override; + void OnFrameFocused(content::RenderFrameHost* render_frame_host) override; void AccessibilityEventReceived( const content::AXEventNotificationDetails& content_event_bundle) override; void AccessibilityLocationChangesReceived( diff --git a/libcef/browser/browser_main.cc b/libcef/browser/browser_main.cc index 36aed8ec6..1a5b31ed9 100644 --- a/libcef/browser/browser_main.cc +++ b/libcef/browser/browser_main.cc @@ -71,7 +71,7 @@ #include "libcef/browser/printing/print_dialog_linux.h" #endif -#if defined(OS_MACOSX) +#if defined(OS_MACOSX) || defined(OS_WIN) #include "chrome/browser/browser_process.h" #include "components/os_crypt/os_crypt.h" #endif @@ -122,7 +122,7 @@ void CefBrowserMainParts::PreMainMessageLoopStart() { ui::TouchFactory::SetTouchDeviceListFromCommandLine(); #endif -#if defined(OS_MACOSX) +#if defined(OS_MACOSX) || defined(OS_WIN) // Initialize the OSCrypt. PrefService* local_state = g_browser_process->local_state(); DCHECK(local_state); diff --git a/libcef/browser/content_browser_client.cc b/libcef/browser/content_browser_client.cc index 7d0ab6663..27c92e6e7 100644 --- a/libcef/browser/content_browser_client.cc +++ b/libcef/browser/content_browser_client.cc @@ -39,7 +39,6 @@ #include "libcef/common/net/scheme_registration.h" #include "libcef/common/request_impl.h" #include "libcef/common/service_manifests/cef_content_browser_overlay_manifest.h" -#include "libcef/common/service_manifests/cef_content_renderer_overlay_manifest.h" #include "base/base_switches.h" #include "base/command_line.h" @@ -103,7 +102,6 @@ #include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/guest_view/extensions_guest_view_message_filter.h" #include "extensions/browser/guest_view/web_view/web_view_guest.h" -#include "extensions/browser/io_thread_extension_message_filter.h" #include "extensions/common/constants.h" #include "extensions/common/switches.h" #include "mojo/public/cpp/bindings/remote.h" @@ -137,14 +135,20 @@ #endif #if defined(OS_MACOSX) +#include "net/ssl/client_cert_store_mac.h" #include "services/audio/public/mojom/constants.mojom.h" #include "services/video_capture/public/mojom/constants.mojom.h" #endif #if defined(OS_WIN) +#include "net/ssl/client_cert_store_win.h" #include "sandbox/win/src/sandbox_policy.h" #endif +#if defined(USE_NSS_CERTS) +#include "net/ssl/client_cert_store_nss.h" +#endif + #if BUILDFLAG(HAS_SPELLCHECK_PANEL) #include "chrome/browser/spellchecker/spell_check_panel_host_impl.h" #endif @@ -204,21 +208,22 @@ class CefQuotaCallbackImpl : public CefRequestCallback { class CefAllowCertificateErrorCallbackImpl : public CefRequestCallback { public: - typedef base::Callback + typedef base::OnceCallback CallbackType; - explicit CefAllowCertificateErrorCallbackImpl(const CallbackType& callback) - : callback_(callback) {} + explicit CefAllowCertificateErrorCallbackImpl(CallbackType callback) + : callback_(std::move(callback)) {} ~CefAllowCertificateErrorCallbackImpl() { if (!callback_.is_null()) { // The callback is still pending. Cancel it now. if (CEF_CURRENTLY_ON_UIT()) { - RunNow(callback_, false); + RunNow(std::move(callback_), false); } else { - CEF_POST_TASK(CEF_UIT, - base::Bind(&CefAllowCertificateErrorCallbackImpl::RunNow, - callback_, false)); + CEF_POST_TASK( + CEF_UIT, + base::BindOnce(&CefAllowCertificateErrorCallbackImpl::RunNow, + std::move(callback_), false)); } } } @@ -226,8 +231,7 @@ class CefAllowCertificateErrorCallbackImpl : public CefRequestCallback { void Continue(bool allow) override { if (CEF_CURRENTLY_ON_UIT()) { if (!callback_.is_null()) { - RunNow(callback_, allow); - callback_.Reset(); + RunNow(std::move(callback_), allow); } } else { CEF_POST_TASK(CEF_UIT, @@ -238,13 +242,14 @@ class CefAllowCertificateErrorCallbackImpl : public CefRequestCallback { void Cancel() override { Continue(false); } - void Disconnect() { callback_.Reset(); } + CallbackType Disconnect() WARN_UNUSED_RESULT { return std::move(callback_); } private: - static void RunNow(const CallbackType& callback, bool allow) { + static void RunNow(CallbackType callback, bool allow) { CEF_REQUIRE_UIT(); - callback.Run(allow ? content::CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE - : content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL); + std::move(callback).Run( + allow ? content::CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE + : content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL); } CallbackType callback_; @@ -535,7 +540,6 @@ void CefContentBrowserClient::RenderProcessWillLaunch( if (extensions::ExtensionsEnabled()) { host->AddFilter(new extensions::ExtensionMessageFilter(id, profile)); - host->AddFilter(new extensions::IOThreadExtensionMessageFilter()); host->AddFilter( new extensions::ExtensionsGuestViewMessageFilter(id, profile)); } @@ -713,8 +717,6 @@ base::Optional CefContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) { if (name == content::mojom::kBrowserServiceName) { return GetCefContentBrowserOverlayManifest(); - } else if (name == content::mojom::kRendererServiceName) { - return GetCefContentRendererOverlayManifest(); } return base::nullopt; @@ -889,7 +891,7 @@ void CefContentBrowserClient::GetQuotaSettings( const base::FilePath& cache_path = partition->GetPath(); storage::GetNominalDynamicSettings( cache_path, cache_path.empty() /* is_incognito */, - storage::GetDefaultDiskInfoHelper(), std::move(callback)); + storage::GetDefaultDeviceInfoHelper(), std::move(callback)); } content::MediaObserver* CefContentBrowserClient::GetMediaObserver() { @@ -924,15 +926,14 @@ void CefContentBrowserClient::AllowCertificateError( const GURL& request_url, bool is_main_frame_request, bool strict_enforcement, - const base::Callback& - callback) { + base::OnceCallback callback) { CEF_REQUIRE_UIT(); if (!is_main_frame_request) { // A sub-resource has a certificate error. The user doesn't really // have a context for making the right decision, so block the request // hard. - callback.Run(content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL); + std::move(callback).Run(content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL); return; } @@ -950,14 +951,17 @@ void CefContentBrowserClient::AllowCertificateError( CefRefPtr cef_ssl_info = new CefSSLInfoImpl(ssl_info); CefRefPtr callbackImpl( - new CefAllowCertificateErrorCallbackImpl(callback)); + new CefAllowCertificateErrorCallbackImpl(std::move(callback))); bool proceed = handler->OnCertificateError( browser.get(), static_cast(cert_error), request_url.spec(), cef_ssl_info, callbackImpl.get()); if (!proceed) { - callbackImpl->Disconnect(); - callback.Run(content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL); + // |callback| may be null if the user executed it despite returning false. + callback = callbackImpl->Disconnect(); + if (!callback.is_null()) { + std::move(callback).Run(content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL); + } } } @@ -1164,11 +1168,19 @@ void CefContentBrowserClient::ExposeInterfacesToRenderer( std::unique_ptr CefContentBrowserClient::CreateClientCertStore( - content::ResourceContext* resource_context) { - if (!resource_context) - return nullptr; - return static_cast(resource_context) - ->CreateClientCertStore(); + content::BrowserContext* browser_context) { + // Match the logic in ProfileNetworkContextService::CreateClientCertStore. +#if defined(USE_NSS_CERTS) + // TODO: Add support for client implementation of crypto password dialog. + return std::unique_ptr(new net::ClientCertStoreNSS( + net::ClientCertStoreNSS::PasswordDelegateFactory())); +#elif defined(OS_WIN) + return std::unique_ptr(new net::ClientCertStoreWin()); +#elif defined(OS_MACOSX) + return std::unique_ptr(new net::ClientCertStoreMac()); +#else +#error Unknown platform. +#endif } std::unique_ptr @@ -1257,10 +1269,12 @@ bool CefContentBrowserClient::WillCreateURLLoaderFactory( int render_process_id, URLLoaderFactoryType type, const url::Origin& request_initiator, + base::Optional navigation_id, mojo::PendingReceiver* factory_receiver, mojo::PendingRemote* header_client, - bool* bypass_redirect_checks) { + bool* bypass_redirect_checks, + network::mojom::URLLoaderFactoryOverridePtr* factory_override) { auto request_handler = net_service::CreateInterceptedRequestHandler( browser_context, frame, render_process_id, type == URLLoaderFactoryType::kNavigation, @@ -1322,14 +1336,14 @@ CefContentBrowserClient::GetNetworkContextsParentDirectory() { bool CefContentBrowserClient::HandleExternalProtocol( const GURL& url, - base::Callback web_contents_getter, + base::OnceCallback web_contents_getter, int child_id, content::NavigationUIData* navigation_data, bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture, const base::Optional& initiating_origin, - network::mojom::URLLoaderFactoryPtr* out_factory) { + mojo::PendingRemote* out_factory) { // Call the other HandleExternalProtocol variant. return false; } @@ -1339,32 +1353,34 @@ bool CefContentBrowserClient::HandleExternalProtocol( int frame_tree_node_id, content::NavigationUIData* navigation_data, const network::ResourceRequest& resource_request, - network::mojom::URLLoaderFactoryPtr* out_factory) { - auto request = mojo::MakeRequest(out_factory); + mojo::PendingRemote* out_factory) { + mojo::PendingReceiver receiver = + out_factory->InitWithNewPipeAndPassReceiver(); // CefBrowserPlatformDelegate::HandleExternalProtocol may be called if // nothing handles the request. if (CEF_CURRENTLY_ON_IOT()) { auto request_handler = net_service::CreateInterceptedRequestHandler( web_contents_getter, frame_tree_node_id, resource_request); net_service::ProxyURLLoaderFactory::CreateProxy( - web_contents_getter, std::move(request), std::move(request_handler)); + web_contents_getter, std::move(receiver), std::move(request_handler)); } else { auto request_handler = net_service::CreateInterceptedRequestHandler( web_contents_getter, frame_tree_node_id, resource_request); - CEF_POST_TASK(CEF_IOT, - base::BindOnce( - [](network::mojom::URLLoaderFactoryRequest request, - std::unique_ptr - request_handler, - content::WebContents::Getter web_contents_getter) { - // Manages its own lifetime. + CEF_POST_TASK( + CEF_IOT, + base::BindOnce( + [](mojo::PendingReceiver receiver, + std::unique_ptr + request_handler, + content::WebContents::Getter web_contents_getter) { + // Manages its own lifetime. - net_service::ProxyURLLoaderFactory::CreateProxy( - web_contents_getter, std::move(request), - std::move(request_handler)); - }, - std::move(request), std::move(request_handler), - std::move(web_contents_getter))); + net_service::ProxyURLLoaderFactory::CreateProxy( + web_contents_getter, std::move(receiver), + std::move(request_handler)); + }, + std::move(receiver), std::move(request_handler), + std::move(web_contents_getter))); } return true; } @@ -1381,6 +1397,33 @@ CefContentBrowserClient::CreateWindowForPictureInPicture( return content::OverlayWindow::Create(controller); } +void CefContentBrowserClient::RegisterBrowserInterfaceBindersForFrame( + content::RenderFrameHost* render_frame_host, + service_manager::BinderMapWithContext* map) { + if (!extensions::ExtensionsEnabled()) + return; + + content::WebContents* web_contents = + content::WebContents::FromRenderFrameHost(render_frame_host); + if (!web_contents) + return; + + const GURL& site = render_frame_host->GetSiteInstance()->GetSiteURL(); + if (!site.SchemeIs(extensions::kExtensionScheme)) + return; + + content::BrowserContext* browser_context = + render_frame_host->GetProcess()->GetBrowserContext(); + auto* extension = extensions::ExtensionRegistry::Get(browser_context) + ->enabled_extensions() + .GetByID(site.host()); + if (!extension) + return; + extensions::ExtensionsBrowserClient::Get() + ->RegisterBrowserInterfaceBindersForFrame(map, render_frame_host, + extension); +} + std::string CefContentBrowserClient::GetProduct() { // Match the logic in chrome_content_browser_client.cc GetProduct(). return ::GetProduct(); diff --git a/libcef/browser/content_browser_client.h b/libcef/browser/content_browser_client.h index 411564fbd..72833cb8f 100644 --- a/libcef/browser/content_browser_client.h +++ b/libcef/browser/content_browser_client.h @@ -89,8 +89,8 @@ class CefContentBrowserClient : public content::ContentBrowserClient { const GURL& request_url, bool is_main_frame_request, bool strict_enforcement, - const base::Callback& - callback) override; + base::OnceCallback callback) + override; base::OnceClosure SelectClientCertificate( content::WebContents* web_contents, net::SSLCertRequestInfo* cert_request_info, @@ -144,7 +144,7 @@ class CefContentBrowserClient : public content::ContentBrowserClient { blink::AssociatedInterfaceRegistry* associated_registry, content::RenderProcessHost* render_process_host) override; std::unique_ptr CreateClientCertStore( - content::ResourceContext* resource_context) override; + content::BrowserContext* browser_context) override; std::unique_ptr CreateLoginDelegate( const net::AuthChallengeInfo& auth_info, content::WebContents* web_contents, @@ -167,10 +167,12 @@ class CefContentBrowserClient : public content::ContentBrowserClient { int render_process_id, URLLoaderFactoryType type, const url::Origin& request_initiator, + base::Optional navigation_id, mojo::PendingReceiver* factory_receiver, mojo::PendingRemote* header_client, - bool* bypass_redirect_checks) override; + bool* bypass_redirect_checks, + network::mojom::URLLoaderFactoryOverridePtr* factory_override) override; void OnNetworkServiceCreated( network::mojom::NetworkService* network_service) override; mojo::Remote CreateNetworkContext( @@ -180,22 +182,28 @@ class CefContentBrowserClient : public content::ContentBrowserClient { std::vector GetNetworkContextsParentDirectory() override; bool HandleExternalProtocol( const GURL& url, - base::Callback web_contents_getter, + base::OnceCallback web_contents_getter, int child_id, content::NavigationUIData* navigation_data, bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture, const base::Optional& initiating_origin, - network::mojom::URLLoaderFactoryPtr* out_factory) override; + mojo::PendingRemote* out_factory) + override; bool HandleExternalProtocol( content::WebContents::Getter web_contents_getter, int frame_tree_node_id, content::NavigationUIData* navigation_data, const network::ResourceRequest& request, - network::mojom::URLLoaderFactoryPtr* out_factory) override; + mojo::PendingRemote* out_factory) + override; std::unique_ptr CreateWindowForPictureInPicture( content::PictureInPictureWindowController* controller) override; + void RegisterBrowserInterfaceBindersForFrame( + content::RenderFrameHost* render_frame_host, + service_manager::BinderMapWithContext* map) + override; std::string GetProduct() override; std::string GetChromeProduct() override; diff --git a/libcef/browser/context_menu_params_impl.cc b/libcef/browser/context_menu_params_impl.cc index 34e1d2d1a..6047d1a6e 100644 --- a/libcef/browser/context_menu_params_impl.cc +++ b/libcef/browser/context_menu_params_impl.cc @@ -38,7 +38,7 @@ CefContextMenuParamsImpl::TypeFlags CefContextMenuParamsImpl::GetTypeFlags() { type_flags |= CM_TYPEFLAG_FRAME; if (!params.link_url.is_empty()) type_flags |= CM_TYPEFLAG_LINK; - if (params.media_type != blink::WebContextMenuData::kMediaTypeNone) + if (params.media_type != blink::ContextMenuDataMediaType::kNone) type_flags |= CM_TYPEFLAG_MEDIA; if (!params.selection_text.empty()) type_flags |= CM_TYPEFLAG_SELECTION; diff --git a/libcef/browser/extensions/component_extension_resource_manager.cc b/libcef/browser/extensions/component_extension_resource_manager.cc index b11a6fffe..c76e867a5 100644 --- a/libcef/browser/extensions/component_extension_resource_manager.cc +++ b/libcef/browser/extensions/component_extension_resource_manager.cc @@ -50,13 +50,28 @@ CefComponentExtensionResourceManager::GetTemplateReplacementsForExtension( void CefComponentExtensionResourceManager::AddComponentResourceEntries( const GritResourceMap* entries, size_t size) { + base::FilePath gen_folder_path = base::FilePath().AppendASCII( + "@out_folder@/gen/chrome/browser/resources/"); + gen_folder_path = gen_folder_path.NormalizePathSeparators(); + for (size_t i = 0; i < size; ++i) { base::FilePath resource_path = base::FilePath().AppendASCII(entries[i].name); resource_path = resource_path.NormalizePathSeparators(); - DCHECK(!base::Contains(path_to_resource_info_, resource_path)); - path_to_resource_info_[resource_path] = entries[i].value; + if (!gen_folder_path.IsParent(resource_path)) { + DCHECK(!base::Contains(path_to_resource_info_, resource_path)); + path_to_resource_info_[resource_path] = entries[i].value; + } else { + // If the resource is a generated file, strip the generated folder's path, + // so that it can be served from a normal URL (as if it were not + // generated). + base::FilePath effective_path = + base::FilePath().AppendASCII(resource_path.AsUTF8Unsafe().substr( + gen_folder_path.value().length())); + DCHECK(!base::Contains(path_to_resource_info_, effective_path)); + path_to_resource_info_[effective_path] = entries[i].value; + } } } diff --git a/libcef/browser/extensions/extension_host_delegate.cc b/libcef/browser/extensions/extension_host_delegate.cc index 857700d09..bd6323025 100644 --- a/libcef/browser/extensions/extension_host_delegate.cc +++ b/libcef/browser/extensions/extension_host_delegate.cc @@ -59,10 +59,6 @@ bool CefExtensionHostDelegate::CheckMediaAccessPermission( return false; } -ExtensionHostQueue* CefExtensionHostDelegate::GetExtensionHostQueue() const { - return CefExtensionsBrowserClient::Get()->GetExtensionHostQueue(); -} - content::PictureInPictureResult CefExtensionHostDelegate::EnterPictureInPicture( content::WebContents* web_contents, const viz::SurfaceId& surface_id, diff --git a/libcef/browser/extensions/extension_host_delegate.h b/libcef/browser/extensions/extension_host_delegate.h index c30c93c2d..31e76faaf 100644 --- a/libcef/browser/extensions/extension_host_delegate.h +++ b/libcef/browser/extensions/extension_host_delegate.h @@ -34,7 +34,6 @@ class CefExtensionHostDelegate : public ExtensionHostDelegate { const GURL& security_origin, blink::mojom::MediaStreamType type, const Extension* extension) override; - ExtensionHostQueue* GetExtensionHostQueue() const override; content::PictureInPictureResult EnterPictureInPicture( content::WebContents* web_contents, const viz::SurfaceId& surface_id, diff --git a/libcef/browser/extensions/extensions_browser_client.cc b/libcef/browser/extensions/extensions_browser_client.cc index 190fc886d..0aabad2d0 100644 --- a/libcef/browser/extensions/extensions_browser_client.cc +++ b/libcef/browser/extensions/extensions_browser_client.cc @@ -24,14 +24,17 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" #include "extensions/browser/api/extensions_api_client.h" +#include "extensions/browser/api/mime_handler_private/mime_handler_private.h" #include "extensions/browser/api/runtime/runtime_api_delegate.h" #include "extensions/browser/app_sorting.h" #include "extensions/browser/core_extensions_browser_api_provider.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_host_delegate.h" +#include "extensions/browser/extensions_browser_interface_binders.h" +#include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h" #include "extensions/browser/mojo/interface_registration.h" -#include "extensions/browser/serial_extension_host_queue.h" #include "extensions/browser/url_request_util.h" +#include "extensions/common/api/mime_handler.mojom.h" #include "extensions/common/constants.h" using content::BrowserContext; @@ -39,6 +42,41 @@ using content::BrowserThread; namespace extensions { +namespace { + +void BindMimeHandlerService( + content::RenderFrameHost* frame_host, + mojo::PendingReceiver + receiver) { + auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); + if (!web_contents) + return; + + auto* guest_view = + extensions::MimeHandlerViewGuest::FromWebContents(web_contents); + if (!guest_view) + return; + extensions::MimeHandlerServiceImpl::Create(guest_view->GetStreamWeakPtr(), + std::move(receiver)); +} + +void BindBeforeUnloadControl( + content::RenderFrameHost* frame_host, + mojo::PendingReceiver + receiver) { + auto* web_contents = content::WebContents::FromRenderFrameHost(frame_host); + if (!web_contents) + return; + + auto* guest_view = + extensions::MimeHandlerViewGuest::FromWebContents(web_contents); + if (!guest_view) + return; + guest_view->FuseBeforeUnloadControl(std::move(receiver)); +} + +} // namespace + CefExtensionsBrowserClient::CefExtensionsBrowserClient() : api_client_(new CefExtensionsAPIClient), resource_manager_(new CefComponentExtensionResourceManager) { @@ -117,11 +155,11 @@ base::FilePath CefExtensionsBrowserClient::GetBundleResourcePath( void CefExtensionsBrowserClient::LoadResourceFromResourceBundle( const network::ResourceRequest& request, - network::mojom::URLLoaderRequest loader, + mojo::PendingReceiver loader, const base::FilePath& resource_relative_path, const int resource_id, const std::string& content_security_policy, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote client, bool send_cors_header) { chrome_url_request_util::LoadResourceFromResourceBundle( request, std::move(loader), resource_relative_path, resource_id, @@ -257,6 +295,18 @@ CefExtensionsBrowserClient::GetExtensionSystemFactory() { return CefExtensionSystemFactory::GetInstance(); } +void CefExtensionsBrowserClient::RegisterBrowserInterfaceBindersForFrame( + service_manager::BinderMapWithContext* map, + content::RenderFrameHost* render_frame_host, + const Extension* extension) const { + PopulateExtensionFrameBinders(map, render_frame_host, extension); + + map->Add( + base::BindRepeating(&BindMimeHandlerService)); + map->Add( + base::BindRepeating(&BindBeforeUnloadControl)); +} + void CefExtensionsBrowserClient::RegisterExtensionInterfaces( service_manager::BinderRegistryWithArgs* registry, @@ -323,10 +373,4 @@ std::string CefExtensionsBrowserClient::GetApplicationLocale() { return g_browser_process->GetApplicationLocale(); } -ExtensionHostQueue* CefExtensionsBrowserClient::GetExtensionHostQueue() { - if (!extension_host_queue_) - extension_host_queue_.reset(new SerialExtensionHostQueue); - return extension_host_queue_.get(); -} - } // namespace extensions diff --git a/libcef/browser/extensions/extensions_browser_client.h b/libcef/browser/extensions/extensions_browser_client.h index ebd8b97f2..8d926b671 100644 --- a/libcef/browser/extensions/extensions_browser_client.h +++ b/libcef/browser/extensions/extensions_browser_client.h @@ -11,7 +11,6 @@ namespace extensions { -class ExtensionHostQueue; class ExtensionsAPIClient; // An ExtensionsBrowserClient that supports a single content::BrowserContent @@ -49,11 +48,11 @@ class CefExtensionsBrowserClient : public ExtensionsBrowserClient { int* resource_id) const override; void LoadResourceFromResourceBundle( const network::ResourceRequest& request, - network::mojom::URLLoaderRequest loader, + mojo::PendingReceiver loader, const base::FilePath& resource_relative_path, const int resource_id, const std::string& content_security_policy, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote client, bool send_cors_header) override; bool AllowCrossRendererResourceLoad(const GURL& url, content::ResourceType resource_type, @@ -82,6 +81,11 @@ class CefExtensionsBrowserClient : public ExtensionsBrowserClient { bool IsAppModeForcedForApp(const ExtensionId& extension_id) override; bool IsLoggedInAsPublicAccount() override; ExtensionSystemProvider* GetExtensionSystemFactory() override; + void RegisterBrowserInterfaceBindersForFrame( + service_manager::BinderMapWithContext* + binder_map, + content::RenderFrameHost* render_frame_host, + const Extension* extension) const override; void RegisterExtensionInterfaces(service_manager::BinderRegistryWithArgs< content::RenderFrameHost*>* registry, content::RenderFrameHost* render_frame_host, @@ -104,8 +108,6 @@ class CefExtensionsBrowserClient : public ExtensionsBrowserClient { bool IsLockScreenContext(content::BrowserContext* context) override; std::string GetApplicationLocale() override; - ExtensionHostQueue* GetExtensionHostQueue(); - private: // Support for extension APIs. std::unique_ptr api_client_; @@ -113,9 +115,6 @@ class CefExtensionsBrowserClient : public ExtensionsBrowserClient { // Resource manager used to supply resources from pak files. std::unique_ptr resource_manager_; - // Used to create deferred RenderViews for extensions. - std::unique_ptr extension_host_queue_; - DISALLOW_COPY_AND_ASSIGN(CefExtensionsBrowserClient); }; diff --git a/libcef/browser/frame_host_impl.cc b/libcef/browser/frame_host_impl.cc index 4ce4c80b2..ceb19952d 100644 --- a/libcef/browser/frame_host_impl.cc +++ b/libcef/browser/frame_host_impl.cc @@ -464,7 +464,6 @@ bool CefFrameHostImpl::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(CefFrameHostImpl, message) IPC_MESSAGE_HANDLER(CefHostMsg_FrameAttached, OnAttached) - IPC_MESSAGE_HANDLER(CefHostMsg_FrameFocused, OnFocused) IPC_MESSAGE_HANDLER(CefHostMsg_DidFinishLoad, OnDidFinishLoad) IPC_MESSAGE_HANDLER(CefHostMsg_UpdateDraggableRegions, OnUpdateDraggableRegions) @@ -556,16 +555,6 @@ void CefFrameHostImpl::OnAttached() { } } -void CefFrameHostImpl::OnFocused() { - if (!IsFocused()) { - // Calls back to SetFocused(true) after updating state on the previously - // focused frame. - auto browser = GetBrowserHostImpl(); - if (browser) - browser->OnFrameFocused(this); - } -} - void CefFrameHostImpl::OnDidFinishLoad(const GURL& validated_url, int http_status_code) { auto browser = GetBrowserHostImpl(); diff --git a/libcef/browser/frame_host_impl.h b/libcef/browser/frame_host_impl.h index 5aab7f480..b8405402d 100644 --- a/libcef/browser/frame_host_impl.h +++ b/libcef/browser/frame_host_impl.h @@ -144,7 +144,6 @@ class CefFrameHostImpl : public CefFrame { // OnMessageReceived message handlers. void OnAttached(); - void OnFocused(); void OnDidFinishLoad(const GURL& validated_url, int http_status_code); void OnUpdateDraggableRegions( const std::vector& regions); diff --git a/libcef/browser/native/window_delegate_view.cc b/libcef/browser/native/window_delegate_view.cc index 168447b74..1a408dc38 100644 --- a/libcef/browser/native/window_delegate_view.cc +++ b/libcef/browser/native/window_delegate_view.cc @@ -43,7 +43,7 @@ void CefWindowDelegateView::Init(gfx::AcceleratedWidget parent_widget, // Set the WS_VISIBLE flag. params.type = views::Widget::InitParams::TYPE_CONTROL; // Don't set the WS_EX_COMPOSITED flag. - params.opacity = views::Widget::InitParams::OPAQUE_WINDOW; + params.opacity = views::Widget::InitParams::WindowOpacity::kOpaque; // Tell Aura not to draw the window frame on resize. params.remove_standard_frame = true; // Cause WidgetDelegate::CanActivate to return true. See comments in diff --git a/libcef/browser/net/chrome_scheme_handler.cc b/libcef/browser/net/chrome_scheme_handler.cc index 415cf14b3..4b90f3706 100644 --- a/libcef/browser/net/chrome_scheme_handler.cc +++ b/libcef/browser/net/chrome_scheme_handler.cc @@ -465,10 +465,10 @@ class CefURLDataSource : public content::URLDataSource { std::string GetSource() override { return host_; } void StartDataRequest( - const std::string& path, + const GURL& path, const content::WebContents::Getter& wc_getter, - const content::URLDataSource::GotDataCallback& callback) override { - callback.Run(output_); + content::URLDataSource::GotDataCallback callback) override { + std::move(callback).Run(output_); } std::string GetMimeType(const std::string& path) override { diff --git a/libcef/browser/net/devtools_scheme_handler.cc b/libcef/browser/net/devtools_scheme_handler.cc index d7dcedd08..e16faaa28 100644 --- a/libcef/browser/net/devtools_scheme_handler.cc +++ b/libcef/browser/net/devtools_scheme_handler.cc @@ -32,9 +32,9 @@ class Delegate : public InternalHandlerDelegate { if (path.length() > 0) path = path.substr(1); - action->string_piece = - content::DevToolsFrontendHost::GetFrontendResource(path); - return !action->string_piece.empty(); + action->bytes = + content::DevToolsFrontendHost::GetFrontendResourceBytes(path); + return !!action->bytes; } }; diff --git a/libcef/browser/net/internal_scheme_handler.cc b/libcef/browser/net/internal_scheme_handler.cc index a9a8cdf38..f04b71654 100644 --- a/libcef/browser/net/internal_scheme_handler.cc +++ b/libcef/browser/net/internal_scheme_handler.cc @@ -157,21 +157,21 @@ class InternalHandlerFactory : public CefSchemeHandlerFactory { if (action.mime_type.empty()) action.mime_type = GetMimeType(url.path()); - if (action.string_piece.empty() && action.resource_id >= 0) { - action.string_piece = CefContentClient::Get()->GetDataResource( - action.resource_id, ui::SCALE_FACTOR_NONE); - if (action.string_piece.empty()) { + if (!action.bytes && action.resource_id >= 0) { + action.bytes = + CefContentClient::Get()->GetDataResourceBytes(action.resource_id); + if (!action.bytes) { NOTREACHED() << "Failed to load internal resource for id: " << action.resource_id << " URL: " << url.spec().c_str(); return nullptr; } } - if (!action.string_piece.empty()) { + if (action.bytes) { action.stream = CefStreamReader::CreateForData( - const_cast(action.string_piece.data()), - action.string_piece.size()); - action.stream_size = action.string_piece.size(); + const_cast(action.bytes->data()), + action.bytes->size()); + action.stream_size = action.bytes->size(); } if (action.stream.get()) { diff --git a/libcef/browser/net/internal_scheme_handler.h b/libcef/browser/net/internal_scheme_handler.h index bd12ef9f5..3db3ef074 100644 --- a/libcef/browser/net/internal_scheme_handler.h +++ b/libcef/browser/net/internal_scheme_handler.h @@ -10,7 +10,7 @@ #include "include/cef_scheme.h" -#include "base/strings/string_piece.h" +#include "base/memory/ref_counted_memory.h" #include "url/gurl.h" namespace scheme { @@ -31,8 +31,8 @@ class InternalHandlerDelegate { CefRefPtr stream; int stream_size; - // Option 2: Provide a base::StringPiece for the resource contents. - base::StringPiece string_piece; + // Option 2: Provide a base::RefCountedMemory for the resource contents. + scoped_refptr bytes; // Option 3: Specify a resource id to load static content. int resource_id; diff --git a/libcef/browser/net_service/cookie_helper.cc b/libcef/browser/net_service/cookie_helper.cc index 1681014fb..e51d90b89 100644 --- a/libcef/browser/net_service/cookie_helper.cc +++ b/libcef/browser/net_service/cookie_helper.cc @@ -146,7 +146,8 @@ void LoadCookies(content::BrowserContext* browser_context, CEF_REQUIRE_IOT(); if ((request.load_flags & net::LOAD_DO_NOT_SEND_COOKIES) || - request.credentials_mode == network::mojom::CredentialsMode::kOmit) { + request.credentials_mode == network::mojom::CredentialsMode::kOmit || + request.url.IsAboutBlank()) { // Continue immediately without loading cookies. std::move(done_callback).Run(0, {}); return; @@ -174,7 +175,7 @@ void SaveCookies(content::BrowserContext* browser_context, CEF_REQUIRE_IOT(); if (request.credentials_mode == network::mojom::CredentialsMode::kOmit || - !head.headers || + request.url.IsAboutBlank() || !head.headers || !head.headers->HasHeader(net_service::kHTTPSetCookieHeaderName)) { // Continue immediately without saving cookies. std::move(done_callback).Run(0, {}); diff --git a/libcef/browser/net_service/proxy_url_loader_factory.cc b/libcef/browser/net_service/proxy_url_loader_factory.cc index c8ac1941c..a780c73ee 100644 --- a/libcef/browser/net_service/proxy_url_loader_factory.cc +++ b/libcef/browser/net_service/proxy_url_loader_factory.cc @@ -122,9 +122,9 @@ class InterceptedRequest : public network::mojom::URLLoader, uint32_t options, const network::ResourceRequest& request, const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, - network::mojom::URLLoaderRequest loader_request, - network::mojom::URLLoaderClientPtr client, - network::mojom::URLLoaderFactoryPtr target_factory); + mojo::PendingReceiver loader_receiver, + mojo::PendingRemote client, + mojo::PendingRemote target_factory); ~InterceptedRequest() override; // Restart the request. This happens on initial start and after redirect. @@ -312,15 +312,15 @@ InterceptedRequest::InterceptedRequest( uint32_t options, const network::ResourceRequest& request, const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, - network::mojom::URLLoaderRequest loader_request, - network::mojom::URLLoaderClientPtr client, - network::mojom::URLLoaderFactoryPtr target_factory) + mojo::PendingReceiver loader_receiver, + mojo::PendingRemote client, + mojo::PendingRemote target_factory) : factory_(factory), id_(id), options_(options), request_(request), traffic_annotation_(traffic_annotation), - proxied_loader_binding_(this, std::move(loader_request)), + proxied_loader_binding_(this, std::move(loader_receiver)), target_client_(std::move(client)), proxied_client_binding_(this), target_factory_(std::move(target_factory)), @@ -685,7 +685,7 @@ void InterceptedRequest::ContinueAfterIntercept() { uint32_t options = options_ | network::mojom::kURLLoadOptionUseHeaderClient; target_factory_->CreateLoaderAndStart( mojo::MakeRequest(&target_loader_), id_.routing_id(), id_.request_id(), - options, request_, std::move(proxied_client), traffic_annotation_); + options, request_, proxied_client.PassInterface(), traffic_annotation_); } } @@ -1117,13 +1117,13 @@ void ProxyURLLoaderFactory::CreateProxy( // static ProxyURLLoaderFactory* ProxyURLLoaderFactory::CreateProxy( content::WebContents::Getter web_contents_getter, - network::mojom::URLLoaderFactoryRequest loader_request, + mojo::PendingReceiver loader_receiver, std::unique_ptr request_handler) { CEF_REQUIRE_IOT(); DCHECK(request_handler); auto proxy = new ProxyURLLoaderFactory( - std::move(loader_request), nullptr, + std::move(loader_receiver), nullptr, mojo::PendingReceiver(), std::move(request_handler)); CEF_POST_TASK(CEF_UIT, @@ -1133,12 +1133,12 @@ ProxyURLLoaderFactory* ProxyURLLoaderFactory::CreateProxy( } void ProxyURLLoaderFactory::CreateLoaderAndStart( - network::mojom::URLLoaderRequest loader, + mojo::PendingReceiver receiver, int32_t routing_id, int32_t request_id, uint32_t options, const network::ResourceRequest& request, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote client, const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { CEF_REQUIRE_IOT(); if (!CONTEXT_STATE_VALID()) { @@ -1150,18 +1150,19 @@ void ProxyURLLoaderFactory::CreateLoaderAndStart( if (pass_through) { // This is the so-called pass-through, no-op option. target_factory_->CreateLoaderAndStart( - std::move(loader), routing_id, request_id, options, request, + std::move(receiver), routing_id, request_id, options, request, std::move(client), traffic_annotation); return; } - network::mojom::URLLoaderFactoryPtr target_factory_clone; + mojo::PendingRemote target_factory_clone; if (target_factory_) - target_factory_->Clone(MakeRequest(&target_factory_clone)); + target_factory_->Clone( + target_factory_clone.InitWithNewPipeAndPassReceiver()); InterceptedRequest* req = new InterceptedRequest( this, RequestId(request_id, routing_id), options, request, - traffic_annotation, std::move(loader), std::move(client), + traffic_annotation, std::move(receiver), std::move(client), std::move(target_factory_clone)); requests_.insert(std::make_pair(request_id, base::WrapUnique(req))); req->Restart(); diff --git a/libcef/browser/net_service/proxy_url_loader_factory.h b/libcef/browser/net_service/proxy_url_loader_factory.h index 265856292..b955de8f5 100644 --- a/libcef/browser/net_service/proxy_url_loader_factory.h +++ b/libcef/browser/net_service/proxy_url_loader_factory.h @@ -148,18 +148,19 @@ class ProxyURLLoaderFactory // Create a proxy object on the IO thread. static ProxyURLLoaderFactory* CreateProxy( content::WebContents::Getter web_contents_getter, - network::mojom::URLLoaderFactoryRequest loader_request, + mojo::PendingReceiver loader_request, std::unique_ptr request_handler); // mojom::URLLoaderFactory methods: - void CreateLoaderAndStart(network::mojom::URLLoaderRequest loader, - int32_t routing_id, - int32_t request_id, - uint32_t options, - const network::ResourceRequest& request, - network::mojom::URLLoaderClientPtr client, - const net::MutableNetworkTrafficAnnotationTag& - traffic_annotation) override; + void CreateLoaderAndStart( + mojo::PendingReceiver receiver, + int32_t routing_id, + int32_t request_id, + uint32_t options, + const network::ResourceRequest& request, + mojo::PendingRemote client, + const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) + override; void Clone( mojo::PendingReceiver factory) override; diff --git a/libcef/browser/net_service/stream_reader_url_loader.cc b/libcef/browser/net_service/stream_reader_url_loader.cc index 8a2694508..79b699e2e 100644 --- a/libcef/browser/net_service/stream_reader_url_loader.cc +++ b/libcef/browser/net_service/stream_reader_url_loader.cc @@ -668,7 +668,7 @@ void StreamReaderURLLoader::HeadersComplete(int orig_status_code, void StreamReaderURLLoader::ContinueWithResponseHeaders( int32_t result, const base::Optional& headers, - const GURL& redirect_url) { + const base::Optional& redirect_url) { if (result != net::OK) { RequestComplete(result); return; @@ -687,13 +687,13 @@ void StreamReaderURLLoader::ContinueWithResponseHeaders( DCHECK(client_.is_bound()); std::string location; - if (!redirect_url.is_empty() || - pending_response_.headers->IsRedirect(&location)) { + const auto has_redirect_url = redirect_url && !redirect_url->is_empty(); + if (has_redirect_url || pending_response_.headers->IsRedirect(&location)) { pending_response_.encoded_data_length = header_length_; pending_response_.content_length = pending_response_.encoded_body_length = 0; const GURL new_location = - redirect_url.is_empty() ? request_.url.Resolve(location) : redirect_url; + has_redirect_url ? *redirect_url : request_.url.Resolve(location); client_->OnReceiveRedirect( MakeRedirectInfo(request_, pending_response_.headers.get(), new_location, diff --git a/libcef/browser/net_service/stream_reader_url_loader.h b/libcef/browser/net_service/stream_reader_url_loader.h index 4b391975e..2192fc675 100644 --- a/libcef/browser/net_service/stream_reader_url_loader.h +++ b/libcef/browser/net_service/stream_reader_url_loader.h @@ -190,7 +190,7 @@ class StreamReaderURLLoader : public network::mojom::URLLoader { void HeadersComplete(int status_code, int64_t expected_content_length); void ContinueWithResponseHeaders(int32_t result, const base::Optional& headers, - const GURL& redirect_url); + const base::Optional& redirect_url); void SendBody(); void ReadMore(); diff --git a/libcef/browser/net_service/url_loader_factory_getter.cc b/libcef/browser/net_service/url_loader_factory_getter.cc index 346482219..122444758 100644 --- a/libcef/browser/net_service/url_loader_factory_getter.cc +++ b/libcef/browser/net_service/url_loader_factory_getter.cc @@ -62,8 +62,9 @@ scoped_refptr URLLoaderFactoryGetter::Create( should_proxy |= CefContentBrowserClient::Get()->WillCreateURLLoaderFactory( browser_context, render_frame_host, render_process_id, content::ContentBrowserClient::URLLoaderFactoryType::kDocumentSubResource, - url::Origin(), &maybe_proxy_factory_request, nullptr /* header_client */, - nullptr /* bypass_redirect_checks */); + url::Origin(), base::nullopt /* navigation_id */, + &maybe_proxy_factory_request, nullptr /* header_client */, + nullptr /* bypass_redirect_checks */, nullptr /* factory_override */); // If anyone above indicated that they care about proxying, pass the // intermediate pipe along to the URLLoaderFactoryGetter. @@ -107,7 +108,7 @@ URLLoaderFactoryGetter::GetURLLoaderFactory() { } URLLoaderFactoryGetter::URLLoaderFactoryGetter( - std::unique_ptr loader_factory_info, + std::unique_ptr loader_factory_info, network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info, network::mojom::URLLoaderFactoryRequest proxy_factory_request) : loader_factory_info_(std::move(loader_factory_info)), diff --git a/libcef/browser/net_service/url_loader_factory_getter.h b/libcef/browser/net_service/url_loader_factory_getter.h index 9511834f6..431515aa9 100644 --- a/libcef/browser/net_service/url_loader_factory_getter.h +++ b/libcef/browser/net_service/url_loader_factory_getter.h @@ -19,7 +19,7 @@ class RenderFrameHost; namespace network { class SharedURLLoaderFactory; -class SharedURLLoaderFactoryInfo; +class PendingSharedURLLoaderFactory; } // namespace network namespace net_service { @@ -49,14 +49,15 @@ class URLLoaderFactoryGetter friend struct URLLoaderFactoryGetterDeleter; URLLoaderFactoryGetter( - std::unique_ptr loader_factory_info, + std::unique_ptr + loader_factory_info, network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info, network::mojom::URLLoaderFactoryRequest proxy_factory_request); ~URLLoaderFactoryGetter(); void DeleteOnCorrectThread() const; - std::unique_ptr loader_factory_info_; + std::unique_ptr loader_factory_info_; scoped_refptr lazy_factory_; network::mojom::URLLoaderFactoryPtrInfo proxy_factory_ptr_info_; network::mojom::URLLoaderFactoryRequest proxy_factory_request_; diff --git a/libcef/browser/osr/host_display_client_osr.cc b/libcef/browser/osr/host_display_client_osr.cc index b003ff705..cc4321cac 100644 --- a/libcef/browser/osr/host_display_client_osr.cc +++ b/libcef/browser/osr/host_display_client_osr.cc @@ -9,7 +9,7 @@ #include "libcef/browser/browser_host_impl.h" #include "libcef/browser/osr/render_widget_host_view_osr.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "components/viz/common/resources/resource_format.h" #include "components/viz/common/resources/resource_sizes.h" #include "mojo/public/cpp/system/platform_handle.h" diff --git a/libcef/browser/osr/host_display_client_osr.h b/libcef/browser/osr/host_display_client_osr.h index 4b7bf41b6..7d724c6d8 100644 --- a/libcef/browser/osr/host_display_client_osr.h +++ b/libcef/browser/osr/host_display_client_osr.h @@ -8,7 +8,7 @@ #include #include "base/callback.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "components/viz/host/host_display_client.h" #include "ui/gfx/native_widget_types.h" diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index 5d9a38ea6..5dae32e03 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -29,7 +29,6 @@ #include "components/viz/common/switches.h" #include "content/browser/bad_message.h" #include "content/browser/compositor/image_transport_factory.h" -#include "content/browser/frame_host/render_widget_host_view_guest.h" #include "content/browser/gpu/gpu_data_manager_impl.h" #include "content/browser/renderer_host/cursor_manager.h" #include "content/browser/renderer_host/delegated_frame_host.h" @@ -157,8 +156,7 @@ CefRenderWidgetHostViewOSR::CefRenderWidgetHostViewOSR( bool use_shared_texture, bool use_external_begin_frame, content::RenderWidgetHost* widget, - CefRenderWidgetHostViewOSR* parent_host_view, - bool is_guest_view_hack) + CefRenderWidgetHostViewOSR* parent_host_view) : content::RenderWidgetHostViewBase(widget), background_color_(background_color), frame_rate_threshold_us_(0), @@ -200,8 +198,7 @@ CefRenderWidgetHostViewOSR::CefRenderWidgetHostViewOSR( // Matching the attributes from BrowserCompositorMac. delegated_frame_host_ = std::make_unique( - AllocateFrameSinkId(is_guest_view_hack), - delegated_frame_host_client_.get(), + AllocateFrameSinkId(), delegated_frame_host_client_.get(), false /* should_register_frame_sink_id */); root_layer_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR)); @@ -416,8 +413,6 @@ void CefRenderWidgetHostViewOSR::TakeFallbackContentFrom( content::RenderWidgetHostView* view) { DCHECK(!static_cast(view) ->IsRenderWidgetHostViewChildFrame()); - DCHECK(!static_cast(view) - ->IsRenderWidgetHostViewGuest()); CefRenderWidgetHostViewOSR* view_cef = static_cast(view); SetBackgroundColor(view_cef->background_color_); @@ -512,18 +507,6 @@ void CefRenderWidgetHostViewOSR::InitAsFullscreen( NOTREACHED() << "Fullscreen widgets are not supported in OSR"; } -// Called for the "platform view" created by WebContentsViewGuest and owned by -// RenderWidgetHostViewGuest. -void CefRenderWidgetHostViewOSR::InitAsGuest( - content::RenderWidgetHostView* parent_host_view, - content::RenderWidgetHostViewGuest* guest_view) { - DCHECK_EQ(parent_host_view_, parent_host_view); - DCHECK(browser_impl_); - - parent_host_view_->AddGuestHostView(this); - parent_host_view_->RegisterGuestViewFrameSwappedCallback(guest_view); -} - void CefRenderWidgetHostViewOSR::UpdateCursor( const content::WebCursor& cursor) { TRACE_EVENT0("cef", "CefRenderWidgetHostViewOSR::UpdateCursor"); @@ -1523,23 +1506,6 @@ void CefRenderWidgetHostViewOSR::RemoveGuestHostView( guest_host_views_.erase(guest_host); } -void CefRenderWidgetHostViewOSR::RegisterGuestViewFrameSwappedCallback( - content::RenderWidgetHostViewGuest* guest_host_view) { - guest_host_view->RegisterFrameSwappedCallback(base::BindOnce( - &CefRenderWidgetHostViewOSR::OnGuestViewFrameSwapped, - weak_ptr_factory_.GetWeakPtr(), base::Unretained(guest_host_view))); - guest_host_view->set_current_device_scale_factor( - current_device_scale_factor_); -} - -void CefRenderWidgetHostViewOSR::OnGuestViewFrameSwapped( - content::RenderWidgetHostViewGuest* guest_host_view) { - InvalidateInternal(gfx::ConvertRectToPixel(current_device_scale_factor_, - guest_host_view->GetViewBounds())); - - RegisterGuestViewFrameSwappedCallback(guest_host_view); -} - void CefRenderWidgetHostViewOSR::InvalidateInternal( const gfx::Rect& bounds_in_pixels) { if (video_consumer_) { @@ -1578,17 +1544,8 @@ void CefRenderWidgetHostViewOSR::ImeCompositionRangeChanged( } } -viz::FrameSinkId CefRenderWidgetHostViewOSR::AllocateFrameSinkId( - bool is_guest_view_hack) { - // GuestViews have two RenderWidgetHostViews and so we need to make sure - // we don't have FrameSinkId collisions. - // The FrameSinkId generated here must be unique with FrameSinkId allocated - // in ContextFactoryPrivate. - content::ImageTransportFactory* factory = - content::ImageTransportFactory::GetInstance(); - return is_guest_view_hack - ? factory->GetContextFactoryPrivate()->AllocateFrameSinkId() - : render_widget_host_->GetFrameSinkId(); +viz::FrameSinkId CefRenderWidgetHostViewOSR::AllocateFrameSinkId() { + return render_widget_host_->GetFrameSinkId(); } void CefRenderWidgetHostViewOSR::UpdateBackgroundColorFromRenderer( diff --git a/libcef/browser/osr/render_widget_host_view_osr.h b/libcef/browser/osr/render_widget_host_view_osr.h index 951d79d36..67e8874d6 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.h +++ b/libcef/browser/osr/render_widget_host_view_osr.h @@ -102,8 +102,7 @@ class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase, bool use_shared_texture, bool use_external_begin_frame, content::RenderWidgetHost* widget, - CefRenderWidgetHostViewOSR* parent_host_view, - bool is_guest_view_hack); + CefRenderWidgetHostViewOSR* parent_host_view); ~CefRenderWidgetHostViewOSR() override; // RenderWidgetHostView implementation. @@ -147,8 +146,6 @@ class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase, const gfx::Rect& pos) override; void InitAsFullscreen( content::RenderWidgetHostView* reference_host_view) override; - void InitAsGuest(content::RenderWidgetHostView* parent_host_view, - content::RenderWidgetHostViewGuest* guest_view) override; void UpdateCursor(const content::WebCursor& cursor) override; void SetIsLoading(bool is_loading) override; void RenderProcessGone() override; @@ -297,7 +294,7 @@ class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase, void RequestImeCompositionUpdate(bool start_monitoring); - viz::FrameSinkId AllocateFrameSinkId(bool is_guest_view_hack); + viz::FrameSinkId AllocateFrameSinkId(); void AddDamageRect(uint32_t sequence, const gfx::Rect& rect); diff --git a/libcef/browser/osr/software_output_device_proxy.cc b/libcef/browser/osr/software_output_device_proxy.cc index 5aa522f55..24487c8ef 100644 --- a/libcef/browser/osr/software_output_device_proxy.cc +++ b/libcef/browser/osr/software_output_device_proxy.cc @@ -4,7 +4,7 @@ #include "cef/libcef/browser/osr/software_output_device_proxy.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "base/trace_event/trace_event.h" #include "components/viz/common/resources/resource_sizes.h" #include "mojo/public/cpp/base/shared_memory_utils.h" diff --git a/libcef/browser/osr/video_consumer_osr.cc b/libcef/browser/osr/video_consumer_osr.cc index 2432272b2..857a524c3 100644 --- a/libcef/browser/osr/video_consumer_osr.cc +++ b/libcef/browser/osr/video_consumer_osr.cc @@ -47,7 +47,8 @@ void CefVideoConsumerOSR::OnFrameCaptured( base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) { + mojo::PendingRemote + callbacks) { const gfx::Size view_size = view_->SizeInPixels(); if (view_size != content_rect.size()) { video_capturer_->SetResolutionConstraints(view_size, view_size, true); @@ -55,18 +56,23 @@ void CefVideoConsumerOSR::OnFrameCaptured( return; } + mojo::Remote + callbacks_remote(std::move(callbacks)); + if (!data.IsValid()) { - callbacks->Done(); + callbacks_remote->Done(); return; } base::ReadOnlySharedMemoryMapping mapping = data.Map(); if (!mapping.IsValid()) { DLOG(ERROR) << "Shared memory mapping failed."; + callbacks_remote->Done(); return; } if (mapping.size() < media::VideoFrame::AllocationSize(info->pixel_format, info->coded_size)) { DLOG(ERROR) << "Shared memory size was less than expected."; + callbacks_remote->Done(); return; } @@ -85,6 +91,8 @@ void CefVideoConsumerOSR::OnFrameCaptured( } view_->OnPaint(damage_rect, info->coded_size, pixels); + + callbacks_remote->Done(); } void CefVideoConsumerOSR::OnStopped() {} diff --git a/libcef/browser/osr/video_consumer_osr.h b/libcef/browser/osr/video_consumer_osr.h index 643a27c99..479f75aed 100644 --- a/libcef/browser/osr/video_consumer_osr.h +++ b/libcef/browser/osr/video_consumer_osr.h @@ -4,6 +4,7 @@ #include "base/callback.h" #include "base/memory/weak_ptr.h" #include "components/viz/host/client_frame_sink_video_capturer.h" +#include "media/capture/mojom/video_capture_types.mojom.h" class CefRenderWidgetHostViewOSR; @@ -22,7 +23,8 @@ class CefVideoConsumerOSR : public viz::mojom::FrameSinkVideoConsumer { base::ReadOnlySharedMemoryRegion data, ::media::mojom::VideoFrameInfoPtr info, const gfx::Rect& content_rect, - viz::mojom::FrameSinkVideoConsumerFrameCallbacksPtr callbacks) override; + mojo::PendingRemote + callbacks) override; void OnStopped() override; CefRenderWidgetHostViewOSR* const view_; diff --git a/libcef/browser/osr/web_contents_view_osr.cc b/libcef/browser/osr/web_contents_view_osr.cc index 85dc70f11..16605869a 100644 --- a/libcef/browser/osr/web_contents_view_osr.cc +++ b/libcef/browser/osr/web_contents_view_osr.cc @@ -11,7 +11,6 @@ #include "content/browser/browser_plugin/browser_plugin_embedder.h" #include "content/browser/browser_plugin/browser_plugin_guest.h" -#include "content/browser/frame_host/render_widget_host_view_guest.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/browser/render_widget_host.h" @@ -99,23 +98,15 @@ gfx::Rect CefWebContentsViewOSR::GetViewBounds() const { void CefWebContentsViewOSR::CreateView(gfx::NativeView context) {} content::RenderWidgetHostViewBase* CefWebContentsViewOSR::CreateViewForWidget( - content::RenderWidgetHost* render_widget_host, - content::RenderWidgetHost* embedder_render_widget_host) { + content::RenderWidgetHost* render_widget_host) { if (render_widget_host->GetView()) { return static_cast( render_widget_host->GetView()); } - CefRenderWidgetHostViewOSR* embedder_host_view = nullptr; - if (embedder_render_widget_host) { - embedder_host_view = static_cast( - embedder_render_widget_host->GetView()); - } - - const bool is_guest_view_hack = !!embedder_render_widget_host; - return new CefRenderWidgetHostViewOSR( - background_color_, use_shared_texture_, use_external_begin_frame_, - render_widget_host, embedder_host_view, is_guest_view_hack); + return new CefRenderWidgetHostViewOSR(background_color_, use_shared_texture_, + use_external_begin_frame_, + render_widget_host, nullptr); } // Called for popup and fullscreen widgets. @@ -127,7 +118,7 @@ CefWebContentsViewOSR::CreateViewForChildWidget( return new CefRenderWidgetHostViewOSR(background_color_, use_shared_texture_, use_external_begin_frame_, - render_widget_host, view, false); + render_widget_host, view); } void CefWebContentsViewOSR::SetPageTitle(const base::string16& title) {} diff --git a/libcef/browser/osr/web_contents_view_osr.h b/libcef/browser/osr/web_contents_view_osr.h index 615f6e93d..d23cc3217 100644 --- a/libcef/browser/osr/web_contents_view_osr.h +++ b/libcef/browser/osr/web_contents_view_osr.h @@ -46,8 +46,7 @@ class CefWebContentsViewOSR : public content::WebContentsView, gfx::Rect GetViewBounds() const override; void CreateView(gfx::NativeView context) override; content::RenderWidgetHostViewBase* CreateViewForWidget( - content::RenderWidgetHost* render_widget_host, - content::RenderWidgetHost* embedder_render_widget_host) override; + content::RenderWidgetHost* render_widget_host) override; content::RenderWidgetHostViewBase* CreateViewForChildWidget( content::RenderWidgetHost* render_widget_host) override; void SetPageTitle(const base::string16& title) override; diff --git a/libcef/browser/prefs/browser_prefs.cc b/libcef/browser/prefs/browser_prefs.cc index 3f17159bb..69ca19197 100644 --- a/libcef/browser/prefs/browser_prefs.cc +++ b/libcef/browser/prefs/browser_prefs.cc @@ -23,10 +23,10 @@ #include "chrome/browser/net/system_network_context_manager.h" #include "chrome/browser/plugins/plugin_info_host_impl.h" #include "chrome/browser/prefs/chrome_command_line_pref_store.h" +#include "chrome/browser/printing/print_preview_sticky_settings.h" #include "chrome/browser/renderer_host/pepper/device_id_fetcher.h" #include "chrome/browser/ssl/ssl_config_service_manager.h" #include "chrome/browser/themes/theme_service.h" -#include "chrome/browser/ui/webui/print_preview/sticky_settings.h" #include "chrome/common/buildflags.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/net/safe_search_util.h" @@ -56,7 +56,7 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/ui_base_switches.h" -#if defined(OS_MACOSX) +#if defined(OS_MACOSX) || defined(OS_WIN) #include "components/os_crypt/os_crypt.h" #endif @@ -185,7 +185,7 @@ std::unique_ptr CreatePrefService(Profile* profile, if (!profile) { SystemNetworkContextManager::RegisterPrefs(registry.get()); -#if defined(OS_MACOSX) +#if defined(OS_MACOSX) || defined(OS_WIN) OSCrypt::RegisterLocalPrefs(registry.get()); #endif } @@ -244,7 +244,7 @@ std::unique_ptr CreatePrefService(Profile* profile, registry->RegisterStringPref( prefs::kPrintPreviewDefaultDestinationSelectionRules, std::string()); registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, false); - printing::StickySettings::RegisterProfilePrefs(registry.get()); + printing::PrintPreviewStickySettings::RegisterProfilePrefs(registry.get()); DownloadPrefs::RegisterProfilePrefs(registry.get()); // Cache preferences. @@ -284,6 +284,7 @@ std::unique_ptr CreatePrefService(Profile* profile, registry->SetDefaultPrefValue(language::prefs::kAcceptLanguages, base::Value(accept_language_list)); } + registry->RegisterListPref(prefs::kWebRtcLocalIpsAllowedUrls); } // Build the PrefService that manages the PrefRegistry and PrefStores. diff --git a/libcef/browser/printing/print_view_manager.cc b/libcef/browser/printing/print_view_manager.cc index 3726b1e1c..c43ec8f81 100644 --- a/libcef/browser/printing/print_view_manager.cc +++ b/libcef/browser/printing/print_view_manager.cc @@ -209,7 +209,7 @@ bool CefPrintViewManager::PrintToPDF(content::RenderFrameHost* rfh, print_render_frame_remote; rfh->GetRemoteAssociatedInterfaces()->GetInterface( &print_render_frame_remote); - print_render_frame_remote->InitiatePrintPreview(nullptr, + print_render_frame_remote->InitiatePrintPreview({}, !!settings.selection_only); return true; diff --git a/libcef/browser/request_context_impl.cc b/libcef/browser/request_context_impl.cc index 15abee3fa..37edf5a63 100644 --- a/libcef/browser/request_context_impl.cc +++ b/libcef/browser/request_context_impl.cc @@ -95,18 +95,20 @@ class ResolveHostHelper : public network::ResolveHostClientBase { browser_context->GetNetworkContext()->CreateHostResolver( base::nullopt, host_resolver_.BindNewPipeAndPassReceiver()); - host_resolver_.set_disconnect_handler( - base::BindOnce(&ResolveHostHelper::OnComplete, base::Unretained(this), - net::ERR_FAILED, base::nullopt)); + host_resolver_.set_disconnect_handler(base::BindOnce( + &ResolveHostHelper::OnComplete, base::Unretained(this), net::ERR_FAILED, + net::ResolveErrorInfo(net::ERR_FAILED), base::nullopt)); host_resolver_->ResolveHost( - net::HostPortPair::FromURL(GURL(origin.ToString())), nullptr, + net::HostPortPair::FromURL(GURL(origin.ToString())), + net::NetworkIsolationKey::Todo(), nullptr, receiver_.BindNewPipeAndPassRemote()); } private: void OnComplete( - int result, + int32_t result, + const ::net::ResolveErrorInfo& resolve_error_info, const base::Optional& resolved_addresses) override { CEF_REQUIRE_UIT(); diff --git a/libcef/browser/resource_context.cc b/libcef/browser/resource_context.cc index 77d7da5a2..8d1b7c6ea 100644 --- a/libcef/browser/resource_context.cc +++ b/libcef/browser/resource_context.cc @@ -15,18 +15,6 @@ #include "content/browser/resource_context_impl.h" #include "content/public/browser/browser_thread.h" -#if defined(USE_NSS_CERTS) -#include "net/ssl/client_cert_store_nss.h" -#endif - -#if defined(OS_WIN) -#include "net/ssl/client_cert_store_win.h" -#endif - -#if defined(OS_MACOSX) -#include "net/ssl/client_cert_store_mac.h" -#endif - CefResourceContext::CefResourceContext(bool is_off_the_record) : is_off_the_record_(is_off_the_record) { // Using base::Unretained() is safe because both this callback and possible @@ -38,25 +26,6 @@ CefResourceContext::CefResourceContext(bool is_off_the_record) CefResourceContext::~CefResourceContext() {} -std::unique_ptr -CefResourceContext::CreateClientCertStore() { -#if defined(USE_NSS_CERTS) - return std::unique_ptr(new net::ClientCertStoreNSS( - net::ClientCertStoreNSS::PasswordDelegateFactory())); -#elif defined(OS_WIN) - return std::unique_ptr(new net::ClientCertStoreWin()); -#elif defined(OS_MACOSX) - return std::unique_ptr(new net::ClientCertStoreMac()); -#elif defined(USE_OPENSSL) - // OpenSSL does not use the ClientCertStore infrastructure. On Android client - // cert matching is done by the OS as part of the call to show the cert - // selection dialog. - return std::unique_ptr(); -#else -#error Unknown platform. -#endif -} - void CefResourceContext::AddHandler( int render_process_id, int render_frame_id, diff --git a/libcef/browser/resource_context.h b/libcef/browser/resource_context.h index 758d6393e..e00e3b2b6 100644 --- a/libcef/browser/resource_context.h +++ b/libcef/browser/resource_context.h @@ -13,7 +13,6 @@ #include "libcef/browser/request_context_handler_map.h" #include "content/public/browser/resource_context.h" -#include "net/ssl/client_cert_store.h" class GURL; @@ -28,8 +27,6 @@ class CefResourceContext : public content::ResourceContext { explicit CefResourceContext(bool is_off_the_record); ~CefResourceContext() override; - std::unique_ptr CreateClientCertStore(); - // See comments in CefRequestContextHandlerMap. void AddHandler(int render_process_id, int render_frame_id, diff --git a/libcef/browser/ssl_host_state_delegate.cc b/libcef/browser/ssl_host_state_delegate.cc index 95ca2ba42..8b565aded 100644 --- a/libcef/browser/ssl_host_state_delegate.cc +++ b/libcef/browser/ssl_host_state_delegate.cc @@ -62,7 +62,7 @@ void CefSSLHostStateDelegate::AllowCert(const std::string& host, } void CefSSLHostStateDelegate::Clear( - const base::Callback& host_filter) { + const base::RepeatingCallback host_filter) { if (host_filter.is_null()) { cert_policy_for_host_.clear(); return; diff --git a/libcef/browser/ssl_host_state_delegate.h b/libcef/browser/ssl_host_state_delegate.h index 1af7477aa..e1aed3b61 100644 --- a/libcef/browser/ssl_host_state_delegate.h +++ b/libcef/browser/ssl_host_state_delegate.h @@ -50,8 +50,8 @@ class CefSSLHostStateDelegate : public content::SSLHostStateDelegate { void AllowCert(const std::string& host, const net::X509Certificate& cert, int error) override; - void Clear( - const base::Callback& host_filter) override; + void Clear(const base::RepeatingCallback + host_filter) override; content::SSLHostStateDelegate::CertJudgment QueryPolicy( const std::string& host, const net::X509Certificate& cert, diff --git a/libcef/browser/views/menu_button_view.cc b/libcef/browser/views/menu_button_view.cc index d6285a3a3..aac7ab62b 100644 --- a/libcef/browser/views/menu_button_view.cc +++ b/libcef/browser/views/menu_button_view.cc @@ -51,10 +51,10 @@ void CefMenuButtonView::SetDrawStringsFlags(int flags) { label()->SetDrawStringsFlags(flags); } -void CefMenuButtonView::OnMenuButtonClicked(views::Button* source, - const gfx::Point& point, - const ui::Event* event) { +void CefMenuButtonView::ButtonPressed(views::Button* source, + const ui::Event& event) { + auto position = source->GetMenuPosition(); cef_delegate()->OnMenuButtonPressed( - GetCefMenuButton(), CefPoint(point.x(), point.y()), + GetCefMenuButton(), CefPoint(position.x(), position.y()), new ButtonPressedLock(static_cast(source))); } diff --git a/libcef/browser/views/menu_button_view.h b/libcef/browser/views/menu_button_view.h index 78f2766e8..bd66e7e5d 100644 --- a/libcef/browser/views/menu_button_view.h +++ b/libcef/browser/views/menu_button_view.h @@ -12,14 +12,11 @@ #include "libcef/browser/views/label_button_view.h" #include "ui/views/controls/button/menu_button.h" -#include "ui/views/controls/button/menu_button_listener.h" // Extend views::LabelButton with a no-argument constructor as required by the // CefViewView template and extend views::ButtonListener as required by the // CefButtonView template. -class MenuButtonEx : public views::MenuButton, - public views::ButtonListener, - public views::MenuButtonListener { +class MenuButtonEx : public views::MenuButton, public views::ButtonListener { public: MenuButtonEx() : views::MenuButton(base::string16(), this) { // TODO(cef): MenuButton should not use ButtonListener. See @@ -45,10 +42,8 @@ class CefMenuButtonView // Set the flags that control display of accelerator characters. void SetDrawStringsFlags(int flags); - // views::MenuButtonListener methods: - void OnMenuButtonClicked(views::Button* source, - const gfx::Point& point, - const ui::Event* event) override; + // views::ButtonListener methods: + void ButtonPressed(views::Button* source, const ui::Event& event) override; private: DISALLOW_COPY_AND_ASSIGN(CefMenuButtonView); diff --git a/libcef/common/cef_messages.h b/libcef/common/cef_messages.h index aefdaf601..2cfa01bf4 100644 --- a/libcef/common/cef_messages.h +++ b/libcef/common/cef_messages.h @@ -10,7 +10,7 @@ #include "libcef/common/net/upload_data.h" -#include "base/memory/shared_memory.h" +#include "base/memory/shared_memory_mapping.h" #include "base/values.h" #include "content/public/common/common_param_traits.h" #include "content/public/common/referrer.h" @@ -188,9 +188,6 @@ IPC_SYNC_MESSAGE_CONTROL1_1( // Sent by the renderer when the frame can begin receiving messages. IPC_MESSAGE_ROUTED0(CefHostMsg_FrameAttached) -// Sent by the renderer when the frame becomes focused. -IPC_MESSAGE_ROUTED0(CefHostMsg_FrameFocused) - // Sent when a frame has finished loading. Based on ViewHostMsg_DidFinishLoad. IPC_MESSAGE_ROUTED2(CefHostMsg_DidFinishLoad, GURL /* validated_url */, diff --git a/libcef/common/service_manifests/cef_content_browser_overlay_manifest.cc b/libcef/common/service_manifests/cef_content_browser_overlay_manifest.cc index 0267f04b7..c254c763b 100644 --- a/libcef/common/service_manifests/cef_content_browser_overlay_manifest.cc +++ b/libcef/common/service_manifests/cef_content_browser_overlay_manifest.cc @@ -9,8 +9,6 @@ #include "build/build_config.h" #include "components/metrics/public/mojom/call_stack_profile_collector.mojom.h" #include "extensions/buildflags/buildflags.h" -#include "extensions/common/api/mime_handler.mojom.h" // nogncheck -#include "extensions/common/mojom/keep_alive.mojom.h" // nogncheck #include "services/service_manager/public/cpp/manifest_builder.h" #if defined(OS_WIN) @@ -30,12 +28,6 @@ const service_manager::Manifest& GetCefContentBrowserOverlayManifest() { #endif metrics::mojom::CallStackProfileCollector>()) .RequireCapability("chrome_printing", "converter") - .ExposeInterfaceFilterCapability_Deprecated( - "navigation:frame", "renderer", - service_manager::Manifest::InterfaceList< - extensions::KeepAlive, - extensions::mime_handler::BeforeUnloadControl, - extensions::mime_handler::MimeHandlerService>()) .Build() }; return *manifest; diff --git a/libcef/common/service_manifests/cef_content_renderer_overlay_manifest.cc b/libcef/common/service_manifests/cef_content_renderer_overlay_manifest.cc deleted file mode 100644 index 405ac89ac..000000000 --- a/libcef/common/service_manifests/cef_content_renderer_overlay_manifest.cc +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "libcef/common/service_manifests/cef_content_renderer_overlay_manifest.h" - -#include "base/no_destructor.h" -#include "build/build_config.h" -#include "components/subresource_filter/content/mojom/subresource_filter_agent.mojom.h" -#include "extensions/buildflags/buildflags.h" -#include "services/service_manager/public/cpp/manifest_builder.h" - -#if defined(OS_MACOSX) -#include "components/spellcheck/common/spellcheck_panel.mojom.h" -#endif - -const service_manager::Manifest& GetCefContentRendererOverlayManifest() { - static base::NoDestructor manifest { - service_manager::ManifestBuilder() -#if defined(OS_MACOSX) - .ExposeInterfaceFilterCapability_Deprecated( - "navigation:frame", "browser", - service_manager::Manifest::InterfaceList< - spellcheck::mojom::SpellCheckPanel>()) -#endif - .Build() - }; - return *manifest; -} diff --git a/libcef/common/service_manifests/cef_content_renderer_overlay_manifest.h b/libcef/common/service_manifests/cef_content_renderer_overlay_manifest.h deleted file mode 100644 index 4906d7555..000000000 --- a/libcef/common/service_manifests/cef_content_renderer_overlay_manifest.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CEF_LIBCEF_COMMON_SERVICE_MANIFESTS_CEF_CONTENT_RENDERER_OVERLAY_MANIFEST_H_ -#define CEF_LIBCEF_COMMON_SERVICE_MANIFESTS_CEF_CONTENT_RENDERER_OVERLAY_MANIFEST_H_ - -#include "services/service_manager/public/cpp/manifest.h" - -// Returns the Manifest CEF amends to Content's content_renderer service -// manifest. This allows CEF to extend the set of capabilities exposed and/or -// required by content_renderer service instances. -const service_manager::Manifest& GetCefContentRendererOverlayManifest(); - -#endif // CEF_LIBCEF_COMMON_SERVICE_MANIFESTS_CEF_CONTENT_RENDERER_OVERLAY_MANIFEST_H_ diff --git a/libcef/common/widevine_loader.cc b/libcef/common/widevine_loader.cc index 0066c1459..c4dd57ef1 100644 --- a/libcef/common/widevine_loader.cc +++ b/libcef/common/widevine_loader.cc @@ -251,7 +251,7 @@ bool GetCodecs(const base::DictionaryValue& manifest, // fail. Unrecognized values will be reported but otherwise ignored. bool GetEncryptionSchemes( const base::DictionaryValue& manifest, - base::flat_set* encryption_schemes, + base::flat_set* encryption_schemes, std::string* error_message) { DCHECK(encryption_schemes); @@ -260,7 +260,7 @@ bool GetEncryptionSchemes( if (!value) { // No manifest entry found, so assume only 'cenc' supported for backwards // compatibility. - encryption_schemes->insert(media::EncryptionMode::kCenc); + encryption_schemes->insert(media::EncryptionScheme::kCenc); return true; } @@ -273,7 +273,7 @@ bool GetEncryptionSchemes( } const base::span list = value->GetList(); - base::flat_set result; + base::flat_set result; for (const auto& item : list) { if (!item.is_string()) { std::stringstream ss; @@ -285,9 +285,9 @@ bool GetEncryptionSchemes( const std::string& scheme = item.GetString(); if (scheme == kCdmSupportedEncryptionSchemeCenc) { - result.insert(media::EncryptionMode::kCenc); + result.insert(media::EncryptionScheme::kCenc); } else if (scheme == kCdmSupportedEncryptionSchemeCbcs) { - result.insert(media::EncryptionMode::kCbcs); + result.insert(media::EncryptionScheme::kCbcs); } else { std::stringstream ss; ss << "Unrecognized encryption scheme " << scheme << " in manifest entry " diff --git a/libcef/renderer/content_renderer_client.cc b/libcef/renderer/content_renderer_client.cc index 7094573da..c38507b8f 100644 --- a/libcef/renderer/content_renderer_client.cc +++ b/libcef/renderer/content_renderer_client.cc @@ -34,7 +34,6 @@ #include "libcef/renderer/extensions/extensions_renderer_client.h" #include "libcef/renderer/extensions/print_render_frame_helper_delegate.h" #include "libcef/renderer/render_frame_observer.h" -#include "libcef/renderer/render_message_filter.h" #include "libcef/renderer/render_thread_observer.h" #include "libcef/renderer/thread_util.h" #include "libcef/renderer/url_loader_throttle_provider_impl.h" @@ -52,6 +51,7 @@ #include "build/build_config.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/url_constants.h" +#include "chrome/renderer/browser_exposed_renderer_interfaces.h" #include "chrome/renderer/chrome_content_renderer_client.h" #include "chrome/renderer/extensions/chrome_extensions_renderer_client.h" #include "chrome/renderer/loadtimes_extension_bindings.h" @@ -65,7 +65,7 @@ #include "components/spellcheck/renderer/spellcheck.h" #include "components/spellcheck/renderer/spellcheck_provider.h" #include "components/startup_metric_utils/common/startup_metric.mojom.h" -#include "components/visitedlink/renderer/visitedlink_slave.h" +#include "components/visitedlink/renderer/visitedlink_reader.h" #include "components/web_cache/renderer/web_cache_impl.h" #include "content/common/frame_messages.h" #include "content/public/browser/browser_task_traits.h" @@ -75,7 +75,7 @@ #include "content/public/common/content_constants.h" #include "content/public/common/content_paths.h" #include "content/public/common/content_switches.h" -#include "content/public/common/mime_handler_view_mode.h" +#include "content/public/common/url_constants.h" #include "content/public/renderer/plugin_instance_throttler.h" #include "content/public/renderer/render_view.h" #include "content/public/renderer/render_view_visitor.h" @@ -85,6 +85,7 @@ #include "extensions/renderer/renderer_extension_registry.h" #include "ipc/ipc_sync_channel.h" #include "media/base/media.h" +#include "mojo/public/cpp/bindings/binder_map.h" #include "mojo/public/cpp/bindings/generic_pending_receiver.h" #include "printing/print_settings.h" #include "services/network/public/cpp/is_potentially_trustworthy.h" @@ -381,8 +382,9 @@ void CefContentRendererClient::RenderThreadStarted() { base::CommandLine::ForCurrentProcess(); render_task_runner_ = base::ThreadTaskRunnerHandle::Get(); - observer_.reset(new CefRenderThreadObserver()); - web_cache_impl_.reset(new web_cache::WebCacheImpl()); + observer_ = std::make_unique(); + web_cache_impl_ = std::make_unique(); + visited_link_slave_ = std::make_unique(); content::RenderThread* thread = content::RenderThread::Get(); @@ -399,10 +401,9 @@ void CefContentRendererClient::RenderThreadStarted() { } thread->AddObserver(observer_.get()); - thread->GetChannel()->AddFilter(new CefRenderMessageFilter); if (!command_line->HasSwitch(switches::kDisableSpellChecking)) { - spellcheck_ = std::make_unique(®istry_, this); + spellcheck_ = std::make_unique(this); } if (content::RenderProcessHost::run_renderer_in_process()) { @@ -445,6 +446,27 @@ void CefContentRendererClient::RenderThreadStarted() { extensions_renderer_client_->RenderThreadStarted(); } +void CefContentRendererClient::ExposeInterfacesToBrowser( + mojo::BinderMap* binders) { + auto task_runner = base::SequencedTaskRunnerHandle::Get(); + + binders->Add(base::BindRepeating(&web_cache::WebCacheImpl::BindReceiver, + base::Unretained(web_cache_impl_.get())), + task_runner); + + binders->Add(visited_link_slave_->GetBindCallback(), task_runner); + + if (spellcheck_) { + binders->Add( + base::BindRepeating( + [](SpellCheck* spellcheck, + mojo::PendingReceiver + receiver) { spellcheck->BindReceiver(std::move(receiver)); }, + base::Unretained(spellcheck_.get())), + task_runner); + } +} + void CefContentRendererClient::RenderThreadConnected() { content::RenderThread* thread = content::RenderThread::Get(); @@ -533,8 +555,6 @@ bool CefContentRendererClient::IsPluginHandledExternally( DCHECK(plugin_element.HasHTMLTagName("object") || plugin_element.HasHTMLTagName("embed")); - if (!content::MimeHandlerViewMode::UsesCrossProcessFrame()) - return false; // Blink will next try to load a WebPlugin which would end up in // OverrideCreatePlugin, sending another IPC only to find out the plugin is // not supported. Here it suffices to return false but there should perhaps be @@ -589,13 +609,14 @@ void CefContentRendererClient::WillSendRequest( blink::WebLocalFrame* frame, ui::PageTransition transition_type, const blink::WebURL& url, + const blink::WebURL& site_for_cookies, const url::Origin* initiator_origin, GURL* new_url, bool* attach_same_site_cookies) { if (extensions::ExtensionsEnabled()) { - extensions_renderer_client_->WillSendRequest(frame, transition_type, url, - initiator_origin, new_url, - attach_same_site_cookies); + extensions_renderer_client_->WillSendRequest( + frame, transition_type, url, site_for_cookies, initiator_origin, + new_url, attach_same_site_cookies); if (!new_url->is_empty()) return; } @@ -603,12 +624,11 @@ void CefContentRendererClient::WillSendRequest( uint64_t CefContentRendererClient::VisitedLinkHash(const char* canonical_url, size_t length) { - return observer_->visited_link_slave()->ComputeURLFingerprint(canonical_url, - length); + return visited_link_slave_->ComputeURLFingerprint(canonical_url, length); } bool CefContentRendererClient::IsLinkVisited(uint64_t link_hash) { - return observer_->visited_link_slave()->IsVisited(link_hash); + return visited_link_slave_->IsVisited(link_hash); } bool CefContentRendererClient::IsOriginIsolatedPepperPlugin( @@ -688,13 +708,11 @@ CefContentRendererClient::CreateURLLoaderThrottleProvider( return std::make_unique(provider_type); } -void CefContentRendererClient::BindReceiverOnMainThread( - mojo::GenericPendingReceiver receiver) { - // TODO(crbug.com/977637): Get rid of the use of BinderRegistry here. This is - // only used to bind a spellcheck interface. - std::string interface_name = *receiver.interface_name(); - auto pipe = receiver.PassPipe(); - registry_.TryBindInterface(interface_name, &pipe); +bool CefContentRendererClient::RequiresWebComponentsV0(const GURL& url) { + // TODO(1025782): For now, file:// URLs are allowed to access Web Components + // v0 features. This will be removed once origin trials support file:// URLs + // for this purpose. + return url.SchemeIs(content::kChromeUIScheme) || url.SchemeIs("file"); } void CefContentRendererClient::GetInterface( diff --git a/libcef/renderer/content_renderer_client.h b/libcef/renderer/content_renderer_client.h index e4e9b7b22..f237eeb17 100644 --- a/libcef/renderer/content_renderer_client.h +++ b/libcef/renderer/content_renderer_client.h @@ -23,7 +23,6 @@ #include "content/public/renderer/content_renderer_client.h" #include "content/public/renderer/render_thread.h" #include "mojo/public/cpp/bindings/generic_pending_receiver.h" -#include "services/service_manager/public/cpp/binder_registry.h" #include "services/service_manager/public/cpp/local_interface_provider.h" namespace blink { @@ -40,6 +39,10 @@ class ExtensionsRendererClient; class ResourceRequestPolicy; } // namespace extensions +namespace visitedlink { +class VisitedLinkReader; +} + namespace web_cache { class WebCacheImpl; } @@ -101,6 +104,7 @@ class CefContentRendererClient // ContentRendererClient implementation. void RenderThreadStarted() override; + void ExposeInterfacesToBrowser(mojo::BinderMap* binders) override; void RenderThreadConnected() override; void RenderFrameCreated(content::RenderFrame* render_frame) override; void RenderViewCreated(content::RenderView* render_view) override; @@ -114,6 +118,7 @@ class CefContentRendererClient void WillSendRequest(blink::WebLocalFrame* frame, ui::PageTransition transition_type, const blink::WebURL& url, + const blink::WebURL& site_for_cookies, const url::Origin* initiator_origin, GURL* new_url, bool* attach_same_site_cookies) override; @@ -136,7 +141,7 @@ class CefContentRendererClient std::unique_ptr CreateURLLoaderThrottleProvider( content::URLLoaderThrottleProviderType provider_type) override; - void BindReceiverOnMainThread(mojo::GenericPendingReceiver receiver) override; + bool RequiresWebComponentsV0(const GURL& url) override; // service_manager::LocalInterfaceProvider implementation. void GetInterface(const std::string& name, @@ -164,6 +169,7 @@ class CefContentRendererClient std::unique_ptr observer_; std::unique_ptr web_cache_impl_; std::unique_ptr spellcheck_; + std::unique_ptr visited_link_slave_; std::unique_ptr default_url_loader_factory_; @@ -194,8 +200,6 @@ class CefContentRendererClient bool single_process_cleanup_complete_; base::Lock single_process_cleanup_lock_; - service_manager::BinderRegistry registry_; - DISALLOW_COPY_AND_ASSIGN(CefContentRendererClient); }; diff --git a/libcef/renderer/extensions/extensions_renderer_client.cc b/libcef/renderer/extensions/extensions_renderer_client.cc index 387e3100a..1016c8991 100644 --- a/libcef/renderer/extensions/extensions_renderer_client.cc +++ b/libcef/renderer/extensions/extensions_renderer_client.cc @@ -122,6 +122,7 @@ void CefExtensionsRendererClient::WillSendRequest( blink::WebLocalFrame* frame, ui::PageTransition transition_type, const blink::WebURL& url, + const blink::WebURL& site_for_cookies, const url::Origin* initiator_origin, GURL* new_url, bool* attach_same_site_cookies) { diff --git a/libcef/renderer/extensions/extensions_renderer_client.h b/libcef/renderer/extensions/extensions_renderer_client.h index 520f46f95..fc2bd4190 100644 --- a/libcef/renderer/extensions/extensions_renderer_client.h +++ b/libcef/renderer/extensions/extensions_renderer_client.h @@ -64,6 +64,7 @@ class CefExtensionsRendererClient : public ExtensionsRendererClient { void WillSendRequest(blink::WebLocalFrame* frame, ui::PageTransition transition_type, const blink::WebURL& url, + const blink::WebURL& site_for_cookies, const url::Origin* initiator_origin, GURL* new_url, bool* attach_same_site_cookies); diff --git a/libcef/renderer/frame_impl.cc b/libcef/renderer/frame_impl.cc index 229ff1f82..cb74a72cc 100644 --- a/libcef/renderer/frame_impl.cc +++ b/libcef/renderer/frame_impl.cc @@ -337,10 +337,6 @@ void CefFrameImpl::OnDidFinishLoad() { } } -void CefFrameImpl::OnFocused() { - Send(new CefHostMsg_FrameFocused(MSG_ROUTING_NONE)); -} - void CefFrameImpl::OnDraggableRegionsChanged() { blink::WebVector webregions = frame_->GetDocument().DraggableRegions(); diff --git a/libcef/renderer/frame_impl.h b/libcef/renderer/frame_impl.h index 2757bb375..3859beb6e 100644 --- a/libcef/renderer/frame_impl.h +++ b/libcef/renderer/frame_impl.h @@ -80,7 +80,6 @@ class CefFrameImpl : public CefFrame { void OnAttached(); bool OnMessageReceived(const IPC::Message& message); void OnDidFinishLoad(); - void OnFocused(); void OnDraggableRegionsChanged(); void OnDetached(); diff --git a/libcef/renderer/render_frame_observer.cc b/libcef/renderer/render_frame_observer.cc index c58462807..f3bf062b1 100644 --- a/libcef/renderer/render_frame_observer.cc +++ b/libcef/renderer/render_frame_observer.cc @@ -84,12 +84,6 @@ void CefRenderFrameObserver::FrameDetached() { } } -void CefRenderFrameObserver::FrameFocused() { - if (frame_) { - frame_->OnFocused(); - } -} - void CefRenderFrameObserver::FocusedElementChanged( const blink::WebElement& element) { if (!frame_) diff --git a/libcef/renderer/render_frame_observer.h b/libcef/renderer/render_frame_observer.h index f6b2559d8..d395e4bba 100644 --- a/libcef/renderer/render_frame_observer.h +++ b/libcef/renderer/render_frame_observer.h @@ -33,7 +33,6 @@ class CefRenderFrameObserver : public content::RenderFrameObserver { void DidFailProvisionalLoad() override; void DidFinishLoad() override; void FrameDetached() override; - void FrameFocused() override; void FocusedElementChanged(const blink::WebElement& element) override; void DraggableRegionsChanged() override; void DidCreateScriptContext(v8::Handle context, diff --git a/libcef/renderer/render_message_filter.cc b/libcef/renderer/render_message_filter.cc deleted file mode 100644 index e8f531be0..000000000 --- a/libcef/renderer/render_message_filter.cc +++ /dev/null @@ -1,75 +0,0 @@ -/// Copyright (c) 2012 The Chromium Embedded Framework Authors. -// Portions (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "libcef/renderer/render_message_filter.h" - -#include "libcef/common/cef_messages.h" -#include "libcef/renderer/thread_util.h" - -#include "base/bind.h" -#include "base/message_loop/message_loop.h" -#include "base/task/post_task.h" -#include "chrome/common/render_messages.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" -#include "third_party/blink/public/platform/web_string.h" -#include "third_party/blink/public/web/web_security_policy.h" -#include "url/gurl.h" -#include "url/url_util.h" - -using content::BrowserThread; - -CefRenderMessageFilter::CefRenderMessageFilter() : channel_(nullptr) {} - -CefRenderMessageFilter::~CefRenderMessageFilter() {} - -void CefRenderMessageFilter::OnFilterAdded(IPC::Channel* channel) { - channel_ = channel; -} - -void CefRenderMessageFilter::OnFilterRemoved() { - channel_ = nullptr; -} - -bool CefRenderMessageFilter::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(CefRenderMessageFilter, message) - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_IsCrashReportingEnabled, - OnIsCrashReportingEnabled) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -// Based on BrowserMessageFilter::Send. -bool CefRenderMessageFilter::Send(IPC::Message* message) { - if (message->is_sync()) { - // We don't support sending synchronous messages from the browser. If we - // really needed it, we can make this class derive from SyncMessageFilter - // but it seems better to not allow sending synchronous messages from the - // browser, since it might allow a corrupt/malicious renderer to hang us. - NOTREACHED() << "Can't send sync message through CefRenderMessageFilter!"; - return false; - } - - if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { - base::PostTask(FROM_HERE, {content::BrowserThread::IO}, - base::Bind(base::IgnoreResult(&CefRenderMessageFilter::Send), - this, message)); - return true; - } - - if (channel_) - return channel_->Send(message); - - delete message; - return false; -} - -void CefRenderMessageFilter::OnIsCrashReportingEnabled(bool* enabled) { - // TODO(cef): Explore whether it's useful for CEF clients to report when crash - // reporting is enabled. - *enabled = false; -} diff --git a/libcef/renderer/render_message_filter.h b/libcef/renderer/render_message_filter.h deleted file mode 100644 index db9a8cb7d..000000000 --- a/libcef/renderer/render_message_filter.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) 2012 The Chromium Embedded Framework Authors. -// Portions copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CEF_LIBCEF_RENDERER_RENDER_MESSAGE_FILTER_H_ -#define CEF_LIBCEF_RENDERER_RENDER_MESSAGE_FILTER_H_ - -#include - -#include - -#include "ipc/ipc_channel_proxy.h" -#include "ipc/message_filter.h" - -// This class sends and receives control messages on the renderer process. -class CefRenderMessageFilter : public IPC::MessageFilter { - public: - CefRenderMessageFilter(); - ~CefRenderMessageFilter() override; - - // IPC::ChannelProxy::MessageFilter implementation. - void OnFilterAdded(IPC::Channel* channel) override; - void OnFilterRemoved() override; - bool OnMessageReceived(const IPC::Message& message) override; - - bool Send(IPC::Message* message); - - private: - // Message handlers called on the IO thread. - void OnIsCrashReportingEnabled(bool* enabled); - - IPC::Channel* channel_; - - DISALLOW_COPY_AND_ASSIGN(CefRenderMessageFilter); -}; - -#endif // CEF_LIBCEF_RENDERER_RENDER_MESSAGE_FILTER_H_ diff --git a/libcef/renderer/render_thread_observer.cc b/libcef/renderer/render_thread_observer.cc index 59f107a0f..aa743fc65 100644 --- a/libcef/renderer/render_thread_observer.cc +++ b/libcef/renderer/render_thread_observer.cc @@ -10,14 +10,11 @@ #include "libcef/renderer/blink_glue.h" #include "libcef/renderer/content_renderer_client.h" -#include "components/visitedlink/renderer/visitedlink_slave.h" +#include "components/visitedlink/renderer/visitedlink_reader.h" #include "content/public/child/child_thread.h" -#include "content/public/common/service_manager_connection.h" -#include "content/public/common/simple_connection_filter.h" #include "content/public/renderer/render_thread.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "net/base/net_module.h" -#include "services/service_manager/public/cpp/binder_registry.h" #include "services/service_manager/public/cpp/connector.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h" #include "third_party/blink/public/platform/web_string.h" @@ -35,19 +32,8 @@ chrome::mojom::DynamicParams* GetDynamicConfigParams() { bool CefRenderThreadObserver::is_incognito_process_ = false; -CefRenderThreadObserver::CefRenderThreadObserver() - : visited_link_slave_(new visitedlink::VisitedLinkSlave) { +CefRenderThreadObserver::CefRenderThreadObserver() { net::NetModule::SetResourceProvider(NetResourceProvider); - - auto registry = std::make_unique(); - registry->AddInterface(visited_link_slave_->GetBindCallback(), - base::ThreadTaskRunnerHandle::Get()); - if (content::ChildThread::Get()) { - content::ChildThread::Get() - ->GetServiceManagerConnection() - ->AddConnectionFilter(std::make_unique( - std::move(registry))); - } } CefRenderThreadObserver::~CefRenderThreadObserver() {} diff --git a/libcef/renderer/render_thread_observer.h b/libcef/renderer/render_thread_observer.h index b099fb1a9..f88c3608a 100644 --- a/libcef/renderer/render_thread_observer.h +++ b/libcef/renderer/render_thread_observer.h @@ -15,10 +15,6 @@ #include "mojo/public/cpp/bindings/associated_binding_set.h" #include "mojo/public/cpp/bindings/associated_receiver_set.h" -namespace visitedlink { -class VisitedLinkSlave; -} - struct Cef_CrossOriginWhiteListEntry_Params; // This class sends and receives control messages in the renderer process. @@ -34,10 +30,6 @@ class CefRenderThreadObserver : public content::RenderThreadObserver, // render process is running. static const chrome::mojom::DynamicParams& GetDynamicParams(); - visitedlink::VisitedLinkSlave* visited_link_slave() { - return visited_link_slave_.get(); - } - private: // content::RenderThreadObserver: bool OnControlMessageReceived(const IPC::Message& message) override; @@ -69,8 +61,6 @@ class CefRenderThreadObserver : public content::RenderThreadObserver, static bool is_incognito_process_; - std::unique_ptr visited_link_slave_; - mojo::AssociatedReceiverSet renderer_configuration_receivers_; diff --git a/libcef/renderer/v8_impl.cc b/libcef/renderer/v8_impl.cc index bbc1f7489..63070b72b 100644 --- a/libcef/renderer/v8_impl.cc +++ b/libcef/renderer/v8_impl.cc @@ -2238,7 +2238,7 @@ int CefV8ValueImpl::GetArrayLength() { CefRefPtr CefV8ValueImpl::GetArrayBufferReleaseCallback() { - CEF_V8_REQUIRE_OBJECT_RETURN(0); + CEF_V8_REQUIRE_OBJECT_RETURN(nullptr); v8::Isolate* isolate = handle_->isolate(); v8::HandleScope handle_scope(isolate); @@ -2364,7 +2364,7 @@ CefRefPtr CefV8ValueImpl::ExecuteFunctionWithContext( v8::Local value = handle_->GetNewV8Handle(false); if (!value->IsFunction()) { NOTREACHED() << "V8 value is not a function"; - return 0; + return nullptr; } if (context.get() && !context->IsValid()) { diff --git a/libcef_dll/views_stub.cc b/libcef_dll/views_stub.cc index 5952ef044..f78b3b66d 100644 --- a/libcef_dll/views_stub.cc +++ b/libcef_dll/views_stub.cc @@ -12,6 +12,7 @@ // $hash=c5439c177bd70bf3d8d52e0381c08d6276453183$ // +#include "base/logging.h" #include "include/views/cef_browser_view.h" #include "include/views/cef_display.h" #include "include/views/cef_label_button.h" @@ -21,8 +22,6 @@ #include "include/views/cef_textfield.h" #include "include/views/cef_window.h" -#include "base/logging.h" - // STATIC STUB METHODS - Do not edit by hand. NO_SANITIZE("cfi-icall") diff --git a/patch/patch.cfg b/patch/patch.cfg index b67be9f48..9ea014aa5 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -110,6 +110,8 @@ patches = [ # # Support custom RenderWidgetHostViewOSR for BrowserPluginGuest. # https://bitbucket.org/chromiumembedded/cef/issues/1565 + # + # Add WebContentsObserver::OnFrameFocused. 'name': 'web_contents_1257_1565', }, { @@ -290,8 +292,6 @@ patches = [ # Add ContentRendererClient::RenderThreadConnected to fix sync IPC issue. # https://bugs.chromium.org/p/chromium/issues/detail?id=728195 # - # Add RenderFrameObserver::FrameFocused method. - # # Add ContentRendererClient::DevToolsAgent[Attached|Detached] methods. # # Always return the Chrome product value for DevTools. @@ -452,6 +452,8 @@ patches = [ # - Don't attach unnecessary Chrome-related handlers to constrained window. # - Create file dialogs using the CEF code path. # - Remove unsupported print preview UI options. + # - macOS: Fix error: no member named 'kCloudPrinterHandler' in namespace + # 'printing::features', # https://bitbucket.org/chromiumembedded/cef/issues/123 'name': 'print_preview_123', }, @@ -485,5 +487,22 @@ patches = [ # std::is_integral templates that should be inlined. # https://bitbucket.org/chromiumembedded/cef/issues/2819 'name': 'win_double_conversion_2819', + }, + { + # libxml access is now limited to targets audited by the Security Team. + # https://chromium-review.googlesource.com/c/chromium/src/+/1884750 + 'name': 'libxml_visibility', + }, + { + # Fix Jumbo build errors. + # - Allow use of jumbo-related GN args. + # - Fix multiple definition errors. + 'name': 'build_jumbo', + }, + { + # Ignore port number when matching scheme + IP address in + # VerifyRequestInitiatorLock. + # https://bugs.chromium.org/p/chromium/issues/detail?id=1051674 + 'name': 'services_network_initiator_lock_1051674', } ] diff --git a/patch/patches/base_sandbox_2743.patch b/patch/patches/base_sandbox_2743.patch index 65baff7b9..b65005a7a 100644 --- a/patch/patches/base_sandbox_2743.patch +++ b/patch/patches/base_sandbox_2743.patch @@ -1,5 +1,5 @@ diff --git base/BUILD.gn base/BUILD.gn -index 200b8daecfbe..2e9d3b35325a 100644 +index 0e54cd8264cf..44405b8a410b 100644 --- base/BUILD.gn +++ base/BUILD.gn @@ -32,6 +32,7 @@ import("//build/config/sysroot.gni") @@ -10,7 +10,7 @@ index 200b8daecfbe..2e9d3b35325a 100644 import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") import("//third_party/icu/config.gni") -@@ -1612,7 +1613,11 @@ jumbo_component("base") { +@@ -1635,7 +1636,11 @@ jumbo_component("base") { "hash/md5_constexpr_internal.h", "hash/sha1.h", ] diff --git a/patch/patches/base_value_646113.patch b/patch/patches/base_value_646113.patch index 5b3be8e28..e59d03609 100644 --- a/patch/patches/base_value_646113.patch +++ b/patch/patches/base_value_646113.patch @@ -1,8 +1,8 @@ diff --git base/values.cc base/values.cc -index 6886b846e8d5..2bc969fb173a 100644 +index 66e8d39abf0b..2a3d7ebfd10e 100644 --- base/values.cc +++ base/values.cc -@@ -23,20 +23,6 @@ +@@ -24,20 +24,6 @@ namespace base { diff --git a/patch/patches/browser_child_frame_2507.patch b/patch/patches/browser_child_frame_2507.patch index acb300a35..456cb7461 100644 --- a/patch/patches/browser_child_frame_2507.patch +++ b/patch/patches/browser_child_frame_2507.patch @@ -1,8 +1,8 @@ diff --git content/browser/renderer_host/render_widget_host_view_child_frame.cc content/browser/renderer_host/render_widget_host_view_child_frame.cc -index 2531e9d6b344..87cadc541057 100644 +index fc45d9e34fad..57d5d26613a5 100644 --- content/browser/renderer_host/render_widget_host_view_child_frame.cc +++ content/browser/renderer_host/render_widget_host_view_child_frame.cc -@@ -598,6 +598,7 @@ void RenderWidgetHostViewChildFrame::SubmitCompositorFrame( +@@ -596,6 +596,7 @@ void RenderWidgetHostViewChildFrame::SubmitCompositorFrame( "RenderWidgetHostViewChildFrame::OnSwapCompositorFrame"); support_->SubmitCompositorFrame(local_surface_id, std::move(frame), std::move(hit_test_region_list)); @@ -10,7 +10,7 @@ index 2531e9d6b344..87cadc541057 100644 } void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame( -@@ -606,6 +607,15 @@ void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame( +@@ -604,6 +605,15 @@ void RenderWidgetHostViewChildFrame::OnDidNotProduceFrame( support_->DidNotProduceFrame(ack); } @@ -26,7 +26,7 @@ index 2531e9d6b344..87cadc541057 100644 void RenderWidgetHostViewChildFrame::TransformPointToRootSurface( gfx::PointF* point) { // This function is called by RenderWidgetHostInputEventRouter only for -@@ -802,6 +812,11 @@ void RenderWidgetHostViewChildFrame::ShowDefinitionForSelection() { +@@ -798,6 +808,11 @@ void RenderWidgetHostViewChildFrame::ShowDefinitionForSelection() { void RenderWidgetHostViewChildFrame::SpeakSelection() {} #endif // defined(OS_MACOSX) diff --git a/patch/patches/browser_scheduler.patch b/patch/patches/browser_scheduler.patch index b45f43151..154849741 100644 --- a/patch/patches/browser_scheduler.patch +++ b/patch/patches/browser_scheduler.patch @@ -1,8 +1,8 @@ diff --git content/browser/scheduler/browser_task_executor.cc content/browser/scheduler/browser_task_executor.cc -index 4f786a1c21c7..2bbd7b0caf19 100644 +index b8b4a1b8c70c..e036e15eafc7 100644 --- content/browser/scheduler/browser_task_executor.cc +++ content/browser/scheduler/browser_task_executor.cc -@@ -249,7 +249,7 @@ void BrowserTaskExecutor::PostFeatureListSetup() { +@@ -255,7 +255,7 @@ void BrowserTaskExecutor::PostFeatureListSetup() { // static void BrowserTaskExecutor::Shutdown() { diff --git a/patch/patches/build.patch b/patch/patches/build.patch index 61b5d13a3..5b0d3fbb6 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,8 +1,8 @@ diff --git build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn -index 93ad68a613b3..19b82a3a6389 100644 +index fbf8335f11ba..7a80641139a4 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn -@@ -167,7 +167,7 @@ declare_args() { +@@ -172,7 +172,7 @@ declare_args() { !use_clang_coverage && !(is_android && use_order_profiling) && (use_lld || (use_gold && @@ -11,7 +11,7 @@ index 93ad68a613b3..19b82a3a6389 100644 !(current_cpu == "x86" || current_cpu == "x64")))) } -@@ -1740,8 +1740,6 @@ config("thin_archive") { +@@ -1763,8 +1763,6 @@ config("thin_archive") { # archive names to 16 characters, which is not what we want). if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) { arflags = [ "-T" ] diff --git a/patch/patches/build_jumbo.patch b/patch/patches/build_jumbo.patch new file mode 100644 index 000000000..a132c8232 --- /dev/null +++ b/patch/patches/build_jumbo.patch @@ -0,0 +1,475 @@ +diff --git base/win/com_init_util.cc base/win/com_init_util.cc +index d81f42019bd1..fab3998df55d 100644 +--- base/win/com_init_util.cc ++++ base/win/com_init_util.cc +@@ -34,7 +34,7 @@ struct OleTlsData { + }; + + OleTlsData* GetOleTlsData() { +- TEB* teb = NtCurrentTeb(); ++ auto teb = NtCurrentTeb(); + return reinterpret_cast(teb->ReservedForOle); + } + +diff --git build/config/jumbo.gni build/config/jumbo.gni +index 0c84b283bf8f..e6f033a59151 100644 +--- build/config/jumbo.gni ++++ build/config/jumbo.gni +@@ -11,13 +11,6 @@ declare_args() { + jumbo_file_merge_limit = -1 + } + +-# TODO(crbug.com/994387): Remove all uses of the jumbo_* templates from the +-# BUILD.gn files, and then remove this whole file. +-assert(!use_jumbo_build, +- "The jumbo build is no longer supported. Please remove any uses of " + +- "'use_jumbo_build', 'jumbo_build_excluded', or " + +- "'jumbo_file_merge_limit' from your args.gn file and re-run GN.") +- + # Normal builds benefit from lots of jumbification + jumbo_file_merge_default = 50 + +diff --git chrome/browser/extensions/api/input_ime/input_ime_api.cc chrome/browser/extensions/api/input_ime/input_ime_api.cc +index 3f790e96da74..7deec3e4b0ce 100644 +--- chrome/browser/extensions/api/input_ime/input_ime_api.cc ++++ chrome/browser/extensions/api/input_ime/input_ime_api.cc +@@ -19,7 +19,9 @@ namespace SendKeyEvents = extensions::api::input_ime::SendKeyEvents; + using input_method::InputMethodEngineBase; + + namespace { ++namespace i { + const char kErrorRouterNotAvailable[] = "The router is not available."; ++} + const char kErrorSetKeyEventsFail[] = "Could not send key events."; + + InputMethodEngineBase* GetEngineIfActive(Profile* profile, +@@ -27,7 +29,7 @@ InputMethodEngineBase* GetEngineIfActive(Profile* profile, + std::string* error) { + extensions::InputImeEventRouter* event_router = + extensions::GetInputImeEventRouter(profile); +- CHECK(event_router) << kErrorRouterNotAvailable; ++ CHECK(event_router) << i::kErrorRouterNotAvailable; + InputMethodEngineBase* engine = + event_router->GetEngineIfActive(extension_id, error); + return engine; +diff --git chrome/browser/optimization_guide/optimization_guide_navigation_data.cc chrome/browser/optimization_guide/optimization_guide_navigation_data.cc +index acbec3d510c4..3f640008ddc0 100644 +--- chrome/browser/optimization_guide/optimization_guide_navigation_data.cc ++++ chrome/browser/optimization_guide/optimization_guide_navigation_data.cc +@@ -8,6 +8,7 @@ + #include "base/metrics/histogram_functions.h" + #include "base/metrics/histogram_macros.h" + #include "base/strings/stringprintf.h" ++#include "chrome/browser/optimization_guide/optimization_guide_util.h" + #include "chrome/browser/optimization_guide/optimization_guide_web_contents_observer.h" + #include "components/optimization_guide/hints_processing_util.h" + #include "content/public/browser/navigation_handle.h" +@@ -16,25 +17,6 @@ + #include "services/metrics/public/cpp/ukm_source.h" + #include "services/metrics/public/cpp/ukm_source_id.h" + +-namespace { +- +-// The returned string is used to record histograms for the optimization target. +-// Also add the string to OptimizationGuide.OptimizationTargets histogram +-// suffixes in histograms.xml. +-std::string GetStringNameForOptimizationTarget( +- optimization_guide::proto::OptimizationTarget optimization_target) { +- switch (optimization_target) { +- case optimization_guide::proto::OPTIMIZATION_TARGET_UNKNOWN: +- return "Unknown"; +- case optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD: +- return "PainfulPageLoad"; +- } +- NOTREACHED(); +- return std::string(); +-} +- +-} // namespace +- + OptimizationGuideNavigationData::OptimizationGuideNavigationData( + int64_t navigation_id) + : navigation_id_(navigation_id) {} +diff --git chrome/browser/optimization_guide/prediction/prediction_manager.cc chrome/browser/optimization_guide/prediction/prediction_manager.cc +index f8eb245f6b48..6b24f4d43d5f 100644 +--- chrome/browser/optimization_guide/prediction/prediction_manager.cc ++++ chrome/browser/optimization_guide/prediction/prediction_manager.cc +@@ -61,7 +61,9 @@ bool ShouldUseCurrentOptimizationTargetDecision( + + // Delay between retries on failed fetch and store of prediction models and + // host model features from the remote Optimization Guide Service. ++namespace i { + constexpr base::TimeDelta kFetchRetryDelay = base::TimeDelta::FromMinutes(16); ++} + + // The amount of time to wait after a successful fetch of models and host model + // features before requesting an update from the remote Optimization Guide +@@ -71,11 +73,13 @@ constexpr base::TimeDelta kUpdateModelsAndFeaturesDelay = + + // Provide a random time delta in seconds before fetching models and host model + // features. ++namespace i { + base::TimeDelta RandomFetchDelay() { + return base::TimeDelta::FromSeconds(base::RandInt( + optimization_guide::features::PredictionModelFetchRandomMinDelaySecs(), + optimization_guide::features::PredictionModelFetchRandomMaxDelaySecs())); + } ++} + + } // namespace + +@@ -694,12 +698,12 @@ void PredictionManager::ScheduleModelsAndHostModelFeaturesFetch() { + model_and_features_store_->GetHostModelFeaturesUpdateTime() - + clock_->Now(); + const base::TimeDelta time_until_retry = +- GetLastFetchAttemptTime() + kFetchRetryDelay - clock_->Now(); ++ GetLastFetchAttemptTime() + i::kFetchRetryDelay - clock_->Now(); + base::TimeDelta fetcher_delay = + std::max(time_until_update_time, time_until_retry); + if (fetcher_delay <= base::TimeDelta()) { + SetLastModelAndFeaturesFetchAttemptTime(clock_->Now()); +- fetch_timer_.Start(FROM_HERE, RandomFetchDelay(), this, ++ fetch_timer_.Start(FROM_HERE, i::RandomFetchDelay(), this, + &PredictionManager::FetchModelsAndHostModelFeatures); + return; + } +diff --git chrome/browser/performance_manager/decorators/process_priority_aggregator.cc chrome/browser/performance_manager/decorators/process_priority_aggregator.cc +index 43ad1e7a3a42..e158b1dff474 100644 +--- chrome/browser/performance_manager/decorators/process_priority_aggregator.cc ++++ chrome/browser/performance_manager/decorators/process_priority_aggregator.cc +@@ -22,6 +22,7 @@ class ProcessPriorityAggregatorAccess { + + namespace { + ++namespace i { + class DataImpl : public ProcessPriorityAggregator::Data, + public NodeAttachedDataImpl { + public: +@@ -37,6 +38,7 @@ class DataImpl : public ProcessPriorityAggregator::Data, + return ProcessPriorityAggregatorAccess::GetUniquePtrStorage(process_node); + } + }; ++} // namespace i + + } // namespace + +@@ -106,7 +108,7 @@ base::TaskPriority ProcessPriorityAggregator::Data::GetPriority() const { + // static + ProcessPriorityAggregator::Data* ProcessPriorityAggregator::Data::GetForTesting( + ProcessNodeImpl* process_node) { +- return DataImpl::Get(process_node); ++ return i::DataImpl::Get(process_node); + } + + ProcessPriorityAggregator::ProcessPriorityAggregator() = default; +@@ -114,7 +116,7 @@ ProcessPriorityAggregator::~ProcessPriorityAggregator() = default; + + void ProcessPriorityAggregator::OnFrameNodeAdded(const FrameNode* frame_node) { + auto* process_node = ProcessNodeImpl::FromNode(frame_node->GetProcessNode()); +- DataImpl* data = DataImpl::Get(process_node); ++ i::DataImpl* data = i::DataImpl::Get(process_node); + data->Increment(frame_node->GetPriorityAndReason().priority()); + // This is a nop if the priority didn't actually change. + process_node->set_priority(data->GetPriority()); +@@ -123,7 +125,7 @@ void ProcessPriorityAggregator::OnFrameNodeAdded(const FrameNode* frame_node) { + void ProcessPriorityAggregator::OnBeforeFrameNodeRemoved( + const FrameNode* frame_node) { + auto* process_node = ProcessNodeImpl::FromNode(frame_node->GetProcessNode()); +- DataImpl* data = DataImpl::Get(process_node); ++ i::DataImpl* data = i::DataImpl::Get(process_node); + data->Decrement(frame_node->GetPriorityAndReason().priority()); + // This is a nop if the priority didn't actually change. + process_node->set_priority(data->GetPriority()); +@@ -140,7 +142,7 @@ void ProcessPriorityAggregator::OnPriorityAndReasonChanged( + // Update the distinct frame priority counts, and set the process priority + // accordingly. + auto* process_node = ProcessNodeImpl::FromNode(frame_node->GetProcessNode()); +- DataImpl* data = DataImpl::Get(process_node); ++ i::DataImpl* data = i::DataImpl::Get(process_node); + data->Decrement(previous_value.priority()); + data->Increment(new_value.priority()); + // This is a nop if the priority didn't actually change. +@@ -160,8 +162,8 @@ void ProcessPriorityAggregator::OnTakenFromGraph(Graph* graph) { + void ProcessPriorityAggregator::OnProcessNodeAdded( + const ProcessNode* process_node) { + auto* process_node_impl = ProcessNodeImpl::FromNode(process_node); +- DCHECK(!DataImpl::Get(process_node_impl)); +- DataImpl* data = DataImpl::GetOrCreate(process_node_impl); ++ DCHECK(!i::DataImpl::Get(process_node_impl)); ++ i::DataImpl* data = i::DataImpl::GetOrCreate(process_node_impl); + DCHECK(data->IsEmpty()); + DCHECK_EQ(base::TaskPriority::LOWEST, process_node_impl->priority()); + DCHECK_EQ(base::TaskPriority::LOWEST, data->GetPriority()); +@@ -171,7 +173,7 @@ void ProcessPriorityAggregator::OnBeforeProcessNodeRemoved( + const ProcessNode* process_node) { + #if DCHECK_IS_ON() + auto* process_node_impl = ProcessNodeImpl::FromNode(process_node); +- DataImpl* data = DataImpl::Get(process_node_impl); ++ i::DataImpl* data = i::DataImpl::Get(process_node_impl); + DCHECK(data->IsEmpty()); + #endif + } +diff --git chrome/browser/ui/views/confirm_bubble_views.cc chrome/browser/ui/views/confirm_bubble_views.cc +index 5f25a23aff9d..a2f160c2f1a5 100644 +--- chrome/browser/ui/views/confirm_bubble_views.cc ++++ chrome/browser/ui/views/confirm_bubble_views.cc +@@ -27,6 +27,7 @@ + + namespace { + ++namespace i { + std::unique_ptr CreateExtraView(views::ButtonListener* listener) { + auto help_button = CreateVectorImageButton(listener); + help_button->SetFocusForPlatform(); +@@ -34,6 +35,7 @@ std::unique_ptr CreateExtraView(views::ButtonListener* listener) { + SetImageFromVectorIcon(help_button.get(), vector_icons::kHelpOutlineIcon); + return help_button; + } ++} // namespace i + + } // namespace + +@@ -46,7 +48,7 @@ ConfirmBubbleViews::ConfirmBubbleViews( + DialogDelegate::set_button_label( + ui::DIALOG_BUTTON_CANCEL, + model_->GetButtonLabel(ConfirmBubbleModel::BUTTON_CANCEL)); +- help_button_ = DialogDelegate::SetExtraView(::CreateExtraView(this)); ++ help_button_ = DialogDelegate::SetExtraView(::i::CreateExtraView(this)); + + set_margins(ChromeLayoutProvider::Get()->GetDialogInsetsForContentType( + views::TEXT, views::TEXT)); +diff --git content/browser/accessibility/accessibility_event_recorder_win.cc content/browser/accessibility/accessibility_event_recorder_win.cc +index f4fcad03c04c..99b769763511 100644 +--- content/browser/accessibility/accessibility_event_recorder_win.cc ++++ content/browser/accessibility/accessibility_event_recorder_win.cc +@@ -29,6 +29,7 @@ namespace content { + + namespace { + ++namespace i { + std::string RoleVariantToString(const base::win::ScopedVariant& role) { + if (role.type() == VT_I4) { + return base::UTF16ToUTF8(IAccessibleRoleToString(V_I4(role.ptr()))); +@@ -55,6 +56,7 @@ HRESULT QueryIAccessibleText(IAccessible* accessible, + accessible_text) + : hr; + } ++} // namespace i + + std::string BstrToPrettyUTF8(BSTR bstr) { + base::string16 str16(bstr, SysStringLen(bstr)); +@@ -291,7 +293,7 @@ void AccessibilityEventRecorderWin::OnWinEventHook(HWINEVENTHOOK handle, + + AccessibleStates ia2_state = 0; + Microsoft::WRL::ComPtr iaccessible2; +- hr = QueryIAccessible2(iaccessible.Get(), iaccessible2.GetAddressOf()); ++ hr = i::QueryIAccessible2(iaccessible.Get(), iaccessible2.GetAddressOf()); + bool has_ia2 = SUCCEEDED(hr) && iaccessible2; + + base::string16 html_tag; +@@ -332,7 +334,7 @@ void AccessibilityEventRecorderWin::OnWinEventHook(HWINEVENTHOOK handle, + base::StringPrintf(" class=%s", base::UTF16ToUTF8(obj_class).c_str()); + } + +- log += base::StringPrintf(" role=%s", RoleVariantToString(role).c_str()); ++ log += base::StringPrintf(" role=%s", i::RoleVariantToString(role).c_str()); + if (name_bstr.Length() > 0) + log += + base::StringPrintf(" name=\"%s\"", BstrToPrettyUTF8(name_bstr).c_str()); +@@ -367,7 +369,7 @@ void AccessibilityEventRecorderWin::OnWinEventHook(HWINEVENTHOOK handle, + // For TEXT_REMOVED and TEXT_INSERTED events, query the text that was + // inserted or removed and include that in the log. + Microsoft::WRL::ComPtr accessible_text; +- hr = QueryIAccessibleText(iaccessible.Get(), accessible_text.GetAddressOf()); ++ hr = i::QueryIAccessibleText(iaccessible.Get(), accessible_text.GetAddressOf()); + if (SUCCEEDED(hr)) { + if (event == IA2_EVENT_TEXT_REMOVED) { + IA2TextSegment old_text; +diff --git content/browser/devtools/protocol/storage_handler.cc content/browser/devtools/protocol/storage_handler.cc +index 50cf4dd3edef..7ae6ed5d91f0 100644 +--- content/browser/devtools/protocol/storage_handler.cc ++++ content/browser/devtools/protocol/storage_handler.cc +@@ -33,8 +33,10 @@ namespace content { + namespace protocol { + + using ClearCookiesCallback = Storage::Backend::ClearCookiesCallback; ++namespace i { + using GetCookiesCallback = Storage::Backend::GetCookiesCallback; + using SetCookiesCallback = Storage::Backend::SetCookiesCallback; ++} + + struct UsageListInitializer { + const char* type; +@@ -284,7 +286,7 @@ void StorageHandler::GetCookies(Maybe browser_context_id, + + storage_partition->GetCookieManagerForBrowserProcess()->GetAllCookies( + base::BindOnce( +- [](std::unique_ptr callback, ++ [](std::unique_ptr callback, + const std::vector& cookies) { + callback->sendSuccess(NetworkHandler::BuildCookieArray(cookies)); + }, +@@ -294,7 +296,7 @@ void StorageHandler::GetCookies(Maybe browser_context_id, + void StorageHandler::SetCookies( + std::unique_ptr> cookies, + Maybe browser_context_id, +- std::unique_ptr callback) { ++ std::unique_ptr callback) { + StoragePartition* storage_partition = nullptr; + Response response = StorageHandler::FindStoragePartition(browser_context_id, + &storage_partition); +@@ -306,7 +308,7 @@ void StorageHandler::SetCookies( + NetworkHandler::SetCookies( + storage_partition, std::move(cookies), + base::BindOnce( +- [](std::unique_ptr callback, bool success) { ++ [](std::unique_ptr callback, bool success) { + if (success) { + callback->sendSuccess(); + } else { +diff --git content/browser/web_package/web_bundle_blob_data_source.cc content/browser/web_package/web_bundle_blob_data_source.cc +index 6b3e423e9d12..f3b63178d70e 100644 +--- content/browser/web_package/web_bundle_blob_data_source.cc ++++ content/browser/web_package/web_bundle_blob_data_source.cc +@@ -23,6 +23,7 @@ + namespace content { + namespace { + ++namespace i { + class MojoBlobReaderDelegate : public storage::MojoBlobReader::Delegate { + public: + using CompletionCallback = base::OnceCallback; +@@ -43,6 +44,7 @@ class MojoBlobReaderDelegate : public storage::MojoBlobReader::Delegate { + CompletionCallback completion_callback_; + DISALLOW_COPY_AND_ASSIGN(MojoBlobReaderDelegate); + }; ++} // namespace i + + void OnReadComplete( + data_decoder::mojom::BundleDataSource::ReadCallback callback, +@@ -372,7 +374,7 @@ void WebBundleBlobDataSource::BlobDataSourceCore::OnBlobReadyForReadToDataPipe( + } + storage::MojoBlobReader::Create( + blob_.get(), net::HttpByteRange::Bounded(offset, offset + length - 1), +- std::make_unique(std::move(callback)), ++ std::make_unique(std::move(callback)), + std::move(producer_handle)); + } + +diff --git storage/browser/quota/quota_settings.cc storage/browser/quota/quota_settings.cc +index b2210b55b40f..668246e5f363 100644 +--- storage/browser/quota/quota_settings.cc ++++ storage/browser/quota/quota_settings.cc +@@ -21,7 +21,9 @@ namespace storage { + + namespace { + ++namespace i { + const int64_t kMBytes = 1024 * 1024; ++} + const int kRandomizedPercentage = 10; + + // Skews |value| by +/- |percent|. +@@ -35,7 +37,7 @@ storage::QuotaSettings CalculateIncognitoDynamicSettings( + // The incognito pool size is a fraction of the amount of system memory, + // and the amount is capped to a hard limit. + double incognito_pool_size_ratio = 0.1; // 10% +- int64_t max_incognito_pool_size = 300 * kMBytes; ++ int64_t max_incognito_pool_size = 300 * i::kMBytes; + if (base::FeatureList::IsEnabled(features::kIncognitoDynamicQuota)) { + const double lower_bound = features::kIncognitoQuotaRatioLowerBound.Get(); + const double upper_bound = features::kIncognitoQuotaRatioUpperBound.Get(); +@@ -89,7 +91,7 @@ base::Optional CalculateNominalDynamicSettings( + // * 64GB storage -- min(6GB,2GB) = 2GB + // * 16GB storage -- min(1.6GB,2GB) = 1.6GB + // * 8GB storage -- min(800MB,2GB) = 800MB +- const int64_t kShouldRemainAvailableFixed = 2048 * kMBytes; // 2GB ++ const int64_t kShouldRemainAvailableFixed = 2048 * i::kMBytes; // 2GB + const double kShouldRemainAvailableRatio = 0.1; // 10% + + // The amount of the device's storage the browser attempts to +@@ -104,7 +106,7 @@ base::Optional CalculateNominalDynamicSettings( + // * 64GB storage -- min(640MB,1GB) = 640MB + // * 16GB storage -- min(160MB,1GB) = 160MB + // * 8GB storage -- min(80MB,1GB) = 80MB +- const int64_t kMustRemainAvailableFixed = 1024 * kMBytes; // 1GB ++ const int64_t kMustRemainAvailableFixed = 1024 * i::kMBytes; // 1GB + const double kMustRemainAvailableRatio = 0.01; // 1% + + // The fraction of the temporary pool that can be utilized by a single host. +@@ -116,7 +118,7 @@ base::Optional CalculateNominalDynamicSettings( + // SessionOnly (or ephemeral) origins are allotted a fraction of what + // normal origins are provided, and the amount is capped to a hard limit. + const double kSessionOnlyHostQuotaRatio = 0.1; // 10% +- const int64_t kMaxSessionOnlyHostQuota = 300 * kMBytes; ++ const int64_t kMaxSessionOnlyHostQuota = 300 * i::kMBytes; + + storage::QuotaSettings settings; + +diff --git third_party/blink/renderer/modules/xr/xr_hit_test_source.cc third_party/blink/renderer/modules/xr/xr_hit_test_source.cc +index 8a49f3591a73..0345548ec18f 100644 +--- third_party/blink/renderer/modules/xr/xr_hit_test_source.cc ++++ third_party/blink/renderer/modules/xr/xr_hit_test_source.cc +@@ -10,10 +10,12 @@ + #include "third_party/blink/renderer/platform/bindings/exception_state.h" + + namespace { ++namespace i { + const char kCannotCancelHitTestSource[] = + "Hit test source could not be canceled! Ensure that it was not already " + "canceled."; + } ++} + + namespace blink { + +@@ -27,7 +29,7 @@ uint64_t XRHitTestSource::id() const { + void XRHitTestSource::cancel(ExceptionState& exception_state) { + if (!xr_session_->RemoveHitTestSource(this)) { + exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, +- kCannotCancelHitTestSource); ++ i::kCannotCancelHitTestSource); + } + } + +diff --git third_party/blink/renderer/platform/fonts/font_matching_metrics.cc third_party/blink/renderer/platform/fonts/font_matching_metrics.cc +index 5e1005a2e4d3..ef83cadc9957 100644 +--- third_party/blink/renderer/platform/fonts/font_matching_metrics.cc ++++ third_party/blink/renderer/platform/fonts/font_matching_metrics.cc +@@ -14,6 +14,7 @@ constexpr double kUkmFontLoadCountBucketSpacing = 1.3; + + enum FontLoadContext { kTopLevel = 0, kSubFrame }; + ++namespace i { + template + HashSet Intersection(const HashSet& a, const HashSet& b) { + HashSet result; +@@ -23,6 +24,7 @@ HashSet Intersection(const HashSet& a, const HashSet& b) { + } + return result; + } ++} // namespace i + + } // namespace + +@@ -52,16 +54,16 @@ void FontMatchingMetrics::PublishUkmMetrics() { + ukm::builders::FontMatchAttempts(source_id_) + .SetLoadContext(top_level_ ? kTopLevel : kSubFrame) + .SetSystemFontFamilySuccesses(ukm::GetExponentialBucketMin( +- Intersection(successful_font_families_, system_font_families_).size(), ++ i::Intersection(successful_font_families_, system_font_families_).size(), + kUkmFontLoadCountBucketSpacing)) + .SetSystemFontFamilyFailures(ukm::GetExponentialBucketMin( +- Intersection(failed_font_families_, system_font_families_).size(), ++ i::Intersection(failed_font_families_, system_font_families_).size(), + kUkmFontLoadCountBucketSpacing)) + .SetWebFontFamilySuccesses(ukm::GetExponentialBucketMin( +- Intersection(successful_font_families_, web_font_families_).size(), ++ i::Intersection(successful_font_families_, web_font_families_).size(), + kUkmFontLoadCountBucketSpacing)) + .SetWebFontFamilyFailures(ukm::GetExponentialBucketMin( +- Intersection(failed_font_families_, web_font_families_).size(), ++ i::Intersection(failed_font_families_, web_font_families_).size(), + kUkmFontLoadCountBucketSpacing)) + .Record(ukm_recorder_); + } diff --git a/patch/patches/chrome_browser.patch b/patch/patches/chrome_browser.patch index 90be75ace..8e04f96b3 100644 --- a/patch/patches/chrome_browser.patch +++ b/patch/patches/chrome_browser.patch @@ -1,16 +1,16 @@ diff --git chrome/browser/BUILD.gn chrome/browser/BUILD.gn -index 5f4cb5b1c4fe..a082ec93ffe4 100644 +index 6751a787272b..751b62c50a81 100644 --- chrome/browser/BUILD.gn +++ chrome/browser/BUILD.gn -@@ -9,6 +9,7 @@ import("//build/config/features.gni") +@@ -10,6 +10,7 @@ import("//build/config/features.gni") import("//build/config/jumbo.gni") import("//build/config/linux/gtk/gtk.gni") import("//build/config/ui.gni") +import("//cef/libcef/features/features.gni") + import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//components/feature_engagement/features.gni") - import("//components/feed/features.gni") -@@ -1881,6 +1882,7 @@ jumbo_static_library("browser") { +@@ -1959,6 +1960,7 @@ jumbo_static_library("browser") { "//base/util/values:values_util", "//build:branding_buildflags", "//cc", @@ -18,7 +18,7 @@ index 5f4cb5b1c4fe..a082ec93ffe4 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2183,6 +2185,10 @@ jumbo_static_library("browser") { +@@ -2263,6 +2265,10 @@ jumbo_static_library("browser") { ] } diff --git a/patch/patches/chrome_browser_content_settings.patch b/patch/patches/chrome_browser_content_settings.patch index 6f13dde94..e8faf0721 100644 --- a/patch/patches/chrome_browser_content_settings.patch +++ b/patch/patches/chrome_browser_content_settings.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/content_settings/host_content_settings_map_factory.cc chrome/browser/content_settings/host_content_settings_map_factory.cc -index ac6b3488a4d8..82edf3f9eeec 100644 +index 47b1443298ec..c1e07075fec4 100644 --- chrome/browser/content_settings/host_content_settings_map_factory.cc +++ chrome/browser/content_settings/host_content_settings_map_factory.cc @@ -7,6 +7,7 @@ diff --git a/patch/patches/chrome_browser_net_export.patch b/patch/patches/chrome_browser_net_export.patch index 329a7da3b..41456b987 100644 --- a/patch/patches/chrome_browser_net_export.patch +++ b/patch/patches/chrome_browser_net_export.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index 99b66171cd0f..46239384714e 100644 +index faa1344bd0a9..4528f101adb8 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn @@ -9,6 +9,7 @@ import("//build/config/features.gni") @@ -10,7 +10,7 @@ index 99b66171cd0f..46239384714e 100644 import("//chrome/common/features.gni") import("//chromeos/assistant/assistant.gni") import("//components/feature_engagement/features.gni") -@@ -358,6 +359,10 @@ jumbo_static_library("ui") { +@@ -355,6 +356,10 @@ jumbo_static_library("ui") { "//build/config/compiler:wexit_time_destructors", ] @@ -21,7 +21,7 @@ index 99b66171cd0f..46239384714e 100644 # Since browser and browser_ui actually depend on each other, # we must omit the dependency from browser_ui to browser. # However, this means browser_ui and browser should more or less -@@ -378,6 +383,7 @@ jumbo_static_library("ui") { +@@ -376,6 +381,7 @@ jumbo_static_library("ui") { "//base/allocator:buildflags", "//build:branding_buildflags", "//cc/paint", @@ -29,7 +29,7 @@ index 99b66171cd0f..46239384714e 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -1372,6 +1378,7 @@ jumbo_static_library("ui") { +@@ -1403,6 +1409,7 @@ jumbo_static_library("ui") { "//components/keep_alive_registry", "//components/network_session_configurator/common", "//components/page_load_metrics/browser", @@ -38,7 +38,7 @@ index 99b66171cd0f..46239384714e 100644 "//components/ui_metrics", "//components/url_formatter", diff --git chrome/browser/ui/webui/net_export_ui.cc chrome/browser/ui/webui/net_export_ui.cc -index 7b7cf106ad3d..b9fdb831737d 100644 +index 0924a6d73069..2fbdc6588a2c 100644 --- chrome/browser/ui/webui/net_export_ui.cc +++ chrome/browser/ui/webui/net_export_ui.cc @@ -20,13 +20,12 @@ diff --git a/patch/patches/chrome_browser_product_override.patch b/patch/patches/chrome_browser_product_override.patch index 3fd1e5099..d51047251 100644 --- a/patch/patches/chrome_browser_product_override.patch +++ b/patch/patches/chrome_browser_product_override.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc -index 8171dbb425b9..908e745c7285 100644 +index 5cdfec3a834b..99a06ed3332c 100644 --- chrome/browser/chrome_content_browser_client.cc +++ chrome/browser/chrome_content_browser_client.cc -@@ -992,10 +992,6 @@ void LaunchURL(const GURL& url, +@@ -990,10 +990,6 @@ void LaunchURL(const GURL& url, } } @@ -13,7 +13,7 @@ index 8171dbb425b9..908e745c7285 100644 void MaybeAppendSecureOriginsAllowlistSwitch(base::CommandLine* cmdline) { // |allowlist| combines pref/policy + cmdline switch in the browser process. // For renderer and utility (e.g. NetworkService) processes the switch is the -@@ -1045,6 +1041,14 @@ void MaybeAddThrottle( +@@ -1088,6 +1084,14 @@ void MaybeRecordSameSiteCookieEngagementHistogram( } // namespace @@ -29,10 +29,10 @@ index 8171dbb425b9..908e745c7285 100644 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(switches::kUserAgent)) { diff --git chrome/browser/chrome_content_browser_client.h chrome/browser/chrome_content_browser_client.h -index b80edc76b14f..20ba68634bbc 100644 +index d6b48bfa4314..bc4266755dc7 100644 --- chrome/browser/chrome_content_browser_client.h +++ chrome/browser/chrome_content_browser_client.h -@@ -86,7 +86,8 @@ enum class Channel; +@@ -87,7 +87,8 @@ enum class Channel; class ChromeHidDelegate; class ChromeSerialDelegate; diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index 068cb220b..fb876fe9b 100644 --- a/patch/patches/chrome_browser_profiles.patch +++ b/patch/patches/chrome_browser_profiles.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/profiles/profile_manager.cc chrome/browser/profiles/profile_manager.cc -index 4e44716a40f3..1eb4731da1cf 100644 +index 1abea76ebc02..d9fc9c0450c2 100644 --- chrome/browser/profiles/profile_manager.cc +++ chrome/browser/profiles/profile_manager.cc @@ -359,7 +359,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) diff --git a/patch/patches/chrome_browser_safe_browsing.patch b/patch/patches/chrome_browser_safe_browsing.patch index 6dae8bce7..c76e4cae4 100644 --- a/patch/patches/chrome_browser_safe_browsing.patch +++ b/patch/patches/chrome_browser_safe_browsing.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/safe_browsing/BUILD.gn chrome/browser/safe_browsing/BUILD.gn -index 8d5bdf428063..0aff2229bfa8 100644 +index 0f60694e2d9f..35eeee3233a1 100644 --- chrome/browser/safe_browsing/BUILD.gn +++ chrome/browser/safe_browsing/BUILD.gn -@@ -233,6 +233,7 @@ jumbo_static_library("safe_browsing") { +@@ -237,6 +237,7 @@ jumbo_static_library("safe_browsing") { "//chrome/common/safe_browsing:download_type_util", "//chrome/services/file_util/public/cpp", "//components/content_settings/core/browser", diff --git a/patch/patches/chrome_plugins.patch b/patch/patches/chrome_plugins.patch index 2edb9ff78..96e8751e4 100644 --- a/patch/patches/chrome_plugins.patch +++ b/patch/patches/chrome_plugins.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/plugins/plugin_info_host_impl.cc chrome/browser/plugins/plugin_info_host_impl.cc -index 865ca9288de7..8f736f081b86 100644 +index d49a1df73622..9a389e4383f0 100644 --- chrome/browser/plugins/plugin_info_host_impl.cc +++ chrome/browser/plugins/plugin_info_host_impl.cc @@ -18,6 +18,7 @@ @@ -10,7 +10,7 @@ index 865ca9288de7..8f736f081b86 100644 #include "chrome/browser/browser_process.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/plugins/chrome_plugin_service_filter.h" -@@ -55,6 +56,11 @@ +@@ -54,6 +55,11 @@ #include "url/gurl.h" #include "url/origin.h" @@ -22,7 +22,7 @@ index 865ca9288de7..8f736f081b86 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "components/guest_view/browser/guest_view_base.h" #include "extensions/browser/extension_registry.h" -@@ -101,6 +107,9 @@ bool IsPluginLoadingAccessibleResourceInWebView( +@@ -100,6 +106,9 @@ bool IsPluginLoadingAccessibleResourceInWebView( extensions::ExtensionRegistry* extension_registry, int process_id, const GURL& resource) { @@ -32,7 +32,7 @@ index 865ca9288de7..8f736f081b86 100644 extensions::WebViewRendererState* renderer_state = extensions::WebViewRendererState::GetInstance(); std::string partition_id; -@@ -129,9 +138,6 @@ bool IsPluginLoadingAccessibleResourceInWebView( +@@ -128,9 +137,6 @@ bool IsPluginLoadingAccessibleResourceInWebView( PluginInfoHostImpl::Context::Context(int render_process_id, Profile* profile) : render_process_id_(render_process_id), @@ -42,7 +42,7 @@ index 865ca9288de7..8f736f081b86 100644 host_content_settings_map_( HostContentSettingsMapFactory::GetForProfile(profile)), plugin_prefs_(PluginPrefs::GetForProfile(profile)) { -@@ -139,6 +145,13 @@ PluginInfoHostImpl::Context::Context(int render_process_id, Profile* profile) +@@ -138,6 +144,13 @@ PluginInfoHostImpl::Context::Context(int render_process_id, Profile* profile) profile->GetPrefs()); run_all_flash_in_allow_mode_.Init(prefs::kRunAllFlashInAllowMode, profile->GetPrefs()); @@ -56,7 +56,7 @@ index 865ca9288de7..8f736f081b86 100644 } PluginInfoHostImpl::Context::~Context() {} -@@ -209,6 +222,7 @@ void PluginInfoHostImpl::PluginsLoaded( +@@ -208,6 +221,7 @@ void PluginInfoHostImpl::PluginsLoaded( plugin_metadata->identifier(), &output->status); } @@ -64,7 +64,7 @@ index 865ca9288de7..8f736f081b86 100644 if (output->status == chrome::mojom::PluginStatus::kNotFound) { // Check to see if the component updater can fetch an implementation. std::unique_ptr cus_plugin_info = -@@ -217,7 +231,9 @@ void PluginInfoHostImpl::PluginsLoaded( +@@ -216,7 +230,9 @@ void PluginInfoHostImpl::PluginsLoaded( ComponentPluginLookupDone(params, std::move(output), std::move(callback), std::move(plugin_metadata), std::move(cus_plugin_info)); @@ -75,7 +75,7 @@ index 865ca9288de7..8f736f081b86 100644 GetPluginInfoFinish(params, std::move(output), std::move(callback), std::move(plugin_metadata)); } -@@ -230,6 +246,14 @@ void PluginInfoHostImpl::Context::DecidePluginStatus( +@@ -229,6 +245,14 @@ void PluginInfoHostImpl::Context::DecidePluginStatus( PluginMetadata::SecurityStatus security_status, const std::string& plugin_identifier, chrome::mojom::PluginStatus* status) const { @@ -90,7 +90,7 @@ index 865ca9288de7..8f736f081b86 100644 if (security_status == PluginMetadata::SECURITY_STATUS_FULLY_TRUSTED) { *status = chrome::mojom::PluginStatus::kAllowed; return; -@@ -338,16 +362,35 @@ bool PluginInfoHostImpl::Context::FindEnabledPlugin( +@@ -337,16 +361,35 @@ bool PluginInfoHostImpl::Context::FindEnabledPlugin( return false; } @@ -128,7 +128,7 @@ index 865ca9288de7..8f736f081b86 100644 // If we broke out of the loop, we have found an enabled plugin. bool enabled = i < matching_plugins.size(); diff --git chrome/browser/plugins/plugin_utils.cc chrome/browser/plugins/plugin_utils.cc -index 56f147d2fc56..9f5687d9a5b9 100644 +index 4e64db143b8a..71322b0261a1 100644 --- chrome/browser/plugins/plugin_utils.cc +++ chrome/browser/plugins/plugin_utils.cc @@ -5,6 +5,7 @@ @@ -165,7 +165,7 @@ index 56f147d2fc56..9f5687d9a5b9 100644 Profile* profile = Profile::FromBrowserContext(browser_context); std::vector whitelist = MimeTypesHandler::GetMIMETypeWhitelist(); diff --git chrome/common/google_url_loader_throttle.cc chrome/common/google_url_loader_throttle.cc -index 0a565575f36c..06dfa59d1a75 100644 +index 69539de7b1ec..001cf1d1fe0d 100644 --- chrome/common/google_url_loader_throttle.cc +++ chrome/common/google_url_loader_throttle.cc @@ -4,11 +4,16 @@ @@ -185,9 +185,9 @@ index 0a565575f36c..06dfa59d1a75 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "extensions/common/extension_urls.h" #endif -@@ -98,6 +103,11 @@ void GoogleURLLoaderThrottle::WillProcessResponse( +@@ -97,6 +102,11 @@ void GoogleURLLoaderThrottle::WillProcessResponse( const GURL& response_url, - network::ResourceResponseHead* response_head, + network::mojom::URLResponseHead* response_head, bool* defer) { +#if BUILDFLAG(ENABLE_CEF) + if (!extensions::ExtensionsEnabled()) @@ -198,72 +198,72 @@ index 0a565575f36c..06dfa59d1a75 100644 GURL webstore_url(extension_urls::GetWebstoreLaunchURL()); if (response_url.SchemeIsHTTPOrHTTPS() && diff --git chrome/renderer/chrome_content_renderer_client.cc chrome/renderer/chrome_content_renderer_client.cc -index 4d3cfef5b28a..bbcaceebfda2 100644 +index ffde51cd276a..3ef2ad8d3945 100644 --- chrome/renderer/chrome_content_renderer_client.cc +++ chrome/renderer/chrome_content_renderer_client.cc -@@ -794,6 +794,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -814,6 +814,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( if ((status == chrome::mojom::PluginStatus::kUnauthorized || status == chrome::mojom::PluginStatus::kBlocked) && -+ observer && - observer->IsPluginTemporarilyAllowed(identifier)) { ++ content_settings_agent && + content_settings_agent->IsPluginTemporarilyAllowed(identifier)) { status = chrome::mojom::PluginStatus::kAllowed; } -@@ -994,7 +995,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1012,7 +1013,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( render_frame->GetRemoteAssociatedInterfaces()->GetInterface( plugin_auth_host.BindNewEndpointAndPassReceiver()); plugin_auth_host->BlockedUnauthorizedPlugin(group_name, identifier); -- observer->DidBlockContentType(content_type, group_name); -+ if (observer) -+ observer->DidBlockContentType(content_type, group_name); +- content_settings_agent->DidBlockContentType(content_type); ++ if (content_settings_agent) ++ content_settings_agent->DidBlockContentType(content_type); break; } case chrome::mojom::PluginStatus::kBlocked: { -@@ -1003,7 +1005,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1021,7 +1023,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name)); placeholder->AllowLoading(); RenderThread::Get()->RecordAction(UserMetricsAction("Plugin_Blocked")); -- observer->DidBlockContentType(content_type, group_name); -+ if (observer) -+ observer->DidBlockContentType(content_type, group_name); +- content_settings_agent->DidBlockContentType(content_type); ++ if (content_settings_agent) ++ content_settings_agent->DidBlockContentType(content_type); break; } case chrome::mojom::PluginStatus::kBlockedByPolicy: { -@@ -1013,7 +1016,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1031,7 +1034,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( group_name)); RenderThread::Get()->RecordAction( UserMetricsAction("Plugin_BlockedByPolicy")); -- observer->DidBlockContentType(content_type, group_name); -+ if (observer) -+ observer->DidBlockContentType(content_type, group_name); +- content_settings_agent->DidBlockContentType(content_type); ++ if (content_settings_agent) ++ content_settings_agent->DidBlockContentType(content_type); break; } case chrome::mojom::PluginStatus::kBlockedNoLoading: { -@@ -1021,7 +1025,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1039,7 +1043,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( IDR_BLOCKED_PLUGIN_HTML, l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED_NO_LOADING, group_name)); -- observer->DidBlockContentType(content_type, group_name); -+ if (observer) -+ observer->DidBlockContentType(content_type, group_name); +- content_settings_agent->DidBlockContentType(content_type); ++ if (content_settings_agent) ++ content_settings_agent->DidBlockContentType(content_type); break; } case chrome::mojom::PluginStatus::kComponentUpdateRequired: { diff --git chrome/renderer/plugins/chrome_plugin_placeholder.cc chrome/renderer/plugins/chrome_plugin_placeholder.cc -index 205c7398f827..8fcb6e5ae7ad 100644 +index b86b883882cf..442bfa6753d8 100644 --- chrome/renderer/plugins/chrome_plugin_placeholder.cc +++ chrome/renderer/plugins/chrome_plugin_placeholder.cc @@ -358,8 +358,11 @@ void ChromePluginPlaceholder::OnBlockedContent( if (status == content::RenderFrame::PeripheralContentStatus::CONTENT_STATUS_TINY) { -- ContentSettingsObserver::Get(render_frame()) -- ->DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, title_); -+ ContentSettingsObserver* observer = -+ ContentSettingsObserver::Get(render_frame()); -+ if (observer) { -+ observer->DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, title_); -+ } +- ContentSettingsAgentImpl::Get(render_frame()) +- ->DidBlockContentType(ContentSettingsType::PLUGINS); ++ ContentSettingsAgentImpl *content_settings_agent = ++ ContentSettingsAgentImpl::Get(render_frame()); ++ if (content_settings_agent) { ++ content_settings_agent->DidBlockContentType(ContentSettingsType::PLUGINS); ++ } } std::string message = base::StringPrintf( diff --git a/patch/patches/chrome_renderer.patch b/patch/patches/chrome_renderer.patch index 35711c9f3..15946d1be 100644 --- a/patch/patches/chrome_renderer.patch +++ b/patch/patches/chrome_renderer.patch @@ -1,5 +1,5 @@ diff --git chrome/renderer/BUILD.gn chrome/renderer/BUILD.gn -index 5c4d8b63894d..996e15be52b9 100644 +index 4e229c16628f..17741b4d83a1 100644 --- chrome/renderer/BUILD.gn +++ chrome/renderer/BUILD.gn @@ -4,6 +4,7 @@ @@ -10,7 +10,7 @@ index 5c4d8b63894d..996e15be52b9 100644 import("//chrome/common/features.gni") import("//components/nacl/features.gni") import("//components/offline_pages/buildflags/features.gni") -@@ -129,6 +130,7 @@ jumbo_static_library("renderer") { +@@ -128,6 +129,7 @@ jumbo_static_library("renderer") { defines = [] deps = [ diff --git a/patch/patches/chrome_widevine.patch b/patch/patches/chrome_widevine.patch index 0ffd09df8..8d69eb934 100644 --- a/patch/patches/chrome_widevine.patch +++ b/patch/patches/chrome_widevine.patch @@ -1,5 +1,5 @@ diff --git third_party/widevine/cdm/BUILD.gn third_party/widevine/cdm/BUILD.gn -index ed0e2f5208b0..dca927a726b9 100644 +index 60757fdc2eee..29012ea670cf 100644 --- third_party/widevine/cdm/BUILD.gn +++ third_party/widevine/cdm/BUILD.gn @@ -5,6 +5,7 @@ diff --git a/patch/patches/component_build.patch b/patch/patches/component_build.patch index ae2d27f1f..0016ef95a 100644 --- a/patch/patches/component_build.patch +++ b/patch/patches/component_build.patch @@ -1,5 +1,5 @@ diff --git content/browser/devtools/devtools_instrumentation.h content/browser/devtools/devtools_instrumentation.h -index 0825bf79f7d5..5bbb5b3ea05f 100644 +index 544ed223ac8e..490330c87453 100644 --- content/browser/devtools/devtools_instrumentation.h +++ content/browser/devtools/devtools_instrumentation.h @@ -12,6 +12,7 @@ @@ -9,8 +9,8 @@ index 0825bf79f7d5..5bbb5b3ea05f 100644 +#include "content/common/content_export.h" #include "content/common/navigation_params.mojom.h" #include "content/public/browser/certificate_request_result_type.h" - #include "services/network/public/mojom/network_service.mojom.h" -@@ -52,7 +53,7 @@ void ApplyNetworkRequestOverrides(FrameTreeNode* frame_tree_node, + #include "mojo/public/cpp/bindings/pending_receiver.h" +@@ -48,7 +49,7 @@ void ApplyNetworkRequestOverrides(FrameTreeNode* frame_tree_node, mojom::BeginNavigationParams* begin_params, bool* report_raw_headers); @@ -55,10 +55,10 @@ index 886bdf0edf8f..1d714000cce5 100644 blink::mojom::V8CacheOptions GetV8CacheOptions(); diff --git third_party/blink/renderer/controller/BUILD.gn third_party/blink/renderer/controller/BUILD.gn -index 45c823a5f5cd..e8f82939e163 100644 +index afb225949027..d0647753af2b 100644 --- third_party/blink/renderer/controller/BUILD.gn +++ third_party/blink/renderer/controller/BUILD.gn -@@ -26,6 +26,7 @@ jumbo_component("controller") { +@@ -25,6 +25,7 @@ jumbo_component("controller") { configs += [ "//build/config/compiler:wexit_time_destructors", @@ -66,7 +66,7 @@ index 45c823a5f5cd..e8f82939e163 100644 "//third_party/blink/renderer:config", "//third_party/blink/renderer:inside_blink", "//third_party/blink/renderer:non_test_config", -@@ -44,6 +45,8 @@ jumbo_component("controller") { +@@ -43,6 +44,8 @@ jumbo_component("controller") { "dev_tools_frontend_impl.h", "memory_usage_monitor.cc", "memory_usage_monitor.h", diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index c48a8e20c..f0798f221 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -12,7 +12,7 @@ index 2d5b195caecb..827fcc962640 100644 if (is_stale && stale_plugin_action == RETRY_IF_STALE_PLUGIN_LIST) { // The GetPlugins call causes the plugin list to be refreshed. Once that's diff --git chrome/browser/plugins/chrome_plugin_service_filter.cc chrome/browser/plugins/chrome_plugin_service_filter.cc -index 8916d9329a6c..bd1174231578 100644 +index e46003ea5e4a..503876cf7725 100644 --- chrome/browser/plugins/chrome_plugin_service_filter.cc +++ chrome/browser/plugins/chrome_plugin_service_filter.cc @@ -163,6 +163,7 @@ bool ChromePluginServiceFilter::IsPluginAvailable( @@ -49,7 +49,7 @@ index 8d7b5276955d..787f338e7ca6 100644 false /* allow_wildcard */, is_stale, &plugin_info, nullptr /* actual_mime_type */); diff --git chrome/browser/ui/views/frame/browser_root_view.cc chrome/browser/ui/views/frame/browser_root_view.cc -index e7f241e8db68..fe0b6e546b86 100644 +index 000ce05d8712..5806aef4d696 100644 --- chrome/browser/ui/views/frame/browser_root_view.cc +++ chrome/browser/ui/views/frame/browser_root_view.cc @@ -69,8 +69,8 @@ void OnFindURLMimeType(const GURL& url, @@ -64,7 +64,7 @@ index e7f241e8db68..fe0b6e546b86 100644 bool GetURLForDrop(const ui::DropTargetEvent& event, GURL* url) { diff --git content/browser/devtools/devtools_http_handler.cc content/browser/devtools/devtools_http_handler.cc -index 367855448a71..c9e0ecffe5f6 100644 +index 23565fc63987..88caf430a0c9 100644 --- content/browser/devtools/devtools_http_handler.cc +++ content/browser/devtools/devtools_http_handler.cc @@ -570,7 +570,7 @@ void DevToolsHttpHandler::OnJsonRequest( @@ -77,10 +77,10 @@ index 367855448a71..c9e0ecffe5f6 100644 GetContentClient()->browser()->GetUserAgent()); version.SetString("V8-Version", V8_VERSION_STRING); diff --git content/browser/frame_host/render_frame_message_filter.cc content/browser/frame_host/render_frame_message_filter.cc -index e4972dba25a6..1f39e4d115c6 100644 +index c194f7a03838..450b6cb2c3ca 100644 --- content/browser/frame_host/render_frame_message_filter.cc +++ content/browser/frame_host/render_frame_message_filter.cc -@@ -328,6 +328,7 @@ void RenderFrameMessageFilter::OnAre3DAPIsBlocked(int render_frame_id, +@@ -308,6 +308,7 @@ void RenderFrameMessageFilter::OnAre3DAPIsBlocked(int render_frame_id, void RenderFrameMessageFilter::OnGetPluginInfo( int render_frame_id, const GURL& url, @@ -88,7 +88,7 @@ index e4972dba25a6..1f39e4d115c6 100644 const url::Origin& main_frame_origin, const std::string& mime_type, bool* found, -@@ -335,8 +336,9 @@ void RenderFrameMessageFilter::OnGetPluginInfo( +@@ -315,8 +316,9 @@ void RenderFrameMessageFilter::OnGetPluginInfo( std::string* actual_mime_type) { bool allow_wildcard = true; *found = plugin_service_->GetPluginInfo( @@ -113,10 +113,10 @@ index 307a119bb9d8..c522bfcf3298 100644 const std::string& mime_type, bool* found, diff --git content/browser/loader/navigation_url_loader_impl.cc content/browser/loader/navigation_url_loader_impl.cc -index 874fb88cb970..bc6cfa7aab2e 100644 +index a223fcaccd46..9ca82d7c1c8d 100644 --- content/browser/loader/navigation_url_loader_impl.cc +++ content/browser/loader/navigation_url_loader_impl.cc -@@ -666,6 +666,13 @@ class NavigationURLLoaderImpl::URLLoaderRequestController +@@ -697,6 +697,13 @@ class NavigationURLLoaderImpl::URLLoaderRequestController resource_request_->has_user_gesture, resource_request_->request_initiator, &loader_factory); @@ -130,18 +130,15 @@ index 874fb88cb970..bc6cfa7aab2e 100644 if (loader_factory) { factory = base::MakeRefCounted( -@@ -880,8 +887,9 @@ class NavigationURLLoaderImpl::URLLoaderRequestController +@@ -905,7 +912,7 @@ class NavigationURLLoaderImpl::URLLoaderRequestController frame_tree_node->current_frame_host()->GetProcess()->GetID(); int routing_id = frame_tree_node->current_frame_host()->GetRoutingID(); bool has_plugin = PluginService::GetInstance()->GetPluginInfo( - render_process_id, routing_id, resource_request_->url, url::Origin(), -- head.mime_type, false /* allow_wildcard */, &stale, &plugin, nullptr); -+ render_process_id, routing_id, resource_request_->url, true, -+ url::Origin(), head.mime_type, false /* allow_wildcard */, &stale, -+ &plugin, nullptr); ++ render_process_id, routing_id, resource_request_->url, true, url::Origin(), + head->mime_type, false /* allow_wildcard */, &stale, &plugin, nullptr); if (stale) { - // Refresh the plugins asynchronously. diff --git content/browser/plugin_service_impl.cc content/browser/plugin_service_impl.cc index 4461a489227e..fea615b44abe 100644 --- content/browser/plugin_service_impl.cc @@ -229,10 +226,10 @@ index 632ae86c6fd6..55b749ec1242 100644 const std::vector& all_plugins); diff --git content/common/frame_messages.h content/common/frame_messages.h -index 24decdbf52a6..6438c92db226 100644 +index 06c8e08ba8d5..1e349e3c06b6 100644 --- content/common/frame_messages.h +++ content/common/frame_messages.h -@@ -1134,9 +1134,10 @@ IPC_MESSAGE_ROUTED1(FrameHostMsg_PepperStopsPlayback, +@@ -1060,9 +1060,10 @@ IPC_MESSAGE_ROUTED1(FrameHostMsg_PepperStopsPlayback, // type. If there is no matching plugin, |found| is false. // |actual_mime_type| is the actual mime type supported by the // found plugin. @@ -245,20 +242,20 @@ index 24decdbf52a6..6438c92db226 100644 std::string /* mime_type */, bool /* found */, diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index 7a02c260cc99..333f3e32824b 100644 +index b70473936db0..0cb62733520b 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h -@@ -25,6 +25,7 @@ +@@ -24,6 +24,7 @@ + #include "content/common/content_export.h" #include "content/public/browser/certificate_request_result_type.h" #include "content/public/browser/generated_code_cache_settings.h" - #include "content/public/browser/page_visibility_state.h" +#include "content/public/browser/web_contents.h" + #include "content/public/common/page_visibility_state.h" #include "content/public/common/previews_state.h" #include "content/public/common/window_container_type.mojom-forward.h" - #include "media/base/video_codecs.h" -@@ -1570,6 +1571,14 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1611,6 +1612,14 @@ class CONTENT_EXPORT ContentBrowserClient { const base::Optional& initiating_origin, - network::mojom::URLLoaderFactoryPtr* out_factory); + mojo::PendingRemote* out_factory); + // Same as above, but exposing the whole ResourceRequest object. + virtual bool HandleExternalProtocol( @@ -266,12 +263,12 @@ index 7a02c260cc99..333f3e32824b 100644 + int frame_tree_node_id, + NavigationUIData* navigation_data, + const network::ResourceRequest& request, -+ network::mojom::URLLoaderFactoryPtr* out_factory) { return false; } ++ mojo::PendingRemote* out_factory) { return false; } + // Creates an OverlayWindow to be used for Picture-in-Picture. This window // will house the content shown when in Picture-in-Picture mode. This will // return a new OverlayWindow. -@@ -1633,6 +1642,10 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1674,6 +1683,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct(); @@ -307,12 +304,12 @@ index 98c59005599e..69752184745d 100644 WebPluginInfo* plugin) = 0; diff --git content/public/renderer/content_renderer_client.h content/public/renderer/content_renderer_client.h -index c1ed9f008b49..d055159b66f9 100644 +index 6002ce70bb17..4198134b1b73 100644 --- content/public/renderer/content_renderer_client.h +++ content/public/renderer/content_renderer_client.h -@@ -72,6 +72,9 @@ class CONTENT_EXPORT ContentRendererClient { - // Notifies us that the RenderThread has been created. - virtual void RenderThreadStarted() {} +@@ -80,6 +80,9 @@ class CONTENT_EXPORT ContentRendererClient { + // binding requests from RenderProcessHost::BindReceiver(). + virtual void ExposeInterfacesToBrowser(mojo::BinderMap* binders) {} + // Notifies that the RenderThread can now send sync IPC messages. + virtual void RenderThreadConnected() {} @@ -320,7 +317,7 @@ index c1ed9f008b49..d055159b66f9 100644 // Notifies that a new RenderFrame has been created. virtual void RenderFrameCreated(RenderFrame* render_frame) {} -@@ -308,6 +311,10 @@ class CONTENT_EXPORT ContentRendererClient { +@@ -328,6 +331,10 @@ class CONTENT_EXPORT ContentRendererClient { // This method may invalidate the frame. virtual void RunScriptsAtDocumentIdle(RenderFrame* render_frame) {} @@ -331,25 +328,11 @@ index c1ed9f008b49..d055159b66f9 100644 // Allows subclasses to enable some runtime features before Blink has // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} -diff --git content/public/renderer/render_frame_observer.h content/public/renderer/render_frame_observer.h -index f764efa250cc..9b2e8c053367 100644 ---- content/public/renderer/render_frame_observer.h -+++ content/public/renderer/render_frame_observer.h -@@ -215,6 +215,9 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, - virtual void DidReceiveTransferSizeUpdate(int resource_id, - int received_data_length) {} - -+ // Called when this frame gains focus. -+ virtual void FrameFocused() {} -+ - // Called when the focused element has changed to |element|. - virtual void FocusedElementChanged(const blink::WebElement& element) {} - diff --git content/renderer/render_frame_impl.cc content/renderer/render_frame_impl.cc -index 8163ba87762e..54978cfe503a 100644 +index 32a6927eaa93..540a6cbf450b 100644 --- content/renderer/render_frame_impl.cc +++ content/renderer/render_frame_impl.cc -@@ -4149,7 +4149,8 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( +@@ -3892,7 +3892,8 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( std::string mime_type; bool found = false; Send(new FrameHostMsg_GetPluginInfo( @@ -359,22 +342,13 @@ index 8163ba87762e..54978cfe503a 100644 params.mime_type.Utf8(), &found, &info, &mime_type)); if (!found) return nullptr; -@@ -4562,6 +4563,8 @@ void RenderFrameImpl::FrameDetached(DetachType type) { - - void RenderFrameImpl::FrameFocused() { - GetFrameHost()->FrameFocused(); -+ for (auto& observer : observers_) -+ observer.FrameFocused(); - } - - void RenderFrameImpl::DidChangeName(const blink::WebString& name) { diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index e2cb076d3a69..939cc09915c2 100644 +index 078c895fe5cd..f763acde4d66 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc -@@ -810,6 +810,8 @@ void RenderThreadImpl::Init() { - - StartServiceManagerConnection(); +@@ -624,6 +624,8 @@ void RenderThreadImpl::Init() { + GetContentClient()->renderer()->CreateURLLoaderThrottleProvider( + URLLoaderThrottleProviderType::kFrame); + GetContentClient()->renderer()->RenderThreadConnected(); + @@ -382,10 +356,10 @@ index e2cb076d3a69..939cc09915c2 100644 &RenderThreadImpl::OnRendererInterfaceReceiver, base::Unretained(this))); diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc -index 541268de0cc0..4572feb2e954 100644 +index 17e84479f922..6bf6c2ab93ac 100644 --- content/renderer/renderer_blink_platform_impl.cc +++ content/renderer/renderer_blink_platform_impl.cc -@@ -981,6 +981,15 @@ RendererBlinkPlatformImpl::GetGpuFactories() { +@@ -918,6 +918,15 @@ RendererBlinkPlatformImpl::GetGpuFactories() { //------------------------------------------------------------------------------ @@ -402,10 +376,10 @@ index 541268de0cc0..4572feb2e954 100644 if (!code_cache_host_) { code_cache_host_ = mojo::SharedRemote( diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h -index 68be1b765491..8468b1b42b79 100644 +index edbf232175e4..27e4c87dd4c1 100644 --- content/renderer/renderer_blink_platform_impl.h +++ content/renderer/renderer_blink_platform_impl.h -@@ -209,6 +209,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -197,6 +197,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { media::GpuVideoAcceleratorFactories* GetGpuFactories() override; diff --git a/patch/patches/content_app_shutdown_2798.patch b/patch/patches/content_app_shutdown_2798.patch index 1ef267e46..29744e288 100644 --- a/patch/patches/content_app_shutdown_2798.patch +++ b/patch/patches/content_app_shutdown_2798.patch @@ -1,5 +1,5 @@ diff --git content/app/content_main_runner_impl.cc content/app/content_main_runner_impl.cc -index 998ef8659928..b3594db3de1f 100644 +index 8b3b16ff94f6..96e5ead655e5 100644 --- content/app/content_main_runner_impl.cc +++ content/app/content_main_runner_impl.cc @@ -43,6 +43,7 @@ @@ -10,7 +10,7 @@ index 998ef8659928..b3594db3de1f 100644 #include "base/trace_event/trace_event.h" #include "components/discardable_memory/service/discardable_shared_memory_manager.h" #include "components/download/public/common/download_task_runner.h" -@@ -1015,6 +1016,11 @@ void ContentMainRunnerImpl::Shutdown() { +@@ -996,6 +997,11 @@ void ContentMainRunnerImpl::Shutdown() { is_shutdown_ = true; } @@ -23,7 +23,7 @@ index 998ef8659928..b3594db3de1f 100644 ContentMainRunner* ContentMainRunner::Create() { return ContentMainRunnerImpl::Create(); diff --git content/app/content_main_runner_impl.h content/app/content_main_runner_impl.h -index 1a76e95cb041..bdd60c054abc 100644 +index 9575db7e2311..6b449160565d 100644 --- content/app/content_main_runner_impl.h +++ content/app/content_main_runner_impl.h @@ -51,6 +51,8 @@ class ContentMainRunnerImpl : public ContentMainRunner { @@ -36,7 +36,7 @@ index 1a76e95cb041..bdd60c054abc 100644 #if !defined(CHROME_MULTIPLE_DLL_CHILD) int RunServiceManager(MainFunctionParams& main_function_params, diff --git content/app/content_service_manager_main_delegate.cc content/app/content_service_manager_main_delegate.cc -index c8a728e73782..fe8e3e608acc 100644 +index 86d0a470a7c2..5e4b91d31e3f 100644 --- content/app/content_service_manager_main_delegate.cc +++ content/app/content_service_manager_main_delegate.cc @@ -130,4 +130,8 @@ void ContentServiceManagerMainDelegate::SetStartServiceManagerOnly( @@ -49,7 +49,7 @@ index c8a728e73782..fe8e3e608acc 100644 + } // namespace content diff --git content/app/content_service_manager_main_delegate.h content/app/content_service_manager_main_delegate.h -index 864f2a5a315a..241052bb5d99 100644 +index 0b4042aec2ae..b8643b10a02e 100644 --- content/app/content_service_manager_main_delegate.h +++ content/app/content_service_manager_main_delegate.h @@ -18,7 +18,8 @@ namespace content { diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index 9ac962587..cba9d6881 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -127,7 +127,7 @@ index bcf172e645a2..f879aa745adf 100644 // on the given |command_line|. void SetCrashKeysFromCommandLine(const base::CommandLine& command_line); diff --git components/crash/content/app/breakpad_linux.cc components/crash/content/app/breakpad_linux.cc -index 7e561db0dd60..4b97ba370377 100644 +index 27683246750c..064c679a03f1 100644 --- components/crash/content/app/breakpad_linux.cc +++ components/crash/content/app/breakpad_linux.cc @@ -28,6 +28,7 @@ @@ -186,7 +186,7 @@ index 7e561db0dd60..4b97ba370377 100644 if (info.pid > 0) { char pid_value_buf[kUint64StringSize]; uint64_t pid_value_len = my_uint64_len(info.pid); -@@ -1864,10 +1875,20 @@ void HandleCrashDump(const BreakpadInfo& info) { +@@ -1864,6 +1875,9 @@ void HandleCrashDump(const BreakpadInfo& info) { crash_reporter::internal::TransitionalCrashKeyStorage; CrashKeyStorage::Iterator crash_key_iterator(*info.crash_keys); const CrashKeyStorage::Entry* entry; @@ -196,19 +196,22 @@ index 7e561db0dd60..4b97ba370377 100644 while ((entry = crash_key_iterator.Next())) { if (g_use_crash_key_white_list && !IsInWhiteList(entry->key)) continue; -- writer.AddPairString(entry->key, entry->value); -+ parameters.insert(std::make_pair(entry->key, entry->value)); +@@ -1876,7 +1890,13 @@ void HandleCrashDump(const BreakpadInfo& info) { + ? CrashKeyStorage::value_size - 1 + : my_strlen(entry->value); + +- writer.AddPairData(entry->key, key_size, entry->value, value_size); ++ parameters.insert(std::make_pair(std::string{entry->key, key_size}, std::string{entry->value, value_size})); + } -+ + if (!parameters.empty()) + parameters = GetCrashReporterClient()->FilterParameters(parameters); + + for (const auto& param : parameters) { -+ writer.AddPairString(param.first.c_str(), param.second.c_str()); ++ writer.AddPairData(param.first.data(), param.first.size(), param.second.data(), param.second.size()); writer.AddBoundary(); writer.Flush(); } -@@ -2079,6 +2100,17 @@ void SetChannelCrashKey(const std::string& channel) { +@@ -2088,6 +2108,17 @@ void SetChannelCrashKey(const std::string& channel) { channel_key.Set(channel); } diff --git a/patch/patches/crashpad_tp_1995.patch b/patch/patches/crashpad_tp_1995.patch index 76ebdb462..a11d73806 100644 --- a/patch/patches/crashpad_tp_1995.patch +++ b/patch/patches/crashpad_tp_1995.patch @@ -40,7 +40,7 @@ index 07a70980f12a..ddf7f17325fe 100644 virtual ~PruneCondition() {} diff --git third_party/crashpad/crashpad/client/settings.cc third_party/crashpad/crashpad/client/settings.cc -index f6db78dbb8ca..30b0cf88d47a 100644 +index db9dface43f8..e5bdfebf8403 100644 --- third_party/crashpad/crashpad/client/settings.cc +++ third_party/crashpad/crashpad/client/settings.cc @@ -86,7 +86,7 @@ void ScopedLockedFileHandleTraits::Free(FileHandle handle) { diff --git a/patch/patches/extensions_1947.patch b/patch/patches/extensions_1947.patch index 0e6e92af7..a8bae1dc2 100644 --- a/patch/patches/extensions_1947.patch +++ b/patch/patches/extensions_1947.patch @@ -27,10 +27,10 @@ index 3841b7adf65d..41ca32ea5e2f 100644 auto* browser_context = web_contents->GetBrowserContext(); diff --git extensions/browser/extension_host.cc extensions/browser/extension_host.cc -index 5dc2d564c85a..864f2f12657c 100644 +index 55284840012b..c24e5ee96ae0 100644 --- extensions/browser/extension_host.cc +++ extensions/browser/extension_host.cc -@@ -67,11 +67,12 @@ ExtensionHost::ExtensionHost(const Extension* extension, +@@ -66,11 +66,12 @@ ExtensionHost::ExtensionHost(const Extension* extension, DCHECK(host_type == VIEW_TYPE_EXTENSION_BACKGROUND_PAGE || host_type == VIEW_TYPE_EXTENSION_DIALOG || host_type == VIEW_TYPE_EXTENSION_POPUP); @@ -47,7 +47,7 @@ index 5dc2d564c85a..864f2f12657c 100644 render_view_host_ = host_contents_->GetRenderViewHost(); -@@ -86,6 +87,48 @@ ExtensionHost::ExtensionHost(const Extension* extension, +@@ -85,6 +86,48 @@ ExtensionHost::ExtensionHost(const Extension* extension, dispatcher()->set_delegate(this); } @@ -97,7 +97,7 @@ index 5dc2d564c85a..864f2f12657c 100644 ExtensionRegistry::Get(browser_context_)->RemoveObserver(this); diff --git extensions/browser/extension_host.h extensions/browser/extension_host.h -index c0f80fd848d6..75b0e53ae68e 100644 +index a2914294a795..5140f9f5b165 100644 --- extensions/browser/extension_host.h +++ extensions/browser/extension_host.h @@ -52,13 +52,19 @@ class ExtensionHost : public DeferredStartRenderHost, @@ -121,7 +121,7 @@ index c0f80fd848d6..75b0e53ae68e 100644 content::RenderViewHost* render_view_host() const; content::RenderProcessHost* render_process_host() const; bool has_loaded_once() const { return has_loaded_once_; } -@@ -181,7 +187,8 @@ class ExtensionHost : public DeferredStartRenderHost, +@@ -176,7 +182,8 @@ class ExtensionHost : public DeferredStartRenderHost, content::BrowserContext* browser_context_; // The host for our HTML content. @@ -132,10 +132,10 @@ index c0f80fd848d6..75b0e53ae68e 100644 // A weak pointer to the current or pending RenderViewHost. We don't access // this through the host_contents because we want to deal with the pending diff --git extensions/browser/extensions_browser_client.h extensions/browser/extensions_browser_client.h -index 6d8ee7b85467..706a06d4a83c 100644 +index 72defe9fa9de..31041cd2a459 100644 --- extensions/browser/extensions_browser_client.h +++ extensions/browser/extensions_browser_client.h -@@ -54,6 +54,7 @@ class ComponentExtensionResourceManager; +@@ -57,6 +57,7 @@ class ComponentExtensionResourceManager; class Extension; class ExtensionCache; class ExtensionError; @@ -143,7 +143,7 @@ index 6d8ee7b85467..706a06d4a83c 100644 class ExtensionHostDelegate; class ExtensionSet; class ExtensionSystem; -@@ -193,6 +194,14 @@ class ExtensionsBrowserClient { +@@ -196,6 +197,14 @@ class ExtensionsBrowserClient { virtual std::unique_ptr CreateExtensionHostDelegate() = 0; @@ -159,10 +159,10 @@ index 6d8ee7b85467..706a06d4a83c 100644 // once each time the extensions system is loaded per browser_context. The // implementation may wish to use the BrowserContext to record the current diff --git extensions/browser/process_manager.cc extensions/browser/process_manager.cc -index e3220c480f15..e014b6bb618c 100644 +index 6c235f6a15b3..b0b907b63d32 100644 --- extensions/browser/process_manager.cc +++ extensions/browser/process_manager.cc -@@ -381,9 +381,16 @@ bool ProcessManager::CreateBackgroundHost(const Extension* extension, +@@ -385,9 +385,16 @@ bool ProcessManager::CreateBackgroundHost(const Extension* extension, return true; // TODO(kalman): return false here? It might break things... DVLOG(1) << "CreateBackgroundHost " << extension->id(); diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index effa68d83..8cfd6a193 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -1,8 +1,8 @@ diff --git .gn .gn -index 20f2aad03c82..8cc64748b027 100644 +index 62f3a6199ac3..fb0eb9b4b6ca 100644 --- .gn +++ .gn -@@ -654,6 +654,8 @@ exec_script_whitelist = +@@ -649,6 +649,8 @@ exec_script_whitelist = "//chrome/android/webapk/shell_apk/prepare_upload_dir/BUILD.gn", @@ -12,10 +12,10 @@ index 20f2aad03c82..8cc64748b027 100644 # https://crbug.com/474506. "//clank/java/BUILD.gn", diff --git BUILD.gn BUILD.gn -index b2d4f2f591e9..a19e53cfd6a9 100644 +index efaf5b31ee37..2d9abf7a5e96 100644 --- BUILD.gn +++ BUILD.gn -@@ -211,6 +211,7 @@ group("gn_all") { +@@ -213,6 +213,7 @@ group("gn_all") { if (!is_ios && !is_fuchsia) { deps += [ @@ -56,7 +56,7 @@ index 982fbe8d3f0d..e757be4688f1 100644 + "studio path") } diff --git build/toolchain/win/setup_toolchain.py build/toolchain/win/setup_toolchain.py -index 9ee69df7d210..00ad4b3be81a 100644 +index 53fac69229a2..4eacf06265d1 100644 --- build/toolchain/win/setup_toolchain.py +++ build/toolchain/win/setup_toolchain.py @@ -142,22 +142,25 @@ def _LoadToolchainEnv(cpu, sdk_dir, target_store): @@ -100,10 +100,10 @@ index 9ee69df7d210..00ad4b3be81a 100644 diff --git build/vs_toolchain.py build/vs_toolchain.py -index c3503cc47630..cdf5ec0dc95b 100755 +index 2101755c6694..4410ece82aa2 100755 --- build/vs_toolchain.py +++ build/vs_toolchain.py -@@ -86,11 +86,18 @@ def SetEnvironmentAndGetRuntimeDllDirs(): +@@ -90,11 +90,18 @@ def SetEnvironmentAndGetRuntimeDllDirs(): runtime_path = os.path.pathsep.join(vs_runtime_dll_dirs) os.environ['PATH'] = runtime_path + os.path.pathsep + os.environ['PATH'] elif sys.platform == 'win32' and not depot_tools_win_toolchain: @@ -123,10 +123,10 @@ index c3503cc47630..cdf5ec0dc95b 100755 # directory in order to run binaries locally, but they are needed in order # to create isolates or the mini_installer. Copying them to the output diff --git chrome/chrome_paks.gni chrome/chrome_paks.gni -index f4faf8c2eeb3..687c50622259 100644 +index 6469473e6a79..f9f630bfe0df 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni -@@ -275,7 +275,7 @@ template("chrome_paks") { +@@ -284,7 +284,7 @@ template("chrome_paks") { } input_locales = locales @@ -136,10 +136,10 @@ index f4faf8c2eeb3..687c50622259 100644 if (is_mac) { output_locales = locales_as_mac_outputs diff --git chrome/installer/mini_installer/BUILD.gn chrome/installer/mini_installer/BUILD.gn -index 99a1bc7cb24f..32ca34ac39b7 100644 +index bebec015f85d..cf4151a0f23e 100644 --- chrome/installer/mini_installer/BUILD.gn +++ chrome/installer/mini_installer/BUILD.gn -@@ -138,7 +138,7 @@ template("generate_mini_installer") { +@@ -140,7 +140,7 @@ template("generate_mini_installer") { inputs = [ "$chrome_dll_file", "$root_out_dir/chrome.exe", diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index 83c91625a..877796a07 100644 --- a/patch/patches/gritsettings.patch +++ b/patch/patches/gritsettings.patch @@ -1,8 +1,8 @@ diff --git tools/gritsettings/resource_ids tools/gritsettings/resource_ids -index 60aa21e9e270..261b5dc02037 100644 +index 12bbb5759e64..ededefbf6814 100644 --- tools/gritsettings/resource_ids +++ tools/gritsettings/resource_ids -@@ -467,4 +467,11 @@ +@@ -577,4 +577,11 @@ # Please read the header and find the right section above instead. # Resource ids starting at 31000 are reserved for projects built on Chromium. diff --git a/patch/patches/libxml_visibility.patch b/patch/patches/libxml_visibility.patch new file mode 100644 index 000000000..001a3ee22 --- /dev/null +++ b/patch/patches/libxml_visibility.patch @@ -0,0 +1,12 @@ +diff --git third_party/libxml/BUILD.gn third_party/libxml/BUILD.gn +index 28b7c9d20c05..5b5d865b6ea8 100644 +--- third_party/libxml/BUILD.gn ++++ third_party/libxml/BUILD.gn +@@ -145,6 +145,7 @@ static_library("libxml") { + "//third_party/blink/renderer/*", + "//third_party/fontconfig", + "//third_party/libxslt", ++ "//cef:*", + ] + if (is_ios) { + foreach(tgt, ios_libxml_visibility_additions) { diff --git a/patch/patches/linux_assets_path_1936.patch b/patch/patches/linux_assets_path_1936.patch index 70d884769..ec1ef5327 100644 --- a/patch/patches/linux_assets_path_1936.patch +++ b/patch/patches/linux_assets_path_1936.patch @@ -1,8 +1,8 @@ diff --git content/browser/child_process_launcher_helper_linux.cc content/browser/child_process_launcher_helper_linux.cc -index 720b92a1a3a7..4e5551a64ced 100644 +index ea5258a03f83..843f28411eea 100644 --- content/browser/child_process_launcher_helper_linux.cc +++ content/browser/child_process_launcher_helper_linux.cc -@@ -177,7 +177,7 @@ void ChildProcessLauncherHelper::ResetRegisteredFilesForTesting() { +@@ -164,7 +164,7 @@ void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread( base::File OpenFileToShare(const base::FilePath& path, base::MemoryMappedFile::Region* region) { base::FilePath exe_dir; @@ -25,7 +25,7 @@ index a277ffa5eb59..3935b9f8c17c 100644 if (base::PathExists(sandbox_candidate)) sandbox_binary = sandbox_candidate; diff --git ui/gl/init/gl_initializer_x11.cc ui/gl/init/gl_initializer_x11.cc -index 3fc37d1c06bd..becd622d631e 100644 +index 60f73ddc504e..3d19011257aa 100644 --- ui/gl/init/gl_initializer_x11.cc +++ ui/gl/init/gl_initializer_x11.cc @@ -86,7 +86,7 @@ bool InitializeStaticEGLInternal(GLImplementation implementation) { diff --git a/patch/patches/linux_gtk_2014.patch b/patch/patches/linux_gtk_2014.patch index 8dc1a4056..3949a66c1 100644 --- a/patch/patches/linux_gtk_2014.patch +++ b/patch/patches/linux_gtk_2014.patch @@ -1,48 +1,8 @@ -diff --git chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc -index 07f06ac694f5..831fd9f82dbe 100644 ---- chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc -+++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc -@@ -6,6 +6,7 @@ - - #include "base/bind.h" - #include "base/run_loop.h" -+#include "cef/libcef/features/features.h" - #include "chrome/browser/chrome_browser_main.h" - #include "chrome/browser/profiles/profile.h" - #include "chrome/browser/themes/theme_service.h" -@@ -29,6 +30,7 @@ - - namespace { - -+#if !BUILDFLAG(ENABLE_CEF) - ui::NativeTheme* GetNativeThemeForWindow(aura::Window* window) { - if (!window) - return nullptr; -@@ -53,6 +55,7 @@ ui::NativeTheme* GetNativeThemeForWindow(aura::Window* window) { - - return ui::NativeTheme::GetInstanceForNativeUi(); - } -+#endif // !BUILDFLAG(ENABLE_CEF) - - } // namespace - -@@ -67,9 +70,11 @@ void ChromeBrowserMainExtraPartsViewsLinux::PreEarlyInitialization() { - if (!linux_ui) - return; - -+#if !BUILDFLAG(ENABLE_CEF) - linux_ui->SetNativeThemeOverride( - base::BindRepeating(&GetNativeThemeForWindow)); - views::LinuxUI::SetInstance(linux_ui); -+#endif - } - - void ChromeBrowserMainExtraPartsViewsLinux::ToolkitInitialized() { diff --git chrome/test/BUILD.gn chrome/test/BUILD.gn -index dde2eafb88f0..2594b51f35b1 100644 +index 5c45bc5e6b75..97282b45f57e 100644 --- chrome/test/BUILD.gn +++ chrome/test/BUILD.gn -@@ -4609,7 +4609,7 @@ test("unit_tests") { +@@ -4720,7 +4720,7 @@ test("unit_tests") { if (use_gio) { configs += [ "//build/linux:gio_config" ] } @@ -51,7 +11,7 @@ index dde2eafb88f0..2594b51f35b1 100644 deps += [ "//chrome/browser/ui/libgtkui" ] } -@@ -5666,7 +5666,7 @@ if (!is_android) { +@@ -5708,7 +5708,7 @@ if (!is_android) { # suites, it seems like one or another starts timing out too. "../browser/ui/views/keyboard_access_browsertest.cc", ] diff --git a/patch/patches/mac_gpu.patch b/patch/patches/mac_gpu.patch index f3379d100..7203d3c03 100644 --- a/patch/patches/mac_gpu.patch +++ b/patch/patches/mac_gpu.patch @@ -1,5 +1,5 @@ diff --git ui/gl/init/gl_initializer_mac.cc ui/gl/init/gl_initializer_mac.cc -index cadd51581c1b..d266c9ddc225 100644 +index c2725a66342d..5dfad8be2f8d 100644 --- ui/gl/init/gl_initializer_mac.cc +++ ui/gl/init/gl_initializer_mac.cc @@ -46,11 +46,8 @@ bool InitializeOneOffForSandbox() { diff --git a/patch/patches/message_pump_mac_2495.patch b/patch/patches/message_pump_mac_2495.patch index 3fc170919..8a1620a09 100644 --- a/patch/patches/message_pump_mac_2495.patch +++ b/patch/patches/message_pump_mac_2495.patch @@ -1,8 +1,8 @@ diff --git base/message_loop/message_pump_mac.mm base/message_loop/message_pump_mac.mm -index 666b6cdca80b..239f6fad81a1 100644 +index 7711944f8e30..676f69e7890a 100644 --- base/message_loop/message_pump_mac.mm +++ base/message_loop/message_pump_mac.mm -@@ -800,7 +800,8 @@ void MessagePumpUIApplication::Attach(Delegate* delegate) { +@@ -777,7 +777,8 @@ void MessagePumpUIApplication::Detach() { #else ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { @@ -12,7 +12,7 @@ index 666b6cdca80b..239f6fad81a1 100644 DCHECK_EQ(kNSApplicationModalSafeModeMask, g_app_pump->GetModeMask()); // Pumping events in private runloop modes is known to interact badly with // app modal windows like NSAlert. -@@ -812,7 +813,8 @@ ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { +@@ -789,7 +790,8 @@ ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { } ScopedPumpMessagesInPrivateModes::~ScopedPumpMessagesInPrivateModes() { diff --git a/patch/patches/mime_handler_view_guest_1565_2727.patch b/patch/patches/mime_handler_view_guest_1565_2727.patch index 025e6046f..8d8879d5a 100644 --- a/patch/patches/mime_handler_view_guest_1565_2727.patch +++ b/patch/patches/mime_handler_view_guest_1565_2727.patch @@ -1,32 +1,5 @@ -diff --git content/browser/browser_plugin/browser_plugin_guest.cc content/browser/browser_plugin/browser_plugin_guest.cc -index 6eb21be63dec..8617eff6bfc8 100644 ---- content/browser/browser_plugin/browser_plugin_guest.cc -+++ content/browser/browser_plugin/browser_plugin_guest.cc -@@ -820,7 +820,8 @@ void BrowserPluginGuest::OnWillAttachComplete( - static_cast(GetWebContents()->GetView()); - if (!web_contents()->GetRenderViewHost()->GetWidget()->GetView()) { - web_contents_view->CreateViewForWidget( -- web_contents()->GetRenderViewHost()->GetWidget(), true); -+ web_contents()->GetRenderViewHost()->GetWidget(), -+ embedder_web_contents->GetRenderViewHost()->GetWidget()); - } - } - -diff --git content/browser/frame_host/interstitial_page_impl.cc content/browser/frame_host/interstitial_page_impl.cc -index 7bb71f92bb0a..a6b89a831044 100644 ---- content/browser/frame_host/interstitial_page_impl.cc -+++ content/browser/frame_host/interstitial_page_impl.cc -@@ -619,7 +619,7 @@ WebContentsView* InterstitialPageImpl::CreateWebContentsView() { - WebContentsView* wcv = - static_cast(web_contents())->GetView(); - RenderWidgetHostViewBase* view = -- wcv->CreateViewForWidget(render_view_host_->GetWidget(), false); -+ wcv->CreateViewForWidget(render_view_host_->GetWidget(), nullptr); - render_view_host_->GetWidget()->SetView(view); - render_view_host_->GetMainFrame()->AllowBindings( - BINDINGS_POLICY_DOM_AUTOMATION); diff --git content/browser/web_contents/web_contents_view.h content/browser/web_contents/web_contents_view.h -index bff5b42b166c..4e21a23e364b 100644 +index 4c5fb180bf82..f97991e11694 100644 --- content/browser/web_contents/web_contents_view.h +++ content/browser/web_contents/web_contents_view.h @@ -23,7 +23,7 @@ struct DropData; @@ -38,191 +11,11 @@ index bff5b42b166c..4e21a23e364b 100644 public: virtual ~WebContentsView() {} -@@ -83,13 +83,9 @@ class WebContentsView { - // Sets up the View that holds the rendered web page, receives messages for - // it and contains page plugins. The host view should be sized to the current - // size of the WebContents. -- // -- // |is_guest_view_hack| is temporary hack and will be removed once -- // RenderWidgetHostViewGuest is not dependent on platform view. -- // TODO(lazyboy): Remove |is_guest_view_hack| once http://crbug.com/330264 is -- // fixed. - virtual RenderWidgetHostViewBase* CreateViewForWidget( -- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) = 0; -+ RenderWidgetHost* render_widget_host, -+ RenderWidgetHost* embedder_render_widget_host) = 0; - - // Creates a new View that holds a non-top-level widget and receives messages - // for it. -diff --git content/browser/web_contents/web_contents_view_aura.cc content/browser/web_contents/web_contents_view_aura.cc -index fbefaf207527..093c9cfa2bd1 100644 ---- content/browser/web_contents/web_contents_view_aura.cc -+++ content/browser/web_contents/web_contents_view_aura.cc -@@ -966,7 +966,8 @@ void WebContentsViewAura::CreateView(gfx::NativeView context) { - } - - RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( -- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) { -+ RenderWidgetHost* render_widget_host, -+ RenderWidgetHost* embedder_render_widget_host) { - if (render_widget_host->GetView()) { - // During testing, the view will already be set up in most cases to the - // test view, so we don't want to clobber it with a real one. To verify that -@@ -978,6 +979,7 @@ RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( - render_widget_host->GetView()); - } - -+ const bool is_guest_view_hack = !!embedder_render_widget_host; - RenderWidgetHostViewAura* view = - g_create_render_widget_host_view - ? g_create_render_widget_host_view(render_widget_host, -diff --git content/browser/web_contents/web_contents_view_aura.h content/browser/web_contents/web_contents_view_aura.h -index 180f4fa00e46..05ec3dec8331 100644 ---- content/browser/web_contents/web_contents_view_aura.h -+++ content/browser/web_contents/web_contents_view_aura.h -@@ -148,7 +148,7 @@ class CONTENT_EXPORT WebContentsViewAura - void CreateView(gfx::NativeView context) override; - RenderWidgetHostViewBase* CreateViewForWidget( - RenderWidgetHost* render_widget_host, -- bool is_guest_view_hack) override; -+ RenderWidgetHost* embedder_render_widget_host) override; - RenderWidgetHostViewBase* CreateViewForChildWidget( - RenderWidgetHost* render_widget_host) override; - void SetPageTitle(const base::string16& title) override; -diff --git content/browser/web_contents/web_contents_view_child_frame.cc content/browser/web_contents/web_contents_view_child_frame.cc -index a766385cf589..fa6832be0759 100644 ---- content/browser/web_contents/web_contents_view_child_frame.cc -+++ content/browser/web_contents/web_contents_view_child_frame.cc -@@ -83,7 +83,7 @@ void WebContentsViewChildFrame::CreateView(gfx::NativeView context) { - - RenderWidgetHostViewBase* WebContentsViewChildFrame::CreateViewForWidget( - RenderWidgetHost* render_widget_host, -- bool is_guest_view_hack) { -+ RenderWidgetHost* embedder_render_widget_host) { - return RenderWidgetHostViewChildFrame::Create(render_widget_host); - } - -diff --git content/browser/web_contents/web_contents_view_child_frame.h content/browser/web_contents/web_contents_view_child_frame.h -index 412bb35e4b69..2f5f7ac02b20 100644 ---- content/browser/web_contents/web_contents_view_child_frame.h -+++ content/browser/web_contents/web_contents_view_child_frame.h -@@ -39,7 +39,7 @@ class WebContentsViewChildFrame : public WebContentsView, - void CreateView(gfx::NativeView context) override; - RenderWidgetHostViewBase* CreateViewForWidget( - RenderWidgetHost* render_widget_host, -- bool is_guest_view_hack) override; -+ RenderWidgetHost* embedder_render_widget_host) override; - RenderWidgetHostViewBase* CreateViewForChildWidget( - RenderWidgetHost* render_widget_host) override; - void SetPageTitle(const base::string16& title) override; -diff --git content/browser/web_contents/web_contents_view_guest.cc content/browser/web_contents/web_contents_view_guest.cc -index c45581fd22b7..f9507a4e7db5 100644 ---- content/browser/web_contents/web_contents_view_guest.cc -+++ content/browser/web_contents/web_contents_view_guest.cc -@@ -68,6 +68,8 @@ gfx::NativeWindow WebContentsViewGuest::GetTopLevelNativeWindow() const { - - void WebContentsViewGuest::OnGuestAttached(WebContentsView* parent_view) { - #if defined(USE_AURA) -+ if (!platform_view_->GetNativeView()) -+ return; - // In aura, ScreenPositionClient doesn't work properly if we do - // not have the native view associated with this WebContentsViewGuest in the - // view hierarchy. We add this view as embedder's child here. -@@ -78,6 +80,8 @@ void WebContentsViewGuest::OnGuestAttached(WebContentsView* parent_view) { - } - - void WebContentsViewGuest::OnGuestDetached(WebContentsView* old_parent_view) { -+ if (!platform_view_->GetNativeView()) -+ return; - #if defined(USE_AURA) - old_parent_view->GetNativeView()->RemoveChild( - platform_view_->GetNativeView()); -@@ -118,7 +122,8 @@ void WebContentsViewGuest::CreateView(gfx::NativeView context) { - } - - RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForWidget( -- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) { -+ RenderWidgetHost* render_widget_host, -+ RenderWidgetHost* embedder_render_widget_host) { - if (render_widget_host->GetView()) { - // During testing, the view will already be set up in most cases to the - // test view, so we don't want to clobber it with a real one. To verify that -@@ -130,11 +135,19 @@ RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForWidget( - render_widget_host->GetView()); - } - -+ embedder_render_widget_host = -+ guest_->embedder_web_contents()->GetRenderViewHost()->GetWidget(); - RenderWidgetHostViewBase* platform_widget = -- platform_view_->CreateViewForWidget(render_widget_host, true); -+ platform_view_->CreateViewForWidget(render_widget_host, -+ embedder_render_widget_host); - -- return RenderWidgetHostViewGuest::Create(render_widget_host, guest_, -- platform_widget->GetWeakPtr()); -+ RenderWidgetHostViewGuest* guest_view = -+ RenderWidgetHostViewGuest::Create(render_widget_host, guest_, -+ platform_widget->GetWeakPtr()); -+ platform_widget->InitAsGuest(embedder_render_widget_host->GetView(), -+ guest_view); -+ -+ return guest_view; - } - - RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForChildWidget( -diff --git content/browser/web_contents/web_contents_view_guest.h content/browser/web_contents/web_contents_view_guest.h -index 12aa7cd4799d..bcd4e242c2f7 100644 ---- content/browser/web_contents/web_contents_view_guest.h -+++ content/browser/web_contents/web_contents_view_guest.h -@@ -57,7 +57,7 @@ class WebContentsViewGuest : public WebContentsView, - void CreateView(gfx::NativeView context) override; - RenderWidgetHostViewBase* CreateViewForWidget( - RenderWidgetHost* render_widget_host, -- bool is_guest_view_hack) override; -+ RenderWidgetHost* embedder_render_widget_host) override; - RenderWidgetHostViewBase* CreateViewForChildWidget( - RenderWidgetHost* render_widget_host) override; - void SetPageTitle(const base::string16& title) override; -diff --git content/browser/web_contents/web_contents_view_mac.h content/browser/web_contents/web_contents_view_mac.h -index 6fdec8c0a5e2..f57dc03069a5 100644 ---- content/browser/web_contents/web_contents_view_mac.h -+++ content/browser/web_contents/web_contents_view_mac.h -@@ -76,7 +76,7 @@ class WebContentsViewMac : public WebContentsView, - void CreateView(gfx::NativeView context) override; - RenderWidgetHostViewBase* CreateViewForWidget( - RenderWidgetHost* render_widget_host, -- bool is_guest_view_hack) override; -+ RenderWidgetHost* embedder_render_widget_host) override; - RenderWidgetHostViewBase* CreateViewForChildWidget( - RenderWidgetHost* render_widget_host) override; - void SetPageTitle(const base::string16& title) override; -diff --git content/browser/web_contents/web_contents_view_mac.mm content/browser/web_contents/web_contents_view_mac.mm -index 4721a9b3f511..dfdd46d0c5d2 100644 ---- content/browser/web_contents/web_contents_view_mac.mm -+++ content/browser/web_contents/web_contents_view_mac.mm -@@ -326,7 +326,8 @@ void WebContentsViewMac::CreateView(gfx::NativeView context) { - } - - RenderWidgetHostViewBase* WebContentsViewMac::CreateViewForWidget( -- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) { -+ RenderWidgetHost* render_widget_host, -+ RenderWidgetHost* embedder_render_widget_host) { - if (render_widget_host->GetView()) { - // During testing, the view will already be set up in most cases to the - // test view, so we don't want to clobber it with a real one. To verify that -@@ -338,6 +339,7 @@ RenderWidgetHostViewBase* WebContentsViewMac::CreateViewForWidget( - render_widget_host->GetView()); - } - -+ const bool is_guest_view_hack = !!embedder_render_widget_host; - RenderWidgetHostViewMac* view = - g_create_render_widget_host_view - ? g_create_render_widget_host_view(render_widget_host, diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc -index fa13ab856de9..81216c2bc8ff 100644 +index 487f031c08c7..172884179b16 100644 --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc -@@ -215,6 +215,8 @@ void MimeHandlerViewGuest::CreateWebContents( +@@ -207,6 +207,8 @@ void MimeHandlerViewGuest::CreateWebContents( WebContents::CreateParams params(browser_context(), guest_site_instance.get()); params.guest_delegate = this; @@ -231,7 +24,7 @@ index fa13ab856de9..81216c2bc8ff 100644 // TODO(erikchen): Fix ownership semantics for guest views. // https://crbug.com/832879. std::move(callback).Run( -@@ -230,6 +232,9 @@ void MimeHandlerViewGuest::CreateWebContents( +@@ -217,6 +219,9 @@ void MimeHandlerViewGuest::CreateWebContents( } void MimeHandlerViewGuest::DidAttachToEmbedder() { @@ -241,7 +34,7 @@ index fa13ab856de9..81216c2bc8ff 100644 web_contents()->GetController().LoadURL( stream_->handler_url(), content::Referrer(), ui::PAGE_TRANSITION_AUTO_TOPLEVEL, std::string()); -@@ -259,6 +264,11 @@ bool MimeHandlerViewGuest::ShouldDestroyOnDetach() const { +@@ -246,6 +251,11 @@ bool MimeHandlerViewGuest::ShouldDestroyOnDetach() const { return true; } @@ -254,10 +47,10 @@ index fa13ab856de9..81216c2bc8ff 100644 WebContents* source, const content::OpenURLParams& params) { diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h -index 3d0b70d06fe7..06d5e5d4e9e3 100644 +index 242db17f8f3b..80e9a5663588 100644 --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h -@@ -127,6 +127,7 @@ class MimeHandlerViewGuest +@@ -130,6 +130,7 @@ class MimeHandlerViewGuest void EmbedderFullscreenToggled(bool entered_fullscreen) final; bool ZoomPropagatesFromEmbedderToGuest() const final; bool ShouldDestroyOnDetach() const final; diff --git a/patch/patches/osr_fling_2745.patch b/patch/patches/osr_fling_2745.patch index 342e290ba..7800a6006 100644 --- a/patch/patches/osr_fling_2745.patch +++ b/patch/patches/osr_fling_2745.patch @@ -41,10 +41,10 @@ index cc4b13a7b9c6..84f3b9ed7cf4 100644 } // namespace content diff --git content/browser/renderer_host/render_widget_host_impl.cc content/browser/renderer_host/render_widget_host_impl.cc -index cfa68bf03b99..02918742fd15 100644 +index a91a66bca29d..bff1662c7323 100644 --- content/browser/renderer_host/render_widget_host_impl.cc +++ content/browser/renderer_host/render_widget_host_impl.cc -@@ -2661,6 +2661,11 @@ void RenderWidgetHostImpl::SetNeedsBeginFrameForFlingProgress() { +@@ -2692,6 +2692,11 @@ void RenderWidgetHostImpl::SetNeedsBeginFrameForFlingProgress() { SetNeedsBeginFrame(true); } @@ -57,10 +57,10 @@ index cfa68bf03b99..02918742fd15 100644 const WebInputEvent& event) { if (base::FeatureList::IsEnabled(features::kBrowserVerifiedUserActivation) && diff --git content/browser/renderer_host/render_widget_host_impl.h content/browser/renderer_host/render_widget_host_impl.h -index a3f9a2d865cc..2d6bdc5b65c2 100644 +index 15a23f954089..87715137b8b4 100644 --- content/browser/renderer_host/render_widget_host_impl.h +++ content/browser/renderer_host/render_widget_host_impl.h -@@ -714,6 +714,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -736,6 +736,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl void ProgressFlingIfNeeded(base::TimeTicks current_time); void StopFling(); void SetNeedsBeginFrameForFlingProgress(); diff --git a/patch/patches/prefs_content_1161.patch b/patch/patches/prefs_content_1161.patch index 67608abbd..f305d139f 100644 --- a/patch/patches/prefs_content_1161.patch +++ b/patch/patches/prefs_content_1161.patch @@ -1,8 +1,8 @@ diff --git content/public/common/common_param_traits_macros.h content/public/common/common_param_traits_macros.h -index 5411d32dbfd1..faf738b6b827 100644 +index fcbfa6b8a81e..9bf5ad6a581b 100644 --- content/public/common/common_param_traits_macros.h +++ content/public/common/common_param_traits_macros.h -@@ -191,6 +191,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences) +@@ -184,6 +184,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences) IPC_STRUCT_TRAITS_MEMBER(main_frame_resizes_are_orientation_changes) IPC_STRUCT_TRAITS_MEMBER(initialize_at_minimum_page_scale) IPC_STRUCT_TRAITS_MEMBER(smart_insert_delete_enabled) @@ -11,34 +11,34 @@ index 5411d32dbfd1..faf738b6b827 100644 IPC_STRUCT_TRAITS_MEMBER(navigate_on_drag_drop) IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled) diff --git content/public/common/web_preferences.cc content/public/common/web_preferences.cc -index 4b765944962d..7fe6d042bd53 100644 +index b982618bef48..075efffc1ad7 100644 --- content/public/common/web_preferences.cc +++ content/public/common/web_preferences.cc -@@ -167,6 +167,7 @@ WebPreferences::WebPreferences() +@@ -165,6 +165,7 @@ WebPreferences::WebPreferences() + spatial_navigation_enabled(false), caret_browsing_enabled(false), - use_solid_color_scrollbars(false), navigate_on_drag_drop(true), + base_background_color(0xFFFFFFFF), // Color::white v8_cache_options(blink::mojom::V8CacheOptions::kDefault), record_whole_document(false), cookie_enabled(true), diff --git content/public/common/web_preferences.h content/public/common/web_preferences.h -index 700cba9043f0..6e0b11c28d89 100644 +index 04c03cfcb774..4f5488ef1699 100644 --- content/public/common/web_preferences.h +++ content/public/common/web_preferences.h -@@ -183,6 +183,7 @@ struct CONTENT_EXPORT WebPreferences { +@@ -180,6 +180,7 @@ struct CONTENT_EXPORT WebPreferences { + bool spatial_navigation_enabled; bool caret_browsing_enabled; - bool use_solid_color_scrollbars; bool navigate_on_drag_drop; + uint32_t base_background_color; blink::mojom::V8CacheOptions v8_cache_options; bool record_whole_document; diff --git content/renderer/render_view_impl.cc content/renderer/render_view_impl.cc -index 16b6279b2228..f6c6af2559da 100644 +index 556a107ed038..2dbf8cc69c7e 100644 --- content/renderer/render_view_impl.cc +++ content/renderer/render_view_impl.cc -@@ -1020,6 +1020,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, +@@ -1015,6 +1015,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, #endif WebRuntimeFeatures::EnableTranslateService(prefs.translate_service_available); diff --git a/patch/patches/print_preview_123.patch b/patch/patches/print_preview_123.patch index bc841d720..338f9d855 100644 --- a/patch/patches/print_preview_123.patch +++ b/patch/patches/print_preview_123.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/download/download_prefs.cc chrome/browser/download/download_prefs.cc -index 207cce649db5..5dadc32eea18 100644 +index c880e6ba1766..d168a5fb44bb 100644 --- chrome/browser/download/download_prefs.cc +++ chrome/browser/download/download_prefs.cc @@ -22,6 +22,7 @@ @@ -21,7 +21,7 @@ index 207cce649db5..5dadc32eea18 100644 using content::BrowserContext; using content::BrowserThread; using content::DownloadManager; -@@ -307,7 +312,11 @@ DownloadPrefs* DownloadPrefs::FromDownloadManager( +@@ -309,7 +314,11 @@ DownloadPrefs* DownloadPrefs::FromDownloadManager( // static DownloadPrefs* DownloadPrefs::FromBrowserContext( content::BrowserContext* context) { @@ -34,7 +34,7 @@ index 207cce649db5..5dadc32eea18 100644 bool DownloadPrefs::IsFromTrustedSource(const download::DownloadItem& item) { diff --git chrome/browser/printing/print_preview_dialog_controller.cc chrome/browser/printing/print_preview_dialog_controller.cc -index 3dcc3aa7bea2..637661e9d0b9 100644 +index ba6cbab2e2e0..ce4c9953abfb 100644 --- chrome/browser/printing/print_preview_dialog_controller.cc +++ chrome/browser/printing/print_preview_dialog_controller.cc @@ -16,6 +16,7 @@ @@ -45,7 +45,7 @@ index 3dcc3aa7bea2..637661e9d0b9 100644 #include "chrome/browser/browser_process.h" #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" #include "chrome/browser/printing/print_view_manager.h" -@@ -456,8 +457,11 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog( +@@ -446,8 +447,11 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog( content::HostZoomMap::Get(preview_dialog->GetSiteInstance()) ->SetZoomLevelForHostAndScheme(print_url.scheme(), print_url.host(), 0); PrintViewManager::CreateForWebContents(preview_dialog); @@ -58,49 +58,49 @@ index 3dcc3aa7bea2..637661e9d0b9 100644 // Add an entry to the map. preview_dialog_map_[preview_dialog] = initiator; diff --git chrome/browser/resources/print_preview/ui/destination_dialog.html chrome/browser/resources/print_preview/ui/destination_dialog.html -index a9f917682680..6209adcb2323 100644 +index a9873cd3c0eb..127b8cba461e 100644 --- chrome/browser/resources/print_preview/ui/destination_dialog.html +++ chrome/browser/resources/print_preview/ui/destination_dialog.html -@@ -183,9 +183,7 @@ - - -
-- -- $i18n{manage} -- -+
- - $i18n{cancel} - +@@ -147,9 +147,7 @@ + +
+
+- +- $i18n{manage} +- ++
+ + $i18n{cancel} + diff --git chrome/browser/resources/print_preview/ui/destination_select.html chrome/browser/resources/print_preview/ui/destination_select.html -index 2438ba0e47b1..8669dd740aa5 100644 +index 92127e580c67..df902f18f46d 100644 --- chrome/browser/resources/print_preview/ui/destination_select.html +++ chrome/browser/resources/print_preview/ui/destination_select.html -@@ -47,10 +47,6 @@ - -- - - +- + diff --git a/patch/patches/win_rt_2274.patch b/patch/patches/win_rt_2274.patch index aa648d034..a01828c13 100644 --- a/patch/patches/win_rt_2274.patch +++ b/patch/patches/win_rt_2274.patch @@ -1,8 +1,8 @@ diff --git services/service_manager/sandbox/win/sandbox_win.cc services/service_manager/sandbox/win/sandbox_win.cc -index 7fca3e218b4e..fc1b03056caa 100644 +index 0d4e7f5d5c29..9f27c2b06c4e 100644 --- services/service_manager/sandbox/win/sandbox_win.cc +++ services/service_manager/sandbox/win/sandbox_win.cc -@@ -929,8 +929,11 @@ sandbox::ResultCode SandboxWin::StartSandboxedProcess( +@@ -918,8 +918,11 @@ sandbox::ResultCode SandboxWin::StartSandboxedProcess( } // TODO(wfh): Relax strict handle checks for network process until root cause // for this crash can be resolved. See https://crbug.com/939590. diff --git a/tests/ceftests/os_rendering_unittest.cc b/tests/ceftests/os_rendering_unittest.cc index 3493894cb..4bdab30f7 100644 --- a/tests/ceftests/os_rendering_unittest.cc +++ b/tests/ceftests/os_rendering_unittest.cc @@ -823,18 +823,15 @@ class OSRTestHandler : public RoutingTestHandler, const CefRect& expanded_select_rect = GetScaledRect(kExpandedSelectRect); EXPECT_EQ(dirtyRects.size(), 1U); -#if defined(OS_MACOSX) - EXPECT_EQ(GetScaledInt(1), dirtyRects[0].x); - EXPECT_EQ(GetScaledInt(1), dirtyRects[0].y); -#else - EXPECT_EQ(1, dirtyRects[0].x); - EXPECT_EQ(1, dirtyRects[0].y); -#endif + + const int scaled_int_1 = GetScaledInt(1); + EXPECT_NEAR(0, dirtyRects[0].x, scaled_int_1); + EXPECT_NEAR(0, dirtyRects[0].y, scaled_int_1); if (ExpectComputedPopupSize()) { - EXPECT_EQ(expanded_select_rect.width, - dirtyRects[0].width + GetScaledInt(2)); - EXPECT_EQ(expanded_select_rect.height, - dirtyRects[0].height + GetScaledInt(2)); + EXPECT_NEAR(expanded_select_rect.width, dirtyRects[0].width, + scaled_int_1 * 2); + EXPECT_NEAR(expanded_select_rect.height, dirtyRects[0].height, + scaled_int_1 * 2); } else { EXPECT_GT(dirtyRects[0].width, kExpandedSelectRect.width); EXPECT_GT(dirtyRects[0].height, kExpandedSelectRect.height); diff --git a/tests/ceftests/osr_accessibility_unittest.cc b/tests/ceftests/osr_accessibility_unittest.cc index 815628e06..0cf10a490 100644 --- a/tests/ceftests/osr_accessibility_unittest.cc +++ b/tests/ceftests/osr_accessibility_unittest.cc @@ -168,16 +168,13 @@ class AccessibilityTestHandler : public TestHandler, GetBrowser()), 200); } else { - CefRefPtr update, event; - GetFirstUpdateAndEvent(value, update, event); - EXPECT_TRUE(update.get()); - - // Ignore other events. - if (!event.get() || event->GetString("event_type") != "focus") { + // Retrieve the "focus" event. + CefRefPtr event; + if (!GetFirstMatchingEvent(value, "focus", event)) return; - } + EXPECT_TRUE(event.get()); - // And Focus is set to expected element edit_box + // Verify that focus is set to expected element edit_box. EXPECT_EQ(edit_box_id_, event->GetInt("id")); // Now Post a delayed task to destroy the test giving @@ -257,29 +254,83 @@ class AccessibilityTestHandler : public TestHandler, TID_UI, base::Bind(&AccessibilityTestHandler::DestroyTest, this), 500); } - void GetFirstUpdateAndEvent(CefRefPtr value, - CefRefPtr& update, - CefRefPtr& event) { + static CefRefPtr GetUpdateList(CefRefPtr value) { EXPECT_TRUE(value.get()); EXPECT_EQ(value->GetType(), VTYPE_DICTIONARY); CefRefPtr topLevel = value->GetDictionary(); EXPECT_TRUE(topLevel.get()); - // Get the first update dict. - CefRefPtr updates = topLevel->GetList("updates"); - if (updates.get()) { - EXPECT_GT(updates->GetSize(), 0U); - update = updates->GetDictionary(0); - EXPECT_TRUE(update.get()); - } + return topLevel->GetList("updates"); + } - // Get the first event dict. - CefRefPtr events = topLevel->GetList("events"); - if (events.get()) { - EXPECT_GT(events->GetSize(), 0U); - event = events->GetDictionary(0); - EXPECT_TRUE(event.get()); + static size_t GetUpdateListSize(CefRefPtr value) { + CefRefPtr updates = GetUpdateList(value); + if (updates) + return updates->GetSize(); + return 0U; + } + + static CefRefPtr GetUpdateValue(CefRefPtr value, + size_t index) { + CefRefPtr updates = GetUpdateList(value); + if (!updates) + return nullptr; + EXPECT_LT(index, updates->GetSize()); + CefRefPtr update = updates->GetDictionary(index); + EXPECT_TRUE(update); + return update; + } + + static CefRefPtr GetEventList(CefRefPtr value) { + EXPECT_TRUE(value.get()); + EXPECT_EQ(value->GetType(), VTYPE_DICTIONARY); + CefRefPtr topLevel = value->GetDictionary(); + EXPECT_TRUE(topLevel.get()); + + return topLevel->GetList("events"); + } + + static size_t GetEventListSize(CefRefPtr value) { + CefRefPtr events = GetEventList(value); + if (events) + return events->GetSize(); + return 0U; + } + + static CefRefPtr GetEventValue(CefRefPtr value, + size_t index) { + CefRefPtr events = GetEventList(value); + if (!events) + return nullptr; + EXPECT_LT(index, events->GetSize()); + CefRefPtr event = events->GetDictionary(index); + EXPECT_TRUE(event); + return event; + } + + static void GetFirstUpdateAndEvent(CefRefPtr value, + CefRefPtr& update, + CefRefPtr& event) { + if (GetUpdateListSize(value) > 0U) + update = GetUpdateValue(value, 0U); + if (GetEventListSize(value) > 0U) + event = GetEventValue(value, 0U); + } + + static bool GetFirstMatchingEvent(CefRefPtr value, + const std::string& event_type, + CefRefPtr& event) { + // Return the first event that matches the requested |event_type|. + const size_t event_size = GetEventListSize(value); + for (size_t i = 0; i < event_size; ++i) { + CefRefPtr cur_event = GetEventValue(value, i); + const std::string& cur_event_type = cur_event->GetString("event_type"); + if (cur_event_type == event_type) { + event = cur_event; + return true; + } } + return false; } void TestEnableAccessibilityUpdate(CefRefPtr value) { diff --git a/tests/ceftests/plugin_unittest.cc b/tests/ceftests/plugin_unittest.cc index c70332cc8..a030c5243 100644 --- a/tests/ceftests/plugin_unittest.cc +++ b/tests/ceftests/plugin_unittest.cc @@ -34,9 +34,6 @@ const char kPdfTestOrigin[] = "http://tests/"; const char kPdfHtmlUrl[] = "http://tests/pdf.html"; const char kPdfDirectUrl[] = "http://tests/pdf.pdf"; -// Delay waiting for the plugin placeholder to load. -const int64 kPlaceholderLoadDelayMs = 1000; - // Delay waiting for iframe tests to load the PDF file. #if defined(OS_LINUX) const int64 kPdfLoadDelayMs = 7000; @@ -236,14 +233,32 @@ class PluginTestHandler : public RoutingTestHandler, } void WaitForPlaceholderLoad(CefRefPtr frame) { - // Waits for the placeholder to load. - CefPostDelayedTask(TID_UI, - base::Bind(&PluginTestHandler::TriggerContextMenu, this, - frame->GetBrowser()), - kPlaceholderLoadDelayMs); + // Keep track of the frame that contains the placeholder. + placeholder_frame_ = frame; + + // Waits for the placeholder to load. This is indicated by the presence + // of the plugin node. + const std::string& code = + "(function waitForNode(i) {" + " setTimeout(function() {" + " var plugin = " + + GetPluginNode() + + ";" + " if (plugin) {" + " window.testQuery({request:'placeholder_loaded'});" + " return;" + " }" + " if (--i) {" + " waitForNode(i);" + " } else {" + " console.log('Timeout waiting for plugin load');" + " }" + " }, 250)" + "})(4);"; + frame->ExecuteJavaScript(code, frame->GetURL(), 0); } - void WaitForPlaceholderHide(CefRefPtr frame) const { + void WaitForPlaceholderHide() { // Waits for the placeholder to be hidden (style set to display:none). // See PluginPlaceholderBase::HidePlugin. const std::string& code = @@ -257,7 +272,9 @@ class PluginTestHandler : public RoutingTestHandler, "});" "observer.observe(plugin, " " { attributes : true, attributeFilter : ['style'] });"; - frame->ExecuteJavaScript(code, frame->GetURL(), 0); + placeholder_frame_->ExecuteJavaScript(code, placeholder_frame_->GetURL(), + 0); + placeholder_frame_ = nullptr; } void WaitForPluginLoad(CefRefPtr frame) { @@ -383,12 +400,25 @@ class PluginTestHandler : public RoutingTestHandler, // Wait for the first PDF file to load. WaitForPluginLoad(frame); } + } else if (request == "placeholder_loaded") { + EXPECT_FALSE(got_placeholder_loaded_); + EXPECT_FALSE(got_placeholder_hidden_); + got_placeholder_loaded_.yes(); + + // The plugin placeholder has loaded. Trigger the context menu. + TriggerContextMenu(frame->GetBrowser()); } else if (request == "placeholder_hidden") { + EXPECT_TRUE(got_placeholder_loaded_); EXPECT_FALSE(got_placeholder_hidden_); got_placeholder_hidden_.yes(); - // The plugin placeholder has been hidden. End the test. - EndTest(); + if (HasContextLoad()) { + // Wait for the PDF plugin to load. + WaitForPluginLoad(frame); + } else { + // The plugin placeholder has been hidden. End the test. + EndTest(); + } } else { NOTREACHED(); } @@ -420,14 +450,14 @@ class PluginTestHandler : public RoutingTestHandler, // Should have 4 elements -- plugin name, separator, run, hide. EXPECT_EQ(4, model->GetCount()); + // Wait for the placeholder to be hidden. + WaitForPlaceholderHide(); + int command_id; if (HasContextLoad()) { // Execute the run command. command_id = model->GetCommandIdAt(2); } else { - // Wait for the plugin to be hidden. - WaitForPlaceholderHide(frame); - // Execute the hide command. command_id = model->GetCommandIdAt(3); } @@ -450,12 +480,8 @@ class PluginTestHandler : public RoutingTestHandler, if (HasContextHide()) { // Nothing to do here. The test will continue from OnQuery. - return; - } - - if (HasContextLoad()) { - // Wait for the PDF plugin to load. - WaitForPluginLoad(frame); + // TODO: Once block-then-load is working this should also be the case for + // HasContextLoad(). return; } @@ -468,11 +494,18 @@ class PluginTestHandler : public RoutingTestHandler, context_handler_ = nullptr; } - if (HasContextHide()) { + if (HasContextLoad()) { + EXPECT_TRUE(got_placeholder_loaded_); + // TODO: Once block-then-load is working this value should be true. + EXPECT_FALSE(got_placeholder_hidden_); + } else if (HasContextHide()) { + EXPECT_TRUE(got_placeholder_loaded_); EXPECT_TRUE(got_placeholder_hidden_); } else { + EXPECT_FALSE(got_placeholder_loaded_); EXPECT_FALSE(got_placeholder_hidden_); } + EXPECT_FALSE(placeholder_frame_); if (HasRequestContextHandler()) EXPECT_TRUE(got_on_before_plugin_empty_origin_); @@ -528,6 +561,8 @@ class PluginTestHandler : public RoutingTestHandler, const Mode mode_; const std::string url_; + CefRefPtr placeholder_frame_; + TrackCallback got_on_before_plugin_empty_origin_; TrackCallback got_on_before_plugin_empty_origin2_; TrackCallback got_on_before_plugin_load_pdf_; @@ -536,6 +571,7 @@ class PluginTestHandler : public RoutingTestHandler, TrackCallback got_on_load_end_pdf2_; TrackCallback got_pdf_plugin_found_; TrackCallback got_pdf_plugin_missing_; + TrackCallback got_placeholder_loaded_; TrackCallback got_placeholder_hidden_; TrackCallback got_run_context_menu_; TrackCallback got_context_menu_dismissed_; diff --git a/tests/ceftests/tracing_unittest.cc b/tests/ceftests/tracing_unittest.cc index fee994237..caa3942b3 100644 --- a/tests/ceftests/tracing_unittest.cc +++ b/tests/ceftests/tracing_unittest.cc @@ -169,23 +169,33 @@ class TracingTestHandler : public CefEndTracingCallback, 2); break; case TT_TRACE_EVENT_END0: + TRACE_EVENT_BEGIN0(kTraceTestCategory, "TT_TRACE_EVENT_END0"); TRACE_EVENT_END0(kTraceTestCategory, "TT_TRACE_EVENT_END0"); break; case TT_TRACE_EVENT_END1: + TRACE_EVENT_BEGIN1(kTraceTestCategory, "TT_TRACE_EVENT_END1", "arg1", + 1); TRACE_EVENT_END1(kTraceTestCategory, "TT_TRACE_EVENT_END1", "arg1", 1); break; case TT_TRACE_EVENT_END2: + TRACE_EVENT_BEGIN2(kTraceTestCategory, "TT_TRACE_EVENT_END2", "arg1", 1, + "arg2", 2); TRACE_EVENT_END2(kTraceTestCategory, "TT_TRACE_EVENT_END2", "arg1", 1, "arg2", 2); break; case TT_TRACE_EVENT_COPY_END0: + TRACE_EVENT_COPY_BEGIN0(kTraceTestCategory, "TT_TRACE_EVENT_COPY_END0"); TRACE_EVENT_COPY_END0(kTraceTestCategory, "TT_TRACE_EVENT_COPY_END0"); break; case TT_TRACE_EVENT_COPY_END1: + TRACE_EVENT_COPY_BEGIN1(kTraceTestCategory, "TT_TRACE_EVENT_COPY_END1", + "arg1", 1); TRACE_EVENT_COPY_END1(kTraceTestCategory, "TT_TRACE_EVENT_COPY_END1", "arg1", 1); break; case TT_TRACE_EVENT_COPY_END2: + TRACE_EVENT_COPY_BEGIN2(kTraceTestCategory, "TT_TRACE_EVENT_COPY_END2", + "arg1", 1, "arg2", 2); TRACE_EVENT_COPY_END2(kTraceTestCategory, "TT_TRACE_EVENT_COPY_END2", "arg1", 1, "arg2", 2); break; diff --git a/tests/ceftests/urlrequest_unittest.cc b/tests/ceftests/urlrequest_unittest.cc index 5562cb7d9..97d3b3c2b 100644 --- a/tests/ceftests/urlrequest_unittest.cc +++ b/tests/ceftests/urlrequest_unittest.cc @@ -35,7 +35,6 @@ using client::ClientAppRenderer; namespace { // Unique values for URLRequest tests. -const char kRequestTestUrl[] = "http://tests/URLRequestTest.Test"; const char kRequestTestMsg[] = "URLRequestTest.Test"; const char kIncompleteRequestTestMsg[] = "URLRequestTest.IncompleteRequestTest"; @@ -2880,14 +2879,17 @@ class RequestTestHandler : public TestHandler { ContextTestMode context_mode, bool test_in_browser, bool test_server_backend, - bool test_frame_method, - const char* test_url) + bool test_frame_method) : test_mode_(test_mode), context_mode_(context_mode), test_in_browser_(test_in_browser), test_server_backend_(test_server_backend), test_frame_method_(test_frame_method), - test_url_(test_url) {} + // Must use the request origin to avoid failures in + // CorsURLLoaderFactory::IsSane for requests originating from the + // renderer process. + test_url_(GetRequestOrigin(test_server_backend) + + "/URLRequestTest.Test") {} void RunTest() override { // Time out the test after a reasonable period of time. @@ -2994,7 +2996,6 @@ class RequestTestHandler : public TestHandler { if (test_in_browser_) { if (test_frame_method_) { - EXPECT_TRUE(test_url_ != nullptr); AddResource(test_url_, "TEST", "text/html"); // Create the browser who's main frame will be the initiator for the @@ -3008,7 +3009,6 @@ class RequestTestHandler : public TestHandler { base::Bind(&RequestTestHandler::OnRunComplete, this)); } } else { - EXPECT_TRUE(test_url_ != nullptr); AddResource(test_url_, "TEST", "text/html"); // Create a browser to run the test in the renderer process. @@ -3272,7 +3272,7 @@ class RequestTestHandler : public TestHandler { const bool test_in_browser_; const bool test_server_backend_; const bool test_frame_method_; - const char* const test_url_; + const std::string test_url_; scoped_refptr test_runner_; @@ -3329,24 +3329,24 @@ void RegisterURLRequestCustomSchemes( } // Helpers for defining URLRequest tests. -#define REQ_TEST_EX(name, test_mode, context_mode, test_in_browser, \ - test_server_backend, test_frame_method, test_url) \ - TEST(URLRequestTest, name) { \ - if (!IsTestSupported(test_mode, context_mode, test_in_browser, \ - test_server_backend, test_frame_method)) { \ - return; \ - } \ - CefRefPtr handler = new RequestTestHandler( \ - test_mode, context_mode, test_in_browser, test_server_backend, \ - test_frame_method, test_url); \ - handler->ExecuteTest(); \ - ReleaseAndWaitForDestructor(handler); \ +#define REQ_TEST_EX(name, test_mode, context_mode, test_in_browser, \ + test_server_backend, test_frame_method) \ + TEST(URLRequestTest, name) { \ + if (!IsTestSupported(test_mode, context_mode, test_in_browser, \ + test_server_backend, test_frame_method)) { \ + return; \ + } \ + CefRefPtr handler = \ + new RequestTestHandler(test_mode, context_mode, test_in_browser, \ + test_server_backend, test_frame_method); \ + handler->ExecuteTest(); \ + ReleaseAndWaitForDestructor(handler); \ } #define REQ_TEST(name, test_mode, context_mode, test_in_browser, \ test_server_backend, test_frame_method) \ REQ_TEST_EX(name, test_mode, context_mode, test_in_browser, \ - test_server_backend, test_frame_method, kRequestTestUrl) + test_server_backend, test_frame_method) // Define the tests. #define REQ_TEST_SET_EX(suffix, context_mode, test_server_backend, \ diff --git a/tests/ceftests/webui_unittest.cc b/tests/ceftests/webui_unittest.cc index ea9a38b57..7c69d867b 100644 --- a/tests/ceftests/webui_unittest.cc +++ b/tests/ceftests/webui_unittest.cc @@ -39,11 +39,11 @@ class WebUITestHandler : public TestHandler { void NextNav() { base::Closure next_action; - if (++url_index_ == url_list_.size()) { - next_action = base::Bind(&WebUITestHandler::DestroyTest, this); - } else { + if (++url_index_ < url_list_.size()) { next_action = base::Bind(&WebUITestHandler::LoadURL, this, url_list_[url_index_]); + } else { + next_action = base::Bind(&WebUITestHandler::DestroyTest, this); } // Wait a bit for the WebUI content to finish loading before performing the @@ -99,7 +99,7 @@ class WebUITestHandler : public TestHandler { if (done) { // Verify that we navigated to the expected URL. std::string expected_url = expected_url_; - if (expected_url.empty()) + if (expected_url.empty() && url_index_ < url_list_.size()) expected_url = url_list_[url_index_]; EXPECT_STREQ(expected_url.c_str(), url.c_str()); diff --git a/tools/distrib/linux/README.redistrib.txt b/tools/distrib/linux/README.redistrib.txt index 355097111..29c512076 100644 --- a/tools/distrib/linux/README.redistrib.txt +++ b/tools/distrib/linux/README.redistrib.txt @@ -14,7 +14,6 @@ The following components are required. CEF will not function without them. * icudtl.dat * V8 snapshot data. - * natives_blob.bin * snapshot_blob.bin * v8_context_snapshot.bin diff --git a/tools/distrib/mac/README.redistrib.txt b/tools/distrib/mac/README.redistrib.txt index 51cc45dd3..730923744 100644 --- a/tools/distrib/mac/README.redistrib.txt +++ b/tools/distrib/mac/README.redistrib.txt @@ -26,7 +26,7 @@ cefclient.app/ cef_extensions.pak <=====^ devtools_resources.pak <=^ icudtl.dat <= unicode support - natives_blob.bin, snapshot_blob.bin, v8_context_snapshot.bin <= V8 initial snapshot + snapshot_blob.bin, v8_context_snapshot.bin <= V8 initial snapshot en.lproj/, ... <= locale-specific resources and strings Info.plist cefclient Helper.app/ @@ -64,7 +64,6 @@ The following components are required. CEF will not function without them. * Chromium Embedded Framework.framework/Resources/icudtl.dat * V8 snapshot data. - * Chromium Embedded Framework.framework/Resources/natives_blob.bin * Chromium Embedded Framework.framework/Resources/snapshot_blob.bin * Chromium Embedded Framework.framework/Resources/v8_context_snapshot.bin diff --git a/tools/distrib/win/README.redistrib.txt b/tools/distrib/win/README.redistrib.txt index a3d0e2f23..b96ab3522 100644 --- a/tools/distrib/win/README.redistrib.txt +++ b/tools/distrib/win/README.redistrib.txt @@ -17,7 +17,6 @@ The following components are required. CEF will not function without them. * icudtl.dat * V8 snapshot data. - * natives_blob.bin * snapshot_blob.bin * v8_context_snapshot.bin diff --git a/tools/make_distrib.py b/tools/make_distrib.py index 1a0c45f6d..ed9f990f8 100644 --- a/tools/make_distrib.py +++ b/tools/make_distrib.py @@ -832,7 +832,6 @@ if platform == 'windows': {'path': libcef_dll}, {'path': 'libEGL.dll'}, {'path': 'libGLESv2.dll'}, - {'path': 'natives_blob.bin'}, {'path': 'snapshot_blob.bin', 'conditional': True}, {'path': 'v8_context_snapshot.bin', 'conditional': True}, {'path': 'swiftshader\\libEGL.dll'}, @@ -1148,7 +1147,6 @@ elif platform == 'linux': {'path': libcef_so}, {'path': 'libEGL.so'}, {'path': 'libGLESv2.so'}, - {'path': 'natives_blob.bin'}, {'path': 'snapshot_blob.bin', 'conditional': True}, {'path': 'v8_context_snapshot.bin', 'conditional': True}, {'path': 'swiftshader/libEGL.so'},