From e9f29ab3d6a154844041bba92d4b6d1142c1c450 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Thu, 21 Jul 2022 13:26:10 -0400 Subject: [PATCH] Update to Chromium version 105.0.5176.0 (#1023155) --- CHROMIUM_BUILD_COMPATIBILITY.txt | 2 +- CHROMIUM_UPDATE.txt | 1 - include/cef_api_hash.h | 8 +- include/internal/cef_types.h | 4 +- .../browser/alloy/alloy_browser_host_impl.cc | 5 +- libcef/browser/alloy/alloy_browser_main.cc | 12 +- libcef/browser/browser_contents_delegate.cc | 2 +- libcef/browser/browser_host_base.cc | 2 +- libcef/browser/browser_info_manager.cc | 2 +- ...me_mime_handler_view_guest_delegate_cef.cc | 7 +- .../browser/devtools/devtools_file_manager.cc | 2 +- libcef/browser/devtools/devtools_frontend.cc | 32 +++--- libcef/browser/devtools/devtools_frontend.h | 2 +- libcef/browser/download_manager_delegate.cc | 5 +- .../mime_handler_view_guest_delegate.cc | 7 +- .../extensions/value_store/cef_value_store.cc | 37 +++--- .../extensions/value_store/cef_value_store.h | 4 +- libcef/browser/file_dialog_manager.cc | 2 +- libcef/browser/main_runner.cc | 4 +- .../browser/media_router/media_router_impl.cc | 12 +- libcef/browser/net/chrome_scheme_handler.cc | 17 +-- libcef/browser/net/throttle_handler.cc | 4 +- .../resource_request_handler_wrapper.cc | 4 +- libcef/browser/osr/video_consumer_osr.h | 1 + libcef/browser/prefs/renderer_prefs.cc | 5 +- libcef/browser/printing/print_dialog_linux.cc | 38 +++---- libcef/browser/printing/print_dialog_linux.h | 41 ++++--- libcef/common/json_impl.cc | 12 +- libcef/common/thread_impl.cc | 6 +- .../alloy/alloy_content_renderer_client.cc | 12 +- .../alloy/alloy_content_renderer_client.h | 2 +- libcef/renderer/browser_impl.cc | 7 +- libcef/renderer/browser_impl.h | 9 +- libcef/renderer/frame_impl.cc | 1 - libcef/renderer/render_frame_observer.cc | 1 - libcef/renderer/render_frame_util.cc | 1 - libcef/renderer/render_manager.cc | 34 +++--- libcef/renderer/render_manager.h | 12 +- patch/patch.cfg | 19 ++-- patch/patches/base_metrics_3773637.patch | 13 +++ patch/patches/base_sandbox_2743.patch | 6 +- patch/patches/base_time_3718022.patch | 13 --- patch/patches/base_values_3703780.patch | 34 ------ patch/patches/browser_scheduler.patch | 4 +- .../browser_security_policy_1081397.patch | 54 ++++----- patch/patches/build.patch | 4 +- patch/patches/chrome_browser.patch | 8 +- ...rome_browser_background_mode_1100085.patch | 4 +- patch/patches/chrome_browser_browser.patch | 70 ++++++------ .../chrome_browser_context_menus.patch | 20 ++-- .../chrome_browser_dialogs_native.patch | 105 ++++-------------- patch/patches/chrome_browser_extensions.patch | 2 +- .../chrome_browser_permission_prompt.patch | 6 +- .../patches/chrome_browser_profile_menu.patch | 2 +- patch/patches/chrome_browser_profiles.patch | 12 +- .../chrome_browser_safe_browsing.patch | 6 +- patch/patches/chrome_browser_themes.patch | 4 +- patch/patches/chrome_plugins.patch | 12 +- patch/patches/chrome_renderer.patch | 6 +- patch/patches/chrome_runtime.patch | 68 ++++++------ patch/patches/chrome_runtime_views.patch | 76 ++++++------- patch/patches/chrome_utility_client.patch | 22 ++++ patch/patches/component_build.patch | 4 +- patch/patches/content_2015.patch | 36 +++--- patch/patches/content_main_654986.patch | 12 +- patch/patches/crashpad_1995.patch | 16 +-- patch/patches/crashpad_tp_1995.patch | 2 +- patch/patches/embedder_product_override.patch | 2 +- patch/patches/extensions_1947.patch | 32 +++--- patch/patches/gn_config.patch | 18 +-- patch/patches/gritsettings.patch | 4 +- patch/patches/linux_printing_context.patch | 31 ++++++ patch/patches/linux_ui_ozone.patch | 4 +- patch/patches/mac_gpu.patch | 10 +- patch/patches/message_loop.patch | 12 +- patch/patches/message_pump_mac_2495.patch | 6 +- .../mime_handler_view_guest_1565_2727.patch | 10 +- patch/patches/net_cookie_flags.patch | 17 ++- patch/patches/osr_fling_2745.patch | 8 +- patch/patches/print_preview_123.patch | 10 +- patch/patches/rwh_background_color_1984.patch | 4 +- patch/patches/services_network_2622.patch | 12 +- patch/patches/services_network_2718.patch | 10 +- patch/patches/storage_incognito_2289.patch | 4 +- patch/patches/views_1749_2102_3330.patch | 20 ++-- patch/patches/views_widget.patch | 42 +++---- patch/patches/viz_osr_2575.patch | 12 +- patch/patches/web_contents_1257_1565.patch | 18 +-- patch/patches/webkit_plugin_info_2015.patch | 4 +- patch/patches/webkit_popups.patch | 14 +-- patch/patches/webui_2037.patch | 8 +- patch/patches/win_sandbox_3210.patch | 4 +- 92 files changed, 615 insertions(+), 700 deletions(-) create mode 100644 patch/patches/base_metrics_3773637.patch delete mode 100644 patch/patches/base_time_3718022.patch delete mode 100644 patch/patches/base_values_3703780.patch create mode 100644 patch/patches/chrome_utility_client.patch create mode 100644 patch/patches/linux_printing_context.patch diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index cb96670f9..fd39f9957 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/104.0.5112.0' + 'chromium_checkout': 'refs/tags/105.0.5176.0' } diff --git a/CHROMIUM_UPDATE.txt b/CHROMIUM_UPDATE.txt index 6e03b57c3..9db928e4e 100644 --- a/CHROMIUM_UPDATE.txt +++ b/CHROMIUM_UPDATE.txt @@ -43,7 +43,6 @@ 'content/browser/renderer_host/render_widget_host_view_base.*', 'content/public/browser/content_browser_client.*', 'content/public/browser/render_widget_host_view.h', - 'content/public/browser/storage_partition.h', 'content/public/browser/web_contents_delegate.h', 'content/public/common/content_features.cc', 'content/shell/BUILD.gn', diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h index ac6f03409..78bff7214 100644 --- a/include/cef_api_hash.h +++ b/include/cef_api_hash.h @@ -42,13 +42,13 @@ // way that may cause binary incompatibility with other builds. The universal // hash value will change if any platform is affected whereas the platform hash // values will change only if that particular platform is affected. -#define CEF_API_HASH_UNIVERSAL "39f4f2317bfe2012cbc93d007f7b66b051a40801" +#define CEF_API_HASH_UNIVERSAL "f8cca8b07034c67a6302e505c230ffe0f050fd78" #if defined(OS_WIN) -#define CEF_API_HASH_PLATFORM "69c564c61f449d5121f991027434b904f9da0487" +#define CEF_API_HASH_PLATFORM "315cda8357a855c2db9c5cdfce405b5e575fa667" #elif defined(OS_MAC) -#define CEF_API_HASH_PLATFORM "5304a0e2ad7f12306b20aa68a2393068e3d486e3" +#define CEF_API_HASH_PLATFORM "3d59ba798ad73de75680f7b3487a2f8061a1650b" #elif defined(OS_LINUX) -#define CEF_API_HASH_PLATFORM "dbce3938f92feca03bcf12a183db4e903cd3aa87" +#define CEF_API_HASH_PLATFORM "fac4720a6d4e5a3550e421aaf043d46ab15dfa85" #endif #ifdef __cplusplus diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index 3b4ca7d0e..90d590045 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -3145,7 +3145,7 @@ typedef struct _cef_audio_parameters_t { /// // Result codes for CefMediaRouter::CreateRoute. Should be kept in sync with -// Chromium's media_router::RouteRequestResult::ResultCode type. +// Chromium's media_router::mojom::RouteRequestResultCode type. /// typedef enum { CEF_MRCR_UNKNOWN_ERROR = 0, @@ -3158,8 +3158,6 @@ typedef enum { CEF_MRCR_CANCELLED = 8, CEF_MRCR_ROUTE_ALREADY_EXISTS = 9, CEF_MRCR_ROUTE_ALREADY_TERMINATED = 11, - - CEF_MRCR_TOTAL_COUNT = 12 // The total number of values. } cef_media_route_create_result_t; /// diff --git a/libcef/browser/alloy/alloy_browser_host_impl.cc b/libcef/browser/alloy/alloy_browser_host_impl.cc index fb4b0e9d6..389a0d87d 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.cc +++ b/libcef/browser/alloy/alloy_browser_host_impl.cc @@ -1082,7 +1082,8 @@ void AlloyBrowserHostImpl::CloseContents(content::WebContents* source) { if (source) { // Try to fast shutdown the associated process. - source->GetMainFrame()->GetProcess()->FastShutdownIfPossible(1, false); + source->GetPrimaryMainFrame()->GetProcess()->FastShutdownIfPossible( + 1, false); } // No window exists. Destroy the browser immediately. Don't call other @@ -1463,7 +1464,7 @@ AlloyBrowserHostImpl::AlloyBrowserHostImpl( platform_delegate_->BrowserCreated(this); // Make sure RenderFrameCreated is called at least one time. - RenderFrameCreated(web_contents->GetMainFrame()); + RenderFrameCreated(web_contents->GetPrimaryMainFrame()); } bool AlloyBrowserHostImpl::CreateHostWindow() { diff --git a/libcef/browser/alloy/alloy_browser_main.cc b/libcef/browser/alloy/alloy_browser_main.cc index cf7681e40..02313c5a2 100644 --- a/libcef/browser/alloy/alloy_browser_main.cc +++ b/libcef/browser/alloy/alloy_browser_main.cc @@ -153,14 +153,10 @@ void ToolkitInitializedLinux() { new ui::FakeInputMethodContextFactory()); } - auto create_print_dialog_func = - printing::PrintingContextLinux::SetCreatePrintDialogFunction( - &CefPrintDialogLinux::CreatePrintDialog); - auto pdf_paper_size_func = - printing::PrintingContextLinux::SetPdfPaperSizeFunction( - &CefPrintDialogLinux::GetPdfPaperSize); - CefPrintDialogLinux::SetDefaultPrintingContextFuncs(create_print_dialog_func, - pdf_paper_size_func); + auto printing_delegate = new CefPrintingContextLinuxDelegate(); + auto default_delegate = + printing::PrintingContextLinuxDelegate::SetInstance(printing_delegate); + printing_delegate->SetDefaultDelegate(default_delegate); } #endif // BUILDFLAG(IS_LINUX) diff --git a/libcef/browser/browser_contents_delegate.cc b/libcef/browser/browser_contents_delegate.cc index e983f7b6f..020f35099 100644 --- a/libcef/browser/browser_contents_delegate.cc +++ b/libcef/browser/browser_contents_delegate.cc @@ -100,7 +100,7 @@ void CefBrowserContentsDelegate::ObserveWebContents( // Make sure MaybeCreateFrame is called at least one time. // Create the frame representation before OnAfterCreated is called for a new // browser. - browser_info_->MaybeCreateFrame(new_contents->GetMainFrame(), + browser_info_->MaybeCreateFrame(new_contents->GetPrimaryMainFrame(), false /* is_guest_view */); // Make sure RenderWidgetCreated is called at least one time. This Observer diff --git a/libcef/browser/browser_host_base.cc b/libcef/browser/browser_host_base.cc index 41e68c338..c2bad10db 100644 --- a/libcef/browser/browser_host_base.cc +++ b/libcef/browser/browser_host_base.cc @@ -1012,7 +1012,7 @@ bool CefBrowserHostBase::IsFocused() const { auto web_contents = GetWebContents(); if (web_contents) { return static_cast( - web_contents->GetMainFrame()) + web_contents->GetPrimaryMainFrame()) ->IsFocused(); } return false; diff --git a/libcef/browser/browser_info_manager.cc b/libcef/browser/browser_info_manager.cc index 61b9cc5ad..c7a057f75 100644 --- a/libcef/browser/browser_info_manager.cc +++ b/libcef/browser/browser_info_manager.cc @@ -85,7 +85,7 @@ scoped_refptr CefBrowserInfoManager::CreatePopupBrowserInfo( CefRefPtr extra_info) { base::AutoLock lock_scope(browser_info_lock_); - auto frame_host = new_contents->GetMainFrame(); + auto frame_host = new_contents->GetPrimaryMainFrame(); scoped_refptr browser_info = new CefBrowserInfo(++next_browser_id_, true, is_windowless, extra_info); diff --git a/libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.cc b/libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.cc index 7e5dbde8f..1dea16056 100644 --- a/libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.cc +++ b/libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.cc @@ -28,8 +28,8 @@ void ChromeMimeHandlerViewGuestDelegateCef::OnGuestAttached() { DCHECK(owner_browser); // Associate guest state information with the owner browser. - owner_browser->browser_info()->MaybeCreateFrame(web_contents->GetMainFrame(), - true /* is_guest_view */); + owner_browser->browser_info()->MaybeCreateFrame( + web_contents->GetPrimaryMainFrame(), true /* is_guest_view */); } void ChromeMimeHandlerViewGuestDelegateCef::OnGuestDetached() { @@ -41,7 +41,8 @@ void ChromeMimeHandlerViewGuestDelegateCef::OnGuestDetached() { DCHECK(owner_browser); // Disassociate guest state information with the owner browser. - owner_browser->browser_info()->RemoveFrame(web_contents->GetMainFrame()); + owner_browser->browser_info()->RemoveFrame( + web_contents->GetPrimaryMainFrame()); } } // namespace extensions diff --git a/libcef/browser/devtools/devtools_file_manager.cc b/libcef/browser/devtools/devtools_file_manager.cc index 5c4f1f976..93f7cd457 100644 --- a/libcef/browser/devtools/devtools_file_manager.cc +++ b/libcef/browser/devtools/devtools_file_manager.cc @@ -200,6 +200,6 @@ void CefDevToolsFileManager::CallClientFunction( } } javascript.append(");"); - browser_impl_->web_contents()->GetMainFrame()->ExecuteJavaScript( + browser_impl_->web_contents()->GetPrimaryMainFrame()->ExecuteJavaScript( base::UTF8ToUTF16(javascript), base::NullCallback()); } diff --git a/libcef/browser/devtools/devtools_frontend.cc b/libcef/browser/devtools/devtools_frontend.cc index 61f7c6813..a651a16a3 100644 --- a/libcef/browser/devtools/devtools_frontend.cc +++ b/libcef/browser/devtools/devtools_frontend.cc @@ -369,20 +369,18 @@ void CefDevToolsFrontend::WebContentsDestroyed() { } void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( - base::Value message) { - if (!message.is_dict()) - return; - const std::string* method = message.FindStringKey("method"); + base::Value::Dict message) { + const std::string* method = message.FindString("method"); if (!method) return; - int request_id = message.FindIntKey("id").value_or(0); - base::Value* params_value = message.FindListKey("params"); + int request_id = message.FindInt("id").value_or(0); + base::Value::List* params_value = message.FindList("params"); // Since we've received message by value, we can take the list. - base::Value::ListStorage params; + base::Value::List params; if (params_value) { - params = std::move(*params_value).TakeListDeprecated(); + params = std::move(*params_value); } if (*method == "dispatchProtocolMessage") { @@ -397,7 +395,7 @@ void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( agent_host_->DispatchProtocolMessage( this, base::as_bytes(base::make_span(*protocol_message))); } else if (*method == "loadCompleted") { - web_contents()->GetMainFrame()->ExecuteJavaScriptForTests( + web_contents()->GetPrimaryMainFrame()->ExecuteJavaScriptForTests( u"DevToolsAPI.setUseSoftMenu(true);", base::NullCallback()); } else if (*method == "loadNetworkResource") { if (params.size() < 3) @@ -413,10 +411,10 @@ void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( GURL gurl(*url); if (!gurl.is_valid()) { - base::DictionaryValue response; - response.SetInteger("statusCode", 404); - response.SetBoolean("urlValid", false); - SendMessageAck(request_id, std::move(response)); + base::Value::Dict response; + response.Set("statusCode", 404); + response.Set("urlValid", false); + SendMessageAck(request_id, base::Value(std::move(response))); return; } @@ -471,7 +469,7 @@ void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( return; } else { auto* partition = - web_contents()->GetBrowserContext()->GetStoragePartitionForUrl(gurl); + inspected_contents_->GetPrimaryMainFrame()->GetStoragePartition(); url_loader_factory = partition->GetURLLoaderFactoryForBrowserProcess(); } @@ -506,7 +504,7 @@ void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( DictionaryPrefUpdate update(GetPrefs(), prefs::kDevToolsPreferences); update.Get()->RemoveKey(*name); } else if (*method == "requestFileSystems") { - web_contents()->GetMainFrame()->ExecuteJavaScriptForTests( + web_contents()->GetPrimaryMainFrame()->ExecuteJavaScriptForTests( u"DevToolsAPI.fileSystemsLoaded([]);", base::NullCallback()); } else if (*method == "reattach") { if (!agent_host_) @@ -592,7 +590,7 @@ void CefDevToolsFrontend::CallClientFunction( base::OnceCallback cb) { std::string javascript; - web_contents()->GetMainFrame()->AllowInjectingJavaScript(); + web_contents()->GetPrimaryMainFrame()->AllowInjectingJavaScript(); base::Value::List arguments; if (!arg1.is_none()) { @@ -604,7 +602,7 @@ void CefDevToolsFrontend::CallClientFunction( } } } - web_contents()->GetMainFrame()->ExecuteJavaScriptMethod( + web_contents()->GetPrimaryMainFrame()->ExecuteJavaScriptMethod( base::ASCIIToUTF16(object_name), base::ASCIIToUTF16(method_name), std::move(arguments), std::move(cb)); } diff --git a/libcef/browser/devtools/devtools_frontend.h b/libcef/browser/devtools/devtools_frontend.h index ebe968217..796fd2306 100644 --- a/libcef/browser/devtools/devtools_frontend.h +++ b/libcef/browser/devtools/devtools_frontend.h @@ -74,7 +74,7 @@ class CefDevToolsFrontend : public content::WebContentsObserver, void AgentHostClosed(content::DevToolsAgentHost* agent_host) override; void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host, base::span message) override; - void HandleMessageFromDevToolsFrontend(base::Value message); + void HandleMessageFromDevToolsFrontend(base::Value::Dict message); private: // WebContentsObserver overrides diff --git a/libcef/browser/download_manager_delegate.cc b/libcef/browser/download_manager_delegate.cc index f16248899..54be41674 100644 --- a/libcef/browser/download_manager_delegate.cc +++ b/libcef/browser/download_manager_delegate.cc @@ -160,7 +160,6 @@ class CefBeforeDownloadCallbackImpl : public CefBeforeDownloadCallback { download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, download::DownloadItem::MixedContentStatus::UNKNOWN, suggested_path, base::FilePath(), std::string() /*mime_type*/, - absl::nullopt /*download_schedule*/, download::DOWNLOAD_INTERRUPT_REASON_NONE); } } @@ -179,7 +178,6 @@ class CefBeforeDownloadCallbackImpl : public CefBeforeDownloadCallback { download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, download::DownloadItem::MixedContentStatus::UNKNOWN, path, base::FilePath(), std::string() /*mime_type*/, - absl::nullopt /*download_schedule*/, download::DOWNLOAD_INTERRUPT_REASON_NONE); } @@ -368,8 +366,7 @@ bool CefDownloadManagerDelegate::DetermineDownloadTarget( download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, download::DownloadItem::MixedContentStatus::UNKNOWN, item->GetForcedFilePath(), base::FilePath(), - std::string() /*mime_type*/, absl::nullopt /*download_schedule*/, - download::DOWNLOAD_INTERRUPT_REASON_NONE); + std::string() /*mime_type*/, download::DOWNLOAD_INTERRUPT_REASON_NONE); return true; } diff --git a/libcef/browser/extensions/mime_handler_view_guest_delegate.cc b/libcef/browser/extensions/mime_handler_view_guest_delegate.cc index cd0e72a28..ae5b67b39 100644 --- a/libcef/browser/extensions/mime_handler_view_guest_delegate.cc +++ b/libcef/browser/extensions/mime_handler_view_guest_delegate.cc @@ -46,8 +46,8 @@ void CefMimeHandlerViewGuestDelegate::OnGuestAttached() { DCHECK(owner_browser); // Associate guest state information with the owner browser. - owner_browser->browser_info()->MaybeCreateFrame(web_contents->GetMainFrame(), - true /* is_guest_view */); + owner_browser->browser_info()->MaybeCreateFrame( + web_contents->GetPrimaryMainFrame(), true /* is_guest_view */); } void CefMimeHandlerViewGuestDelegate::OnGuestDetached() { @@ -59,7 +59,8 @@ void CefMimeHandlerViewGuestDelegate::OnGuestDetached() { DCHECK(owner_browser); // Disassociate guest state information with the owner browser. - owner_browser->browser_info()->RemoveFrame(web_contents->GetMainFrame()); + owner_browser->browser_info()->RemoveFrame( + web_contents->GetPrimaryMainFrame()); } bool CefMimeHandlerViewGuestDelegate::HandleContextMenu( diff --git a/libcef/browser/extensions/value_store/cef_value_store.cc b/libcef/browser/extensions/value_store/cef_value_store.cc index 8ec383e0e..2e2089bbb 100644 --- a/libcef/browser/extensions/value_store/cef_value_store.cc +++ b/libcef/browser/extensions/value_store/cef_value_store.cc @@ -60,11 +60,11 @@ ValueStore::ReadResult CefValueStore::Get( if (!status_.ok()) return ReadResult(CreateStatusCopy(status_)); - auto settings = std::make_unique(); + base::Value::Dict settings; for (const auto& key : keys) { - base::Value* value = storage_.FindKey(key); + base::Value* value = storage_.Find(key); if (value) { - settings->SetKey(key, value->Clone()); + settings.Set(key, value->Clone()); } } return ReadResult(std::move(settings), CreateStatusCopy(status_)); @@ -74,35 +74,33 @@ ValueStore::ReadResult CefValueStore::Get() { read_count_++; if (!status_.ok()) return ReadResult(CreateStatusCopy(status_)); - return ReadResult(storage_.CreateDeepCopy(), CreateStatusCopy(status_)); + return ReadResult(storage_.Clone(), CreateStatusCopy(status_)); } ValueStore::WriteResult CefValueStore::Set(WriteOptions options, const std::string& key, const base::Value& value) { - base::DictionaryValue settings; - settings.SetKey(key, value.Clone()); + base::Value::Dict settings; + settings.Set(key, value.Clone()); return Set(options, settings); } -ValueStore::WriteResult CefValueStore::Set( - WriteOptions options, - const base::DictionaryValue& settings) { +ValueStore::WriteResult CefValueStore::Set(WriteOptions options, + const base::Value::Dict& settings) { write_count_++; if (!status_.ok()) return WriteResult(CreateStatusCopy(status_)); ValueStoreChangeList changes; - for (base::DictionaryValue::Iterator it(settings); !it.IsAtEnd(); - it.Advance()) { - base::Value* old_value = storage_.FindKey(it.key()); - if (!old_value || *old_value != it.value()) { - changes.emplace_back(it.key(), + for (const auto [key, value] : settings) { + base::Value* old_value = storage_.Find(key); + if (!old_value || *old_value != value) { + changes.emplace_back(key, old_value ? absl::optional(old_value->Clone()) : absl::nullopt, - it.value().Clone()); - storage_.SetKey(it.key(), it.value().Clone()); + value.Clone()); + storage_.Set(key, value.Clone()); } } return WriteResult(std::move(changes), CreateStatusCopy(status_)); @@ -120,7 +118,7 @@ ValueStore::WriteResult CefValueStore::Remove( ValueStoreChangeList changes; for (auto const& key : keys) { - absl::optional old_value = storage_.ExtractKey(key); + absl::optional old_value = storage_.Extract(key); if (old_value.has_value()) { changes.emplace_back(key, std::move(*old_value), absl::nullopt); } @@ -130,9 +128,8 @@ ValueStore::WriteResult CefValueStore::Remove( ValueStore::WriteResult CefValueStore::Clear() { std::vector keys; - for (base::DictionaryValue::Iterator it(storage_); !it.IsAtEnd(); - it.Advance()) { - keys.push_back(it.key()); + for (const auto [key, value] : storage_) { + keys.push_back(key); } return Remove(keys); } diff --git a/libcef/browser/extensions/value_store/cef_value_store.h b/libcef/browser/extensions/value_store/cef_value_store.h index 690e04dd8..fe41c342b 100644 --- a/libcef/browser/extensions/value_store/cef_value_store.h +++ b/libcef/browser/extensions/value_store/cef_value_store.h @@ -48,13 +48,13 @@ class CefValueStore : public ValueStore { const std::string& key, const base::Value& value) override; WriteResult Set(WriteOptions options, - const base::DictionaryValue& values) override; + const base::Value::Dict& values) override; WriteResult Remove(const std::string& key) override; WriteResult Remove(const std::vector& keys) override; WriteResult Clear() override; private: - base::DictionaryValue storage_; + base::Value::Dict storage_; int read_count_ = 0; int write_count_ = 0; ValueStore::Status status_; diff --git a/libcef/browser/file_dialog_manager.cc b/libcef/browser/file_dialog_manager.cc index ceaee4994..fee3af3ce 100644 --- a/libcef/browser/file_dialog_manager.cc +++ b/libcef/browser/file_dialog_manager.cc @@ -368,7 +368,7 @@ void CefFileDialogManager::RunFileChooser( // by CefSelectFileDialogFactory, resulting in call to RunSelectFile below. // See related comments on CefSelectFileDialogFactory. FileSelectHelper::RunFileChooser( - browser_->GetWebContents()->GetMainFrame(), + browser_->GetWebContents()->GetPrimaryMainFrame(), base::MakeRefCounted(std::move(callback)), new_params, /*run_from_cef=*/true); } diff --git a/libcef/browser/main_runner.cc b/libcef/browser/main_runner.cc index 18ba18ac2..cf3855691 100644 --- a/libcef/browser/main_runner.cc +++ b/libcef/browser/main_runner.cc @@ -117,8 +117,8 @@ class CefUIThread : public base::PlatformThread::Delegate { void Start() { base::AutoLock lock(thread_lock_); - bool success = base::PlatformThread::CreateWithPriority( - 0, this, &thread_, base::ThreadPriority::NORMAL); + bool success = base::PlatformThread::CreateWithType( + 0, this, &thread_, base::ThreadType::kDefault); if (!success) { LOG(FATAL) << "failed to UI create thread"; } diff --git a/libcef/browser/media_router/media_router_impl.cc b/libcef/browser/media_router/media_router_impl.cc index 8e874e041..54c193d02 100644 --- a/libcef/browser/media_router/media_router_impl.cc +++ b/libcef/browser/media_router/media_router_impl.cc @@ -137,13 +137,7 @@ class CefRegistrationImpl : public CefRegistration, IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefRegistrationImpl); }; -CefMediaRouterImpl::CefMediaRouterImpl() { - // Verify that our enum matches Chromium's values. - static_assert( - static_cast(CEF_MRCR_TOTAL_COUNT) == - static_cast(media_router::RouteRequestResult::TOTAL_COUNT), - "enum mismatch"); -} +CefMediaRouterImpl::CefMediaRouterImpl() = default; void CefMediaRouterImpl::Initialize( const CefBrowserContext::Getter& browser_context_getter, @@ -285,7 +279,7 @@ void CefMediaRouterImpl::CreateRouteCallback( const media_router::RouteRequestResult& result) { DCHECK(ValidContext()); - if (result.result_code() != media_router::RouteRequestResult::OK) { + if (result.result_code() != media_router::mojom::RouteRequestResultCode::OK) { LOG(WARNING) << "Media route creation failed: " << result.error() << " (" << result.result_code() << ")"; } @@ -294,7 +288,7 @@ void CefMediaRouterImpl::CreateRouteCallback( return; CefRefPtr route; - if (result.result_code() == media_router::RouteRequestResult::OK && + if (result.result_code() == media_router::mojom::RouteRequestResultCode::OK && result.route()) { route = new CefMediaRouteImpl(*result.route(), browser_context_getter_); } diff --git a/libcef/browser/net/chrome_scheme_handler.cc b/libcef/browser/net/chrome_scheme_handler.cc index d0821cb5e..fad98fee2 100644 --- a/libcef/browser/net/chrome_scheme_handler.cc +++ b/libcef/browser/net/chrome_scheme_handler.cc @@ -36,7 +36,6 @@ #include "chrome/browser/ui/webui/theme_source.h" #include "chrome/common/url_constants.h" #include "content/browser/renderer_host/debug_urls.h" -#include "content/browser/webui/content_web_ui_controller_factory.h" #include "content/public/browser/browser_url_handler.h" #include "content/public/browser/content_browser_client.h" #include "content/public/browser/url_data_source.h" @@ -577,11 +576,6 @@ class CefWebUIControllerFactory : public content::WebUIControllerFactory { return std::make_unique(web_ui, url.host(), host_id); } - controller = content::ContentWebUIControllerFactory::GetInstance() - ->CreateWebUIControllerForURL(web_ui, url); - if (controller) - return controller; - controller = content::WebUIConfigMap::GetInstance() .controller_factory() ->CreateWebUIControllerForURL(web_ui, url); @@ -603,11 +597,6 @@ class CefWebUIControllerFactory : public content::WebUIControllerFactory { return kCefWebUITypeID; } - type = content::ContentWebUIControllerFactory::GetInstance()->GetWebUIType( - browser_context, url); - if (type != content::WebUI::kNoWebUI) - return type; - type = content::WebUIConfigMap::GetInstance() .controller_factory() ->GetWebUIType(browser_context, url); @@ -632,9 +621,7 @@ class CefWebUIControllerFactory : public content::WebUIControllerFactory { return true; } - if (content::ContentWebUIControllerFactory::GetInstance()->UseWebUIForURL( - browser_context, url) || - content::WebUIConfigMap::GetInstance() + if (content::WebUIConfigMap::GetInstance() .controller_factory() ->UseWebUIForURL(browser_context, url) || ChromeWebUIControllerFactory::GetInstance()->UseWebUIForURL( @@ -698,8 +685,6 @@ CefWebUIControllerFactory* CefWebUIControllerFactory::GetInstance() { void RegisterWebUIControllerFactory() { // Channel all WebUI handling through CefWebUIControllerFactory. - content::WebUIControllerFactory::UnregisterFactoryForTesting( - content::ContentWebUIControllerFactory::GetInstance()); content::WebUIControllerFactory::UnregisterFactoryForTesting( content::WebUIConfigMap::GetInstance().controller_factory()); diff --git a/libcef/browser/net/throttle_handler.cc b/libcef/browser/net/throttle_handler.cc index 687027923..0665b446e 100644 --- a/libcef/browser/net/throttle_handler.cc +++ b/libcef/browser/net/throttle_handler.cc @@ -43,8 +43,8 @@ bool NavigationOnUIThread(content::NavigationHandle* navigation_handle) { CefRefPtr browser; if (!CefBrowserInfoManager::GetInstance()->MaybeAllowNavigation( - navigation_handle->GetWebContents()->GetMainFrame(), open_params, - browser)) { + navigation_handle->GetWebContents()->GetPrimaryMainFrame(), + open_params, browser)) { // Cancel the navigation. return true; } diff --git a/libcef/browser/net_service/resource_request_handler_wrapper.cc b/libcef/browser/net_service/resource_request_handler_wrapper.cc index 8e0120dde..4733de7d8 100644 --- a/libcef/browser/net_service/resource_request_handler_wrapper.cc +++ b/libcef/browser/net_service/resource_request_handler_wrapper.cc @@ -1342,7 +1342,7 @@ std::unique_ptr CreateInterceptedRequestHandler( if (request.is_outermost_main_frame || static_cast(request.resource_type) == blink::mojom::ResourceType::kMainFrame) { - frame = web_contents->GetMainFrame(); + frame = web_contents->GetPrimaryMainFrame(); CHECK(frame); } else { // May return nullptr for frames in inner WebContents. @@ -1359,7 +1359,7 @@ std::unique_ptr CreateInterceptedRequestHandler( if (!frame) { // Use the main frame for the CefBrowserHost. - frame = web_contents->GetMainFrame(); + frame = web_contents->GetPrimaryMainFrame(); CHECK(frame); } } diff --git a/libcef/browser/osr/video_consumer_osr.h b/libcef/browser/osr/video_consumer_osr.h index 219e8e218..061561520 100644 --- a/libcef/browser/osr/video_consumer_osr.h +++ b/libcef/browser/osr/video_consumer_osr.h @@ -30,6 +30,7 @@ class CefVideoConsumerOSR : public viz::mojom::FrameSinkVideoConsumer { const gfx::Rect& content_rect, mojo::PendingRemote callbacks) override; + void OnNewCropVersion(uint32_t crop_version) override {} void OnFrameWithEmptyRegionCapture() override {} void OnStopped() override {} void OnLog(const std::string& message) override {} diff --git a/libcef/browser/prefs/renderer_prefs.cc b/libcef/browser/prefs/renderer_prefs.cc index 87ec5f58a..334a05e57 100644 --- a/libcef/browser/prefs/renderer_prefs.cc +++ b/libcef/browser/prefs/renderer_prefs.cc @@ -160,7 +160,7 @@ void SetExtensionPrefs(content::WebContents* web_contents, // tags as well as hosts that happen to match the id of an installed extension // would get the wrong preferences. const GURL& site_url = - web_contents->GetMainFrame()->GetSiteInstance()->GetSiteURL(); + web_contents->GetPrimaryMainFrame()->GetSiteInstance()->GetSiteURL(); if (!site_url.SchemeIs(extensions::kExtensionScheme)) return; @@ -403,7 +403,8 @@ void PopulateWebPreferences(content::RenderViewHost* rvh, auto web_contents = content::WebContents::FromRenderViewHost(rvh); UpdatePreferredColorScheme( - &web, web_contents->GetMainFrame()->GetSiteInstance()->GetSiteURL(), + &web, + web_contents->GetPrimaryMainFrame()->GetSiteInstance()->GetSiteURL(), native_theme); // Set preferences based on the extension. diff --git a/libcef/browser/printing/print_dialog_linux.cc b/libcef/browser/printing/print_dialog_linux.cc index d7660b5de..0b03daf26 100644 --- a/libcef/browser/printing/print_dialog_linux.cc +++ b/libcef/browser/printing/print_dialog_linux.cc @@ -32,11 +32,6 @@ using printing::PrintSettings; namespace { -printing::PrintingContextLinux::CreatePrintDialogFunctionPtr - g_default_create_print_dialog_func = nullptr; -printing::PrintingContextLinux::PdfPaperSizeFunctionPtr - g_default_pdf_paper_size_func = nullptr; - CefRefPtr GetBrowserForContext( printing::PrintingContextLinux* context) { return extensions::GetOwnerBrowserForGlobalId( @@ -127,12 +122,14 @@ class CefPrintJobCallbackImpl : public CefPrintJobCallback { IMPLEMENT_REFCOUNTING(CefPrintJobCallbackImpl); }; -// static -printing::PrintDialogGtkInterface* CefPrintDialogLinux::CreatePrintDialog( - PrintingContextLinux* context) { +CefPrintingContextLinuxDelegate::CefPrintingContextLinuxDelegate() = default; + +printing::PrintDialogLinuxInterface* +CefPrintingContextLinuxDelegate::CreatePrintDialog( + printing::PrintingContextLinux* context) { CEF_REQUIRE_UIT(); - printing::PrintDialogGtkInterface* interface = nullptr; + printing::PrintDialogLinuxInterface* interface = nullptr; auto browser = GetBrowserForContext(context); if (!browser) { @@ -142,8 +139,8 @@ printing::PrintDialogGtkInterface* CefPrintDialogLinux::CreatePrintDialog( auto handler = GetPrintHandlerForBrowser(browser); if (!handler) { - if (g_default_create_print_dialog_func) { - interface = g_default_create_print_dialog_func(context); + if (default_delegate_) { + interface = default_delegate_->CreatePrintDialog(context); DCHECK(interface); } } else { @@ -157,8 +154,7 @@ printing::PrintDialogGtkInterface* CefPrintDialogLinux::CreatePrintDialog( return interface; } -// static -gfx::Size CefPrintDialogLinux::GetPdfPaperSize( +gfx::Size CefPrintingContextLinuxDelegate::GetPdfPaperSize( printing::PrintingContextLinux* context) { CEF_REQUIRE_UIT(); @@ -172,8 +168,8 @@ gfx::Size CefPrintDialogLinux::GetPdfPaperSize( auto handler = GetPrintHandlerForBrowser(browser); if (!handler) { - if (g_default_pdf_paper_size_func) { - size = g_default_pdf_paper_size_func(context); + if (default_delegate_) { + size = default_delegate_->GetPdfPaperSize(context); DCHECK(!size.IsEmpty()); } } else { @@ -190,14 +186,10 @@ gfx::Size CefPrintDialogLinux::GetPdfPaperSize( return size; } -// static -void CefPrintDialogLinux::SetDefaultPrintingContextFuncs( - printing::PrintingContextLinux::CreatePrintDialogFunctionPtr - create_print_dialog_func, - printing::PrintingContextLinux::PdfPaperSizeFunctionPtr - pdf_paper_size_func) { - g_default_create_print_dialog_func = create_print_dialog_func; - g_default_pdf_paper_size_func = pdf_paper_size_func; +void CefPrintingContextLinuxDelegate::SetDefaultDelegate( + printing::PrintingContextLinuxDelegate* delegate) { + DCHECK(!default_delegate_); + default_delegate_ = delegate; } // static diff --git a/libcef/browser/printing/print_dialog_linux.h b/libcef/browser/printing/print_dialog_linux.h index 002835c5b..da73bb5b2 100644 --- a/libcef/browser/printing/print_dialog_linux.h +++ b/libcef/browser/printing/print_dialog_linux.h @@ -13,7 +13,7 @@ #include "base/memory/ref_counted.h" #include "base/task/sequenced_task_runner_helpers.h" #include "content/public/browser/browser_thread.h" -#include "printing/print_dialog_gtk_interface.h" +#include "printing/print_dialog_linux_interface.h" #include "printing/printing_context_linux.h" namespace printing { @@ -23,8 +23,28 @@ class PrintSettings; using printing::PrintingContextLinux; +class CefPrintingContextLinuxDelegate + : public printing::PrintingContextLinuxDelegate { + public: + CefPrintingContextLinuxDelegate(); + + CefPrintingContextLinuxDelegate(const CefPrintingContextLinuxDelegate&) = + delete; + CefPrintingContextLinuxDelegate& operator=( + const CefPrintingContextLinuxDelegate&) = delete; + + printing::PrintDialogLinuxInterface* CreatePrintDialog( + printing::PrintingContextLinux* context) override; + gfx::Size GetPdfPaperSize(printing::PrintingContextLinux* context) override; + + void SetDefaultDelegate(printing::PrintingContextLinuxDelegate* delegate); + + private: + printing::PrintingContextLinuxDelegate* default_delegate_ = nullptr; +}; + // Needs to be freed on the UI thread to clean up its member variables. -class CefPrintDialogLinux : public printing::PrintDialogGtkInterface, +class CefPrintDialogLinux : public printing::PrintDialogLinuxInterface, public base::RefCountedThreadSafe< CefPrintDialogLinux, content::BrowserThread::DeleteOnUIThread> { @@ -32,24 +52,10 @@ class CefPrintDialogLinux : public printing::PrintDialogGtkInterface, CefPrintDialogLinux(const CefPrintDialogLinux&) = delete; CefPrintDialogLinux& operator=(const CefPrintDialogLinux&) = delete; - // Creates and returns a print dialog. - static printing::PrintDialogGtkInterface* CreatePrintDialog( - PrintingContextLinux* context); - - // Returns the paper size in device units. - static gfx::Size GetPdfPaperSize(printing::PrintingContextLinux* context); - - // Used for calling into the default GTK implementation. - static void SetDefaultPrintingContextFuncs( - printing::PrintingContextLinux::CreatePrintDialogFunctionPtr - create_print_dialog_func, - printing::PrintingContextLinux::PdfPaperSizeFunctionPtr - pdf_paper_size_func); - // Notify the client when printing has started. static void OnPrintStart(CefRefPtr browser); - // PrintDialogGtkInterface implementation. + // PrintDialogLinuxInterface implementation. void UseDefaultSettings() override; void UpdateSettings( std::unique_ptr settings) override; @@ -70,6 +76,7 @@ class CefPrintDialogLinux : public printing::PrintDialogGtkInterface, content::BrowserThread::UI>; friend class CefPrintDialogCallbackImpl; friend class CefPrintJobCallbackImpl; + friend class CefPrintingContextLinuxDelegate; CefPrintDialogLinux(PrintingContextLinux* context, CefRefPtr browser, diff --git a/libcef/common/json_impl.cc b/libcef/common/json_impl.cc index 6a80e5e64..a05940a17 100644 --- a/libcef/common/json_impl.cc +++ b/libcef/common/json_impl.cc @@ -60,16 +60,14 @@ CefRefPtr CefParseJSONAndReturnError( const std::string& json = json_string.ToString(); std::string error_msg; - base::JSONReader::ValueWithError value_and_error = - base::JSONReader::ReadAndReturnValueWithError( - json, GetJSONReaderOptions(options)); - if (value_and_error.value) { + auto result = base::JSONReader::ReadAndReturnValueWithError( + json, GetJSONReaderOptions(options)); + if (result.has_value()) { return new CefValueImpl( - base::Value::ToUniquePtrValue(std::move(value_and_error.value.value())) - .release()); + base::Value::ToUniquePtrValue(std::move(*result)).release()); } - error_msg_out = value_and_error.error_message; + error_msg_out = result.error().message; return nullptr; } diff --git a/libcef/common/thread_impl.cc b/libcef/common/thread_impl.cc index 4de0204ed..268ba72bd 100644 --- a/libcef/common/thread_impl.cc +++ b/libcef/common/thread_impl.cc @@ -72,13 +72,13 @@ bool CefThreadImpl::Create(const CefString& display_name, switch (priority) { case TP_BACKGROUND: - options.priority = base::ThreadPriority::BACKGROUND; + options.thread_type = base::ThreadType::kBackground; break; case TP_DISPLAY: - options.priority = base::ThreadPriority::DISPLAY; + options.thread_type = base::ThreadType::kDisplayCritical; break; case TP_REALTIME_AUDIO: - options.priority = base::ThreadPriority::REALTIME_AUDIO; + options.thread_type = base::ThreadType::kRealtimeAudio; break; default: break; diff --git a/libcef/renderer/alloy/alloy_content_renderer_client.cc b/libcef/renderer/alloy/alloy_content_renderer_client.cc index 369a9fa98..19b7e6a27 100644 --- a/libcef/renderer/alloy/alloy_content_renderer_client.cc +++ b/libcef/renderer/alloy/alloy_content_renderer_client.cc @@ -71,8 +71,6 @@ #include "content/public/common/content_paths.h" #include "content/public/common/content_switches.h" #include "content/public/common/url_constants.h" -#include "content/public/renderer/render_view.h" -#include "content/public/renderer/render_view_visitor.h" #include "extensions/common/manifest_handlers/csp_info.h" #include "extensions/common/switches.h" #include "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container_manager.h" @@ -290,7 +288,7 @@ void AlloyContentRendererClient::RenderFrameCreated( render_manager_->RenderFrameCreated(render_frame, render_frame_observer, browser_created, is_windowless); if (browser_created) { - OnBrowserCreated(render_frame->GetRenderView(), is_windowless); + OnBrowserCreated(render_frame->GetWebView(), is_windowless); } if (is_windowless.has_value()) { @@ -306,9 +304,7 @@ void AlloyContentRendererClient::WebViewCreated(blink::WebView* web_view) { absl::optional is_windowless; render_manager_->WebViewCreated(web_view, browser_created, is_windowless); if (browser_created) { - auto render_view = content::RenderView::FromWebView(web_view); - CHECK(render_view); - OnBrowserCreated(render_view, is_windowless); + OnBrowserCreated(web_view, is_windowless); } } @@ -516,7 +512,7 @@ void AlloyContentRendererClient::WillDestroyCurrentMessageLoop() { } void AlloyContentRendererClient::OnBrowserCreated( - content::RenderView* render_view, + blink::WebView* web_view, absl::optional is_windowless) { #if BUILDFLAG(IS_MAC) const bool windowless = is_windowless.has_value() && *is_windowless; @@ -525,7 +521,7 @@ void AlloyContentRendererClient::OnBrowserCreated( // WebKit layer, or if it would be exposed as an WebView instance method; the // current implementation uses a static variable, and WebKit needs to be // patched in order to make it work for each WebView instance - render_view->GetWebView()->SetUseExternalPopupMenusThisInstance(!windowless); + web_view->SetUseExternalPopupMenusThisInstance(!windowless); #endif } diff --git a/libcef/renderer/alloy/alloy_content_renderer_client.h b/libcef/renderer/alloy/alloy_content_renderer_client.h index d96761eab..4f4fa2267 100644 --- a/libcef/renderer/alloy/alloy_content_renderer_client.h +++ b/libcef/renderer/alloy/alloy_content_renderer_client.h @@ -119,7 +119,7 @@ class AlloyContentRendererClient void WillDestroyCurrentMessageLoop() override; private: - void OnBrowserCreated(content::RenderView* render_view, + void OnBrowserCreated(blink::WebView* web_view, absl::optional is_windowless); // Perform cleanup work for single-process mode. diff --git a/libcef/renderer/browser_impl.cc b/libcef/renderer/browser_impl.cc index a1bf27149..3efb0bc36 100644 --- a/libcef/renderer/browser_impl.cc +++ b/libcef/renderer/browser_impl.cc @@ -17,7 +17,6 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "content/public/renderer/render_frame.h" -#include "content/public/renderer/render_view.h" #include "content/renderer/document_state.h" #include "content/renderer/navigation_state.h" #include "third_party/blink/public/platform/web_string.h" @@ -35,7 +34,7 @@ // static CefRefPtr CefBrowserImpl::GetBrowserForView( - content::RenderView* view) { + blink::WebView* view) { return CefRenderManager::Get()->GetBrowserForView(view); } @@ -266,11 +265,11 @@ void CefBrowserImpl::GetFrameNames(std::vector& names) { // CefBrowserImpl public methods. // ----------------------------------------------------------------------------- -CefBrowserImpl::CefBrowserImpl(content::RenderView* render_view, +CefBrowserImpl::CefBrowserImpl(blink::WebView* web_view, int browser_id, bool is_popup, bool is_windowless) - : blink::WebViewObserver(render_view->GetWebView()), + : blink::WebViewObserver(web_view), browser_id_(browser_id), is_popup_(is_popup), is_windowless_(is_windowless) {} diff --git a/libcef/renderer/browser_impl.h b/libcef/renderer/browser_impl.h index 0283f7348..0733bd40b 100644 --- a/libcef/renderer/browser_impl.h +++ b/libcef/renderer/browser_impl.h @@ -24,12 +24,9 @@ namespace blink { class WebFrame; class WebNode; +class WebView; } // namespace blink -namespace content { -class RenderView; -} - // Renderer plumbing for CEF features. There is a one-to-one relationship // between RenderView on the renderer side and RenderViewHost on the browser // side. @@ -38,7 +35,7 @@ class RenderView; class CefBrowserImpl : public CefBrowser, public blink::WebViewObserver { public: // Returns the browser associated with the specified RenderView. - static CefRefPtr GetBrowserForView(content::RenderView* view); + static CefRefPtr GetBrowserForView(blink::WebView* view); // Returns the browser associated with the specified main WebFrame. static CefRefPtr GetBrowserForMainFrame( blink::WebFrame* frame); @@ -66,7 +63,7 @@ class CefBrowserImpl : public CefBrowser, public blink::WebViewObserver { void GetFrameIdentifiers(std::vector& identifiers) override; void GetFrameNames(std::vector& names) override; - CefBrowserImpl(content::RenderView* render_view, + CefBrowserImpl(blink::WebView* web_view, int browser_id, bool is_popup, bool is_windowless); diff --git a/libcef/renderer/frame_impl.cc b/libcef/renderer/frame_impl.cc index 85c78efa8..04278019b 100644 --- a/libcef/renderer/frame_impl.cc +++ b/libcef/renderer/frame_impl.cc @@ -33,7 +33,6 @@ #include "libcef/renderer/v8_impl.h" #include "base/strings/utf_string_conversions.h" -#include "content/public/renderer/render_view.h" #include "content/renderer/render_frame_impl.h" #include "third_party/blink/public/mojom/frame/frame.mojom-blink.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h" diff --git a/libcef/renderer/render_frame_observer.cc b/libcef/renderer/render_frame_observer.cc index edba6f58d..d4fd36f18 100644 --- a/libcef/renderer/render_frame_observer.cc +++ b/libcef/renderer/render_frame_observer.cc @@ -24,7 +24,6 @@ #include "libcef/renderer/v8_impl.h" #include "content/public/renderer/render_frame.h" -#include "content/public/renderer/render_view.h" #include "third_party/blink/public/web/blink.h" #include "third_party/blink/public/web/web_document.h" #include "third_party/blink/public/web/web_element.h" diff --git a/libcef/renderer/render_frame_util.cc b/libcef/renderer/render_frame_util.cc index 9cb0098a9..a87aec83b 100644 --- a/libcef/renderer/render_frame_util.cc +++ b/libcef/renderer/render_frame_util.cc @@ -10,7 +10,6 @@ #include "base/logging.h" #include "content/public/renderer/render_thread.h" -#include "content/public/renderer/render_view.h" #include "content/renderer/render_frame_impl.h" #include "third_party/blink/public/web/web_local_frame.h" diff --git a/libcef/renderer/render_manager.cc b/libcef/renderer/render_manager.cc index 31db12268..6ba99812c 100644 --- a/libcef/renderer/render_manager.cc +++ b/libcef/renderer/render_manager.cc @@ -35,7 +35,6 @@ #include "content/public/common/content_switches.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_thread.h" -#include "content/public/renderer/render_view.h" #include "extensions/common/switches.h" #include "mojo/public/cpp/bindings/binder_map.h" #include "services/network/public/mojom/cors_origin_pattern.mojom.h" @@ -56,9 +55,9 @@ CefRenderManager* g_manager = nullptr; class CefGuestView : public blink::WebViewObserver { public: CefGuestView(CefRenderManager* manager, - content::RenderView* render_view, + blink::WebView* web_view, bool is_windowless) - : blink::WebViewObserver(render_view->GetWebView()), + : blink::WebViewObserver(web_view), manager_(manager), is_windowless_(is_windowless) {} @@ -106,7 +105,7 @@ void CefRenderManager::RenderFrameCreated( CefRenderFrameObserver* render_frame_observer, bool& browser_created, absl::optional& is_windowless) { - auto browser = MaybeCreateBrowser(render_frame->GetRenderView(), render_frame, + auto browser = MaybeCreateBrowser(render_frame->GetWebView(), render_frame, &browser_created, &is_windowless); if (browser) { // Attach the frame to the observer for message routing purposes. @@ -118,16 +117,13 @@ void CefRenderManager::RenderFrameCreated( void CefRenderManager::WebViewCreated(blink::WebView* web_view, bool& browser_created, absl::optional& is_windowless) { - auto render_view = content::RenderView::FromWebView(web_view); - CHECK(render_view); content::RenderFrame* render_frame = nullptr; if (web_view->MainFrame()->IsWebLocalFrame()) { render_frame = content::RenderFrame::FromWebFrame( web_view->MainFrame()->ToWebLocalFrame()); } - MaybeCreateBrowser(render_view, render_frame, &browser_created, - &is_windowless); + MaybeCreateBrowser(web_view, render_frame, &browser_created, &is_windowless); } void CefRenderManager::DevToolsAgentAttached() { @@ -157,7 +153,7 @@ void CefRenderManager::ExposeInterfacesToBrowser(mojo::BinderMap* binders) { } CefRefPtr CefRenderManager::GetBrowserForView( - content::RenderView* view) { + blink::WebView* view) { BrowserMap::const_iterator it = browsers_.find(view); if (it != browsers_.end()) return it->second; @@ -282,19 +278,19 @@ void CefRenderManager::WebKitInitialized() { } CefRefPtr CefRenderManager::MaybeCreateBrowser( - content::RenderView* render_view, + blink::WebView* web_view, content::RenderFrame* render_frame, bool* browser_created, absl::optional* is_windowless) { if (browser_created) *browser_created = false; - if (!render_view || !render_frame) + if (!web_view || !render_frame) return nullptr; // Don't create another browser or guest view object if one already exists for // the view. - auto browser = GetBrowserForView(render_view); + auto browser = GetBrowserForView(web_view); if (browser) { if (is_windowless) { *is_windowless = browser->is_windowless(); @@ -302,7 +298,7 @@ CefRefPtr CefRenderManager::MaybeCreateBrowser( return browser; } - auto guest_view = GetGuestViewForView(render_view); + auto guest_view = GetGuestViewForView(web_view); if (guest_view) { if (is_windowless) { *is_windowless = guest_view->is_windowless(); @@ -331,14 +327,14 @@ CefRefPtr CefRenderManager::MaybeCreateBrowser( // Don't create a CefBrowser for a PDF renderer, guest view, or if the new // browser info response has timed out. guest_views_.insert(std::make_pair( - render_view, std::make_unique(this, render_view, - params->is_windowless))); + web_view, + std::make_unique(this, web_view, params->is_windowless))); return nullptr; } - browser = new CefBrowserImpl(render_view, params->browser_id, - params->is_popup, params->is_windowless); - browsers_.insert(std::make_pair(render_view, browser)); + browser = new CefBrowserImpl(web_view, params->browser_id, params->is_popup, + params->is_windowless); + browsers_.insert(std::make_pair(web_view, browser)); // Notify the render process handler. CefRefPtr application = CefAppManager::Get()->GetApplication(); @@ -378,7 +374,7 @@ void CefRenderManager::OnBrowserDestroyed(CefBrowserImpl* browser) { NOTREACHED(); } -CefGuestView* CefRenderManager::GetGuestViewForView(content::RenderView* view) { +CefGuestView* CefRenderManager::GetGuestViewForView(blink::WebView* view) { CEF_REQUIRE_RT_RETURN(nullptr); GuestViewMap::const_iterator it = guest_views_.find(view); diff --git a/libcef/renderer/render_manager.h b/libcef/renderer/render_manager.h index 89bc1541c..754ad2a82 100644 --- a/libcef/renderer/render_manager.h +++ b/libcef/renderer/render_manager.h @@ -24,7 +24,6 @@ class WebView; namespace content { class RenderFrame; -class RenderView; } // namespace content namespace mojo { @@ -63,7 +62,7 @@ class CefRenderManager : public cef::mojom::RenderManager { void ExposeInterfacesToBrowser(mojo::BinderMap* binders); // Returns the browser associated with the specified RenderView. - CefRefPtr GetBrowserForView(content::RenderView* view); + CefRefPtr GetBrowserForView(blink::WebView* view); // Returns the browser associated with the specified main WebFrame. CefRefPtr GetBrowserForMainFrame(blink::WebFrame* frame); @@ -95,7 +94,7 @@ class CefRenderManager : public cef::mojom::RenderManager { // Maybe create a new browser object, return the existing one, or return // nullptr for guest views. CefRefPtr MaybeCreateBrowser( - content::RenderView* render_view, + blink::WebView* web_view, content::RenderFrame* render_frame, bool* browser_created, absl::optional* is_windowless); @@ -104,18 +103,17 @@ class CefRenderManager : public cef::mojom::RenderManager { void OnBrowserDestroyed(CefBrowserImpl* browser); // Returns the guest view associated with the specified RenderView if any. - CefGuestView* GetGuestViewForView(content::RenderView* view); + CefGuestView* GetGuestViewForView(blink::WebView* view); // Called from CefGuestView::OnDestruct(). void OnGuestViewDestroyed(CefGuestView* guest_view); // Map of RenderView pointers to CefBrowserImpl references. - using BrowserMap = std::map>; + using BrowserMap = std::map>; BrowserMap browsers_; // Map of RenderView poiners to CefGuestView implementations. - using GuestViewMap = - std::map>; + using GuestViewMap = std::map>; GuestViewMap guest_views_; // Cross-origin white list entries that need to be registered with WebKit. diff --git a/patch/patch.cfg b/patch/patch.cfg index da8aa3d38..8a41b0046 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -283,6 +283,11 @@ patches = [ # https://bitbucket.org/chromiumembedded/cef/issues/2969 'name': 'chrome_browser_profile_menu', }, + { + # alloy: Don't require heap profiler for utility processes. + # Avoids a DCHECK added in https://crrev.com/c21e9f71d1f2e + 'name': 'chrome_utility_client', + }, { # Support override of the User-Agent product component when NetworkService # is enabled. @@ -582,14 +587,14 @@ patches = [ 'name': 'linux_bluetooth_1319006', }, { - # Wrap base::Value::{Dict,List}}:WriteIntoTrace() with correct #ifs. - # Fixes compile error with official cef_sandbox build on Windows. - # https://chromium-review.googlesource.com/c/chromium/src/+/3703780 - 'name': 'base_values_3703780', + # Linux: Support chaining of PrintingContextLinux callbacks. + # https://bitbucket.org/chromiumembedded/cef/issues/3314 + 'name': 'linux_printing_context', }, { - # Windows: Fix time_win.cc compile error with cef_sandbox. - # https://chromium-review.googlesource.com/c/chromium/src/+/3718022 - 'name': 'base_time_3718022', + # Windows: Add LAZY_INSTANCE_INITIALIZER where necessary to fix official + # cef_sandbox build. + # https://chromium-review.googlesource.com/c/chromium/src/+/3773637 + 'name': 'base_metrics_3773637', } ] diff --git a/patch/patches/base_metrics_3773637.patch b/patch/patches/base_metrics_3773637.patch new file mode 100644 index 000000000..fc4c1b2a6 --- /dev/null +++ b/patch/patches/base_metrics_3773637.patch @@ -0,0 +1,13 @@ +diff --git base/metrics/statistics_recorder.cc base/metrics/statistics_recorder.cc +index 1f808cac46bc0..8ca2df9cfc5b9 100644 +--- base/metrics/statistics_recorder.cc ++++ base/metrics/statistics_recorder.cc +@@ -32,7 +32,7 @@ bool HistogramNameLesser(const base::HistogramBase* a, + } // namespace + + // static +-LazyInstance::Leaky StatisticsRecorder::lock_; ++LazyInstance::Leaky StatisticsRecorder::lock_ = LAZY_INSTANCE_INITIALIZER; + + // static + StatisticsRecorder* StatisticsRecorder::top_ = nullptr; diff --git a/patch/patches/base_sandbox_2743.patch b/patch/patches/base_sandbox_2743.patch index 25835b1cb..9e6cb0c0e 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 3d13052ffc51f..808aa7607c890 100644 +index d6f08e8d0149c..8a9d77fee5029 100644 --- base/BUILD.gn +++ base/BUILD.gn @@ -37,6 +37,7 @@ import("//build/nocompile.gni") @@ -10,7 +10,7 @@ index 3d13052ffc51f..808aa7607c890 100644 import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") -@@ -1903,7 +1904,11 @@ mixed_component("base") { +@@ -1910,7 +1911,11 @@ mixed_component("base") { "hash/md5_constexpr_internal.h", "hash/sha1.h", ] @@ -23,7 +23,7 @@ index 3d13052ffc51f..808aa7607c890 100644 sources += [ "hash/md5_nacl.cc", "hash/md5_nacl.h", -@@ -2056,6 +2061,12 @@ mixed_component("base") { +@@ -2063,6 +2068,12 @@ mixed_component("base") { defines += [ "COM_INIT_CHECK_HOOK_DISABLED" ] } diff --git a/patch/patches/base_time_3718022.patch b/patch/patches/base_time_3718022.patch deleted file mode 100644 index 2dc931313..000000000 --- a/patch/patches/base_time_3718022.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git base/allocator/partition_allocator/partition_alloc_base/time/time_win.cc base/allocator/partition_allocator/partition_alloc_base/time/time_win.cc -index e36aeb64abdb7..7deae93b86f03 100644 ---- base/allocator/partition_allocator/partition_alloc_base/time/time_win.cc -+++ base/allocator/partition_allocator/partition_alloc_base/time/time_win.cc -@@ -327,7 +327,7 @@ DWORD (*g_tick_function)(void) = &timeGetTimeWrapper; - // "rollover" counter. - union LastTimeAndRolloversState { - // The state as a single 32-bit opaque value. -- std::atomic as_opaque_32; -+ std::atomic as_opaque_32{0}; - - // The state as usable values. - struct { diff --git a/patch/patches/base_values_3703780.patch b/patch/patches/base_values_3703780.patch deleted file mode 100644 index 0e7800e98..000000000 --- a/patch/patches/base_values_3703780.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git base/values.cc base/values.cc -index 62e55cd83704d..42857ccc2e01d 100644 ---- base/values.cc -+++ base/values.cc -@@ -789,12 +789,14 @@ std::string Value::Dict::DebugString() const { - return DebugStringImpl(*this); - } - -+#if BUILDFLAG(ENABLE_BASE_TRACING) - void Value::Dict::WriteIntoTrace(perfetto::TracedValue context) const { - perfetto::TracedDictionary dict = std::move(context).WriteDictionary(); - for (auto kv : *this) { - dict.Add(perfetto::DynamicString(kv.first), kv.second); - } - } -+#endif // BUILDFLAG(ENABLE_BASE_TRACING) - - Value::Dict::Dict( - const flat_map>& storage) { -@@ -999,12 +1001,14 @@ std::string Value::List::DebugString() const { - return DebugStringImpl(*this); - } - -+#if BUILDFLAG(ENABLE_BASE_TRACING) - void Value::List::WriteIntoTrace(perfetto::TracedValue context) const { - perfetto::TracedArray array = std::move(context).WriteArray(); - for (const auto& item : *this) { - array.Append(item); - } - } -+#endif // BUILDFLAG(ENABLE_BASE_TRACING) - - Value::List::List(const std::vector& storage) { - storage_.reserve(storage.size()); diff --git a/patch/patches/browser_scheduler.patch b/patch/patches/browser_scheduler.patch index e3b04dafe..958af6b18 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 38d037f3b861f..b2af20324bd35 100644 +index e06e26f80a5e0..2da99c8f97990 100644 --- content/browser/scheduler/browser_task_executor.cc +++ content/browser/scheduler/browser_task_executor.cc -@@ -304,7 +304,7 @@ BrowserTaskExecutor::OnUserInputStart() { +@@ -285,7 +285,7 @@ BrowserTaskExecutor::OnUserInputStart() { // static void BrowserTaskExecutor::Shutdown() { diff --git a/patch/patches/browser_security_policy_1081397.patch b/patch/patches/browser_security_policy_1081397.patch index 35ac238bb..e37a611ea 100644 --- a/patch/patches/browser_security_policy_1081397.patch +++ b/patch/patches/browser_security_policy_1081397.patch @@ -1,5 +1,5 @@ diff --git content/browser/child_process_security_policy_impl.cc content/browser/child_process_security_policy_impl.cc -index 3a619b38da0c7..8bdf8ad9b1c18 100644 +index d254be9911f39..76e28fe22d988 100644 --- content/browser/child_process_security_policy_impl.cc +++ content/browser/child_process_security_policy_impl.cc @@ -1751,6 +1751,16 @@ bool ChildProcessSecurityPolicyImpl::CanAccessDataForMaybeOpaqueOrigin( @@ -20,35 +20,37 @@ index 3a619b38da0c7..8bdf8ad9b1c18 100644 // TODO(wjmaclean): We should update the ProcessLock comparison API diff --git content/browser/renderer_host/navigation_request.cc content/browser/renderer_host/navigation_request.cc -index e3e73a2353312..4f2d190c000b2 100644 +index 8afc757188c41..d43e81d736fc4 100644 --- content/browser/renderer_host/navigation_request.cc +++ content/browser/renderer_host/navigation_request.cc -@@ -6312,6 +6312,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryWithoutFinalFrameHost( - network::mojom::WebSandboxFlags sandbox_flags) { - // Calculate an approximation of the origin. The sandbox/csp are ignored. - url::Origin origin = GetOriginForURLLoaderFactoryUnchecked(this); -+ if (!origin.GetURL().IsStandard()) { -+ // Always return an opaque origin for non-standard URLs. Otherwise, the -+ // below CanAccessDataForOrigin() check may fail for unregistered custom -+ // scheme requests in CEF. -+ return origin.DeriveNewOpaqueOrigin(); -+ } +@@ -6373,6 +6373,14 @@ std::pair NavigationRequest:: + origin_and_debug_info.second += ", error"; + } - // Apply sandbox flags. - // See https://html.spec.whatwg.org/#sandboxed-origin-browsing-context-flag -@@ -6345,6 +6351,15 @@ NavigationRequest::GetOriginForURLLoaderFactoryWithFinalFrameHost() { - if (IsSameDocument() || IsPageActivation()) - return GetRenderFrameHost()->GetLastCommittedOrigin(); - -+ // Calculate an approximation of the origin. The sandbox/csp are ignored. -+ url::Origin unchecked_origin = GetOriginForURLLoaderFactoryUnchecked(this); -+ if (!unchecked_origin.GetURL().IsStandard()) { ++ if (!origin_and_debug_info.first.GetURL().IsStandard()) { + // Always return an opaque origin for non-standard URLs. Otherwise, the -+ // below CanAccessDataForOrigin() check may fail for unregistered custom -+ // scheme requests in CEF. -+ return unchecked_origin.DeriveNewOpaqueOrigin(); ++ // CanAccessDataForOrigin() check may fail for unregistered custom scheme ++ // requests in CEF. ++ use_opaque_origin = true; ++ origin_and_debug_info.second += ", cef_nonstandard"; + } + - url::Origin origin = - GetOriginForURLLoaderFactoryWithoutFinalFrameHost(SandboxFlagsToCommit()); + if (use_opaque_origin) { + origin_and_debug_info = + std::make_pair(origin_and_debug_info.first.DeriveNewOpaqueOrigin(), +@@ -6400,6 +6408,15 @@ std::pair NavigationRequest:: + GetOriginForURLLoaderFactoryWithoutFinalFrameHostWithDebugInfo( + SandboxFlagsToCommit()); ++ if (origin_with_debug_info.first.opaque() && ++ origin_with_debug_info.second.find("cef_nonstandard") != ++ std::string::npos) { ++ // Always return an opaque origin for non-standard URLs. Otherwise, the ++ // below CanAccessDataForOrigin() check may fail for unregistered custom ++ // scheme requests in CEF. ++ return origin_with_debug_info; ++ } ++ + // MHTML documents should commit as an opaque origin. They should not be able + // to make network request on behalf of the real origin. + DCHECK(!IsMhtmlOrSubframe() || origin_with_debug_info.first.opaque()); diff --git a/patch/patches/build.patch b/patch/patches/build.patch index 14f688a6f..6422fdfd7 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 df8610696cc6e..ab37a46457abd 100644 +index cab8b77aaa86b..7e88abd41bf1d 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn -@@ -1841,8 +1841,6 @@ config("thin_archive") { +@@ -1850,8 +1850,6 @@ config("thin_archive") { # confuses lldb. if ((is_posix && !is_nacl && !is_apple) || is_fuchsia) { arflags = [ "-T" ] diff --git a/patch/patches/chrome_browser.patch b/patch/patches/chrome_browser.patch index cdab35f05..f5d46f668 100644 --- a/patch/patches/chrome_browser.patch +++ b/patch/patches/chrome_browser.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/BUILD.gn chrome/browser/BUILD.gn -index f4f1725e5a0ed..59ce489a635c3 100644 +index 99b370a07c1df..85bec5adc723a 100644 --- chrome/browser/BUILD.gn +++ chrome/browser/BUILD.gn @@ -11,6 +11,7 @@ import("//build/config/compiler/pgo/pgo.gni") @@ -10,15 +10,15 @@ index f4f1725e5a0ed..59ce489a635c3 100644 import("//chrome/browser/buildflags.gni") import("//chrome/browser/downgrade/buildflags.gni") import("//chrome/common/features.gni") -@@ -1946,6 +1947,7 @@ static_library("browser") { - "//build:chromeos_buildflags", +@@ -1959,6 +1960,7 @@ static_library("browser") { + "//build/config/chromebox_for_meetings:buildflags", "//build/config/compiler:compiler_buildflags", "//cc", + "//cef/libcef/features", "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2482,6 +2484,10 @@ static_library("browser") { +@@ -2491,6 +2493,10 @@ static_library("browser") { ] } diff --git a/patch/patches/chrome_browser_background_mode_1100085.patch b/patch/patches/chrome_browser_background_mode_1100085.patch index aacad0980..a4fc573bc 100644 --- a/patch/patches/chrome_browser_background_mode_1100085.patch +++ b/patch/patches/chrome_browser_background_mode_1100085.patch @@ -14,7 +14,7 @@ index d7b9aa164f161..a042abaecbce7 100644 std::unique_ptr manager) = 0; #endif diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc -index 0d4c13e21de4f..09168fad20462 100644 +index 9cd8e9f4b8f4c..e6e6edc0465a1 100644 --- chrome/browser/browser_process_impl.cc +++ chrome/browser/browser_process_impl.cc @@ -1013,18 +1013,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { @@ -38,7 +38,7 @@ index 0d4c13e21de4f..09168fad20462 100644 std::unique_ptr manager) { background_mode_manager_ = std::move(manager); diff --git chrome/browser/browser_process_impl.h chrome/browser/browser_process_impl.h -index a3eabe6f0ef59..8fd3359c13945 100644 +index e2b4d0a33d8ca..99f2d3e441002 100644 --- chrome/browser/browser_process_impl.h +++ chrome/browser/browser_process_impl.h @@ -174,8 +174,8 @@ class BrowserProcessImpl : public BrowserProcess, diff --git a/patch/patches/chrome_browser_browser.patch b/patch/patches/chrome_browser_browser.patch index 135a519ce..554753808 100644 --- a/patch/patches/chrome_browser_browser.patch +++ b/patch/patches/chrome_browser_browser.patch @@ -13,10 +13,10 @@ index 3285e422f76c1..5f35b91897b75 100644 return false; } diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index 66bece3638bf5..87e059da1256c 100644 +index 6f504d1acba5d..0e242d1612fc2 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn -@@ -9,6 +9,7 @@ import("//build/config/compiler/compiler.gni") +@@ -10,6 +10,7 @@ import("//build/config/compiler/compiler.gni") import("//build/config/features.gni") import("//build/config/ozone.gni") import("//build/config/ui.gni") @@ -24,7 +24,7 @@ index 66bece3638bf5..87e059da1256c 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//chromeos/ash/components/assistant/assistant.gni") -@@ -373,6 +374,10 @@ static_library("ui") { +@@ -364,6 +365,10 @@ static_library("ui") { "//build/config/compiler:wexit_time_destructors", ] @@ -35,15 +35,15 @@ index 66bece3638bf5..87e059da1256c 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 -@@ -395,6 +400,7 @@ static_library("ui") { - "//build:branding_buildflags", +@@ -387,6 +392,7 @@ static_library("ui") { "//build:chromeos_buildflags", + "//build/config/chromebox_for_meetings:buildflags", "//cc/paint", + "//cef/libcef/features", "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -5461,6 +5467,7 @@ static_library("ui") { +@@ -5505,6 +5511,7 @@ static_library("ui") { if (enable_basic_printing) { deps += [ "//components/printing/browser", @@ -52,10 +52,10 @@ index 66bece3638bf5..87e059da1256c 100644 ] } diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc -index 63d64acc72318..21f0a0b81f996 100644 +index ce86697e47437..4600d6a9ab701 100644 --- chrome/browser/ui/browser.cc +++ chrome/browser/ui/browser.cc -@@ -264,6 +264,25 @@ +@@ -262,6 +262,25 @@ #include "components/captive_portal/content/captive_portal_tab_helper.h" #endif @@ -81,7 +81,7 @@ index 63d64acc72318..21f0a0b81f996 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/extensions/extension_browser_window_helper.h" #endif -@@ -513,6 +532,13 @@ Browser::Browser(const CreateParams& params) +@@ -511,6 +530,13 @@ Browser::Browser(const CreateParams& params) tab_strip_model_->AddObserver(this); @@ -95,7 +95,7 @@ index 63d64acc72318..21f0a0b81f996 100644 location_bar_model_ = std::make_unique( location_bar_model_delegate_.get(), content::kMaxURLDisplayChars); -@@ -1329,6 +1355,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( +@@ -1322,6 +1348,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( if (exclusive_access_manager_->HandleUserKeyEvent(event)) return content::KeyboardEventProcessingResult::HANDLED; @@ -110,7 +110,7 @@ index 63d64acc72318..21f0a0b81f996 100644 return window()->PreHandleKeyboardEvent(event); } -@@ -1336,8 +1370,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, +@@ -1329,8 +1363,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, const NativeWebKeyboardEvent& event) { DevToolsWindow* devtools_window = DevToolsWindow::GetInstanceForInspectedWebContents(source); @@ -131,7 +131,7 @@ index 63d64acc72318..21f0a0b81f996 100644 } bool Browser::TabsNeedBeforeUnloadFired() { -@@ -1544,6 +1588,14 @@ WebContents* Browser::OpenURLFromTab(WebContents* source, +@@ -1537,6 +1581,14 @@ WebContents* Browser::OpenURLFromTab(WebContents* source, return window->OpenURLFromTab(source, params); } @@ -146,7 +146,7 @@ index 63d64acc72318..21f0a0b81f996 100644 NavigateParams nav_params(this, params.url, params.transition); nav_params.FillNavigateParamsFromOpenURLParams(params); nav_params.source_contents = source; -@@ -1673,6 +1725,15 @@ void Browser::AddNewContents(WebContents* source, +@@ -1666,6 +1718,15 @@ void Browser::AddNewContents(WebContents* source, return; } @@ -162,7 +162,7 @@ index 63d64acc72318..21f0a0b81f996 100644 chrome::AddWebContents(this, source, std::move(new_contents), target_url, disposition, initial_rect, window_action); } -@@ -1691,6 +1752,8 @@ void Browser::LoadingStateChanged(WebContents* source, +@@ -1684,6 +1745,8 @@ void Browser::LoadingStateChanged(WebContents* source, bool should_show_loading_ui) { ScheduleUIUpdate(source, content::INVALIDATE_TYPE_LOAD); UpdateWindowForLoadingStateChanged(source, should_show_loading_ui); @@ -171,7 +171,7 @@ index 63d64acc72318..21f0a0b81f996 100644 } void Browser::CloseContents(WebContents* source) { -@@ -1718,6 +1781,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { +@@ -1711,6 +1774,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { } void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { @@ -180,7 +180,7 @@ index 63d64acc72318..21f0a0b81f996 100644 if (!GetStatusBubble()) return; -@@ -1725,6 +1790,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { +@@ -1718,6 +1783,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { GetStatusBubble()->SetURL(url); } @@ -198,7 +198,7 @@ index 63d64acc72318..21f0a0b81f996 100644 void Browser::ContentsMouseEvent(WebContents* source, bool motion, bool exited) { -@@ -1749,6 +1825,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { +@@ -1742,6 +1818,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { return false; } @@ -218,7 +218,7 @@ index 63d64acc72318..21f0a0b81f996 100644 void Browser::BeforeUnloadFired(WebContents* web_contents, bool proceed, bool* proceed_to_fire_unload) { -@@ -1841,6 +1930,10 @@ void Browser::WebContentsCreated(WebContents* source_contents, +@@ -1834,6 +1923,10 @@ void Browser::WebContentsCreated(WebContents* source_contents, // Make the tab show up in the task manager. task_manager::WebContentsTags::CreateForTabContents(new_contents); @@ -229,7 +229,7 @@ index 63d64acc72318..21f0a0b81f996 100644 } void Browser::PortalWebContentsCreated(WebContents* portal_web_contents) { -@@ -1885,6 +1978,8 @@ void Browser::RendererResponsive( +@@ -1878,6 +1971,8 @@ void Browser::RendererResponsive( void Browser::DidNavigatePrimaryMainFramePostCommit(WebContents* web_contents) { if (web_contents == tab_strip_model_->GetActiveWebContents()) UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE); @@ -238,7 +238,7 @@ index 63d64acc72318..21f0a0b81f996 100644 } content::JavaScriptDialogManager* Browser::GetJavaScriptDialogManager( -@@ -1945,11 +2040,15 @@ void Browser::EnterFullscreenModeForTab( +@@ -1938,11 +2033,15 @@ void Browser::EnterFullscreenModeForTab( const blink::mojom::FullscreenOptions& options) { exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab( requesting_frame, options.display_id); @@ -254,7 +254,7 @@ index 63d64acc72318..21f0a0b81f996 100644 } bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) { -@@ -2127,6 +2226,15 @@ void Browser::RequestMediaAccessPermission( +@@ -2121,6 +2220,15 @@ void Browser::RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, content::MediaResponseCallback callback) { @@ -270,7 +270,7 @@ index 63d64acc72318..21f0a0b81f996 100644 const extensions::Extension* extension = GetExtensionForOrigin(profile_, request.security_origin); MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( -@@ -2664,13 +2772,20 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { +@@ -2658,13 +2766,20 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { // Browser, Getters for UI (private): StatusBubble* Browser::GetStatusBubble() { @@ -292,7 +292,7 @@ index 63d64acc72318..21f0a0b81f996 100644 return window_ ? window_->GetStatusBubble() : nullptr; } -@@ -2797,6 +2912,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { +@@ -2791,6 +2906,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { content_translate_driver->RemoveTranslationObserver(this); BookmarkTabHelper::FromWebContents(web_contents)->RemoveObserver(this); } @@ -302,7 +302,7 @@ index 63d64acc72318..21f0a0b81f996 100644 void Browser::TabDetachedAtImpl(content::WebContents* contents, diff --git chrome/browser/ui/browser.h chrome/browser/ui/browser.h -index 87859f4741386..1346cdb60631d 100644 +index 64eeec32ac70f..10039229b4d4f 100644 --- chrome/browser/ui/browser.h +++ chrome/browser/ui/browser.h @@ -22,6 +22,7 @@ @@ -324,9 +324,9 @@ index 87859f4741386..1346cdb60631d 100644 #if BUILDFLAG(IS_ANDROID) #error This file should only be included on desktop. #endif -@@ -316,6 +321,11 @@ class Browser : public TabStripModelObserver, - // maximizable. - bool can_maximize = true; +@@ -320,6 +325,11 @@ class Browser : public TabStripModelObserver, + float initial_aspect_ratio = 1.0f; + bool lock_aspect_ratio = false; +#if BUILDFLAG(ENABLE_CEF) + // Opaque CEF-specific configuration. Will be propagated to new Browsers. @@ -336,7 +336,7 @@ index 87859f4741386..1346cdb60631d 100644 private: friend class Browser; friend class WindowSizerChromeOSTest; -@@ -383,6 +393,13 @@ class Browser : public TabStripModelObserver, +@@ -387,6 +397,13 @@ class Browser : public TabStripModelObserver, return creation_source_ == CreationSource::kSessionRestore; } @@ -350,7 +350,7 @@ index 87859f4741386..1346cdb60631d 100644 // Accessors //////////////////////////////////////////////////////////////// const CreateParams& create_params() const { return create_params_; } -@@ -456,6 +473,12 @@ class Browser : public TabStripModelObserver, +@@ -460,6 +477,12 @@ class Browser : public TabStripModelObserver, base::WeakPtr AsWeakPtr(); @@ -363,7 +363,7 @@ index 87859f4741386..1346cdb60631d 100644 // Get the FindBarController for this browser, creating it if it does not // yet exist. FindBarController* GetFindBarController(); -@@ -825,11 +848,19 @@ class Browser : public TabStripModelObserver, +@@ -829,11 +852,19 @@ class Browser : public TabStripModelObserver, void SetContentsBounds(content::WebContents* source, const gfx::Rect& bounds) override; void UpdateTargetURL(content::WebContents* source, const GURL& url) override; @@ -383,7 +383,7 @@ index 87859f4741386..1346cdb60631d 100644 void BeforeUnloadFired(content::WebContents* source, bool proceed, bool* proceed_to_fire_unload) override; -@@ -1226,6 +1257,8 @@ class Browser : public TabStripModelObserver, +@@ -1233,6 +1264,8 @@ class Browser : public TabStripModelObserver, const std::string initial_workspace_; bool initial_visible_on_all_workspaces_state_; @@ -392,7 +392,7 @@ index 87859f4741386..1346cdb60631d 100644 CreationSource creation_source_ = CreationSource::kUnknown; UnloadController unload_controller_; -@@ -1294,6 +1327,10 @@ class Browser : public TabStripModelObserver, +@@ -1301,6 +1334,10 @@ class Browser : public TabStripModelObserver, std::unique_ptr screen_ai_annotator_; #endif @@ -404,10 +404,10 @@ index 87859f4741386..1346cdb60631d 100644 // The following factory is used for chrome update coalescing. diff --git chrome/browser/ui/browser_navigator.cc chrome/browser/ui/browser_navigator.cc -index 9315a947d5cb2..0d5d14ae56026 100644 +index 3c01acfca74b0..11e298c8ed15b 100644 --- chrome/browser/ui/browser_navigator.cc +++ chrome/browser/ui/browser_navigator.cc -@@ -518,6 +518,13 @@ std::unique_ptr CreateTargetContents( +@@ -563,6 +563,13 @@ std::unique_ptr CreateTargetContents( std::unique_ptr target_contents = WebContents::Create(create_params); @@ -422,7 +422,7 @@ index 9315a947d5cb2..0d5d14ae56026 100644 // tab helpers, so the entire set of tab helpers needs to be set up // immediately. diff --git chrome/browser/ui/browser_tabstrip.cc chrome/browser/ui/browser_tabstrip.cc -index 9d0cf64ac7dcb..b6066163d2dc3 100644 +index fc41ea1501856..7e6ef189bbc51 100644 --- chrome/browser/ui/browser_tabstrip.cc +++ chrome/browser/ui/browser_tabstrip.cc @@ -31,9 +31,13 @@ void AddTabAt(Browser* browser, diff --git a/patch/patches/chrome_browser_context_menus.patch b/patch/patches/chrome_browser_context_menus.patch index 2a1ec6f68..21ba34420 100644 --- a/patch/patches/chrome_browser_context_menus.patch +++ b/patch/patches/chrome_browser_context_menus.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/renderer_context_menu/render_view_context_menu.cc chrome/browser/renderer_context_menu/render_view_context_menu.cc -index 95a75d011f33e..cc5dc818152f8 100644 +index 374f3735584d9..3aff0aa1c21ca 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ chrome/browser/renderer_context_menu/render_view_context_menu.cc -@@ -301,6 +301,13 @@ base::OnceCallback* GetMenuShownCallback() { +@@ -303,6 +303,13 @@ base::OnceCallback* GetMenuShownCallback() { return callback.get(); } @@ -16,9 +16,9 @@ index 95a75d011f33e..cc5dc818152f8 100644 enum class UmaEnumIdLookupType { GeneralEnumId, ContextSpecificEnumId, -@@ -535,6 +542,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { - return -1; - } +@@ -539,6 +546,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { + if (ContextMenuMatcher::IsExtensionsCustomCommandId(id)) + return 1; + // Match the MENU_ID_USER_FIRST to MENU_ID_USER_LAST range from cef_types.h. + if (id >= 26500 && id <= 28500) @@ -27,7 +27,7 @@ index 95a75d011f33e..cc5dc818152f8 100644 id = CollapseCommandsForUMA(id); const auto& map = GetIdcToUmaMap(type); auto it = map.find(id); -@@ -724,6 +735,14 @@ RenderViewContextMenu::RenderViewContextMenu( +@@ -729,6 +740,14 @@ RenderViewContextMenu::RenderViewContextMenu( system_app_ = GetBrowser() && GetBrowser()->app_controller() ? GetBrowser()->app_controller()->system_app() : nullptr; @@ -42,7 +42,7 @@ index 95a75d011f33e..cc5dc818152f8 100644 } RenderViewContextMenu::~RenderViewContextMenu() = default; -@@ -1111,6 +1130,12 @@ void RenderViewContextMenu::InitMenu() { +@@ -1130,6 +1149,12 @@ void RenderViewContextMenu::InitMenu() { // menu, meaning that each menu item added/removed in this function will cause // it to visibly jump on the screen (see b/173569669). AppendQuickAnswersItems(); @@ -55,7 +55,7 @@ index 95a75d011f33e..cc5dc818152f8 100644 } Profile* RenderViewContextMenu::GetProfile() const { -@@ -2902,6 +2927,12 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( +@@ -2945,6 +2970,12 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( execute_plugin_action_callback_ = std::move(cb); } @@ -69,7 +69,7 @@ index 95a75d011f33e..cc5dc818152f8 100644 RenderViewContextMenu::GetHandlersForLinkUrl() { custom_handlers::ProtocolHandlerRegistry::ProtocolHandlerList handlers = diff --git chrome/browser/renderer_context_menu/render_view_context_menu.h chrome/browser/renderer_context_menu/render_view_context_menu.h -index e95f46698826c..1fcca0b68f20e 100644 +index 5447107f392f5..ac79f549fcd8a 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.h +++ chrome/browser/renderer_context_menu/render_view_context_menu.h @@ -125,6 +125,12 @@ class RenderViewContextMenu @@ -85,7 +85,7 @@ index e95f46698826c..1fcca0b68f20e 100644 protected: Profile* GetProfile() const; -@@ -340,6 +346,9 @@ class RenderViewContextMenu +@@ -347,6 +353,9 @@ class RenderViewContextMenu // built. bool is_protocol_submenu_valid_ = false; diff --git a/patch/patches/chrome_browser_dialogs_native.patch b/patch/patches/chrome_browser_dialogs_native.patch index 1c16fe733..25af999c7 100644 --- a/patch/patches/chrome_browser_dialogs_native.patch +++ b/patch/patches/chrome_browser_dialogs_native.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/file_select_helper.cc chrome/browser/file_select_helper.cc -index 23215d8b854fd..4cc1e7f7d3d95 100644 +index c700f62fcfed3..23b20a8008029 100644 --- chrome/browser/file_select_helper.cc +++ chrome/browser/file_select_helper.cc @@ -20,6 +20,7 @@ @@ -24,7 +24,7 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 ShowFolderUploadConfirmationDialog( path, base::BindOnce(&FileSelectHelper::ConvertToFileChooserFileInfoList, this), -@@ -450,7 +458,8 @@ void FileSelectHelper::DontAbortOnMissingWebContentsForTesting() { +@@ -470,7 +478,8 @@ void FileSelectHelper::DontAbortOnMissingWebContentsForTesting() { std::unique_ptr FileSelectHelper::GetFileTypesFromAcceptType( @@ -34,7 +34,7 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 std::unique_ptr base_file_type( new ui::SelectFileDialog::FileTypeInfo()); if (accept_types.empty()) -@@ -464,17 +473,24 @@ FileSelectHelper::GetFileTypesFromAcceptType( +@@ -484,17 +493,24 @@ FileSelectHelper::GetFileTypesFromAcceptType( std::vector* extensions = &file_type->extensions.back(); @@ -60,7 +60,7 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 } else { if (!base::IsStringASCII(accept_type)) continue; -@@ -485,10 +501,18 @@ FileSelectHelper::GetFileTypesFromAcceptType( +@@ -505,10 +521,18 @@ FileSelectHelper::GetFileTypesFromAcceptType( description_id = IDS_AUDIO_FILES; else if (ascii_type == "video/*") description_id = IDS_VIDEO_FILES; @@ -81,7 +81,7 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 if (extensions->size() > old_extension_size) valid_type_count++; } -@@ -513,6 +537,15 @@ FileSelectHelper::GetFileTypesFromAcceptType( +@@ -533,6 +557,15 @@ FileSelectHelper::GetFileTypesFromAcceptType( l10n_util::GetStringUTF16(description_id)); } @@ -97,7 +97,7 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 return file_type; } -@@ -520,7 +553,8 @@ FileSelectHelper::GetFileTypesFromAcceptType( +@@ -540,7 +573,8 @@ FileSelectHelper::GetFileTypesFromAcceptType( void FileSelectHelper::RunFileChooser( content::RenderFrameHost* render_frame_host, scoped_refptr listener, @@ -107,7 +107,7 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 Profile* profile = Profile::FromBrowserContext( render_frame_host->GetProcess()->GetBrowserContext()); -@@ -539,6 +573,7 @@ void FileSelectHelper::RunFileChooser( +@@ -559,6 +593,7 @@ void FileSelectHelper::RunFileChooser( // message. scoped_refptr file_select_helper( new FileSelectHelper(profile)); @@ -115,7 +115,7 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 file_select_helper->RunFileChooser(render_frame_host, std::move(listener), params.Clone()); } -@@ -592,7 +627,8 @@ void FileSelectHelper::RunFileChooser( +@@ -612,7 +647,8 @@ void FileSelectHelper::RunFileChooser( } void FileSelectHelper::GetFileTypesInThreadPool(FileChooserParamsPtr params) { @@ -126,10 +126,10 @@ index 23215d8b854fd..4cc1e7f7d3d95 100644 params->need_local_path ? ui::SelectFileDialog::FileTypeInfo::NATIVE_PATH : ui::SelectFileDialog::FileTypeInfo::ANY_PATH; diff --git chrome/browser/file_select_helper.h chrome/browser/file_select_helper.h -index f9d1f31b36357..122e1ce9fa962 100644 +index 8c86774e6d279..b634ed1056b4f 100644 --- chrome/browser/file_select_helper.h +++ chrome/browser/file_select_helper.h -@@ -59,7 +59,8 @@ class FileSelectHelper : public base::RefCountedThreadSafe< +@@ -65,7 +65,8 @@ class FileSelectHelper : public base::RefCountedThreadSafe< static void RunFileChooser( content::RenderFrameHost* render_frame_host, scoped_refptr listener, @@ -139,7 +139,7 @@ index f9d1f31b36357..122e1ce9fa962 100644 // Enumerates all the files in directory. static void EnumerateDirectory( -@@ -255,7 +256,8 @@ class FileSelectHelper : public base::RefCountedThreadSafe< +@@ -266,7 +267,8 @@ class FileSelectHelper : public base::RefCountedThreadSafe< // |accept_types| contains only valid lowercased MIME types or file extensions // beginning with a period (.). static std::unique_ptr @@ -149,16 +149,16 @@ index f9d1f31b36357..122e1ce9fa962 100644 // Check the accept type is valid. It is expected to be all lower case with // no whitespace. -@@ -319,6 +321,9 @@ class FileSelectHelper : public base::RefCountedThreadSafe< - +@@ -331,6 +333,9 @@ class FileSelectHelper : public base::RefCountedThreadSafe< // Set to false in unit tests since there is no WebContents. bool abort_on_missing_web_contents_in_tests_ = true; -+ + + // Set to true if this dialog was triggered via CEF. + bool run_from_cef_ = false; - }; - - #endif // CHROME_BROWSER_FILE_SELECT_HELPER_H_ ++ + #if BUILDFLAG(IS_CHROMEOS_ASH) + // DlpFilesController is responsible for checking whether any of the selected + // files is restricted according to the DataLeakPrevention policy. diff --git chrome/browser/ui/chrome_select_file_policy.h chrome/browser/ui/chrome_select_file_policy.h index 2cf473c35b67a..e3552bd0f17d4 100644 --- chrome/browser/ui/chrome_select_file_policy.h @@ -172,72 +172,11 @@ index 2cf473c35b67a..e3552bd0f17d4 100644 private: raw_ptr source_contents_; }; -diff --git printing/printing_context_linux.cc printing/printing_context_linux.cc -index f77248cef2227..6c762941ec0a3 100644 ---- printing/printing_context_linux.cc -+++ printing/printing_context_linux.cc -@@ -54,20 +54,23 @@ PrintingContextLinux::~PrintingContextLinux() { - } - - // static --void PrintingContextLinux::SetCreatePrintDialogFunction( -- PrintDialogGtkInterface* (*create_dialog_func)( -- PrintingContextLinux* context)) { -+PrintingContextLinux::CreatePrintDialogFunctionPtr -+PrintingContextLinux::SetCreatePrintDialogFunction( -+ CreatePrintDialogFunctionPtr create_dialog_func) { - DCHECK(create_dialog_func); -- DCHECK(!create_dialog_func_); -+ auto old_func = create_dialog_func_; - create_dialog_func_ = create_dialog_func; -+ return old_func; - } - - // static --void PrintingContextLinux::SetPdfPaperSizeFunction( -- gfx::Size (*get_pdf_paper_size)(PrintingContextLinux* context)) { -+PrintingContextLinux::PdfPaperSizeFunctionPtr -+PrintingContextLinux::SetPdfPaperSizeFunction( -+ PdfPaperSizeFunctionPtr get_pdf_paper_size) { - DCHECK(get_pdf_paper_size); -- DCHECK(!get_pdf_paper_size_); -+ auto old_func = get_pdf_paper_size_; - get_pdf_paper_size_ = get_pdf_paper_size; -+ return old_func; - } - - void PrintingContextLinux::AskUserForSettings(int max_pages, -diff --git printing/printing_context_linux.h printing/printing_context_linux.h -index 653170ba60e83..677df89f93e8d 100644 ---- printing/printing_context_linux.h -+++ printing/printing_context_linux.h -@@ -25,12 +25,17 @@ class COMPONENT_EXPORT(PRINTING) PrintingContextLinux : public PrintingContext { - ~PrintingContextLinux() override; - - // Sets the function that creates the print dialog. -- static void SetCreatePrintDialogFunction(PrintDialogGtkInterface* ( -- *create_dialog_func)(PrintingContextLinux* context)); -+ // Returns the old function, if any. -+ using CreatePrintDialogFunctionPtr = -+ PrintDialogGtkInterface* (*)(PrintingContextLinux* context); -+ static CreatePrintDialogFunctionPtr SetCreatePrintDialogFunction( -+ CreatePrintDialogFunctionPtr); - - // Sets the function that returns pdf paper size through the native API. -- static void SetPdfPaperSizeFunction( -- gfx::Size (*get_pdf_paper_size)(PrintingContextLinux* context)); -+ // Returns the old function, if any. -+ using PdfPaperSizeFunctionPtr = gfx::Size (*)(PrintingContextLinux* context); -+ static PdfPaperSizeFunctionPtr SetPdfPaperSizeFunction( -+ PdfPaperSizeFunctionPtr); - - // Initializes with predefined settings. - void InitWithSettings(std::unique_ptr settings); diff --git ui/shell_dialogs/execute_select_file_win.cc ui/shell_dialogs/execute_select_file_win.cc -index 063d4c7c96cba..24bd0533af65b 100644 +index 162dbc3aeb4ea..41b73a5a2f4e4 100644 --- ui/shell_dialogs/execute_select_file_win.cc +++ ui/shell_dialogs/execute_select_file_win.cc -@@ -289,9 +289,7 @@ bool ExecuteSelectSingleFile(HWND owner, +@@ -290,9 +290,7 @@ bool ExecuteSelectSingleFile(HWND owner, const std::vector& filter, int* filter_index, std::vector* paths) { @@ -248,7 +187,7 @@ index 063d4c7c96cba..24bd0533af65b 100644 default_path, filter, 0, filter_index, paths); } -@@ -303,14 +301,13 @@ bool ExecuteSelectMultipleFile(HWND owner, +@@ -304,14 +302,13 @@ bool ExecuteSelectMultipleFile(HWND owner, std::vector* paths) { DWORD dialog_options = FOS_ALLOWMULTISELECT; @@ -265,7 +204,7 @@ index 063d4c7c96cba..24bd0533af65b 100644 const base::FilePath& default_path, const std::vector& filter, const std::wstring& def_ext, -@@ -323,9 +320,7 @@ bool ExecuteSaveFile(HWND owner, +@@ -324,9 +321,7 @@ bool ExecuteSaveFile(HWND owner, DWORD dialog_options = FOS_OVERWRITEPROMPT; @@ -276,7 +215,7 @@ index 063d4c7c96cba..24bd0533af65b 100644 dialog_options, def_ext, filter_index, path); } -@@ -390,7 +385,7 @@ void ExecuteSelectFile( +@@ -418,7 +413,7 @@ void ExecuteSelectFile( break; case SelectFileDialog::SELECT_SAVEAS_FILE: { base::FilePath path; diff --git a/patch/patches/chrome_browser_extensions.patch b/patch/patches/chrome_browser_extensions.patch index 76bca36fd..37d86c0e1 100644 --- a/patch/patches/chrome_browser_extensions.patch +++ b/patch/patches/chrome_browser_extensions.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/extensions/api/chrome_extensions_api_client.cc chrome/browser/extensions/api/chrome_extensions_api_client.cc -index 7775713ac6479..d5eef7031953d 100644 +index 2fa911da87bcd..45c5268b60d5c 100644 --- chrome/browser/extensions/api/chrome_extensions_api_client.cc +++ chrome/browser/extensions/api/chrome_extensions_api_client.cc @@ -13,6 +13,7 @@ diff --git a/patch/patches/chrome_browser_permission_prompt.patch b/patch/patches/chrome_browser_permission_prompt.patch index 2dbfa3a06..0f4bfdb52 100644 --- a/patch/patches/chrome_browser_permission_prompt.patch +++ b/patch/patches/chrome_browser_permission_prompt.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/permissions/chrome_permissions_client.cc chrome/browser/permissions/chrome_permissions_client.cc -index 894a7424580ac..fa78c8dabbdd2 100644 +index 37280287267b4..1ea055a4172c5 100644 --- chrome/browser/permissions/chrome_permissions_client.cc +++ chrome/browser/permissions/chrome_permissions_client.cc @@ -12,6 +12,7 @@ @@ -10,7 +10,7 @@ index 894a7424580ac..fa78c8dabbdd2 100644 #include "chrome/browser/bluetooth/bluetooth_chooser_context_factory.h" #include "chrome/browser/content_settings/cookie_settings_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" -@@ -212,6 +213,9 @@ permissions::PermissionManager* ChromePermissionsClient::GetPermissionManager( +@@ -217,6 +218,9 @@ permissions::PermissionManager* ChromePermissionsClient::GetPermissionManager( double ChromePermissionsClient::GetSiteEngagementScore( content::BrowserContext* browser_context, const GURL& origin) { @@ -62,7 +62,7 @@ index c2836d15eba30..0c03c2b4666a6 100644 std::unique_ptr CreatePermissionPrompt( content::WebContents* web_contents, diff --git chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc -index 70e37336a5001..a2df1bd28c994 100644 +index c92ad8917ec7f..96643e5904dc5 100644 --- chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc +++ chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc @@ -100,11 +100,28 @@ bool ShouldBubbleStartOpen(permissions::PermissionPrompt::Delegate* delegate) { diff --git a/patch/patches/chrome_browser_profile_menu.patch b/patch/patches/chrome_browser_profile_menu.patch index bd48964a4..ee98a65d3 100644 --- a/patch/patches/chrome_browser_profile_menu.patch +++ b/patch/patches/chrome_browser_profile_menu.patch @@ -39,7 +39,7 @@ index 34949452d4891..43aa445b5ac3f 100644 base::RecordAction(base::UserMetricsAction("IncognitoMenu_Show")); diff --git chrome/browser/ui/views/profiles/profile_menu_view_base.cc chrome/browser/ui/views/profiles/profile_menu_view_base.cc -index 001e5831a0512..a0a6073c64ed8 100644 +index 1d4ea0995cbb3..64eba016377da 100644 --- chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc @@ -508,7 +508,9 @@ void ProfileMenuViewBase::ShowBubble(views::Button* anchor_button, diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index dd0844ab8..3a9a85c5e 100644 --- a/patch/patches/chrome_browser_profiles.patch +++ b/patch/patches/chrome_browser_profiles.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc -index a9c0c34999035..5fbf5eb462e42 100644 +index 342e29775ddc4..4c4630a2e74d5 100644 --- chrome/browser/profiles/off_the_record_profile_impl.cc +++ chrome/browser/profiles/off_the_record_profile_impl.cc -@@ -634,7 +634,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( +@@ -646,7 +646,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( #endif if (!profile) profile = std::make_unique(parent, otr_profile_id); @@ -85,10 +85,10 @@ index ca2561e412621..febd52df6c971 100644 virtual bool IsSignedIn() = 0; diff --git chrome/browser/profiles/profile_impl.cc chrome/browser/profiles/profile_impl.cc -index 8b4be2abc03ec..8f53f25103358 100644 +index e4af92bd90459..435fabe79453b 100644 --- chrome/browser/profiles/profile_impl.cc +++ chrome/browser/profiles/profile_impl.cc -@@ -996,7 +996,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, +@@ -1002,7 +1002,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, otr_profiles_[otr_profile_id] = std::move(otr_profile); @@ -100,10 +100,10 @@ index 8b4be2abc03ec..8f53f25103358 100644 return raw_otr_profile; } diff --git chrome/browser/profiles/profile_manager.cc chrome/browser/profiles/profile_manager.cc -index 7d959397bcb72..188d552d065c8 100644 +index 3952344f9cb23..6868beece799d 100644 --- chrome/browser/profiles/profile_manager.cc +++ chrome/browser/profiles/profile_manager.cc -@@ -517,7 +517,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) +@@ -529,7 +529,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) base::Unretained(this))); #endif diff --git a/patch/patches/chrome_browser_safe_browsing.patch b/patch/patches/chrome_browser_safe_browsing.patch index b33b9bec6..323638f10 100644 --- a/patch/patches/chrome_browser_safe_browsing.patch +++ b/patch/patches/chrome_browser_safe_browsing.patch @@ -1,10 +1,10 @@ diff --git chrome/browser/safe_browsing/BUILD.gn chrome/browser/safe_browsing/BUILD.gn -index ed8d055e3aaeb..ae289580cb8ff 100644 +index 9d43a724104d8..7d8d05cb15c19 100644 --- chrome/browser/safe_browsing/BUILD.gn +++ chrome/browser/safe_browsing/BUILD.gn -@@ -27,6 +27,7 @@ static_library("safe_browsing") { - "//chrome/common:constants", +@@ -28,6 +28,7 @@ static_library("safe_browsing") { "//components/browser_sync", + "//components/enterprise:enterprise", "//components/enterprise/common:strings", + "//components/gcm_driver:gcm_buildflags", "//components/keyed_service/content", diff --git a/patch/patches/chrome_browser_themes.patch b/patch/patches/chrome_browser_themes.patch index 74d69e0d6..38a1e06a9 100644 --- a/patch/patches/chrome_browser_themes.patch +++ b/patch/patches/chrome_browser_themes.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/themes/theme_service.cc chrome/browser/themes/theme_service.cc -index 5d2c348a99b76..bfa0c77ff1aa1 100644 +index 66acda8e42829..28970c4c98863 100644 --- chrome/browser/themes/theme_service.cc +++ chrome/browser/themes/theme_service.cc @@ -31,6 +31,7 @@ @@ -21,7 +21,7 @@ index 5d2c348a99b76..bfa0c77ff1aa1 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "base/scoped_observation.h" #include "extensions/browser/extension_registry_observer.h" -@@ -550,11 +555,19 @@ void ThemeService::Init() { +@@ -274,11 +279,19 @@ void ThemeService::Init() { // OnExtensionServiceReady. Otherwise, the ThemeObserver won't be // constructed in time to observe the corresponding events. #if BUILDFLAG(ENABLE_EXTENSIONS) diff --git a/patch/patches/chrome_plugins.patch b/patch/patches/chrome_plugins.patch index 87cbbe1c9..bb338581b 100644 --- a/patch/patches/chrome_plugins.patch +++ b/patch/patches/chrome_plugins.patch @@ -125,10 +125,10 @@ index 8b72897491669..546919dd70afc 100644 // that the X-Frame-Options protection mechanism is set to either DENY or // SAMEORIGIN. diff --git chrome/renderer/chrome_content_renderer_client.cc chrome/renderer/chrome_content_renderer_client.cc -index d2110910a9a31..0b7f12ca2af62 100644 +index 8449f4bf57c16..dc68ffc03e817 100644 --- chrome/renderer/chrome_content_renderer_client.cc +++ chrome/renderer/chrome_content_renderer_client.cc -@@ -941,6 +941,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -949,6 +949,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( if ((status == chrome::mojom::PluginStatus::kUnauthorized || status == chrome::mojom::PluginStatus::kBlocked) && @@ -136,7 +136,7 @@ index d2110910a9a31..0b7f12ca2af62 100644 content_settings_agent_delegate->IsPluginTemporarilyAllowed( identifier)) { status = chrome::mojom::PluginStatus::kAllowed; -@@ -1142,7 +1143,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1150,7 +1151,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( render_frame->GetRemoteAssociatedInterfaces()->GetInterface( plugin_auth_host.BindNewEndpointAndPassReceiver()); plugin_auth_host->BlockedUnauthorizedPlugin(group_name, identifier); @@ -146,7 +146,7 @@ index d2110910a9a31..0b7f12ca2af62 100644 break; } case chrome::mojom::PluginStatus::kBlocked: { -@@ -1151,7 +1153,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1159,7 +1161,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name)); placeholder->AllowLoading(); RenderThread::Get()->RecordAction(UserMetricsAction("Plugin_Blocked")); @@ -156,7 +156,7 @@ index d2110910a9a31..0b7f12ca2af62 100644 break; } case chrome::mojom::PluginStatus::kBlockedByPolicy: { -@@ -1161,7 +1164,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1169,7 +1172,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( group_name)); RenderThread::Get()->RecordAction( UserMetricsAction("Plugin_BlockedByPolicy")); @@ -166,7 +166,7 @@ index d2110910a9a31..0b7f12ca2af62 100644 break; } case chrome::mojom::PluginStatus::kBlockedNoLoading: { -@@ -1169,7 +1173,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1177,7 +1181,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( IDR_BLOCKED_PLUGIN_HTML, l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED_NO_LOADING, group_name)); diff --git a/patch/patches/chrome_renderer.patch b/patch/patches/chrome_renderer.patch index ff98a905c..75464e97d 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 80183431d6cdb..19b76bf53cbf2 100644 +index 0ad8a99a23d47..d069db0ac130e 100644 --- chrome/renderer/BUILD.gn +++ chrome/renderer/BUILD.gn @@ -5,6 +5,7 @@ @@ -10,7 +10,7 @@ index 80183431d6cdb..19b76bf53cbf2 100644 import("//chrome/common/features.gni") import("//components/nacl/features.gni") import("//components/offline_pages/buildflags/features.gni") -@@ -120,6 +121,7 @@ static_library("renderer") { +@@ -122,6 +123,7 @@ static_library("renderer") { deps = [ "//base/allocator:buildflags", "//build:chromeos_buildflags", @@ -18,7 +18,7 @@ index 80183431d6cdb..19b76bf53cbf2 100644 "//chrome:resources", "//chrome:strings", "//chrome/common", -@@ -210,6 +212,10 @@ static_library("renderer") { +@@ -218,6 +220,10 @@ static_library("renderer") { configs += [ "//build/config/compiler:wexit_time_destructors" ] diff --git a/patch/patches/chrome_runtime.patch b/patch/patches/chrome_runtime.patch index 3eaf761ad..79ac0e79c 100644 --- a/patch/patches/chrome_runtime.patch +++ b/patch/patches/chrome_runtime.patch @@ -1,5 +1,5 @@ diff --git chrome/app/chrome_main_delegate.cc chrome/app/chrome_main_delegate.cc -index 94641fd257de9..0aa8e14458efd 100644 +index 46ba13e861155..ddc0829036146 100644 --- chrome/app/chrome_main_delegate.cc +++ chrome/app/chrome_main_delegate.cc @@ -39,6 +39,7 @@ @@ -10,7 +10,7 @@ index 94641fd257de9..0aa8e14458efd 100644 #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" #include "chrome/browser/defaults.h" -@@ -446,6 +447,8 @@ struct MainFunction { +@@ -447,6 +448,8 @@ struct MainFunction { // Initializes the user data dir. Must be called before InitializeLocalState(). void InitializeUserDataDir(base::CommandLine* command_line) { @@ -19,7 +19,7 @@ index 94641fd257de9..0aa8e14458efd 100644 #if BUILDFLAG(IS_WIN) // Reach out to chrome_elf for the truth on the user data directory. // Note that in tests, this links to chrome_elf_test_stubs. -@@ -766,7 +769,9 @@ void ChromeMainDelegate::CommonEarlyInitialization() { +@@ -765,7 +768,9 @@ void ChromeMainDelegate::CommonEarlyInitialization() { } #if BUILDFLAG(IS_WIN) @@ -29,7 +29,7 @@ index 94641fd257de9..0aa8e14458efd 100644 base::sequence_manager::internal::ThreadControllerPowerMonitor:: InitializeOnMainThread(); base::InitializePlatformThreadFeatures(); -@@ -1114,6 +1119,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1097,6 +1102,7 @@ void ChromeMainDelegate::PreSandboxStartup() { std::string process_type = command_line.GetSwitchValueASCII(switches::kProcessType); @@ -37,7 +37,7 @@ index 94641fd257de9..0aa8e14458efd 100644 crash_reporter::InitializeCrashKeys(); #if BUILDFLAG(IS_POSIX) -@@ -1124,6 +1130,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1107,6 +1113,7 @@ void ChromeMainDelegate::PreSandboxStartup() { InitMacCrashReporter(command_line, process_type); SetUpInstallerPreferences(command_line); #endif @@ -45,7 +45,7 @@ index 94641fd257de9..0aa8e14458efd 100644 #if BUILDFLAG(IS_WIN) child_process_logging::Init(); -@@ -1316,6 +1323,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1299,6 +1306,7 @@ void ChromeMainDelegate::PreSandboxStartup() { locale; } @@ -53,7 +53,7 @@ index 94641fd257de9..0aa8e14458efd 100644 #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) // Zygote needs to call InitCrashReporter() in RunZygote(). if (process_type != switches::kZygoteProcess) { -@@ -1355,6 +1363,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1338,6 +1346,7 @@ void ChromeMainDelegate::PreSandboxStartup() { // After all the platform Breakpads have been initialized, store the command // line for crash reporting. crash_keys::SetCrashKeysFromCommandLine(command_line); @@ -61,7 +61,7 @@ index 94641fd257de9..0aa8e14458efd 100644 #if BUILDFLAG(ENABLE_PDF) MaybePatchGdiGetFontData(); -@@ -1440,6 +1449,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1423,6 +1432,7 @@ void ChromeMainDelegate::ZygoteForked() { SetUpProfilingShutdownHandler(); } @@ -69,7 +69,7 @@ index 94641fd257de9..0aa8e14458efd 100644 // Needs to be called after we have chrome::DIR_USER_DATA. BrowserMain sets // this up for the browser process in a different manner. const base::CommandLine* command_line = -@@ -1456,6 +1466,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1439,6 +1449,7 @@ void ChromeMainDelegate::ZygoteForked() { // Reset the command line for the newly spawned process. crash_keys::SetCrashKeysFromCommandLine(*command_line); @@ -78,7 +78,7 @@ index 94641fd257de9..0aa8e14458efd 100644 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) diff --git chrome/browser/chrome_browser_main.cc chrome/browser/chrome_browser_main.cc -index 18b522abec2a0..aeba2b49bb3e5 100644 +index e1eb07ce9243e..e65781274781b 100644 --- chrome/browser/chrome_browser_main.cc +++ chrome/browser/chrome_browser_main.cc @@ -52,6 +52,7 @@ @@ -89,7 +89,7 @@ index 18b522abec2a0..aeba2b49bb3e5 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/active_use_util.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -1600,12 +1601,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1611,12 +1612,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { browser_process_->local_state()); } @@ -104,7 +104,7 @@ index 18b522abec2a0..aeba2b49bb3e5 100644 #if BUILDFLAG(IS_ANDROID) page_info::SetPageInfoClient(new ChromePageInfoClient()); -@@ -1753,12 +1756,15 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1764,14 +1767,17 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // This step is costly and is already measured in // Startup.StartupBrowserCreator_Start. // See the comment above for an explanation of |process_command_line|. @@ -112,7 +112,9 @@ index 18b522abec2a0..aeba2b49bb3e5 100644 + // nullptr. const bool started = + !GetMainRunLoopInstance() || + #if BUILDFLAG(ENABLE_PROCESS_SINGLETON) !process_command_line || + #endif // BUILDFLAG(ENABLE_PROCESS_SINGLETON) browser_creator_->Start(*base::CommandLine::ForCurrentProcess(), base::FilePath(), profile_info, last_opened_profiles); @@ -121,7 +123,7 @@ index 18b522abec2a0..aeba2b49bb3e5 100644 // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch // of lacros-chrome is complete. #if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) -@@ -1786,8 +1792,10 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1799,8 +1805,10 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Create the RunLoop for MainMessageLoopRun() to use and transfer // ownership of the browser's lifetime to the BrowserProcess. @@ -134,7 +136,7 @@ index 18b522abec2a0..aeba2b49bb3e5 100644 GetMainRunLoopInstance()->QuitWhenIdleClosure()); } diff --git chrome/browser/chrome_browser_main_mac.mm chrome/browser/chrome_browser_main_mac.mm -index 341458a637857..441708d4a301f 100644 +index 7ef669d52b306..8edc1aaeaff6a 100644 --- chrome/browser/chrome_browser_main_mac.mm +++ chrome/browser/chrome_browser_main_mac.mm @@ -16,6 +16,7 @@ @@ -145,7 +147,7 @@ index 341458a637857..441708d4a301f 100644 #import "chrome/browser/app_controller_mac.h" #include "chrome/browser/apps/app_shim/app_shim_listener.h" #include "chrome/browser/browser_process.h" -@@ -109,6 +110,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { +@@ -108,6 +109,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { } } @@ -153,7 +155,7 @@ index 341458a637857..441708d4a301f 100644 // Create the app delegate. This object is intentionally leaked as a global // singleton. It is accessed through -[NSApp delegate]. AppController* app_controller = [[AppController alloc] init]; -@@ -117,6 +119,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { +@@ -116,6 +118,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { chrome::BuildMainMenu(NSApp, app_controller, l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), false); [app_controller mainMenuCreated]; @@ -161,7 +163,7 @@ index 341458a637857..441708d4a301f 100644 ui::WarmScreenCapture(); -@@ -178,7 +181,9 @@ void ChromeBrowserMainPartsMac::PostProfileInit(Profile* profile, +@@ -174,7 +177,9 @@ void ChromeBrowserMainPartsMac::PostProfileInit(Profile* profile, } void ChromeBrowserMainPartsMac::DidEndMainMessageLoop() { @@ -172,7 +174,7 @@ index 341458a637857..441708d4a301f 100644 +#endif } diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc -index 16341698899d7..37abd9d118002 100644 +index 7082a0c230557..d8e383af3195e 100644 --- chrome/browser/chrome_content_browser_client.cc +++ chrome/browser/chrome_content_browser_client.cc @@ -30,6 +30,7 @@ @@ -183,7 +185,7 @@ index 16341698899d7..37abd9d118002 100644 #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/accessibility_labels_service_factory.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -1288,6 +1289,8 @@ bool IsTopChromeWebUIURL(const GURL& url) { +@@ -1296,6 +1297,8 @@ bool IsTopChromeWebUIURL(const GURL& url) { } // namespace ChromeContentBrowserClient::ChromeContentBrowserClient() { @@ -192,7 +194,7 @@ index 16341698899d7..37abd9d118002 100644 #if BUILDFLAG(ENABLE_PLUGINS) extra_parts_.push_back(new ChromeContentBrowserClientPluginsPart); #endif -@@ -1313,6 +1316,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { +@@ -1321,6 +1324,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { extra_parts_.clear(); } @@ -204,7 +206,7 @@ index 16341698899d7..37abd9d118002 100644 // static void ChromeContentBrowserClient::RegisterLocalStatePrefs( PrefRegistrySimple* registry) { -@@ -3800,9 +3808,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( +@@ -3842,9 +3850,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( &search::HandleNewTabURLReverseRewrite); #endif // BUILDFLAG(IS_ANDROID) @@ -216,7 +218,7 @@ index 16341698899d7..37abd9d118002 100644 } base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { -@@ -5460,7 +5470,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( +@@ -5511,7 +5521,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( network_service); } @@ -225,7 +227,7 @@ index 16341698899d7..37abd9d118002 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -5478,6 +5488,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( +@@ -5529,6 +5539,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = GetApplicationLocale(); } @@ -234,7 +236,7 @@ index 16341698899d7..37abd9d118002 100644 } std::vector -@@ -6353,10 +6365,10 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( +@@ -6395,10 +6407,10 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( const auto now = base::TimeTicks::Now(); const auto timeout = GetKeepaliveTimerTimeout(context); keepalive_deadline_ = std::max(keepalive_deadline_, now + timeout); @@ -247,7 +249,7 @@ index 16341698899d7..37abd9d118002 100644 FROM_HERE, keepalive_deadline_ - now, base::BindOnce( &ChromeContentBrowserClient::OnKeepaliveTimerFired, -@@ -6375,7 +6387,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { +@@ -6417,7 +6429,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { --num_keepalive_requests_; if (num_keepalive_requests_ == 0) { DVLOG(1) << "Stopping the keepalive timer"; @@ -257,7 +259,7 @@ index 16341698899d7..37abd9d118002 100644 // This deletes the keep alive handle attached to the timer function and // unblock the shutdown sequence. } -@@ -6494,7 +6507,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( +@@ -6542,7 +6555,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( const auto now = base::TimeTicks::Now(); const auto then = keepalive_deadline_; if (now < then) { @@ -267,10 +269,10 @@ index 16341698899d7..37abd9d118002 100644 base::BindOnce(&ChromeContentBrowserClient::OnKeepaliveTimerFired, weak_factory_.GetWeakPtr(), diff --git chrome/browser/chrome_content_browser_client.h chrome/browser/chrome_content_browser_client.h -index b619ac0c32215..d8b5452113b9e 100644 +index 0e7fd68eb1775..b2d1f9a5d9671 100644 --- chrome/browser/chrome_content_browser_client.h +++ chrome/browser/chrome_content_browser_client.h -@@ -118,6 +118,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -119,6 +119,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { ~ChromeContentBrowserClient() override; @@ -279,7 +281,7 @@ index b619ac0c32215..d8b5452113b9e 100644 // TODO(https://crbug.com/787567): This file is about calls from content/ out // to chrome/ to get values or notify about events, but both of these // functions are from chrome/ to chrome/ and don't involve content/ at all. -@@ -567,7 +569,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -579,7 +581,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { override; void OnNetworkServiceCreated( network::mojom::NetworkService* network_service) override; @@ -288,7 +290,7 @@ index b619ac0c32215..d8b5452113b9e 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -909,7 +911,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -928,7 +930,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { #if !BUILDFLAG(IS_ANDROID) uint64_t num_keepalive_requests_ = 0; @@ -298,7 +300,7 @@ index b619ac0c32215..d8b5452113b9e 100644 #endif diff --git chrome/browser/prefs/browser_prefs.cc chrome/browser/prefs/browser_prefs.cc -index a748644cef16f..7ec056730fb70 100644 +index 346d0636aad58..969f6e42371fa 100644 --- chrome/browser/prefs/browser_prefs.cc +++ chrome/browser/prefs/browser_prefs.cc @@ -11,6 +11,7 @@ @@ -309,7 +311,7 @@ index a748644cef16f..7ec056730fb70 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/accessibility_ui.h" -@@ -164,6 +165,10 @@ +@@ -166,6 +167,10 @@ #include "chrome/browser/background/background_mode_manager.h" #endif @@ -320,7 +322,7 @@ index a748644cef16f..7ec056730fb70 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/accessibility/animation_policy_prefs.h" #include "chrome/browser/apps/platform_apps/shortcut_manager.h" -@@ -1333,6 +1338,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -1351,6 +1356,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, SessionDataService::RegisterProfilePrefs(registry); #endif diff --git a/patch/patches/chrome_runtime_views.patch b/patch/patches/chrome_runtime_views.patch index 82bbdb40d..b767c1a65 100644 --- a/patch/patches/chrome_runtime_views.patch +++ b/patch/patches/chrome_runtime_views.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/browser_command_controller.cc chrome/browser/ui/browser_command_controller.cc -index c582ceb80e929..f121e3084389c 100644 +index 4013ab3ce380b..3ea8492f4c977 100644 --- chrome/browser/ui/browser_command_controller.cc +++ chrome/browser/ui/browser_command_controller.cc -@@ -414,8 +414,10 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -415,8 +415,10 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( // CommandUpdaterDelegate and CommandUpdater declare this function so we // choose to not implement CommandUpdaterDelegate inside this class and // therefore command_updater_ doesn't have the delegate set). @@ -14,7 +14,7 @@ index c582ceb80e929..f121e3084389c 100644 // No commands are enabled if there is not yet any selected tab. // TODO(pkasting): It seems like we should not need this, because either -@@ -430,6 +432,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -431,6 +433,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( DCHECK(command_updater_.IsCommandEnabled(id)) << "Invalid/disabled command " << id; @@ -28,7 +28,7 @@ index c582ceb80e929..f121e3084389c 100644 // The order of commands in this switch statement must match the function // declaration order in browser.h! switch (id) { -@@ -1067,11 +1076,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( +@@ -1076,11 +1085,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( // BrowserCommandController, private: bool BrowserCommandController::IsShowingMainUI() { @@ -45,7 +45,7 @@ index c582ceb80e929..f121e3084389c 100644 bool BrowserCommandController::IsWebAppOrCustomTab() const { diff --git chrome/browser/ui/views/frame/browser_frame.cc chrome/browser/ui/views/frame/browser_frame.cc -index 0d4c12f0f72de..dc09323bdf482 100644 +index 95d3053a5af11..b726ea28700de 100644 --- chrome/browser/ui/views/frame/browser_frame.cc +++ chrome/browser/ui/views/frame/browser_frame.cc @@ -74,15 +74,23 @@ bool IsUsingGtkTheme(Profile* profile) { @@ -74,7 +74,7 @@ index 0d4c12f0f72de..dc09323bdf482 100644 } BrowserFrame::~BrowserFrame() {} -@@ -152,6 +160,12 @@ gfx::Rect BrowserFrame::GetBoundsForTabStripRegion( +@@ -154,6 +162,12 @@ gfx::Rect BrowserFrame::GetBoundsForTabStripRegion( } int BrowserFrame::GetTopInset() const { @@ -87,7 +87,7 @@ index 0d4c12f0f72de..dc09323bdf482 100644 return browser_frame_view_->GetTopInset(false); } -@@ -181,20 +195,30 @@ bool BrowserFrame::ShouldDrawFrameHeader() const { +@@ -183,20 +197,30 @@ bool BrowserFrame::ShouldDrawFrameHeader() const { void BrowserFrame::GetWindowPlacement(gfx::Rect* bounds, ui::WindowShowState* show_state) const { @@ -118,7 +118,7 @@ index 0d4c12f0f72de..dc09323bdf482 100644 browser_frame_view_->OnBrowserViewInitViewsComplete(); } -@@ -255,6 +279,8 @@ const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const { +@@ -257,6 +281,8 @@ const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const { ui::ColorProviderManager::ThemeInitializerSupplier* BrowserFrame::GetCustomTheme() const { @@ -127,7 +127,7 @@ index 0d4c12f0f72de..dc09323bdf482 100644 Browser* browser = browser_view_->browser(); // If this is an incognito profile, there should never be a custom theme. if (browser->profile()->IsIncognitoProfile()) -@@ -272,6 +298,8 @@ BrowserFrame::GetCustomTheme() const { +@@ -274,6 +300,8 @@ BrowserFrame::GetCustomTheme() const { } void BrowserFrame::OnNativeWidgetWorkspaceChanged() { @@ -136,16 +136,16 @@ index 0d4c12f0f72de..dc09323bdf482 100644 chrome::SaveWindowWorkspace(browser_view_->browser(), GetWorkspace()); chrome::SaveWindowVisibleOnAllWorkspaces(browser_view_->browser(), IsVisibleOnAllWorkspaces()); -@@ -361,6 +389,8 @@ void BrowserFrame::SetTabDragKind(TabDragKind tab_drag_kind) { +@@ -363,6 +391,8 @@ void BrowserFrame::SetTabDragKind(TabDragKind tab_drag_kind) { ui::ColorProviderManager::Key BrowserFrame::GetColorProviderKey() const { auto key = Widget::GetColorProviderKey(); + if (!browser_view_) + return key; - auto* app_controller = browser_view_->browser()->app_controller(); - key.app_controller = - app_controller ? app_controller->get_weak_ref() : nullptr; -@@ -391,7 +421,8 @@ void BrowserFrame::SelectNativeTheme() { + key.frame_type = UseCustomFrame() + ? ui::ColorProviderManager::FrameType::kChromium + : ui::ColorProviderManager::FrameType::kNative; +@@ -395,7 +425,8 @@ void BrowserFrame::SelectNativeTheme() { // Select between regular, dark and GTK theme. ui::NativeTheme* native_theme = ui::NativeTheme::GetInstanceForNativeUi(); @@ -155,7 +155,7 @@ index 0d4c12f0f72de..dc09323bdf482 100644 // No matter if we are using the default theme or not we always use the dark // ui instance. SetNativeTheme(ui::NativeTheme::GetInstanceForDarkUI()); -@@ -404,7 +435,8 @@ void BrowserFrame::SelectNativeTheme() { +@@ -408,7 +439,8 @@ void BrowserFrame::SelectNativeTheme() { // display_override so the web contents can blend with the overlay by using // the developer-provided theme color for a better experience. Context: // https://crbug.com/1219073. @@ -180,10 +180,10 @@ index 9bd586697dece..80ef1f08cb463 100644 BrowserFrame(const BrowserFrame&) = delete; BrowserFrame& operator=(const BrowserFrame&) = delete; diff --git chrome/browser/ui/views/frame/browser_view.cc chrome/browser/ui/views/frame/browser_view.cc -index 9c9b99da5b015..2b76e15ea42da 100644 +index a6f5515c7259d..51da31a2afe91 100644 --- chrome/browser/ui/views/frame/browser_view.cc +++ chrome/browser/ui/views/frame/browser_view.cc -@@ -301,11 +301,10 @@ using content::NativeWebKeyboardEvent; +@@ -302,11 +302,10 @@ using content::NativeWebKeyboardEvent; using content::WebContents; using web_modal::WebContentsModalDialogHost; @@ -198,7 +198,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 #if BUILDFLAG(IS_CHROMEOS_ASH) // UMA histograms that record animation smoothness for tab loading animation. -@@ -797,11 +796,22 @@ class BrowserView::SidePanelVisibilityController : public views::ViewObserver { +@@ -793,11 +792,22 @@ class BrowserView::SidePanelVisibilityController : public views::ViewObserver { /////////////////////////////////////////////////////////////////////////////// // BrowserView, public: @@ -222,7 +222,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 SetShowIcon( ::ShouldShowWindowIcon(browser_.get(), AppUsesWindowControlsOverlay())); -@@ -843,7 +853,6 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -839,7 +849,6 @@ BrowserView::BrowserView(std::unique_ptr browser) } browser_->tab_strip_model()->AddObserver(this); @@ -230,7 +230,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 // Top container holds tab strip region and toolbar and lives at the front of // the view hierarchy. -@@ -886,8 +895,15 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -882,8 +891,15 @@ BrowserView::BrowserView(std::unique_ptr browser) contents_container->SetLayoutManager(std::make_unique( devtools_web_view_, contents_web_view_)); @@ -248,7 +248,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 contents_separator_ = top_container_->AddChildView(std::make_unique()); -@@ -1780,6 +1796,8 @@ bool BrowserView::ShouldHideUIForFullscreen() const { +@@ -1785,6 +1801,8 @@ bool BrowserView::ShouldHideUIForFullscreen() const { if (immersive_mode_controller_->IsEnabled()) return false; @@ -257,7 +257,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 return frame_->GetFrameView()->ShouldHideTopUIForFullscreen(); } -@@ -2993,7 +3011,8 @@ BrowserView::GetNativeViewHostsForTopControlsSlide() const { +@@ -3037,7 +3055,8 @@ BrowserView::GetNativeViewHostsForTopControlsSlide() const { } void BrowserView::ReparentTopContainerForEndOfImmersive() { @@ -267,7 +267,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 top_container()->DestroyLayer(); AddChildViewAt(top_container(), 0); EnsureFocusOrder(); -@@ -3530,8 +3549,10 @@ void BrowserView::Layout() { +@@ -3549,8 +3568,10 @@ void BrowserView::Layout() { // TODO(jamescook): Why was this in the middle of layout code? toolbar_->location_bar()->omnibox_view()->SetFocusBehavior( @@ -280,7 +280,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 // Some of the situations when the BrowserView is laid out are: // - Enter/exit immersive fullscreen mode. -@@ -3597,6 +3618,11 @@ void BrowserView::AddedToWidget() { +@@ -3616,6 +3637,11 @@ void BrowserView::AddedToWidget() { SetThemeProfileForWindow(GetNativeWindow(), browser_->profile()); #endif @@ -292,7 +292,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 toolbar_->Init(); // TODO(pbos): Manage this either inside SidePanel or the corresponding button -@@ -3658,13 +3684,9 @@ void BrowserView::AddedToWidget() { +@@ -3677,13 +3703,9 @@ void BrowserView::AddedToWidget() { EnsureFocusOrder(); @@ -308,7 +308,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 using_native_frame_ = frame_->ShouldUseNativeFrame(); MaybeInitializeWebUITabStrip(); -@@ -4072,7 +4094,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, +@@ -4091,7 +4113,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, // Undo our anti-jankiness hacks and force a re-layout. in_process_fullscreen_ = false; ToolbarSizeChanged(false); @@ -318,7 +318,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 } bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { -@@ -4387,6 +4410,8 @@ Profile* BrowserView::GetProfile() { +@@ -4406,6 +4429,8 @@ Profile* BrowserView::GetProfile() { } void BrowserView::UpdateUIForTabFullscreen() { @@ -327,7 +327,7 @@ index 9c9b99da5b015..2b76e15ea42da 100644 frame()->GetFrameView()->UpdateFullscreenTopUI(); } -@@ -4409,6 +4434,8 @@ void BrowserView::HideDownloadShelf() { +@@ -4428,6 +4453,8 @@ void BrowserView::HideDownloadShelf() { } bool BrowserView::CanUserExitFullscreen() const { @@ -337,10 +337,10 @@ index 9c9b99da5b015..2b76e15ea42da 100644 } diff --git chrome/browser/ui/views/frame/browser_view.h chrome/browser/ui/views/frame/browser_view.h -index f4b503d7be34d..7e1926881fae7 100644 +index 0fad4aa723c84..077df40dc4762 100644 --- chrome/browser/ui/views/frame/browser_view.h +++ chrome/browser/ui/views/frame/browser_view.h -@@ -124,11 +124,16 @@ class BrowserView : public BrowserWindow, +@@ -125,11 +125,16 @@ class BrowserView : public BrowserWindow, public webapps::AppBannerManager::Observer { public: METADATA_HEADER(BrowserView); @@ -357,9 +357,9 @@ index f4b503d7be34d..7e1926881fae7 100644 void set_frame(BrowserFrame* frame) { frame_ = frame; } BrowserFrame* frame() const { return frame_; } -@@ -731,6 +736,12 @@ class BrowserView : public BrowserWindow, - void MaybeRestoreSideSearchStatePerWindow( - const std::map& extra_data) override; +@@ -742,6 +747,12 @@ class BrowserView : public BrowserWindow, + // aligned side panels. + void RightAlignedSidePanelWasClosed(); + protected: + virtual ToolbarView* OverrideCreateToolbar(Browser* browser, @@ -414,10 +414,10 @@ index bc047256f110a..b6bc9dfc0eee5 100644 ContentsWebView::~ContentsWebView() { diff --git chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc -index ef5cedd707e9b..cb9ba4119f318 100644 +index 5a7767fc35042..681171bc557ba 100644 --- chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc -@@ -551,33 +551,47 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( +@@ -552,33 +552,47 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( } bool BrowserTabStripController::IsFrameCondensed() const { @@ -466,10 +466,10 @@ index ef5cedd707e9b..cb9ba4119f318 100644 } diff --git chrome/browser/ui/views/toolbar/toolbar_view.cc chrome/browser/ui/views/toolbar/toolbar_view.cc -index 8499344e764b1..61bb8becc9e82 100644 +index 55fc13d5d929d..236eaebed8d1b 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.cc +++ chrome/browser/ui/views/toolbar/toolbar_view.cc -@@ -168,12 +168,13 @@ auto& GetViewCommandMap() { +@@ -169,12 +169,13 @@ auto& GetViewCommandMap() { //////////////////////////////////////////////////////////////////////////////// // ToolbarView, public: @@ -485,7 +485,7 @@ index 8499344e764b1..61bb8becc9e82 100644 SetID(VIEW_ID_TOOLBAR); UpgradeDetector::GetInstance()->AddObserver(this); -@@ -208,7 +209,7 @@ void ToolbarView::Init() { +@@ -209,7 +210,7 @@ void ToolbarView::Init() { #endif auto location_bar = std::make_unique( browser_, browser_->profile(), browser_->command_controller(), this, diff --git a/patch/patches/chrome_utility_client.patch b/patch/patches/chrome_utility_client.patch new file mode 100644 index 000000000..cc04b5953 --- /dev/null +++ b/patch/patches/chrome_utility_client.patch @@ -0,0 +1,22 @@ +diff --git chrome/utility/chrome_content_utility_client.cc chrome/utility/chrome_content_utility_client.cc +index 0d7e6405b1a23..123ae4af7ec69 100644 +--- chrome/utility/chrome_content_utility_client.cc ++++ chrome/utility/chrome_content_utility_client.cc +@@ -13,6 +13,7 @@ + #include "base/lazy_instance.h" + #include "base/path_service.h" + #include "build/build_config.h" ++#include "cef/libcef/features/runtime.h" + #include "chrome/common/chrome_paths.h" + #include "chrome/common/profiler/thread_profiler.h" + #include "chrome/common/profiler/thread_profiler_configuration.h" +@@ -70,7 +71,8 @@ void ChromeContentUtilityClient::UtilityThreadStarted() { + command_line->GetSwitchValueASCII(switches::kProcessType); + // An in-process utility thread may run in other processes, only set up + // collector in a utility process. +- if (process_type == switches::kUtilityProcess) { ++ if (process_type == switches::kUtilityProcess && ++ !cef::IsAlloyRuntimeEnabled()) { + // The HeapProfilerController should have been created in + // ChromeMainDelegate::PostEarlyInitialization. + DCHECK_NE(HeapProfilerController::GetProfilingEnabled(), diff --git a/patch/patches/component_build.patch b/patch/patches/component_build.patch index 5b63a04c9..e36e3ee41 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 1407ec64d33ea..c3ceb22baed12 100644 +index efea37465c849..340bd6b9b03ba 100644 --- content/browser/devtools/devtools_instrumentation.h +++ content/browser/devtools/devtools_instrumentation.h @@ -97,7 +97,7 @@ bool ApplyUserAgentMetadataOverrides( @@ -68,7 +68,7 @@ index 57072bf1263ae..0a93446e4d21c 100644 blink::mojom::V8CacheOptions GetV8CacheOptions(); diff --git third_party/blink/renderer/controller/BUILD.gn third_party/blink/renderer/controller/BUILD.gn -index 3c8c64d8d4dc9..1f4d7fb698782 100644 +index 7a0d95725d295..99fac79e105aa 100644 --- third_party/blink/renderer/controller/BUILD.gn +++ third_party/blink/renderer/controller/BUILD.gn @@ -32,6 +32,7 @@ component("controller") { diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index 07629f4d8..4bc7d1fc6 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -12,10 +12,10 @@ index b75e19e7946b0..a92a7da426081 100644 GetContentClient()->browser()->GetUserAgent()); version.SetString("V8-Version", V8_VERSION_STRING); diff --git content/browser/loader/navigation_url_loader_impl.cc content/browser/loader/navigation_url_loader_impl.cc -index 2bf604ee300d9..ded4a09961381 100644 +index 7e8b016df5234..97196faf4c41e 100644 --- content/browser/loader/navigation_url_loader_impl.cc +++ content/browser/loader/navigation_url_loader_impl.cc -@@ -691,6 +691,17 @@ NavigationURLLoaderImpl::PrepareForNonInterceptedRequest( +@@ -718,6 +718,17 @@ NavigationURLLoaderImpl::PrepareForNonInterceptedRequest( resource_request_->has_user_gesture, initiating_origin, initiator_document_.AsRenderFrameHostIfValid(), &loader_factory); @@ -34,19 +34,19 @@ index 2bf604ee300d9..ded4a09961381 100644 factory = base::MakeRefCounted( std::move(loader_factory)); diff --git content/public/browser/content_browser_client.cc content/public/browser/content_browser_client.cc -index 69bcd725d0f86..a8456b3e8a941 100644 +index b4e2e5d8a5e96..8f90190b7c5e6 100644 --- content/public/browser/content_browser_client.cc +++ content/public/browser/content_browser_client.cc @@ -9,7 +9,7 @@ // declarations instead of including more headers. If that is infeasible, adjust // the limit. For more info, see // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/wmax_tokens.md --#pragma clang max_tokens_here 880000 -+// #pragma clang max_tokens_here 880000 +-#pragma clang max_tokens_here 1050000 ++// #pragma clang max_tokens_here 1050000 #include -@@ -916,7 +916,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( +@@ -937,7 +937,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( void ContentBrowserClient::OnNetworkServiceCreated( network::mojom::NetworkService* network_service) {} @@ -55,7 +55,7 @@ index 69bcd725d0f86..a8456b3e8a941 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -925,6 +925,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( +@@ -946,6 +946,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = "en-us,en"; @@ -64,10 +64,10 @@ index 69bcd725d0f86..a8456b3e8a941 100644 std::vector diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index d0b7aed3162b8..c494e9618d9dc 100644 +index b374d6b28aea8..6587b5edf60fa 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h -@@ -33,6 +33,7 @@ +@@ -34,6 +34,7 @@ #include "content/public/browser/login_delegate.h" #include "content/public/browser/mojo_binder_policy_map.h" #include "content/public/browser/storage_partition_config.h" @@ -75,7 +75,7 @@ index d0b7aed3162b8..c494e9618d9dc 100644 #include "content/public/common/alternative_error_page_override_info.mojom-forward.h" #include "content/public/common/page_visibility_state.h" #include "content/public/common/window_container_type.mojom-forward.h" -@@ -1690,7 +1691,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1715,7 +1716,7 @@ class CONTENT_EXPORT ContentBrowserClient { // // If |relative_partition_path| is the empty string, it means this needs to // create the default NetworkContext for the BrowserContext. @@ -84,7 +84,7 @@ index d0b7aed3162b8..c494e9618d9dc 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1897,6 +1898,19 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1922,6 +1923,19 @@ class CONTENT_EXPORT ContentBrowserClient { RenderFrameHost* initiator_document, mojo::PendingRemote* out_factory); @@ -104,7 +104,7 @@ index d0b7aed3162b8..c494e9618d9dc 100644 // Creates an OverlayWindow to be used for video or document // Picture-in-Picture respectively. This window will house the content shown // when in Picture-in-Picture mode. This will return a new OverlayWindow. -@@ -1958,6 +1972,10 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1977,6 +1991,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct(); @@ -141,10 +141,10 @@ index 1dfe162dc69f4..93ece5d24f60f 100644 // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index ab74207b348f2..5cdda5796723f 100644 +index 2f86fff71f363..2ac7ab2a9a096 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc -@@ -609,6 +609,8 @@ void RenderThreadImpl::Init() { +@@ -608,6 +608,8 @@ void RenderThreadImpl::Init() { GetContentClient()->renderer()->CreateURLLoaderThrottleProvider( blink::URLLoaderThrottleProviderType::kFrame); @@ -154,10 +154,10 @@ index ab74207b348f2..5cdda5796723f 100644 &RenderThreadImpl::OnRendererInterfaceReceiver, base::Unretained(this))); diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc -index 51ab896732604..8902f5d486ab9 100644 +index a5f2807bfa3bd..0f03da05909ff 100644 --- content/renderer/renderer_blink_platform_impl.cc +++ content/renderer/renderer_blink_platform_impl.cc -@@ -1059,6 +1059,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { +@@ -1053,6 +1053,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { //------------------------------------------------------------------------------ @@ -174,10 +174,10 @@ index 51ab896732604..8902f5d486ab9 100644 RendererBlinkPlatformImpl::CreateWebV8ValueConverter() { return std::make_unique(); diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h -index 156fb6cda9c41..17ca9be1f7e91 100644 +index 40146f89d1d94..4aaecc4e319bf 100644 --- content/renderer/renderer_blink_platform_impl.h +++ content/renderer/renderer_blink_platform_impl.h -@@ -243,6 +243,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -238,6 +238,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { blink::WebVector* csp) override; base::PlatformThreadId GetIOThreadId() const override; diff --git a/patch/patches/content_main_654986.patch b/patch/patches/content_main_654986.patch index 9ef3cf389..25679cd3e 100644 --- a/patch/patches/content_main_654986.patch +++ b/patch/patches/content_main_654986.patch @@ -1,5 +1,5 @@ diff --git content/app/content_main.cc content/app/content_main.cc -index bb2d3e9911958..7af313040906e 100644 +index b54d534b4d408..3c3bd4a62a799 100644 --- content/app/content_main.cc +++ content/app/content_main.cc @@ -227,11 +227,8 @@ ContentMainParams::~ContentMainParams() = default; @@ -26,7 +26,7 @@ index bb2d3e9911958..7af313040906e 100644 // A flag to indicate whether Main() has been called before. On Android, we // may re-run Main() without restarting the browser process. This flag -@@ -326,12 +320,6 @@ RunContentProcess(ContentMainParams params, +@@ -325,12 +319,6 @@ RunContentProcess(ContentMainParams params, #endif #if BUILDFLAG(IS_MAC) @@ -39,7 +39,7 @@ index bb2d3e9911958..7af313040906e 100644 InitializeMac(); #endif -@@ -404,8 +392,18 @@ RunContentProcess(ContentMainParams params, +@@ -403,8 +391,18 @@ RunContentProcess(ContentMainParams params, if (IsSubprocess()) CommonSubprocessInit(); @@ -59,7 +59,7 @@ index bb2d3e9911958..7af313040906e 100644 if (tracker) { if (exit_code == 0) { tracker->SetProcessPhaseIfEnabled( -@@ -417,14 +415,41 @@ RunContentProcess(ContentMainParams params, +@@ -416,14 +414,41 @@ RunContentProcess(ContentMainParams params, } } @@ -105,7 +105,7 @@ index bb2d3e9911958..7af313040906e 100644 } diff --git content/app/content_main_runner_impl.cc content/app/content_main_runner_impl.cc -index 892ed9c633465..018b941845a58 100644 +index 88e46d8d05c0b..c026c09415512 100644 --- content/app/content_main_runner_impl.cc +++ content/app/content_main_runner_impl.cc @@ -42,6 +42,7 @@ @@ -116,7 +116,7 @@ index 892ed9c633465..018b941845a58 100644 #include "base/time/time.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" -@@ -1218,6 +1219,12 @@ void ContentMainRunnerImpl::Shutdown() { +@@ -1219,6 +1220,12 @@ void ContentMainRunnerImpl::Shutdown() { is_shutdown_ = true; } diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index 95bc2afa9..4d1864df8 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -1,5 +1,5 @@ diff --git chrome/chrome_elf/BUILD.gn chrome/chrome_elf/BUILD.gn -index 3fe0b9b74ae0a..38987ce169308 100644 +index da34cf911b74d..d5c8ca11be3fc 100644 --- chrome/chrome_elf/BUILD.gn +++ chrome/chrome_elf/BUILD.gn @@ -7,6 +7,7 @@ @@ -10,7 +10,7 @@ index 3fe0b9b74ae0a..38987ce169308 100644 import("//chrome/process_version_rc_template.gni") import("//testing/test.gni") -@@ -104,9 +105,6 @@ source_set("constants") { +@@ -106,9 +107,6 @@ source_set("constants") { static_library("crash") { sources = [ @@ -20,7 +20,7 @@ index 3fe0b9b74ae0a..38987ce169308 100644 "crash/crash_helper.cc", "crash/crash_helper.h", ] -@@ -114,6 +112,7 @@ static_library("crash") { +@@ -116,6 +114,7 @@ static_library("crash") { ":hook_util", "//base", # This needs to go. DEP of app, crash_keys, client. "//base:base_static", # pe_image @@ -28,7 +28,7 @@ index 3fe0b9b74ae0a..38987ce169308 100644 "//chrome/install_static:install_static_util", "//components/crash/core/app", "//components/crash/core/common", # crash_keys -@@ -121,6 +120,17 @@ static_library("crash") { +@@ -123,6 +122,17 @@ static_library("crash") { "//content/public/common:result_codes", "//third_party/crashpad/crashpad/client", # DumpWithoutCrash ] @@ -278,7 +278,7 @@ index 9058d56e8bda7..6a62596c03a52 100644 ->set_system_crash_reporter_forwarding(crashpad::TriState::kDisabled); } diff --git components/crash/core/app/crashpad_linux.cc components/crash/core/app/crashpad_linux.cc -index 39fb479eba509..809859ee5e597 100644 +index 7159bea91a257..090dfcfa0d45a 100644 --- components/crash/core/app/crashpad_linux.cc +++ components/crash/core/app/crashpad_linux.cc @@ -23,6 +23,7 @@ @@ -347,9 +347,9 @@ index 39fb479eba509..809859ee5e597 100644 + + crash_reporter_client->GetCrashOptionalArguments(&arguments); + - bool result = - client.StartHandler(handler_path, *database_path, metrics_path, url, - annotations, arguments, false, false); + CHECK(client.StartHandler(handler_path, *database_path, metrics_path, url, + annotations, arguments, false, false)); + } else { diff --git components/crash/core/app/crashpad_mac.mm components/crash/core/app/crashpad_mac.mm index dc041c43371fd..1d060ae55c586 100644 --- components/crash/core/app/crashpad_mac.mm diff --git a/patch/patches/crashpad_tp_1995.patch b/patch/patches/crashpad_tp_1995.patch index a00c3b276..49b1a2679 100644 --- a/patch/patches/crashpad_tp_1995.patch +++ b/patch/patches/crashpad_tp_1995.patch @@ -146,7 +146,7 @@ index 8ad8a2b16f648..adaede06e8b86 100644 struct Data; diff --git third_party/crashpad/crashpad/handler/BUILD.gn third_party/crashpad/crashpad/handler/BUILD.gn -index 0fe4760db7fe2..042af7247712c 100644 +index e79f4719b3dd0..22a20aede8100 100644 --- third_party/crashpad/crashpad/handler/BUILD.gn +++ third_party/crashpad/crashpad/handler/BUILD.gn @@ -12,6 +12,7 @@ diff --git a/patch/patches/embedder_product_override.patch b/patch/patches/embedder_product_override.patch index 626b3582c..73c604df8 100644 --- a/patch/patches/embedder_product_override.patch +++ b/patch/patches/embedder_product_override.patch @@ -1,5 +1,5 @@ diff --git components/embedder_support/user_agent_utils.cc components/embedder_support/user_agent_utils.cc -index acd60381a6294..f9be70d2da75f 100644 +index fd99a0b94d9ef..2be6208db60ba 100644 --- components/embedder_support/user_agent_utils.cc +++ components/embedder_support/user_agent_utils.cc @@ -15,6 +15,7 @@ diff --git a/patch/patches/extensions_1947.patch b/patch/patches/extensions_1947.patch index ba0578599..54c0e31f2 100644 --- a/patch/patches/extensions_1947.patch +++ b/patch/patches/extensions_1947.patch @@ -60,11 +60,11 @@ index 2f5f7a7645103..9ab6fc1d4a654 100644 std::unique_ptr stream_container( new StreamContainer(tab_id, embedded, handler_url, extension_id, diff --git extensions/browser/extension_host.cc extensions/browser/extension_host.cc -index 70279e6b632ad..7d6b662e51957 100644 +index 04b9beb8c3fc2..7e4d3e31522c0 100644 --- extensions/browser/extension_host.cc +++ extensions/browser/extension_host.cc -@@ -58,11 +58,12 @@ ExtensionHost::ExtensionHost(const Extension* extension, - DCHECK(host_type == mojom::ViewType::kExtensionBackgroundPage || +@@ -59,11 +59,12 @@ ExtensionHost::ExtensionHost(const Extension* extension, + host_type == mojom::ViewType::kOffscreenDocument || host_type == mojom::ViewType::kExtensionDialog || host_type == mojom::ViewType::kExtensionPopup); - host_contents_ = WebContents::Create( @@ -79,7 +79,7 @@ index 70279e6b632ad..7d6b662e51957 100644 main_frame_host_ = host_contents_->GetPrimaryMainFrame(); // Listen for when an extension is unloaded from the same profile, as it may -@@ -77,6 +78,44 @@ ExtensionHost::ExtensionHost(const Extension* extension, +@@ -78,6 +79,44 @@ ExtensionHost::ExtensionHost(const Extension* extension, ExtensionHostRegistry::Get(browser_context_)->ExtensionHostCreated(this); } @@ -108,7 +108,7 @@ index 70279e6b632ad..7d6b662e51957 100644 + content::WebContentsObserver::Observe(host_contents_); + SetViewType(host_contents_, host_type); + -+ main_frame_host_ = host_contents_->GetMainFrame(); ++ main_frame_host_ = host_contents_->GetPrimaryMainFrame(); + + // Listen for when an extension is unloaded from the same profile, as it may + // be the same extension that this points to. @@ -125,10 +125,10 @@ index 70279e6b632ad..7d6b662e51957 100644 ExtensionRegistry::Get(browser_context_)->RemoveObserver(this); diff --git extensions/browser/extension_host.h extensions/browser/extension_host.h -index dd22bbc07fb52..c695ece6b1a47 100644 +index 35f6735afb66a..40401322681cf 100644 --- extensions/browser/extension_host.h +++ extensions/browser/extension_host.h -@@ -53,6 +53,12 @@ class ExtensionHost : public DeferredStartRenderHost, +@@ -56,6 +56,12 @@ class ExtensionHost : public DeferredStartRenderHost, content::SiteInstance* site_instance, const GURL& url, mojom::ViewType host_type); @@ -141,7 +141,7 @@ index dd22bbc07fb52..c695ece6b1a47 100644 ExtensionHost(const ExtensionHost&) = delete; ExtensionHost& operator=(const ExtensionHost&) = delete; -@@ -63,7 +69,7 @@ class ExtensionHost : public DeferredStartRenderHost, +@@ -66,7 +72,7 @@ class ExtensionHost : public DeferredStartRenderHost, const Extension* extension() const { return extension_; } const std::string& extension_id() const { return extension_id_; } @@ -150,7 +150,7 @@ index dd22bbc07fb52..c695ece6b1a47 100644 content::RenderFrameHost* main_frame_host() const { return main_frame_host_; } content::RenderProcessHost* render_process_host() const; bool has_loaded_once() const { return has_loaded_once_; } -@@ -188,7 +194,8 @@ class ExtensionHost : public DeferredStartRenderHost, +@@ -202,7 +208,8 @@ class ExtensionHost : public DeferredStartRenderHost, raw_ptr browser_context_; // The host for our HTML content. @@ -161,7 +161,7 @@ index dd22bbc07fb52..c695ece6b1a47 100644 // A pointer to the current or speculative main frame in `host_contents_`. We // can't access this frame through the `host_contents_` directly as it does diff --git extensions/browser/extensions_browser_client.h extensions/browser/extensions_browser_client.h -index f87cf6d3bb4b6..bd2f3b576b004 100644 +index b060c134279ed..070258e8fbc08 100644 --- extensions/browser/extensions_browser_client.h +++ extensions/browser/extensions_browser_client.h @@ -31,6 +31,7 @@ @@ -180,7 +180,7 @@ index f87cf6d3bb4b6..bd2f3b576b004 100644 class ExtensionHostDelegate; class ExtensionSet; class ExtensionSystem; -@@ -219,6 +221,14 @@ class ExtensionsBrowserClient { +@@ -220,6 +222,14 @@ class ExtensionsBrowserClient { virtual std::unique_ptr CreateExtensionHostDelegate() = 0; @@ -196,10 +196,10 @@ index f87cf6d3bb4b6..bd2f3b576b004 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 4d09fbd93cd97..e6bc21a1adf49 100644 +index edf33b204d669..694bff911b4b9 100644 --- extensions/browser/process_manager.cc +++ extensions/browser/process_manager.cc -@@ -393,9 +393,17 @@ bool ProcessManager::CreateBackgroundHost(const Extension* extension, +@@ -379,9 +379,17 @@ bool ProcessManager::CreateBackgroundHost(const Extension* extension, return true; // TODO(kalman): return false here? It might break things... DVLOG(1) << "CreateBackgroundHost " << extension->id(); @@ -215,6 +215,6 @@ index 4d09fbd93cd97..e6bc21a1adf49 100644 new ExtensionHost(extension, GetSiteInstanceForURL(url).get(), url, mojom::ViewType::kExtensionBackgroundPage); + } - host->CreateRendererSoon(); - OnBackgroundHostCreated(host); - return true; + host->SetCloseHandler( + base::BindOnce(&ProcessManager::HandleCloseExtensionHost, + weak_ptr_factory_.GetWeakPtr())); diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index bd7b3712d..958c7755f 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -12,7 +12,7 @@ index 7d538f812d72e..9eec79395aeec 100644 # https://crbug.com/474506. "//clank/java/BUILD.gn", diff --git BUILD.gn BUILD.gn -index b9b09ede17b56..b687818eb9287 100644 +index d62cd5190001b..b99513183df7a 100644 --- BUILD.gn +++ BUILD.gn @@ -17,6 +17,7 @@ import("//build/config/sanitizers/sanitizers.gni") @@ -21,10 +21,10 @@ index b9b09ede17b56..b687818eb9287 100644 import("//build/util/generate_wrapper.gni") +import("//cef/libcef/features/features.gni") import("//chrome/browser/buildflags.gni") - import("//chrome/browser/media/router/features.gni") import("//components/nacl/features.gni") -@@ -117,6 +118,10 @@ group("gn_all") { - ] + import("//device/vr/buildflags/buildflags.gni") +@@ -110,6 +111,10 @@ group("gn_all") { + deps += [ "//third_party/abseil-cpp:absl_tests" ] } + if (enable_cef) { @@ -80,17 +80,17 @@ index 839144aa1e9bd..29c8ab32398a7 100644 +_OBJC_METACLASS_$_UnderlayOpenGLHostingWindow + diff --git chrome/chrome_paks.gni chrome/chrome_paks.gni -index 040475bee62f4..47d7ca4ea32da 100644 +index ba559fa404ca3..4aafa07ba5ba7 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni -@@ -5,6 +5,7 @@ - import("//ash/ambient/resources/resources.gni") +@@ -6,6 +6,7 @@ import("//ash/ambient/resources/resources.gni") + import("//build/config/chromebox_for_meetings/buildflags.gni") import("//build/config/chromeos/ui_mode.gni") import("//build/config/locales.gni") +import("//cef/libcef/features/features.gni") import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") - import("//chromeos/components/chromebox_for_meetings/buildflags/buildflags.gni") + import("//extensions/buildflags/buildflags.gni") @@ -74,6 +75,10 @@ template("chrome_repack_percent") { "//ui/chromeos/resources", ] @@ -126,7 +126,7 @@ index 936a5422f92fa..5743f4a03aa4f 100644 source_patterns += [ "${root_gen_dir}/extensions/strings/extensions_strings_" ] diff --git chrome/installer/mini_installer/BUILD.gn chrome/installer/mini_installer/BUILD.gn -index 51fa0d7f4cf77..2ede68e9377eb 100644 +index d7ac881770b38..e25708701148a 100644 --- chrome/installer/mini_installer/BUILD.gn +++ chrome/installer/mini_installer/BUILD.gn @@ -6,6 +6,7 @@ import("//build/config/compiler/compiler.gni") diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index ea1f6949a..e07014b48 100644 --- a/patch/patches/gritsettings.patch +++ b/patch/patches/gritsettings.patch @@ -1,8 +1,8 @@ diff --git tools/gritsettings/resource_ids.spec tools/gritsettings/resource_ids.spec -index 70a1901dc65dc..06656ee356527 100644 +index 1c50dbb9503e7..a181ad353e81a 100644 --- tools/gritsettings/resource_ids.spec +++ tools/gritsettings/resource_ids.spec -@@ -958,6 +958,15 @@ +@@ -970,6 +970,15 @@ # END "everything else" section. # Everything but chrome/, components/, content/, and ios/ diff --git a/patch/patches/linux_printing_context.patch b/patch/patches/linux_printing_context.patch new file mode 100644 index 000000000..aa261efe0 --- /dev/null +++ b/patch/patches/linux_printing_context.patch @@ -0,0 +1,31 @@ +diff --git printing/printing_context_linux.cc printing/printing_context_linux.cc +index 805156b4d7b70..2fbf7fecef01f 100644 +--- printing/printing_context_linux.cc ++++ printing/printing_context_linux.cc +@@ -48,9 +48,11 @@ PrintingContextLinux::~PrintingContextLinux() { + } + + // static +-void PrintingContextLinuxDelegate::SetInstance( ++PrintingContextLinuxDelegate* PrintingContextLinuxDelegate::SetInstance( + PrintingContextLinuxDelegate* delegate) { ++ auto old_delegate = g_delegate; + g_delegate = delegate; ++ return old_delegate; + } + + void PrintingContextLinux::AskUserForSettings(int max_pages, +diff --git printing/printing_context_linux.h printing/printing_context_linux.h +index dfe49bc00adea..3faa2a3dff79d 100644 +--- printing/printing_context_linux.h ++++ printing/printing_context_linux.h +@@ -27,7 +27,8 @@ class COMPONENT_EXPORT(PRINTING) PrintingContextLinuxDelegate { + + virtual gfx::Size GetPdfPaperSize(PrintingContextLinux* context) = 0; + +- static void SetInstance(PrintingContextLinuxDelegate* delegate); ++ static PrintingContextLinuxDelegate* SetInstance( ++ PrintingContextLinuxDelegate* delegate); + }; + + // PrintingContext with optional native UI for print dialog and pdf_paper_size. diff --git a/patch/patches/linux_ui_ozone.patch b/patch/patches/linux_ui_ozone.patch index e0cc1e49b..20152a177 100644 --- a/patch/patches/linux_ui_ozone.patch +++ b/patch/patches/linux_ui_ozone.patch @@ -1,8 +1,8 @@ diff --git ui/ozone/BUILD.gn ui/ozone/BUILD.gn -index b123f6093eb5d..64e4fc0fba4b5 100644 +index fa2c17f4e209f..91bed0fb1ad66 100644 --- ui/ozone/BUILD.gn +++ ui/ozone/BUILD.gn -@@ -396,6 +396,8 @@ action("generate_test_support_constructor_list") { +@@ -398,6 +398,8 @@ action("generate_test_support_constructor_list") { ] deps = [ ":generate_ozone_platform_list" ] diff --git a/patch/patches/mac_gpu.patch b/patch/patches/mac_gpu.patch index 673381b2f..2db027c1e 100644 --- a/patch/patches/mac_gpu.patch +++ b/patch/patches/mac_gpu.patch @@ -1,8 +1,8 @@ diff --git ui/gl/init/gl_initializer_mac.cc ui/gl/init/gl_initializer_mac.cc -index fa97713916bf8..1b644227abe74 100644 +index bc29406755e34..e4c077621ff6b 100644 --- ui/gl/init/gl_initializer_mac.cc +++ ui/gl/init/gl_initializer_mac.cc -@@ -47,11 +47,8 @@ bool InitializeOneOffForSandbox() { +@@ -46,11 +46,8 @@ bool InitializeOneOffForSandbox() { // GPU-related stuff is very slow without this, probably because // the sandbox prevents loading graphics drivers or some such. std::vector attribs; @@ -13,6 +13,6 @@ index fa97713916bf8..1b644227abe74 100644 - } + // Avoid switching to the discrete GPU just for this pixel format selection. + attribs.push_back(kCGLPFAAllowOfflineRenderers); - if (GetGLImplementation() == kGLImplementationAppleGL) { - attribs.push_back(kCGLPFARendererID); - attribs.push_back( + attribs.push_back(static_cast(0)); + + CGLPixelFormatObj format; diff --git a/patch/patches/message_loop.patch b/patch/patches/message_loop.patch index b12ebb22d..7e8bd1f02 100644 --- a/patch/patches/message_loop.patch +++ b/patch/patches/message_loop.patch @@ -1,5 +1,5 @@ diff --git base/message_loop/message_pump_win.cc base/message_loop/message_pump_win.cc -index d746e7aebfa9f..538b398b049cb 100644 +index 1ed9e277cd967..6b7eed9fa8fd6 100644 --- base/message_loop/message_pump_win.cc +++ base/message_loop/message_pump_win.cc @@ -2,6 +2,7 @@ @@ -30,7 +30,7 @@ index d746e7aebfa9f..538b398b049cb 100644 } if (has_msg) diff --git base/task/current_thread.cc base/task/current_thread.cc -index b7e9d215c2039..57816ea1c8b81 100644 +index d3a89a8496171..2db4706f22ec8 100644 --- base/task/current_thread.cc +++ base/task/current_thread.cc @@ -49,6 +49,8 @@ void CurrentThread::AddDestructionObserver( @@ -43,11 +43,11 @@ index b7e9d215c2039..57816ea1c8b81 100644 current_->RemoveDestructionObserver(destruction_observer); } diff --git base/task/current_thread.h base/task/current_thread.h -index 13dc0cdede8f7..4c4a85848a93a 100644 +index 485601662485a..9e1464c33d8d4 100644 --- base/task/current_thread.h +++ base/task/current_thread.h -@@ -131,6 +131,12 @@ class BASE_EXPORT CurrentThread { - // to run. There can only be one OnNextIdleCallback at a time. +@@ -132,6 +132,12 @@ class BASE_EXPORT CurrentThread { + // with a null callback to clear any potentially pending callbacks. void RegisterOnNextIdleCallback(OnceClosure on_next_idle_callback); +#if BUILDFLAG(IS_WIN) @@ -59,7 +59,7 @@ index 13dc0cdede8f7..4c4a85848a93a 100644 // Enables nested task processing in scope of an upcoming native message loop. // Some unwanted message loops may occur when using common controls or printer // functions. Hence, nested task processing is disabled by default to avoid -@@ -196,6 +202,13 @@ class BASE_EXPORT CurrentThread { +@@ -202,6 +208,13 @@ class BASE_EXPORT CurrentThread { friend class web::WebTaskEnvironment; raw_ptr current_; diff --git a/patch/patches/message_pump_mac_2495.patch b/patch/patches/message_pump_mac_2495.patch index 970c356e4..dfb1597bd 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 8ce36eaa64a86..b90c66c1c826c 100644 +index f927e86d6735f..14d418a70422d 100644 --- base/message_loop/message_pump_mac.mm +++ base/message_loop/message_pump_mac.mm -@@ -748,7 +748,8 @@ void MessagePumpUIApplication::Detach() { +@@ -807,7 +807,8 @@ void MessagePumpUIApplication::Detach() { #else ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { @@ -12,7 +12,7 @@ index 8ce36eaa64a86..b90c66c1c826c 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. -@@ -758,7 +759,8 @@ ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { +@@ -817,7 +818,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 99b2468fe..e4bacf60e 100644 --- a/patch/patches/mime_handler_view_guest_1565_2727.patch +++ b/patch/patches/mime_handler_view_guest_1565_2727.patch @@ -12,10 +12,10 @@ index 17f203b11ce39..0a5277b686d61 100644 virtual ~WebContentsView() = default; 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 aef9d1a79fcea..015206dd88756 100644 +index 9fa230c1cd95f..fb49251a52d11 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 -@@ -224,6 +224,8 @@ void MimeHandlerViewGuest::CreateWebContents( +@@ -225,6 +225,8 @@ void MimeHandlerViewGuest::CreateWebContents( WebContents::CreateParams params(browser_context(), guest_site_instance.get()); params.guest_delegate = this; @@ -24,7 +24,7 @@ index aef9d1a79fcea..015206dd88756 100644 // TODO(erikchen): Fix ownership semantics for guest views. // https://crbug.com/832879. std::move(callback).Run( -@@ -234,6 +236,10 @@ void MimeHandlerViewGuest::CreateWebContents( +@@ -235,6 +237,10 @@ void MimeHandlerViewGuest::CreateWebContents( } void MimeHandlerViewGuest::DidAttachToEmbedder() { @@ -35,7 +35,7 @@ index aef9d1a79fcea..015206dd88756 100644 DCHECK(stream_->handler_url().SchemeIs(extensions::kExtensionScheme)); web_contents()->GetController().LoadURL( stream_->handler_url(), content::Referrer(), -@@ -264,6 +270,11 @@ bool MimeHandlerViewGuest::ShouldDestroyOnDetach() const { +@@ -265,6 +271,11 @@ bool MimeHandlerViewGuest::ShouldDestroyOnDetach() const { return true; } @@ -68,7 +68,7 @@ index ef6faf317dd41..8675c305d489c 100644 bool is_embedder_fullscreen_ = false; bool plugin_can_save_ = false; diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h -index d97b054a8d6c7..9fd96a8f7826d 100644 +index 3aaeab0baf51e..4f818abde1c1a 100644 --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest_delegate.h @@ -7,6 +7,8 @@ diff --git a/patch/patches/net_cookie_flags.patch b/patch/patches/net_cookie_flags.patch index 288808da3..ec4eac466 100644 --- a/patch/patches/net_cookie_flags.patch +++ b/patch/patches/net_cookie_flags.patch @@ -1,15 +1,14 @@ diff --git net/base/load_flags_list.h net/base/load_flags_list.h -index 6466deac2671e..053ca5c7e55ae 100644 +index 96d1a51ec1078..e8120a818b1f2 100644 --- net/base/load_flags_list.h +++ net/base/load_flags_list.h -@@ -110,3 +110,6 @@ LOAD_FLAG(CAN_USE_RESTRICTED_PREFETCH, 1 << 16) - // - // Cannot be used together with BYPASS_CACHE, ONLY_FROM_CACHE, or DISABLE_CACHE. - LOAD_FLAG(USE_SINGLE_KEYED_CACHE, 1 << 17) +@@ -101,3 +101,6 @@ LOAD_FLAG(RESTRICTED_PREFETCH, 1 << 15) + // is considered privileged, and therefore this flag must only be set from a + // trusted process. + LOAD_FLAG(CAN_USE_RESTRICTED_PREFETCH, 1 << 16) + +// This load will not send any cookies. For CEF usage. -+LOAD_FLAG(DO_NOT_SEND_COOKIES, 1 << 18) -\ No newline at end of file ++LOAD_FLAG(DO_NOT_SEND_COOKIES, 1 << 17) diff --git net/url_request/url_request_http_job.cc net/url_request/url_request_http_job.cc index 1975492c29ae0..0ec7ddefe932b 100644 --- net/url_request/url_request_http_job.cc @@ -25,10 +24,10 @@ index 1975492c29ae0..0ec7ddefe932b 100644 bool URLRequestHttpJob::IsPartitionedCookiesEnabled() const { diff --git services/network/public/cpp/resource_request.cc services/network/public/cpp/resource_request.cc -index a15e3c4bed344..c665e98a1befc 100644 +index c8e468f41930d..8ac0d37be3c93 100644 --- services/network/public/cpp/resource_request.cc +++ services/network/public/cpp/resource_request.cc -@@ -264,7 +264,8 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { +@@ -263,7 +263,8 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { } bool ResourceRequest::SendsCookies() const { diff --git a/patch/patches/osr_fling_2745.patch b/patch/patches/osr_fling_2745.patch index 5ce37760a..7a3a33bf3 100644 --- a/patch/patches/osr_fling_2745.patch +++ b/patch/patches/osr_fling_2745.patch @@ -41,10 +41,10 @@ index cc4b13a7b9c67..84f3b9ed7cf49 100644 } // namespace content diff --git content/browser/renderer_host/render_widget_host_impl.cc content/browser/renderer_host/render_widget_host_impl.cc -index 18133ca758533..b7b26d5e457e3 100644 +index 4b4a91a3fb615..4be300f14cae4 100644 --- content/browser/renderer_host/render_widget_host_impl.cc +++ content/browser/renderer_host/render_widget_host_impl.cc -@@ -3114,6 +3114,11 @@ void RenderWidgetHostImpl::OnInvalidInputEventSource() { +@@ -3123,6 +3123,11 @@ void RenderWidgetHostImpl::OnInvalidInputEventSource() { GetProcess(), bad_message::INPUT_ROUTER_INVALID_EVENT_SOURCE); } @@ -57,10 +57,10 @@ index 18133ca758533..b7b26d5e457e3 100644 const WebInputEvent& event) { if ((base::FeatureList::IsEnabled( diff --git content/browser/renderer_host/render_widget_host_impl.h content/browser/renderer_host/render_widget_host_impl.h -index 65297e78ee11f..589fbdae61bb5 100644 +index f63c1aa3007fa..5257801bf8aee 100644 --- content/browser/renderer_host/render_widget_host_impl.h +++ content/browser/renderer_host/render_widget_host_impl.h -@@ -779,6 +779,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -781,6 +781,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl void ProgressFlingIfNeeded(base::TimeTicks current_time); void StopFling(); diff --git a/patch/patches/print_preview_123.patch b/patch/patches/print_preview_123.patch index 999f84348..4454444d2 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 65a54420ca60e..27adcf4e827a4 100644 +index 38132463c9216..42f67b33eed7a 100644 --- chrome/browser/download/download_prefs.cc +++ chrome/browser/download/download_prefs.cc @@ -24,6 +24,7 @@ @@ -10,7 +10,7 @@ index 65a54420ca60e..27adcf4e827a4 100644 #include "chrome/browser/download/chrome_download_manager_delegate.h" #include "chrome/browser/download/download_core_service_factory.h" #include "chrome/browser/download/download_core_service_impl.h" -@@ -60,6 +61,10 @@ +@@ -61,6 +62,10 @@ #include "chrome/browser/ui/pdf/adobe_reader_info_win.h" #endif @@ -21,7 +21,7 @@ index 65a54420ca60e..27adcf4e827a4 100644 using content::BrowserContext; using content::BrowserThread; using content::DownloadManager; -@@ -344,6 +349,11 @@ DownloadPrefs* DownloadPrefs::FromDownloadManager( +@@ -348,6 +353,11 @@ DownloadPrefs* DownloadPrefs::FromDownloadManager( // static DownloadPrefs* DownloadPrefs::FromBrowserContext( content::BrowserContext* context) { @@ -46,7 +46,7 @@ index 01df55a728098..0c11458c9a5bb 100644 #include "chrome/browser/printing/print_view_manager.h" #include "chrome/browser/task_manager/web_contents_tags.h" diff --git chrome/browser/printing/print_view_manager_base.cc chrome/browser/printing/print_view_manager_base.cc -index e665eb42fad5f..6aefc4f3f4ca6 100644 +index 4bd871e5cadc6..835656ea87729 100644 --- chrome/browser/printing/print_view_manager_base.cc +++ chrome/browser/printing/print_view_manager_base.cc @@ -610,13 +610,14 @@ void PrintViewManagerBase::UpdatePrintSettings( @@ -96,7 +96,7 @@ index 5d1658999d5bb..d1b7b7288c946 100644 $i18n{cancel} diff --git chrome/browser/ui/webui/constrained_web_dialog_ui.cc chrome/browser/ui/webui/constrained_web_dialog_ui.cc -index f6098966f5b34..da78289b66155 100644 +index 7a3fbc44629e6..578422e85320a 100644 --- chrome/browser/ui/webui/constrained_web_dialog_ui.cc +++ chrome/browser/ui/webui/constrained_web_dialog_ui.cc @@ -13,6 +13,7 @@ diff --git a/patch/patches/rwh_background_color_1984.patch b/patch/patches/rwh_background_color_1984.patch index db357f3af..dcd154723 100644 --- a/patch/patches/rwh_background_color_1984.patch +++ b/patch/patches/rwh_background_color_1984.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/render_widget_host_view_aura.cc content/browser/renderer_host/render_widget_host_view_aura.cc -index 870cdf73fd5ee..5714d4912b84e 100644 +index f709beca890c4..80ae5fee83cac 100644 --- content/browser/renderer_host/render_widget_host_view_aura.cc +++ content/browser/renderer_host/render_widget_host_view_aura.cc @@ -5,6 +5,7 @@ @@ -27,7 +27,7 @@ index 870cdf73fd5ee..5714d4912b84e 100644 } absl::optional RenderWidgetHostViewAura::GetDisplayFeature() { -@@ -2221,6 +2224,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { +@@ -2217,6 +2220,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { // This needs to happen only after |window_| has been initialized using // Init(), because it needs to have the layer. window_->SetEmbedFrameSinkId(frame_sink_id_); diff --git a/patch/patches/services_network_2622.patch b/patch/patches/services_network_2622.patch index 40e51991e..508cdf9b0 100644 --- a/patch/patches/services_network_2622.patch +++ b/patch/patches/services_network_2622.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/net/profile_network_context_service.cc chrome/browser/net/profile_network_context_service.cc -index 122c7aac0fe18..f8017f174292d 100644 +index ab9be2c237cad..5bf06645fcc6a 100644 --- chrome/browser/net/profile_network_context_service.cc +++ chrome/browser/net/profile_network_context_service.cc @@ -22,6 +22,7 @@ @@ -10,7 +10,7 @@ index 122c7aac0fe18..f8017f174292d 100644 #include "chrome/browser/browser_features.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/content_settings/cookie_settings_factory.h" -@@ -745,7 +746,19 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( +@@ -752,7 +753,19 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( // Configure on-disk storage for non-OTR profiles. OTR profiles just use // default behavior (in memory storage, default sizes). @@ -31,7 +31,7 @@ index 122c7aac0fe18..f8017f174292d 100644 PrefService* local_state = g_browser_process->local_state(); // Configure the HTTP cache path and size. base::FilePath base_cache_path; -@@ -758,7 +771,9 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( +@@ -765,7 +778,9 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( base_cache_path.Append(chrome::kCacheDirname); network_context_params->http_cache_max_size = local_state->GetInteger(prefs::kDiskCacheSize); @@ -123,10 +123,10 @@ index 77c0984d364c6..df7ff7d7355b5 100644 void CookieManager::SetForceKeepSessionState() { diff --git services/network/network_context.cc services/network/network_context.cc -index 89bbba4956965..1b12c7a0c0e25 100644 +index 1bd4dda6aaa55..af2385b2e4fbf 100644 --- services/network/network_context.cc +++ services/network/network_context.cc -@@ -2367,17 +2367,21 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2364,17 +2364,21 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( network_service_->network_quality_estimator()); } @@ -157,7 +157,7 @@ index 89bbba4956965..1b12c7a0c0e25 100644 trust_token_store_ = std::make_unique(); diff --git services/network/public/mojom/network_context.mojom services/network/public/mojom/network_context.mojom -index cd28ac0510e13..06a9dd17e776d 100644 +index 0a376689aeb81..18da84986021d 100644 --- services/network/public/mojom/network_context.mojom +++ services/network/public/mojom/network_context.mojom @@ -336,6 +336,9 @@ struct NetworkContextParams { diff --git a/patch/patches/services_network_2718.patch b/patch/patches/services_network_2718.patch index 8b4922a5d..58ca11d92 100644 --- a/patch/patches/services_network_2718.patch +++ b/patch/patches/services_network_2718.patch @@ -1,8 +1,8 @@ diff --git content/browser/storage_partition_impl.cc content/browser/storage_partition_impl.cc -index 3d3a6a0fb49ab..9a652564b85ee 100644 +index e165c450e96d1..33699e033a989 100644 --- content/browser/storage_partition_impl.cc +++ content/browser/storage_partition_impl.cc -@@ -495,10 +495,6 @@ class LoginHandlerDelegate { +@@ -488,10 +488,6 @@ class LoginHandlerDelegate { } WebContents* web_contents = web_contents_getter_.Run(); @@ -13,7 +13,7 @@ index 3d3a6a0fb49ab..9a652564b85ee 100644 // WeakPtr is not strictly necessary here due to OnRequestCancelled. creating_login_delegate_ = true; -@@ -550,12 +546,6 @@ void OnAuthRequiredContinuation( +@@ -543,12 +539,6 @@ void OnAuthRequiredContinuation( mojo::PendingRemote auth_challenge_responder, base::RepeatingCallback web_contents_getter) { @@ -26,7 +26,7 @@ index 3d3a6a0fb49ab..9a652564b85ee 100644 new LoginHandlerDelegate( std::move(auth_challenge_responder), std::move(web_contents_getter), auth_info, is_request_for_primary_main_frame, process_id, request_id, url, -@@ -2807,8 +2797,12 @@ void StoragePartitionImpl::GetQuotaSettings( +@@ -2832,8 +2822,12 @@ void StoragePartitionImpl::GetQuotaSettings( return; } @@ -40,7 +40,7 @@ index 3d3a6a0fb49ab..9a652564b85ee 100644 storage::GetDefaultDeviceInfoHelper(), std::move(callback)); } -@@ -2818,9 +2812,12 @@ void StoragePartitionImpl::InitNetworkContext() { +@@ -2843,9 +2837,12 @@ void StoragePartitionImpl::InitNetworkContext() { cert_verifier::mojom::CertVerifierCreationParamsPtr cert_verifier_creation_params = cert_verifier::mojom::CertVerifierCreationParams::New(); diff --git a/patch/patches/storage_incognito_2289.patch b/patch/patches/storage_incognito_2289.patch index 3232bb53b..cdf2578ca 100644 --- a/patch/patches/storage_incognito_2289.patch +++ b/patch/patches/storage_incognito_2289.patch @@ -13,7 +13,7 @@ index 1beba57fbb164..448fbcb006e32 100644 {base::MayBlock(), base::TaskPriority::USER_VISIBLE, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}); diff --git content/browser/browser_context.cc content/browser/browser_context.cc -index 06b34e105411d..59b704c0d88a8 100644 +index 22af8b58056d9..88486bcf6e74b 100644 --- content/browser/browser_context.cc +++ content/browser/browser_context.cc @@ -130,7 +130,7 @@ StoragePartition* BrowserContext::GetStoragePartition( @@ -25,7 +25,7 @@ index 06b34e105411d..59b704c0d88a8 100644 // An off the record profile MUST only use in memory storage partitions. CHECK(storage_partition_config.in_memory()); } -@@ -365,7 +365,8 @@ BrowserContext::CreateVideoDecodePerfHistory() { +@@ -374,7 +374,8 @@ BrowserContext::CreateVideoDecodePerfHistory() { const bool kUseInMemoryDBDefault = false; bool use_in_memory_db = base::GetFieldTrialParamByFeatureAsBool( media::kMediaCapabilitiesWithParameters, kUseInMemoryDBParamName, diff --git a/patch/patches/views_1749_2102_3330.patch b/patch/patches/views_1749_2102_3330.patch index 583bd1c8c..15e531495 100644 --- a/patch/patches/views_1749_2102_3330.patch +++ b/patch/patches/views_1749_2102_3330.patch @@ -43,10 +43,10 @@ index 11f1421cc79c1..c5dbc643ae7c8 100644 virtual void MenuWillShow() {} diff --git ui/gfx/render_text.cc ui/gfx/render_text.cc -index 7fb46dbdee749..e25a85d919e5e 100644 +index 9db4aaff7094b..a4baf119986a7 100644 --- ui/gfx/render_text.cc +++ ui/gfx/render_text.cc -@@ -659,6 +659,14 @@ void RenderText::SetWhitespaceElision(absl::optional whitespace_elision) { +@@ -665,6 +665,14 @@ void RenderText::SetWhitespaceElision(absl::optional whitespace_elision) { } } @@ -61,7 +61,7 @@ index 7fb46dbdee749..e25a85d919e5e 100644 void RenderText::SetDisplayRect(const Rect& r) { if (r != display_rect_) { display_rect_ = r; -@@ -2015,6 +2023,19 @@ void RenderText::OnTextAttributeChanged() { +@@ -1995,6 +2003,19 @@ void RenderText::OnTextAttributeChanged() { layout_text_up_to_date_ = false; @@ -82,7 +82,7 @@ index 7fb46dbdee749..e25a85d919e5e 100644 } diff --git ui/gfx/render_text.h ui/gfx/render_text.h -index 983cba19002c4..03b7d77a2e8e6 100644 +index 81ac620c7e53a..37e09eaf4b910 100644 --- ui/gfx/render_text.h +++ ui/gfx/render_text.h @@ -347,6 +347,10 @@ class GFX_EXPORT RenderText { @@ -96,7 +96,7 @@ index 983cba19002c4..03b7d77a2e8e6 100644 const Rect& display_rect() const { return display_rect_; } void SetDisplayRect(const Rect& r); -@@ -1056,6 +1060,8 @@ class GFX_EXPORT RenderText { +@@ -1050,6 +1054,8 @@ class GFX_EXPORT RenderText { // Tell whether or not the |layout_text_| needs an update or is up to date. mutable bool layout_text_up_to_date_ = false; @@ -394,10 +394,10 @@ index 9c8c5de34d064..b054688cca148 100644 explicit MenuHost(SubmenuView* submenu); diff --git ui/views/controls/menu/menu_item_view.cc ui/views/controls/menu/menu_item_view.cc -index 6da48e9716bcd..98f0d4d217f9e 100644 +index 538829ec598b6..042728512ea26 100644 --- ui/views/controls/menu/menu_item_view.cc +++ ui/views/controls/menu/menu_item_view.cc -@@ -1091,6 +1091,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, +@@ -1084,6 +1084,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, spilling_rect.set_y(spilling_rect.y() - corner_radius_); spilling_rect.set_height(spilling_rect.height() + corner_radius_); canvas->DrawRoundRect(spilling_rect, corner_radius_, flags); @@ -413,7 +413,7 @@ index 6da48e9716bcd..98f0d4d217f9e 100644 } else if (paint_as_selected) { gfx::Rect item_bounds = GetLocalBounds(); if (type_ == Type::kActionableSubMenu) { -@@ -1157,6 +1166,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { +@@ -1150,6 +1159,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { } SkColor MenuItemView::GetTextColor(bool minor, bool paint_as_selected) const { @@ -700,7 +700,7 @@ index 1ffec7052a314..3a2be376fb000 100644 content_view_->GetMenuItem()->GetMenuController()->GetAnchorPosition()); diff --git ui/views/test/ui_controls_factory_desktop_aura_ozone.cc ui/views/test/ui_controls_factory_desktop_aura_ozone.cc -index bec549b841bd7..0934f19177358 100644 +index a364780eb8203..4671969f5597c 100644 --- ui/views/test/ui_controls_factory_desktop_aura_ozone.cc +++ ui/views/test/ui_controls_factory_desktop_aura_ozone.cc @@ -16,6 +16,7 @@ @@ -724,7 +724,7 @@ index bec549b841bd7..0934f19177358 100644 if (root_location != root_current_location && ozone_ui_controls_test_helper_->ButtonDownMask() == 0 && diff --git ui/views/view.h ui/views/view.h -index ef40c571d57c0..0fd51538fbefd 100644 +index 29b0bed42c74d..c6dd795c13094 100644 --- ui/views/view.h +++ ui/views/view.h @@ -22,6 +22,7 @@ diff --git a/patch/patches/views_widget.patch b/patch/patches/views_widget.patch index 02439c0f7..bf0e82fea 100644 --- a/patch/patches/views_widget.patch +++ b/patch/patches/views_widget.patch @@ -1,8 +1,8 @@ diff --git content/browser/renderer_host/render_widget_host_view_base.cc content/browser/renderer_host/render_widget_host_view_base.cc -index edcca00291646..2bb104005561b 100644 +index eefdd87f1f85a..4f4c68e53676d 100644 --- content/browser/renderer_host/render_widget_host_view_base.cc +++ content/browser/renderer_host/render_widget_host_view_base.cc -@@ -652,6 +652,14 @@ float RenderWidgetHostViewBase::GetScaleOverrideForCapture() const { +@@ -660,6 +660,14 @@ float RenderWidgetHostViewBase::GetScaleOverrideForCapture() const { return scale_override_for_capture_; } @@ -18,7 +18,7 @@ index edcca00291646..2bb104005561b 100644 if (!GetMouseWheelPhaseHandler()) return; diff --git content/browser/renderer_host/render_widget_host_view_base.h content/browser/renderer_host/render_widget_host_view_base.h -index 912e238c2cc03..3a7e7b2f25d00 100644 +index 912a21280fdd5..fa535d68368fe 100644 --- content/browser/renderer_host/render_widget_host_view_base.h +++ content/browser/renderer_host/render_widget_host_view_base.h @@ -67,6 +67,7 @@ class CursorManager; @@ -29,7 +29,7 @@ index 912e238c2cc03..3a7e7b2f25d00 100644 class SyntheticGestureTarget; class TextInputManager; class TouchSelectionControllerClientManager; -@@ -138,6 +139,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -139,6 +140,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { const gfx::Size& max_size) override; void DisableAutoResize(const gfx::Size& new_size) override; float GetDeviceScaleFactor() const final; @@ -38,7 +38,7 @@ index 912e238c2cc03..3a7e7b2f25d00 100644 TouchSelectionControllerClientManager* GetTouchSelectionControllerClientManager() override; bool ShouldVirtualKeyboardOverlayContent() override; -@@ -174,6 +177,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -175,6 +178,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { // Called when screen information or native widget bounds change. virtual void UpdateScreenInfo(); @@ -49,7 +49,7 @@ index 912e238c2cc03..3a7e7b2f25d00 100644 // Called by the TextInputManager to notify the view about being removed from // the list of registered views, i.e., TextInputManager is no longer tracking // TextInputState from this view. The RWHV should reset |text_input_manager_| -@@ -413,6 +420,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -417,6 +424,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { const gfx::Rect& bounds, const gfx::Rect& anchor_rect) = 0; @@ -62,7 +62,7 @@ index 912e238c2cc03..3a7e7b2f25d00 100644 // Sets the cursor for this view to the one associated with the specified // cursor_type. virtual void UpdateCursor(const WebCursor& cursor) = 0; -@@ -655,6 +668,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -659,6 +672,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { // to all displays. gfx::Size system_cursor_size_; @@ -73,7 +73,7 @@ index 912e238c2cc03..3a7e7b2f25d00 100644 private: FRIEND_TEST_ALL_PREFIXES( BrowserSideFlingBrowserTest, -@@ -676,10 +693,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -680,10 +697,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { void SynchronizeVisualProperties(); @@ -133,10 +133,10 @@ index 855e5ff668236..2bf32cabf159b 100644 if (host_ && set_focus_on_mouse_down_or_key_event_) { set_focus_on_mouse_down_or_key_event_ = false; diff --git content/public/browser/render_widget_host_view.h content/public/browser/render_widget_host_view.h -index d213587450f06..3fde9a9ce47d5 100644 +index c7842775225c7..1ecb68d349bd1 100644 --- content/public/browser/render_widget_host_view.h +++ content/public/browser/render_widget_host_view.h -@@ -253,6 +253,14 @@ class CONTENT_EXPORT RenderWidgetHostView { +@@ -256,6 +256,14 @@ class CONTENT_EXPORT RenderWidgetHostView { // This must always return the same device scale factor as GetScreenInfo. virtual float GetDeviceScaleFactor() const = 0; @@ -152,10 +152,10 @@ index d213587450f06..3fde9a9ce47d5 100644 // Set the view's active state (i.e., tint state of controls). virtual void SetActive(bool active) = 0; diff --git ui/ozone/platform/x11/x11_window.cc ui/ozone/platform/x11/x11_window.cc -index 7371f85c84f9d..52081b786b91f 100644 +index 6c7817dc42fb0..a048960ea1916 100644 --- ui/ozone/platform/x11/x11_window.cc +++ ui/ozone/platform/x11/x11_window.cc -@@ -1753,7 +1753,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { +@@ -1772,7 +1772,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { req.border_pixel = 0; bounds_in_pixels_ = SanitizeBounds(bounds); @@ -179,10 +179,10 @@ index 87a4458f9fbfc..bc3edd88fac7f 100644 return host ? host->GetAcceleratedWidget() : nullptr; } diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc -index e861828b228bc..17ba3850ab447 100644 +index d8d30be7adeb2..6728c41c9cc2e 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc -@@ -163,6 +163,18 @@ Widget::MoveLoopResult DesktopWindowTreeHostLinux::RunMoveLoop( +@@ -164,6 +164,18 @@ Widget::MoveLoopResult DesktopWindowTreeHostLinux::RunMoveLoop( return result; } @@ -201,7 +201,7 @@ index e861828b228bc..17ba3850ab447 100644 void DesktopWindowTreeHostLinux::DispatchEvent(ui::Event* event) { // In Windows, the native events sent to chrome are separated into client // and non-client versions of events, which we record on our LocatedEvent -@@ -288,6 +300,8 @@ void DesktopWindowTreeHostLinux::AddAdditionalInitProperties( +@@ -289,6 +301,8 @@ void DesktopWindowTreeHostLinux::AddAdditionalInitProperties( properties->wayland_app_id = params.wayland_app_id; @@ -243,10 +243,10 @@ index e6842b0848c74..d214247587d41 100644 base::WeakPtrFactory weak_factory_{this}; }; diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -index 0ff9b8f6becc8..73e62450a9e03 100644 +index f6d94f2376d28..d0a8b16ae9a33 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -@@ -260,8 +260,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { +@@ -261,8 +261,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { if (properties.parent_widget) { window_parent_ = DesktopWindowTreeHostPlatform::GetHostForWidget( properties.parent_widget); @@ -363,7 +363,7 @@ index 046d3cf77f70e..f730142c7d554 100644 } diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index d44b04c2587ca..97a9c1a22b608 100644 +index 1091647c5096a..4829519b2a029 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h @@ -337,6 +337,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, @@ -376,10 +376,10 @@ index d44b04c2587ca..97a9c1a22b608 100644 // the NativeWidget may specify a default size. If the parent is specified, // |bounds| is in the parent's coordinate system. If the parent is not diff --git ui/views/widget/widget_delegate.h ui/views/widget/widget_delegate.h -index 8176aa0ac84b8..a9bbe9b6f1563 100644 +index 431d19f2543a9..4e2e69a650118 100644 --- ui/views/widget/widget_delegate.h +++ ui/views/widget/widget_delegate.h -@@ -384,6 +384,10 @@ class VIEWS_EXPORT WidgetDelegate { +@@ -375,6 +375,10 @@ class VIEWS_EXPORT WidgetDelegate { // Returns true if the title text should be centered. bool ShouldCenterWindowTitleText() const; @@ -404,7 +404,7 @@ index b3a3efd0e526f..8590a98eaf0b2 100644 if (native_widget_delegate->IsDialogBox()) { *style |= DS_MODALFRAME; diff --git ui/views/win/hwnd_message_handler.cc ui/views/win/hwnd_message_handler.cc -index 2d21f2e408004..15eca7b0db72f 100644 +index 1e6326a2f36f5..8df413cd539ee 100644 --- ui/views/win/hwnd_message_handler.cc +++ ui/views/win/hwnd_message_handler.cc @@ -824,7 +824,11 @@ bool HWNDMessageHandler::IsVisible() const { diff --git a/patch/patches/viz_osr_2575.patch b/patch/patches/viz_osr_2575.patch index 84d1a231e..4db1c83cb 100644 --- a/patch/patches/viz_osr_2575.patch +++ b/patch/patches/viz_osr_2575.patch @@ -80,10 +80,10 @@ index 309422bcf8581..759549f3046f4 100644 private: const HWND hwnd_; diff --git components/viz/service/BUILD.gn components/viz/service/BUILD.gn -index 10d10f49e7a0e..9e5a6409465ab 100644 +index 267af5f85d403..e7df56733515d 100644 --- components/viz/service/BUILD.gn +++ components/viz/service/BUILD.gn -@@ -214,6 +214,8 @@ viz_component("service") { +@@ -217,6 +217,8 @@ viz_component("service") { "transitions/transferable_resource_tracker.cc", "transitions/transferable_resource_tracker.h", "viz_service_export.h", @@ -93,7 +93,7 @@ index 10d10f49e7a0e..9e5a6409465ab 100644 defines = [ "VIZ_SERVICE_IMPLEMENTATION" ] diff --git components/viz/service/display_embedder/output_surface_provider_impl.cc components/viz/service/display_embedder/output_surface_provider_impl.cc -index 8585790795707..995143f8b0faf 100644 +index c019d729f2944..57670529f3d7e 100644 --- components/viz/service/display_embedder/output_surface_provider_impl.cc +++ components/viz/service/display_embedder/output_surface_provider_impl.cc @@ -17,6 +17,7 @@ @@ -112,7 +112,7 @@ index 8585790795707..995143f8b0faf 100644 #include "ui/base/ui_base_switches.h" #if BUILDFLAG(IS_WIN) -@@ -142,6 +144,20 @@ OutputSurfaceProviderImpl::CreateSoftwareOutputDeviceForPlatform( +@@ -141,6 +143,20 @@ OutputSurfaceProviderImpl::CreateSoftwareOutputDeviceForPlatform( if (headless_) return std::make_unique(); @@ -222,7 +222,7 @@ index 6b7fbb6cf13dc..e2af75168cb91 100644 + Draw(gfx.mojom.Rect damage_rect) => (); }; diff --git ui/compositor/compositor.h ui/compositor/compositor.h -index 2f6d2ee4160f2..11a32e1481c4b 100644 +index e0345f5903a48..31a118fc3b375 100644 --- ui/compositor/compositor.h +++ ui/compositor/compositor.h @@ -31,7 +31,9 @@ @@ -260,7 +260,7 @@ index 2f6d2ee4160f2..11a32e1481c4b 100644 // Sets the root of the layer tree drawn by this Compositor. The root layer // must have no parent. The compositor's root layer is reset if the root layer // is destroyed. NULL can be passed to reset the root layer, in which case the -@@ -478,6 +491,8 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver, +@@ -482,6 +495,8 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver, std::unique_ptr pending_begin_frame_args_; diff --git a/patch/patches/web_contents_1257_1565.patch b/patch/patches/web_contents_1257_1565.patch index 75ebcf25c..135c9a644 100644 --- a/patch/patches/web_contents_1257_1565.patch +++ b/patch/patches/web_contents_1257_1565.patch @@ -1,8 +1,8 @@ diff --git content/browser/web_contents/web_contents_impl.cc content/browser/web_contents/web_contents_impl.cc -index 33f6efe4df4ee..e07f9e28c0760 100644 +index 8a0b6e41eb3f1..9e6ba43dc912d 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -3036,6 +3036,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3059,6 +3059,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, site_instance.get(), params.renderer_initiated_creation, params.main_frame_name, GetOpener(), primary_main_frame_policy); @@ -15,7 +15,7 @@ index 33f6efe4df4ee..e07f9e28c0760 100644 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3046,6 +3052,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3069,6 +3075,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } @@ -23,7 +23,7 @@ index 33f6efe4df4ee..e07f9e28c0760 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -3224,6 +3231,9 @@ void WebContentsImpl::RenderWidgetCreated( +@@ -3247,6 +3254,9 @@ void WebContentsImpl::RenderWidgetCreated( OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::RenderWidgetCreated", "render_widget_host", render_widget_host); created_widgets_.insert(render_widget_host); @@ -33,9 +33,9 @@ index 33f6efe4df4ee..e07f9e28c0760 100644 } void WebContentsImpl::RenderWidgetDeleted( -@@ -3937,6 +3947,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( - // objects. - create_params.renderer_initiated_creation = !is_new_browsing_instance; +@@ -3973,6 +3983,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( + params.pip_options->lock_aspect_ratio; + } + if (delegate_) { + delegate_->GetCustomWebContentsView(this, @@ -49,7 +49,7 @@ index 33f6efe4df4ee..e07f9e28c0760 100644 std::unique_ptr new_contents; if (!is_guest) { create_params.context = view_->GetNativeView(); -@@ -7798,6 +7817,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, +@@ -7857,6 +7876,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, // frames). SetFocusedFrameTree(node->frame_tree()); } @@ -60,7 +60,7 @@ index 33f6efe4df4ee..e07f9e28c0760 100644 void WebContentsImpl::DidCallFocus() { diff --git content/public/browser/web_contents.h content/public/browser/web_contents.h -index c98dd2d9a23a0..e62f0c0803366 100644 +index f1b8dee6699c0..6e13569cfdeac 100644 --- content/public/browser/web_contents.h +++ content/public/browser/web_contents.h @@ -93,10 +93,12 @@ class BrowserContext; diff --git a/patch/patches/webkit_plugin_info_2015.patch b/patch/patches/webkit_plugin_info_2015.patch index f5ebb9b47..a8a3ae996 100644 --- a/patch/patches/webkit_plugin_info_2015.patch +++ b/patch/patches/webkit_plugin_info_2015.patch @@ -1,8 +1,8 @@ diff --git third_party/blink/public/platform/platform.h third_party/blink/public/platform/platform.h -index e56d75ffd68c4..0965644fd6f9e 100644 +index a9ba1b0ec765e..5d5d80fe8e999 100644 --- third_party/blink/public/platform/platform.h +++ third_party/blink/public/platform/platform.h -@@ -833,6 +833,11 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -812,6 +812,11 @@ class BLINK_PLATFORM_EXPORT Platform { const WebURL& url, blink::WebVector* csp) {} diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index ecc196fa2..10b2a44c8 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -1,8 +1,8 @@ diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h -index 5e4032ccf916f..1ccf72b56fb22 100644 +index 99f0ceb45972d..8b5f6726efcf1 100644 --- third_party/blink/public/web/web_view.h +++ third_party/blink/public/web/web_view.h -@@ -336,6 +336,7 @@ class WebView { +@@ -333,6 +333,7 @@ class WebView { // Sets whether select popup menus should be rendered by the browser. BLINK_EXPORT static void SetUseExternalPopupMenus(bool); @@ -11,7 +11,7 @@ index 5e4032ccf916f..1ccf72b56fb22 100644 // Cancels and hides the current popup (datetime, select...) if any. virtual void CancelPagePopup() = 0; diff --git third_party/blink/renderer/core/exported/web_view_impl.cc third_party/blink/renderer/core/exported/web_view_impl.cc -index 3f6460ceee1e3..faebfcc06bbae 100644 +index 071481b1b47da..8f033a73481f7 100644 --- third_party/blink/renderer/core/exported/web_view_impl.cc +++ third_party/blink/renderer/core/exported/web_view_impl.cc @@ -246,8 +246,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { @@ -39,7 +39,7 @@ index 3f6460ceee1e3..faebfcc06bbae 100644 fullscreen_controller_(std::make_unique(this)), page_base_background_color_( diff --git third_party/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h -index 2f8e971ab224b..130ddf0ba213d 100644 +index 6a36275fdd7ac..8837177386f91 100644 --- third_party/blink/renderer/core/exported/web_view_impl.h +++ third_party/blink/renderer/core/exported/web_view_impl.h @@ -133,7 +133,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, @@ -52,7 +52,7 @@ index 2f8e971ab224b..130ddf0ba213d 100644 // Returns whether frames under this WebView are backed by a compositor. bool does_composite() const { return does_composite_; } -@@ -809,6 +810,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -808,6 +809,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, float fake_page_scale_animation_page_scale_factor_ = 0.f; bool fake_page_scale_animation_use_anchor_ = false; @@ -62,10 +62,10 @@ index 2f8e971ab224b..130ddf0ba213d 100644 TransformationMatrix device_emulation_transform_; diff --git third_party/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc -index b05a0d8ca1db7..396343a895e82 100644 +index 70fab6032767a..e0f3fd02da1cc 100644 --- third_party/blink/renderer/core/page/chrome_client_impl.cc +++ third_party/blink/renderer/core/page/chrome_client_impl.cc -@@ -917,7 +917,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { +@@ -919,7 +919,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, HTMLSelectElement& select) { NotifyPopupOpeningObservers(); diff --git a/patch/patches/webui_2037.patch b/patch/patches/webui_2037.patch index d3aa94d5e..899051d8d 100644 --- a/patch/patches/webui_2037.patch +++ b/patch/patches/webui_2037.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc -index 4a978a473f39b..d10c133250860 100644 +index 54cf745342617..87471b42d4941 100644 --- chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc @@ -10,6 +10,7 @@ @@ -29,7 +29,7 @@ index 4a978a473f39b..d10c133250860 100644 #include "components/prefs/pref_service.h" #include "components/sync/driver/sync_internals_util.h" #include "components/sync/driver/sync_service.h" -@@ -332,7 +336,11 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { +@@ -333,7 +337,11 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { response->emplace(kOsVersionTag, os_version); #endif @@ -42,7 +42,7 @@ index 4a978a473f39b..d10c133250860 100644 PopulateExtensionInfoLogs(response.get()); PopulatePowerApiLogs(response.get()); #if BUILDFLAG(IS_WIN) -@@ -414,6 +422,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( +@@ -415,6 +423,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( if (!profile) return; @@ -55,7 +55,7 @@ index 4a978a473f39b..d10c133250860 100644 extensions::ExtensionRegistry* extension_registry = extensions::ExtensionRegistry::Get(profile); std::string extensions_list; -@@ -508,6 +522,8 @@ void ChromeInternalLogSource::PopulateOnboardingTime( +@@ -514,6 +528,8 @@ void ChromeInternalLogSource::PopulateOnboardingTime( #if BUILDFLAG(IS_WIN) void ChromeInternalLogSource::PopulateUsbKeyboardDetected( SystemLogsResponse* response) { diff --git a/patch/patches/win_sandbox_3210.patch b/patch/patches/win_sandbox_3210.patch index c45ccbe02..9446ebffb 100644 --- a/patch/patches/win_sandbox_3210.patch +++ b/patch/patches/win_sandbox_3210.patch @@ -1,8 +1,8 @@ diff --git sandbox/policy/win/sandbox_win.cc sandbox/policy/win/sandbox_win.cc -index b1ec529d260a9..d84c44e6e0412 100644 +index f7b0de8ca8cab..6788ef40416a1 100644 --- sandbox/policy/win/sandbox_win.cc +++ sandbox/policy/win/sandbox_win.cc -@@ -1131,6 +1131,13 @@ ResultCode SandboxWin::StartSandboxedProcess( +@@ -1132,6 +1132,13 @@ ResultCode SandboxWin::StartSandboxedProcess( const base::HandlesToInheritVector& handles_to_inherit, SandboxDelegate* delegate, base::Process* process) {