diff --git a/BUILD.gn b/BUILD.gn index d72bf745c..4cae38082 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1662,7 +1662,7 @@ if (is_mac) { ] } - if (is_linux && !is_debug && use_allocator=="none") { + if (is_linux && !is_debug && !use_partition_alloc_as_malloc) { # Only export necessary symbols from libcef.so. # Don't do this in Debug builds because it causes the resulting # application to crash. @@ -2196,13 +2196,7 @@ if (is_mac) { ] } - if (is_component_build) { - if (use_allocator=="tcmalloc") { - # Link to base to initialize tcmalloc allocator shims, otherwise - # base::allocator::IsAllocatorInitialized check fails - deps += [ "//base" ] - } - } else { + if (!is_component_build) { # Set rpath to find our own libfreetype even in a non-component build. configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] } diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index 5f70233fa..030a413a1 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/108.0.5359.0' + 'chromium_checkout': 'refs/tags/109.0.5414.0' } diff --git a/include/capi/cef_request_handler_capi.h b/include/capi/cef_request_handler_capi.h index 398ed8c61..a79e512d0 100644 --- a/include/capi/cef_request_handler_capi.h +++ b/include/capi/cef_request_handler_capi.h @@ -33,7 +33,7 @@ // by hand. See the translator.README.txt file in the tools directory for // more information. // -// $hash=0524a218f8cb54cfde70f2ec475520b11923c2f7$ +// $hash=c213b335ccaf7ad2b95d0c66659807b2836548b0$ // #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_ @@ -176,21 +176,6 @@ typedef struct _cef_request_handler_t { const cef_string_t* scheme, struct _cef_auth_callback_t* callback); - /// - /// Called on the IO thread when JavaScript requests a specific storage quota - /// size via the webkitStorageInfo.requestQuota function. |origin_url| is the - /// origin of the page making the request. |new_size| is the requested quota - /// size in bytes. Return true (1) to continue the request and call - /// cef_callback_t functions either in this function or at a later time to - /// grant or deny the request. Return false (0) to cancel the request - /// immediately. - /// - int(CEF_CALLBACK* on_quota_request)(struct _cef_request_handler_t* self, - struct _cef_browser_t* browser, - const cef_string_t* origin_url, - int64 new_size, - struct _cef_callback_t* callback); - /// /// Called on the UI thread to handle requests for URLs with an invalid SSL /// certificate. Return true (1) and call cef_callback_t functions either in diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h index 47c6a7212..0c2294703 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 "e92cde673e73851d8841e2f3c4f38bcd0f6ed2bb" +#define CEF_API_HASH_UNIVERSAL "80dc2ef26a1ac3a35c798a01adc88240759ac85a" #if defined(OS_WIN) -#define CEF_API_HASH_PLATFORM "162bfdae56cbfd7f76fd4178be019f0dba512c40" +#define CEF_API_HASH_PLATFORM "c3f39d68cb97e87872a59a42c9255460ef4d7170" #elif defined(OS_MAC) -#define CEF_API_HASH_PLATFORM "31c5680dbc8d80fffc14214dd1ce4126a08e38d3" +#define CEF_API_HASH_PLATFORM "589830b49e03e9f4ae2c050125bcdafacbb248dd" #elif defined(OS_LINUX) -#define CEF_API_HASH_PLATFORM "9682b2251f9973ee9eee0940eb9c773e522c2975" +#define CEF_API_HASH_PLATFORM "e3e836b304098732708acf972e82fb6fcb2516a7" #endif #ifdef __cplusplus diff --git a/include/cef_request_handler.h b/include/cef_request_handler.h index d3b979a97..edeefbd1d 100644 --- a/include/cef_request_handler.h +++ b/include/cef_request_handler.h @@ -172,22 +172,6 @@ class CefRequestHandler : public virtual CefBaseRefCounted { return false; } - /// - /// Called on the IO thread when JavaScript requests a specific storage quota - /// size via the webkitStorageInfo.requestQuota function. |origin_url| is the - /// origin of the page making the request. |new_size| is the requested quota - /// size in bytes. Return true to continue the request and call CefCallback - /// methods either in this method or at a later time to grant or deny the - /// request. Return false to cancel the request immediately. - /// - /*--cef()--*/ - virtual bool OnQuotaRequest(CefRefPtr browser, - const CefString& origin_url, - int64 new_size, - CefRefPtr callback) { - return false; - } - /// /// Called on the UI thread to handle requests for URLs with an invalid /// SSL certificate. Return true and call CefCallback methods either in this diff --git a/libcef/browser/alloy/alloy_content_browser_client.cc b/libcef/browser/alloy/alloy_content_browser_client.cc index 808be1942..7a65e3ea3 100644 --- a/libcef/browser/alloy/alloy_content_browser_client.cc +++ b/libcef/browser/alloy/alloy_content_browser_client.cc @@ -100,7 +100,6 @@ #include "content/public/browser/navigation_handle.h" #include "content/public/browser/overlay_window.h" #include "content/public/browser/page_navigator.h" -#include "content/public/browser/quota_permission_context.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" @@ -109,7 +108,6 @@ #include "content/public/browser/storage_partition.h" #include "content/public/browser/web_ui_url_loader_factory.h" #include "content/public/common/content_switches.h" -#include "content/public/common/storage_quota_params.h" #include "content/public/common/url_constants.h" #include "content/public/common/user_agent.h" #include "crypto/crypto_buildflags.h" @@ -137,7 +135,6 @@ #include "services/network/public/cpp/network_switches.h" #include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h" #include "services/service_manager/public/mojom/connector.mojom.h" -#include "storage/browser/quota/quota_settings.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h" #include "third_party/blink/public/common/web_preferences/web_preferences.h" #include "third_party/blink/public/mojom/badging/badging.mojom.h" @@ -173,59 +170,6 @@ namespace { -class CefQuotaCallbackImpl : public CefCallback { - public: - using CallbackType = content::QuotaPermissionContext::PermissionCallback; - - explicit CefQuotaCallbackImpl(CallbackType callback) - : callback_(std::move(callback)) {} - - CefQuotaCallbackImpl(const CefQuotaCallbackImpl&) = delete; - CefQuotaCallbackImpl& operator=(const CefQuotaCallbackImpl&) = delete; - - ~CefQuotaCallbackImpl() { - if (!callback_.is_null()) { - // The callback is still pending. Cancel it now. - if (CEF_CURRENTLY_ON_IOT()) { - RunNow(std::move(callback_), false); - } else { - CEF_POST_TASK(CEF_IOT, base::BindOnce(&CefQuotaCallbackImpl::RunNow, - std::move(callback_), false)); - } - } - } - - void Continue() override { ContinueNow(true); } - - void Cancel() override { ContinueNow(false); } - - [[nodiscard]] CallbackType Disconnect() { return std::move(callback_); } - - private: - void ContinueNow(bool allow) { - if (CEF_CURRENTLY_ON_IOT()) { - if (!callback_.is_null()) { - RunNow(std::move(callback_), allow); - } - } else { - CEF_POST_TASK(CEF_IOT, base::BindOnce(&CefQuotaCallbackImpl::ContinueNow, - this, allow)); - } - } - - static void RunNow(CallbackType callback, bool allow) { - CEF_REQUIRE_IOT(); - std::move(callback).Run( - allow ? content::QuotaPermissionContext::QUOTA_PERMISSION_RESPONSE_ALLOW - : content::QuotaPermissionContext:: - QUOTA_PERMISSION_RESPONSE_DISALLOW); - } - - CallbackType callback_; - - IMPLEMENT_REFCOUNTING(CefQuotaCallbackImpl); -}; - class CefSelectClientCertificateCallbackImpl : public CefSelectClientCertificateCallback { public: @@ -300,57 +244,6 @@ class CefSelectClientCertificateCallbackImpl IMPLEMENT_REFCOUNTING(CefSelectClientCertificateCallbackImpl); }; -class CefQuotaPermissionContext : public content::QuotaPermissionContext { - public: - CefQuotaPermissionContext() = default; - - CefQuotaPermissionContext(const CefQuotaPermissionContext&) = delete; - CefQuotaPermissionContext& operator=(const CefQuotaPermissionContext&) = - delete; - - // The callback will be dispatched on the IO thread. - void RequestQuotaPermission(const content::StorageQuotaParams& params, - int render_process_id, - PermissionCallback callback) override { - if (params.storage_type != blink::mojom::StorageType::kPersistent) { - // To match Chrome behavior we only support requesting quota with this - // interface for Persistent storage type. - std::move(callback).Run(QUOTA_PERMISSION_RESPONSE_DISALLOW); - return; - } - - bool handled = false; - - CefRefPtr browser = - AlloyBrowserHostImpl::GetBrowserForGlobalId(frame_util::MakeGlobalId( - render_process_id, params.render_frame_id)); - if (browser) { - if (auto client = browser->GetClient()) { - if (auto handler = client->GetRequestHandler()) { - CefRefPtr callbackImpl( - new CefQuotaCallbackImpl(std::move(callback))); - handled = handler->OnQuotaRequest( - browser.get(), params.origin_url.spec(), params.requested_size, - callbackImpl.get()); - if (!handled) { - // May return nullptr if the client has already executed the - // callback. - callback = callbackImpl->Disconnect(); - } - } - } - } - - if (!handled && !callback.is_null()) { - // Disallow the request by default. - std::move(callback).Run(QUOTA_PERMISSION_RESPONSE_DISALLOW); - } - } - - private: - ~CefQuotaPermissionContext() override = default; -}; - #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) int GetCrashSignalFD() { if (!crash_reporting::Enabled()) @@ -787,11 +680,6 @@ AlloyContentBrowserClient::GetSystemNetworkContext() { return SystemNetworkContextManager::GetInstance()->GetContext(); } -scoped_refptr -AlloyContentBrowserClient::CreateQuotaPermissionContext() { - return new CefQuotaPermissionContext(); -} - content::MediaObserver* AlloyContentBrowserClient::GetMediaObserver() { return CefMediaCaptureDevicesDispatcher::GetInstance(); } @@ -1309,6 +1197,7 @@ bool AlloyContentBrowserClient::HandleExternalProtocol( web_contents_getter, std::move(receiver), std::move(request_handler)); return true; } + std::unique_ptr AlloyContentBrowserClient::CreateWindowForVideoPictureInPicture( content::VideoPictureInPictureWindowController* controller) { @@ -1321,17 +1210,6 @@ AlloyContentBrowserClient::CreateWindowForVideoPictureInPicture( return content::VideoOverlayWindow::Create(controller); } -std::unique_ptr -AlloyContentBrowserClient::CreateWindowForDocumentPictureInPicture( - content::DocumentPictureInPictureWindowController* controller) { - // Note: content::DocumentOverlayWindow::Create() is defined by - // platform-specific implementation in chrome/browser/ui/views. This layering - // hack, which goes through //content and ContentBrowserClient, allows us to - // work around the dependency constraints that disallow directly calling - // chrome/browser/ui/views code either from here or from other code in - // chrome/browser. - return content::DocumentOverlayWindow::Create(controller); -} void AlloyContentBrowserClient::RegisterBrowserInterfaceBindersForFrame( content::RenderFrameHost* render_frame_host, mojo::BinderMapWithContext* map) { diff --git a/libcef/browser/alloy/alloy_content_browser_client.h b/libcef/browser/alloy/alloy_content_browser_client.h index e8db983bd..21250725c 100644 --- a/libcef/browser/alloy/alloy_content_browser_client.h +++ b/libcef/browser/alloy/alloy_content_browser_client.h @@ -75,8 +75,6 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient { scoped_refptr GetSystemSharedURLLoaderFactory() override; network::mojom::NetworkContext* GetSystemNetworkContext() override; - scoped_refptr CreateQuotaPermissionContext() - override; content::MediaObserver* GetMediaObserver() override; content::SpeechRecognitionManagerDelegate* CreateSpeechRecognitionManagerDelegate() override; @@ -221,9 +219,6 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient { std::unique_ptr CreateWindowForVideoPictureInPicture( content::VideoPictureInPictureWindowController* controller) override; - std::unique_ptr - CreateWindowForDocumentPictureInPicture( - content::DocumentPictureInPictureWindowController* controller) override; void RegisterBrowserInterfaceBindersForFrame( content::RenderFrameHost* render_frame_host, mojo::BinderMapWithContext* map) override; diff --git a/libcef/browser/context.cc b/libcef/browser/context.cc index 4705ae234..dd7d0af3c 100644 --- a/libcef/browser/context.cc +++ b/libcef/browser/context.cc @@ -136,7 +136,7 @@ bool ValidateCachePath(const base::FilePath& cache_path, return false; } - base::ThreadRestrictions::ScopedAllowIO allow_io; + base::ScopedAllowBlockingForTesting allow_blocking; if (!base::DirectoryExists(cache_path) && !base::CreateDirectory(cache_path)) { LOG(ERROR) << "The cache_path directory (" << cache_path.value() diff --git a/libcef/browser/extension_impl.cc b/libcef/browser/extension_impl.cc index c0aa3e1ef..a3fe50083 100644 --- a/libcef/browser/extension_impl.cc +++ b/libcef/browser/extension_impl.cc @@ -16,7 +16,8 @@ CefExtensionImpl::CefExtensionImpl(const extensions::Extension* extension, : id_(extension->id()), path_(extension->path().value()), manifest_(new CefDictionaryValueImpl( - extension->manifest()->value()->CreateDeepCopy().release(), + static_cast( + new base::Value(extension->manifest()->value()->Clone())), true, true)), loader_context_(loader_context), diff --git a/libcef/browser/media_stream_registrar.cc b/libcef/browser/media_stream_registrar.cc index 821648d1f..476c10fae 100644 --- a/libcef/browser/media_stream_registrar.cc +++ b/libcef/browser/media_stream_registrar.cc @@ -56,7 +56,7 @@ CefMediaStreamRegistrar::CefMediaStreamRegistrar(CefBrowserHostBase* browser) std::unique_ptr CefMediaStreamRegistrar::MaybeCreateMediaStreamUI(bool has_video, - bool has_audio) const { + bool has_audio) { // Only create the object if the callback will be executed. if (auto client = browser_->GetClient()) { if (auto handler = client->GetDisplayHandler()) { diff --git a/libcef/browser/media_stream_registrar.h b/libcef/browser/media_stream_registrar.h index 6a34c7f71..c6fc3754e 100644 --- a/libcef/browser/media_stream_registrar.h +++ b/libcef/browser/media_stream_registrar.h @@ -25,7 +25,7 @@ class CefMediaStreamRegistrar { std::unique_ptr MaybeCreateMediaStreamUI( bool has_video, - bool has_audio) const; + bool has_audio); private: friend class CefMediaStreamUI; diff --git a/libcef/browser/native/browser_platform_delegate_native_win.cc b/libcef/browser/native/browser_platform_delegate_native_win.cc index 3ef40c877..729c73e15 100644 --- a/libcef/browser/native/browser_platform_delegate_native_win.cc +++ b/libcef/browser/native/browser_platform_delegate_native_win.cc @@ -16,7 +16,6 @@ #include "base/base_paths_win.h" #include "base/files/file_util.h" -#include "base/memory/ref_counted_memory.h" #include "base/path_service.h" #include "base/strings/utf_string_conversions.h" #include "base/win/registry.h" @@ -43,7 +42,7 @@ namespace { -void WriteTempFileAndView(scoped_refptr str) { +void WriteTempFileAndView(const std::string& data) { CEF_REQUIRE_BLOCKING(); base::FilePath tmp_file; @@ -54,7 +53,6 @@ void WriteTempFileAndView(scoped_refptr str) { // program to open. tmp_file = tmp_file.AddExtension(L"txt"); - const std::string& data = str->data(); int write_ct = base::WriteFile(tmp_file, data.c_str(), data.size()); DCHECK_EQ(static_cast(data.size()), write_ct); @@ -432,10 +430,7 @@ void CefBrowserPlatformDelegateNativeWin::SizeTo(int width, int height) { } void CefBrowserPlatformDelegateNativeWin::ViewText(const std::string& text) { - std::string str = text; - scoped_refptr str_ref = - base::RefCountedString::TakeString(&str); - CEF_POST_USER_VISIBLE_TASK(base::BindOnce(WriteTempFileAndView, str_ref)); + CEF_POST_USER_VISIBLE_TASK(base::BindOnce(WriteTempFileAndView, text)); } bool CefBrowserPlatformDelegateNativeWin::HandleKeyboardEvent( diff --git a/libcef/browser/native/cursor_util_linux.cc b/libcef/browser/native/cursor_util_linux.cc index 36c07a72d..cfce4a77c 100644 --- a/libcef/browser/native/cursor_util_linux.cc +++ b/libcef/browser/native/cursor_util_linux.cc @@ -8,7 +8,7 @@ #if BUILDFLAG(OZONE_PLATFORM_X11) #include "ui/base/x/x11_cursor.h" -#elif defined(USE_OZONE) +#elif BUILDFLAG(IS_OZONE) #include "ui/ozone/common/bitmap_cursor.h" #endif @@ -19,7 +19,7 @@ cef_cursor_handle_t ToCursorHandle(scoped_refptr cursor) { // See https://crbug.com/1029142 for background. return static_cast( ui::X11Cursor::FromPlatformCursor(cursor)->xcursor()); -#elif defined(USE_OZONE) +#elif BUILDFLAG(IS_OZONE) return static_cast( ui::BitmapCursor::FromPlatformCursor(cursor)->platform_data()); #else diff --git a/libcef/browser/net/internal_scheme_handler.cc b/libcef/browser/net/internal_scheme_handler.cc index 1a7aac817..e69807d88 100644 --- a/libcef/browser/net/internal_scheme_handler.cc +++ b/libcef/browser/net/internal_scheme_handler.cc @@ -32,7 +32,7 @@ base::FilePath FilePathFromASCII(const std::string& str) { std::string GetMimeType(const std::string& filename) { // Requests should not block on the disk! On POSIX this goes to disk. // http://code.google.com/p/chromium/issues/detail?id=59849 - base::ThreadRestrictions::ScopedAllowIO allow_io; + base::ScopedAllowBlockingForTesting allow_blocking; std::string mime_type; const base::FilePath& file_path = FilePathFromASCII(filename); @@ -176,7 +176,8 @@ class InternalHandlerFactory : public CefSchemeHandlerFactory { << action.resource_id << " URL: " << url.spec().c_str(); return nullptr; } - action.bytes = base::RefCountedString::TakeString(&str); + action.bytes = + base::MakeRefCounted(std::move(str)); } if (action.bytes) { diff --git a/libcef/browser/net_service/browser_urlrequest_impl.cc b/libcef/browser/net_service/browser_urlrequest_impl.cc index 86a3c471c..ae90398f8 100644 --- a/libcef/browser/net_service/browser_urlrequest_impl.cc +++ b/libcef/browser/net_service/browser_urlrequest_impl.cc @@ -334,7 +334,7 @@ class CefBrowserURLRequest::Context if (!extension.empty()) { // Requests should not block on the disk! On POSIX this goes to // disk. http://code.google.com/p/chromium/issues/detail?id=59849 - base::ThreadRestrictions::ScopedAllowIO allow_io; + base::ScopedAllowBlockingForTesting allow_blocking; // Also remove the leading period. net::GetMimeTypeFromExtension(extension.substr(1), &content_type); } diff --git a/libcef/browser/permission_prompt.cc b/libcef/browser/permission_prompt.cc index 5fdb6f1f8..d0f32f0ac 100644 --- a/libcef/browser/permission_prompt.cc +++ b/libcef/browser/permission_prompt.cc @@ -111,7 +111,7 @@ class CefPermissionPrompt : public permissions::PermissionPrompt { } // Used to tie Delegate access to this object's lifespan. - DelegateCallback MakeDelegateCallback() const { + DelegateCallback MakeDelegateCallback() { return base::BindOnce(&CefPermissionPrompt::NotifyDelegate, weak_ptr_factory_.GetWeakPtr()); } diff --git a/libcef/browser/prefs/browser_prefs.cc b/libcef/browser/prefs/browser_prefs.cc index 59c61972c..5da520192 100644 --- a/libcef/browser/prefs/browser_prefs.cc +++ b/libcef/browser/prefs/browser_prefs.cc @@ -304,6 +304,10 @@ std::unique_ptr CreatePrefService(Profile* profile, registry->RegisterBooleanPref(prefs::kSearchSuggestEnabled, false); registry->RegisterStringPref(prefs::kSessionExitType, std::string()); + // Based on ChromeContentBrowserClient::RegisterProfilePrefs. + registry->RegisterBooleanPref( + prefs::kAccessControlAllowMethodsInCORSPreflightSpecConformant, true); + // Spell checking preferences. // Modify defaults from SpellcheckServiceFactory::RegisterProfilePrefs. std::string spellcheck_lang = diff --git a/libcef/browser/prefs/pref_helper.cc b/libcef/browser/prefs/pref_helper.cc index 5b4c9f0dd..18eed8cf9 100644 --- a/libcef/browser/prefs/pref_helper.cc +++ b/libcef/browser/prefs/pref_helper.cc @@ -50,7 +50,7 @@ CefRefPtr GetPreference(PrefService* pref_service, const PrefService::Preference* pref = pref_service->FindPreference(name); if (!pref) return nullptr; - return new CefValueImpl(pref->GetValue()->CreateDeepCopy().release()); + return new CefValueImpl(new base::Value(pref->GetValue()->Clone())); } CefRefPtr GetAllPreferences(PrefService* pref_service, diff --git a/libcef/browser/prefs/pref_store.cc b/libcef/browser/prefs/pref_store.cc index 6cc730c94..2a69b4d92 100644 --- a/libcef/browser/prefs/pref_store.cc +++ b/libcef/browser/prefs/pref_store.cc @@ -109,10 +109,6 @@ void CefPrefStore::CommitPendingWrite( void CefPrefStore::SchedulePendingLossyWrites() {} -void CefPrefStore::ClearMutableValues() { - NOTIMPLEMENTED(); -} - void CefPrefStore::OnStoreDeletionFromDisk() {} void CefPrefStore::SetInitializationCompleted() { diff --git a/libcef/browser/prefs/pref_store.h b/libcef/browser/prefs/pref_store.h index a279ae45a..c5dc4218c 100644 --- a/libcef/browser/prefs/pref_store.h +++ b/libcef/browser/prefs/pref_store.h @@ -51,7 +51,6 @@ class CefPrefStore : public PersistentPrefStore { base::OnceClosure done_callback, base::OnceClosure synchronous_done_callback) override; void SchedulePendingLossyWrites() override; - void ClearMutableValues() override; void OnStoreDeletionFromDisk() override; // Marks the store as having completed initialization. diff --git a/libcef/browser/stream_impl.cc b/libcef/browser/stream_impl.cc index a9a9eac2d..7e90c0697 100644 --- a/libcef/browser/stream_impl.cc +++ b/libcef/browser/stream_impl.cc @@ -15,7 +15,7 @@ CefRefPtr CefStreamReader::CreateForFile( DCHECK(!fileName.empty()); // TODO(cef): Do not allow file IO on all threads (issue #1187). - base::ThreadRestrictions::ScopedAllowIO allow_io; + base::ScopedAllowBlockingForTesting allow_blocking; CefRefPtr reader; FILE* file = base::OpenFile(base::FilePath(fileName), "rb"); @@ -48,7 +48,7 @@ CefRefPtr CefStreamWriter::CreateForFile( DCHECK(!fileName.empty()); // TODO(cef): Do not allow file IO on all threads (issue #1187). - base::ThreadRestrictions::ScopedAllowIO allow_io; + base::ScopedAllowBlockingForTesting allow_blocking; CefRefPtr writer; FILE* file = base::OpenFile(base::FilePath(fileName), "wb"); diff --git a/libcef/browser/views/window_impl.cc b/libcef/browser/views/window_impl.cc index 64e5c443e..665d57f61 100644 --- a/libcef/browser/views/window_impl.cc +++ b/libcef/browser/views/window_impl.cc @@ -23,7 +23,7 @@ #include "ui/aura/test/ui_controls_factory_aura.h" #include "ui/aura/window.h" #include "ui/base/test/ui_controls_aura.h" -#if defined(USE_OZONE) +#if BUILDFLAG(IS_OZONE) #include "ui/views/test/ui_controls_factory_desktop_aura_ozone.h" #endif #endif // defined(USE_AURA) @@ -44,7 +44,7 @@ void InitializeUITesting() { #if BUILDFLAG(IS_WIN) ui_controls::InstallUIControlsAura( aura::test::CreateUIControlsAura(nullptr)); -#elif defined(USE_OZONE) +#elif BUILDFLAG(IS_OZONE) ui_controls::InstallUIControlsAura( views::test::CreateUIControlsDesktopAuraOzone()); #endif diff --git a/libcef/common/parser_impl.cc b/libcef/common/parser_impl.cc index 073a0700a..825576121 100644 --- a/libcef/common/parser_impl.cc +++ b/libcef/common/parser_impl.cc @@ -101,7 +101,7 @@ CefString CefFormatUrlForSecurityDisplay(const CefString& origin_url) { CefString CefGetMimeType(const CefString& extension) { // Requests should not block on the disk! On POSIX this goes to disk. // http://code.google.com/p/chromium/issues/detail?id=59849 - base::ThreadRestrictions::ScopedAllowIO allow_io; + base::ScopedAllowBlockingForTesting allow_blocking; std::string mime_type; net::GetMimeTypeFromExtension(extension, &mime_type); diff --git a/libcef/common/values_impl.cc b/libcef/common/values_impl.cc index b682239f8..aa350ef30 100644 --- a/libcef/common/values_impl.cc +++ b/libcef/common/values_impl.cc @@ -65,7 +65,7 @@ CefRefPtr CefValueImpl::GetOrCreateRefOrCopy( list_value, parent_value, read_only, controller)); } - return new CefValueImpl(value->CreateDeepCopy().release()); + return new CefValueImpl(new base::Value(value->Clone())); } CefValueImpl::CefValueImpl() {} @@ -109,7 +109,7 @@ base::Value* CefValueImpl::CopyOrDetachValue( ->CopyOrDetachValue(new_controller); } - return value_->CreateDeepCopy().release(); + return new base::Value(value_->Clone()); } void CefValueImpl::SwapValue(base::Value* new_value, @@ -226,7 +226,7 @@ CefRefPtr CefValueImpl::Copy() { if (list_value_) return new CefValueImpl(list_value_->Copy()); if (value_) - return new CefValueImpl(value_->CreateDeepCopy().release()); + return new CefValueImpl(new base::Value(value_->Clone())); return new CefValueImpl(); } @@ -483,7 +483,7 @@ CefBinaryValueImpl::CefBinaryValueImpl(char* data, size_t data_size) base::Value* CefBinaryValueImpl::CopyValue() { CEF_VALUE_VERIFY_RETURN(false, nullptr); - return const_value().CreateDeepCopy().release(); + return new base::Value(const_value().Clone()); } base::Value* CefBinaryValueImpl::CopyOrDetachValue( @@ -551,9 +551,8 @@ bool CefBinaryValueImpl::IsEqual(CefRefPtr that) { CefRefPtr CefBinaryValueImpl::Copy() { CEF_VALUE_VERIFY_RETURN(false, nullptr); - return new CefBinaryValueImpl(const_value().CreateDeepCopy().release(), - nullptr, CefBinaryValueImpl::kOwnerWillDelete, - nullptr); + return new CefBinaryValueImpl(new base::Value(const_value().Clone()), nullptr, + CefBinaryValueImpl::kOwnerWillDelete, nullptr); } size_t CefBinaryValueImpl::GetSize() { @@ -626,7 +625,8 @@ CefDictionaryValueImpl::CefDictionaryValueImpl(base::DictionaryValue* value, base::DictionaryValue* CefDictionaryValueImpl::CopyValue() { CEF_VALUE_VERIFY_RETURN(false, nullptr); - return const_value().CreateDeepCopy().release(); + return static_cast( + new base::Value(const_value().Clone())); } base::DictionaryValue* CefDictionaryValueImpl::CopyOrDetachValue( @@ -700,7 +700,8 @@ CefRefPtr CefDictionaryValueImpl::Copy( bool exclude_empty_children) { CEF_VALUE_VERIFY_RETURN(false, nullptr); - base::DictionaryValue* value = const_value().CreateDeepCopy().release(); + base::DictionaryValue* value = static_cast( + new base::Value(const_value().Clone())); if (exclude_empty_children) { RemoveEmptyValueDicts(value->GetDict()); } @@ -1057,8 +1058,7 @@ CefListValueImpl::CefListValueImpl(base::ListValue* value, base::ListValue* CefListValueImpl::CopyValue() { CEF_VALUE_VERIFY_RETURN(false, nullptr); - return static_cast( - const_value().CreateDeepCopy().release()); + return static_cast(new base::Value(const_value().Clone())); } base::ListValue* CefListValueImpl::CopyOrDetachValue( @@ -1132,7 +1132,7 @@ CefRefPtr CefListValueImpl::Copy() { CEF_VALUE_VERIFY_RETURN(false, nullptr); return new CefListValueImpl( - static_cast(const_value().CreateDeepCopy().release()), + static_cast(new base::Value(const_value().Clone())), nullptr, CefListValueImpl::kOwnerWillDelete, false, nullptr); } diff --git a/libcef_dll/cpptoc/request_handler_cpptoc.cc b/libcef_dll/cpptoc/request_handler_cpptoc.cc index ebff29036..38e446535 100644 --- a/libcef_dll/cpptoc/request_handler_cpptoc.cc +++ b/libcef_dll/cpptoc/request_handler_cpptoc.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=4e9587e1eaf8aef5f0457537b70ebcc3ee68c449$ +// $hash=d953393a268020dbb5ac9ea7ef06caff9b9770ba$ // #include "libcef_dll/cpptoc/request_handler_cpptoc.h" @@ -201,41 +201,6 @@ request_handler_get_auth_credentials(struct _cef_request_handler_t* self, return _retval; } -int CEF_CALLBACK -request_handler_on_quota_request(struct _cef_request_handler_t* self, - cef_browser_t* browser, - const cef_string_t* origin_url, - int64 new_size, - cef_callback_t* callback) { - shutdown_checker::AssertNotShutdown(); - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return 0; - // Verify param: browser; type: refptr_diff - DCHECK(browser); - if (!browser) - return 0; - // Verify param: origin_url; type: string_byref_const - DCHECK(origin_url); - if (!origin_url) - return 0; - // Verify param: callback; type: refptr_diff - DCHECK(callback); - if (!callback) - return 0; - - // Execute - bool _retval = CefRequestHandlerCppToC::Get(self)->OnQuotaRequest( - CefBrowserCToCpp::Wrap(browser), CefString(origin_url), new_size, - CefCallbackCToCpp::Wrap(callback)); - - // Return type: bool - return _retval; -} - int CEF_CALLBACK request_handler_on_certificate_error(struct _cef_request_handler_t* self, cef_browser_t* browser, @@ -400,7 +365,6 @@ CefRequestHandlerCppToC::CefRequestHandlerCppToC() { GetStruct()->get_resource_request_handler = request_handler_get_resource_request_handler; GetStruct()->get_auth_credentials = request_handler_get_auth_credentials; - GetStruct()->on_quota_request = request_handler_on_quota_request; GetStruct()->on_certificate_error = request_handler_on_certificate_error; GetStruct()->on_select_client_certificate = request_handler_on_select_client_certificate; diff --git a/libcef_dll/ctocpp/request_handler_ctocpp.cc b/libcef_dll/ctocpp/request_handler_ctocpp.cc index 0e173832a..fe090e47e 100644 --- a/libcef_dll/ctocpp/request_handler_ctocpp.cc +++ b/libcef_dll/ctocpp/request_handler_ctocpp.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=8a0ae45a7340b21491e67f4b4bd5494fb6c14d8c$ +// $hash=5c6e905f3b4dbf7a2c8a098708e8e6524f847bb6$ // #include "libcef_dll/ctocpp/request_handler_ctocpp.h" @@ -194,41 +194,6 @@ bool CefRequestHandlerCToCpp::GetAuthCredentials( return _retval ? true : false; } -NO_SANITIZE("cfi-icall") -bool CefRequestHandlerCToCpp::OnQuotaRequest(CefRefPtr browser, - const CefString& origin_url, - int64 new_size, - CefRefPtr callback) { - shutdown_checker::AssertNotShutdown(); - - cef_request_handler_t* _struct = GetStruct(); - if (CEF_MEMBER_MISSING(_struct, on_quota_request)) - return false; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Verify param: browser; type: refptr_diff - DCHECK(browser.get()); - if (!browser.get()) - return false; - // Verify param: origin_url; type: string_byref_const - DCHECK(!origin_url.empty()); - if (origin_url.empty()) - return false; - // Verify param: callback; type: refptr_diff - DCHECK(callback.get()); - if (!callback.get()) - return false; - - // Execute - int _retval = _struct->on_quota_request( - _struct, CefBrowserCppToC::Wrap(browser), origin_url.GetStruct(), - new_size, CefCallbackCppToC::Wrap(callback)); - - // Return type: bool - return _retval ? true : false; -} - NO_SANITIZE("cfi-icall") bool CefRequestHandlerCToCpp::OnCertificateError( CefRefPtr browser, diff --git a/libcef_dll/ctocpp/request_handler_ctocpp.h b/libcef_dll/ctocpp/request_handler_ctocpp.h index 2b3023a1e..0aa185bd2 100644 --- a/libcef_dll/ctocpp/request_handler_ctocpp.h +++ b/libcef_dll/ctocpp/request_handler_ctocpp.h @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=196e93e7eb44712449c6cb3796fdf8805102eca5$ +// $hash=f503646b9e9ae178fc7bd2bd23da4d2cb0282261$ // #ifndef CEF_LIBCEF_DLL_CTOCPP_REQUEST_HANDLER_CTOCPP_H_ @@ -61,10 +61,6 @@ class CefRequestHandlerCToCpp const CefString& realm, const CefString& scheme, CefRefPtr callback) override; - bool OnQuotaRequest(CefRefPtr browser, - const CefString& origin_url, - int64 new_size, - CefRefPtr callback) override; bool OnCertificateError(CefRefPtr browser, cef_errorcode_t cert_error, const CefString& request_url, diff --git a/patch/patch.cfg b/patch/patch.cfg index b4271b49c..c88a77f85 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -527,6 +527,8 @@ patches = [ # # Avoid usage of std::atomic_flag::test() added in C++20. # https://github.com/llvm/llvm-project/issues/57364 + # + # Avoid usage of PartitionAlloc assertions (PA_BASE_CHECK) in raw_ptr.h. 'name': 'base_sandbox_2743', }, { diff --git a/patch/patches/base_command_line_1872.patch b/patch/patches/base_command_line_1872.patch index cdb310b10..8a7c0aa66 100644 --- a/patch/patches/base_command_line_1872.patch +++ b/patch/patches/base_command_line_1872.patch @@ -1,5 +1,5 @@ diff --git base/command_line.cc base/command_line.cc -index 77a452c8f84b5..78d39b419b8d4 100644 +index 2f3596defccf4..9d4e42bbeb473 100644 --- base/command_line.cc +++ base/command_line.cc @@ -339,11 +339,10 @@ void CommandLine::AppendSwitchPath(StringPiece switch_string, diff --git a/patch/patches/base_sandbox_2743.patch b/patch/patches/base_sandbox_2743.patch index 2f0532a0a..ad41956a6 100644 --- a/patch/patches/base_sandbox_2743.patch +++ b/patch/patches/base_sandbox_2743.patch @@ -1,8 +1,8 @@ diff --git base/BUILD.gn base/BUILD.gn -index a56c5fc803675..e5018871ad80a 100644 +index 304a8d1891a98..13be431518cc4 100644 --- base/BUILD.gn +++ base/BUILD.gn -@@ -38,6 +38,7 @@ import("//build/nocompile.gni") +@@ -39,6 +39,7 @@ import("//build/nocompile.gni") import("//build/rust/mixed_component.gni") import("//build/timestamp.gni") import("//build_overrides/build.gni") @@ -10,7 +10,7 @@ index a56c5fc803675..e5018871ad80a 100644 import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") -@@ -1973,7 +1974,11 @@ mixed_component("base") { +@@ -1993,7 +1994,11 @@ mixed_component("base") { "hash/md5_constexpr_internal.h", "hash/sha1.h", ] @@ -23,7 +23,7 @@ index a56c5fc803675..e5018871ad80a 100644 sources += [ "hash/md5_nacl.cc", "hash/md5_nacl.h", -@@ -2114,6 +2119,12 @@ mixed_component("base") { +@@ -2134,6 +2139,12 @@ mixed_component("base") { defines += [ "COM_INIT_CHECK_HOOK_DISABLED" ] } @@ -87,6 +87,36 @@ index 29626e5853c6e..2fb1c61504c5d 100644 #include "base/hash/sha1_nacl.h" #else #include "base/hash/sha1_boringssl.h" +diff --git base/memory/raw_ptr.h base/memory/raw_ptr.h +index d3e96a9bcf0a2..e7f9003405743 100644 +--- base/memory/raw_ptr.h ++++ base/memory/raw_ptr.h +@@ -22,6 +22,7 @@ + #include "base/base_export.h" + #include "build/build_config.h" + #include "build/buildflag.h" ++#include "cef/libcef/features/features.h" + + // A strange dance is done here to provide `CHECK` for `raw_ptr` + // in the presence of NaCl. The constraints are: +@@ -39,7 +40,7 @@ + // macro isn't used _everywhere_ (e.g. not in the implementation of + // BRP) because we assert that NaCl always uses RawPtrNoOpImpl (see + // `static_assert` below). +-#if BUILDFLAG(IS_NACL) ++#if BUILDFLAG(IS_NACL) || BUILDFLAG(IS_CEF_SANDBOX_BUILD) + #include "base/check.h" + #define PA_RAW_PTR_CHECK(condition) CHECK(condition) + #else +@@ -993,7 +994,7 @@ class PA_TRIVIAL_ABI PA_GSL_POINTER raw_ptr { + raw_ptr>, + raw_ptr>; + +-#if BUILDFLAG(IS_NACL) ++#if BUILDFLAG(IS_NACL) || BUILDFLAG(IS_CEF_SANDBOX_BUILD) + // See comment at top about `PA_RAW_PTR_CHECK()`. + static_assert(std::is_same_v); + #endif // BUILDFLAG(IS_NACL) diff --git base/rand_util.h base/rand_util.h index 04024537ee698..59864cb084559 100644 --- base/rand_util.h diff --git a/patch/patches/browser_scheduler.patch b/patch/patches/browser_scheduler.patch index 908194e40..385a4d0de 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 fc584089f05cc..9f827226c197f 100644 +index 30c7921b6ddba..915ff0d89eeba 100644 --- content/browser/scheduler/browser_task_executor.cc +++ content/browser/scheduler/browser_task_executor.cc -@@ -286,7 +286,7 @@ BrowserTaskExecutor::OnUserInputStart() { +@@ -271,7 +271,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 87c06cf4c..d88423e43 100644 --- a/patch/patches/browser_security_policy_1081397.patch +++ b/patch/patches/browser_security_policy_1081397.patch @@ -20,13 +20,17 @@ index 18c138c21a853..554e22458da45 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 14dfb45da60c0..7e3ebfa6fb431 100644 +index cd1650e1e1ad0..6768097b3a271 100644 --- content/browser/renderer_host/navigation_request.cc +++ content/browser/renderer_host/navigation_request.cc -@@ -6669,6 +6669,14 @@ std::pair NavigationRequest:: - origin_and_debug_info.second += ", error"; - } - +@@ -6671,10 +6671,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( + bool use_opaque_origin = + (sandbox_flags & network::mojom::WebSandboxFlags::kOrigin) == + network::mojom::WebSandboxFlags::kOrigin; ++ if (use_opaque_origin) { ++ origin_and_debug_info.second += ", sandbox_flags"; ++ } ++ + if (!origin_and_debug_info.first.GetURL().IsStandard()) { + // Always return an opaque origin for non-standard URLs. Otherwise, the + // CanAccessDataForOrigin() check may fail for unregistered custom scheme @@ -38,8 +42,13 @@ index 14dfb45da60c0..7e3ebfa6fb431 100644 if (use_opaque_origin) { origin_and_debug_info = std::make_pair(origin_and_debug_info.first.DeriveNewOpaqueOrigin(), -@@ -6696,6 +6704,15 @@ std::pair NavigationRequest:: - GetOriginForURLLoaderFactoryWithoutFinalFrameHostWithDebugInfo( +- origin_and_debug_info.second + ", sandbox_flags"); ++ origin_and_debug_info.second); + } + + return origin_and_debug_info; +@@ -6704,6 +6716,15 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { + GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( SandboxFlagsToCommit()); + if (origin_with_debug_info.first.opaque() && diff --git a/patch/patches/build.patch b/patch/patches/build.patch index 0213814c5..79df1760f 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 cd9b186a1252f..2d0d9310485fe 100644 +index 3eede98ae4e1d..df81b6b75d9bc 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn -@@ -1862,8 +1862,6 @@ config("thin_archive") { +@@ -1891,8 +1891,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 9db2349eb..1d59386e9 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 68415e75360ce..7a144a035b0a7 100644 +index 579d2c1b3db06..6f1e7e69e8ada 100644 --- chrome/browser/BUILD.gn +++ chrome/browser/BUILD.gn @@ -11,6 +11,7 @@ import("//build/config/compiler/pgo/pgo.gni") @@ -10,7 +10,7 @@ index 68415e75360ce..7a144a035b0a7 100644 import("//chrome/browser/buildflags.gni") import("//chrome/browser/downgrade/buildflags.gni") import("//chrome/common/features.gni") -@@ -1986,6 +1987,7 @@ static_library("browser") { +@@ -1981,6 +1982,7 @@ static_library("browser") { "//build/config/chromebox_for_meetings:buildflags", "//build/config/compiler:compiler_buildflags", "//cc", @@ -18,7 +18,7 @@ index 68415e75360ce..7a144a035b0a7 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2537,6 +2539,10 @@ static_library("browser") { +@@ -2536,6 +2538,10 @@ static_library("browser") { ] } @@ -29,7 +29,7 @@ index 68415e75360ce..7a144a035b0a7 100644 if (is_android) { sources += [ "after_startup_task_utils_android.cc", -@@ -6394,8 +6400,6 @@ static_library("browser") { +@@ -6377,8 +6383,6 @@ static_library("browser") { sources += [ "enterprise/chrome_browser_main_extra_parts_enterprise.cc", "enterprise/chrome_browser_main_extra_parts_enterprise.h", diff --git a/patch/patches/chrome_browser_background_mode_1100085.patch b/patch/patches/chrome_browser_background_mode_1100085.patch index 5294f9149..5fa83514a 100644 --- a/patch/patches/chrome_browser_background_mode_1100085.patch +++ b/patch/patches/chrome_browser_background_mode_1100085.patch @@ -14,7 +14,7 @@ index f365449df16a8..91afb283a41f5 100644 std::unique_ptr manager) = 0; #endif diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc -index a7a2bfe6738c3..7dfc99596ef26 100644 +index d1962357f5e1a..9e7b9abcca851 100644 --- chrome/browser/browser_process_impl.cc +++ chrome/browser/browser_process_impl.cc @@ -1007,18 +1007,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { @@ -52,10 +52,10 @@ index f8a1250d7ba07..0ce11cd182281 100644 std::unique_ptr manager) override; #endif diff --git chrome/browser/lifetime/browser_close_manager.cc chrome/browser/lifetime/browser_close_manager.cc -index e7d45ec1efd0e..6454d2d126f90 100644 +index bfcd165aa529e..1c5eb471a561c 100644 --- chrome/browser/lifetime/browser_close_manager.cc +++ chrome/browser/lifetime/browser_close_manager.cc -@@ -156,12 +156,14 @@ void BrowserCloseManager::CloseBrowsers() { +@@ -157,12 +157,14 @@ void BrowserCloseManager::CloseBrowsers() { // exit can restore all browsers open before exiting. ProfileManager::ShutdownSessionServices(); #endif diff --git a/patch/patches/chrome_browser_browser.patch b/patch/patches/chrome_browser_browser.patch index 76db52716..f19a96743 100644 --- a/patch/patches/chrome_browser_browser.patch +++ b/patch/patches/chrome_browser_browser.patch @@ -13,7 +13,7 @@ index af62c19be9db6..d58f033cffecc 100644 return false; } diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index f335c3dd28a5f..0798e05a47e10 100644 +index 57133a0b9c92a..966528a3a8246 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn @@ -9,6 +9,7 @@ import("//build/config/compiler/compiler.gni") @@ -24,7 +24,7 @@ index f335c3dd28a5f..0798e05a47e10 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//chromeos/ash/components/assistant/assistant.gni") -@@ -366,6 +367,10 @@ static_library("ui") { +@@ -368,6 +369,10 @@ static_library("ui") { "//build/config/compiler:wexit_time_destructors", ] @@ -35,7 +35,7 @@ index f335c3dd28a5f..0798e05a47e10 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 -@@ -389,6 +394,7 @@ static_library("ui") { +@@ -391,6 +396,7 @@ static_library("ui") { "//build:chromeos_buildflags", "//build/config/chromebox_for_meetings:buildflags", "//cc/paint", @@ -43,8 +43,8 @@ index f335c3dd28a5f..0798e05a47e10 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -5713,6 +5719,7 @@ static_library("ui") { - if (enable_basic_printing) { +@@ -5714,6 +5720,7 @@ static_library("ui") { + if (enable_printing) { deps += [ "//components/printing/browser", + "//components/printing/common:mojo_interfaces", @@ -52,10 +52,10 @@ index f335c3dd28a5f..0798e05a47e10 100644 ] } diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc -index a3853924c98fa..bdd854c5dff54 100644 +index f0789647f62c8..43346941d64a3 100644 --- chrome/browser/ui/browser.cc +++ chrome/browser/ui/browser.cc -@@ -266,6 +266,25 @@ +@@ -265,6 +265,25 @@ #include "components/captive_portal/content/captive_portal_tab_helper.h" #endif @@ -81,7 +81,7 @@ index a3853924c98fa..bdd854c5dff54 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/extensions/extension_browser_window_helper.h" #endif -@@ -509,6 +528,13 @@ Browser::Browser(const CreateParams& params) +@@ -508,6 +527,13 @@ Browser::Browser(const CreateParams& params) tab_strip_model_->AddObserver(this); @@ -95,7 +95,7 @@ index a3853924c98fa..bdd854c5dff54 100644 location_bar_model_ = std::make_unique( location_bar_model_delegate_.get(), content::kMaxURLDisplayChars); -@@ -1339,6 +1365,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( +@@ -1337,6 +1363,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( if (exclusive_access_manager_->HandleUserKeyEvent(event)) return content::KeyboardEventProcessingResult::HANDLED; @@ -110,7 +110,7 @@ index a3853924c98fa..bdd854c5dff54 100644 return window()->PreHandleKeyboardEvent(event); } -@@ -1346,8 +1380,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, +@@ -1344,8 +1378,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, const NativeWebKeyboardEvent& event) { DevToolsWindow* devtools_window = DevToolsWindow::GetInstanceForInspectedWebContents(source); @@ -131,7 +131,7 @@ index a3853924c98fa..bdd854c5dff54 100644 } bool Browser::TabsNeedBeforeUnloadFired() { -@@ -1554,6 +1598,14 @@ WebContents* Browser::OpenURLFromTab(WebContents* source, +@@ -1552,6 +1596,14 @@ WebContents* Browser::OpenURLFromTab(WebContents* source, return window->OpenURLFromTab(source, params); } @@ -146,7 +146,7 @@ index a3853924c98fa..bdd854c5dff54 100644 NavigateParams nav_params(this, params.url, params.transition); nav_params.FillNavigateParamsFromOpenURLParams(params); nav_params.source_contents = source; -@@ -1686,6 +1738,15 @@ void Browser::AddNewContents( +@@ -1682,6 +1734,15 @@ void Browser::AddNewContents( return; } @@ -162,7 +162,7 @@ index a3853924c98fa..bdd854c5dff54 100644 chrome::AddWebContents(this, source, std::move(new_contents), target_url, disposition, window_features, window_action); } -@@ -1704,6 +1765,8 @@ void Browser::LoadingStateChanged(WebContents* source, +@@ -1700,6 +1761,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 a3853924c98fa..bdd854c5dff54 100644 } void Browser::CloseContents(WebContents* source) { -@@ -1731,6 +1794,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { +@@ -1727,6 +1790,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { } void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { @@ -180,7 +180,7 @@ index a3853924c98fa..bdd854c5dff54 100644 if (!GetStatusBubble()) return; -@@ -1738,6 +1803,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { +@@ -1734,6 +1799,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { GetStatusBubble()->SetURL(url); } @@ -198,7 +198,7 @@ index a3853924c98fa..bdd854c5dff54 100644 void Browser::ContentsMouseEvent(WebContents* source, bool motion, bool exited) { -@@ -1762,6 +1838,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { +@@ -1758,6 +1834,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { return false; } @@ -218,7 +218,7 @@ index a3853924c98fa..bdd854c5dff54 100644 void Browser::BeforeUnloadFired(WebContents* web_contents, bool proceed, bool* proceed_to_fire_unload) { -@@ -1854,6 +1943,10 @@ void Browser::WebContentsCreated(WebContents* source_contents, +@@ -1850,6 +1939,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 a3853924c98fa..bdd854c5dff54 100644 } void Browser::PortalWebContentsCreated(WebContents* portal_web_contents) { -@@ -1898,6 +1991,8 @@ void Browser::RendererResponsive( +@@ -1894,6 +1987,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 a3853924c98fa..bdd854c5dff54 100644 } content::JavaScriptDialogManager* Browser::GetJavaScriptDialogManager( -@@ -1958,11 +2053,15 @@ void Browser::EnterFullscreenModeForTab( +@@ -1954,11 +2049,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 a3853924c98fa..bdd854c5dff54 100644 } bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) { -@@ -2157,6 +2256,15 @@ void Browser::RequestMediaAccessPermission( +@@ -2153,6 +2252,15 @@ void Browser::RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, content::MediaResponseCallback callback) { @@ -270,7 +270,7 @@ index a3853924c98fa..bdd854c5dff54 100644 const extensions::Extension* extension = GetExtensionForOrigin(profile_, request.security_origin); MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( -@@ -2695,13 +2803,20 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { +@@ -2691,13 +2799,20 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { // Browser, Getters for UI (private): StatusBubble* Browser::GetStatusBubble() { @@ -292,7 +292,7 @@ index a3853924c98fa..bdd854c5dff54 100644 return window_ ? window_->GetStatusBubble() : nullptr; } -@@ -2828,6 +2943,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { +@@ -2827,6 +2942,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 a3853924c98fa..bdd854c5dff54 100644 void Browser::TabDetachedAtImpl(content::WebContents* contents, diff --git chrome/browser/ui/browser.h chrome/browser/ui/browser.h -index e80e3d192f615..97c97042e993e 100644 +index b50337f317a66..b12c2e76f32f8 100644 --- chrome/browser/ui/browser.h +++ chrome/browser/ui/browser.h @@ -22,6 +22,7 @@ @@ -363,7 +363,7 @@ index e80e3d192f615..97c97042e993e 100644 // Get the FindBarController for this browser, creating it if it does not // yet exist. FindBarController* GetFindBarController(); -@@ -828,11 +851,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 e80e3d192f615..97c97042e993e 100644 void BeforeUnloadFired(content::WebContents* source, bool proceed, bool* proceed_to_fire_unload) override; -@@ -1234,6 +1265,8 @@ class Browser : public TabStripModelObserver, +@@ -1235,6 +1266,8 @@ class Browser : public TabStripModelObserver, const std::string initial_workspace_; bool initial_visible_on_all_workspaces_state_; @@ -392,7 +392,7 @@ index e80e3d192f615..97c97042e993e 100644 CreationSource creation_source_ = CreationSource::kUnknown; UnloadController unload_controller_; -@@ -1298,6 +1331,10 @@ class Browser : public TabStripModelObserver, +@@ -1299,6 +1332,10 @@ class Browser : public TabStripModelObserver, extension_browser_window_helper_; #endif @@ -404,10 +404,10 @@ index e80e3d192f615..97c97042e993e 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 7325d09920245..9052e408de44c 100644 +index 6048fa087031e..e77be35cf4540 100644 --- chrome/browser/ui/browser_navigator.cc +++ chrome/browser/ui/browser_navigator.cc -@@ -559,6 +559,13 @@ std::unique_ptr CreateTargetContents( +@@ -558,6 +558,13 @@ std::unique_ptr CreateTargetContents( std::unique_ptr target_contents = WebContents::Create(create_params); diff --git a/patch/patches/chrome_browser_content_settings.patch b/patch/patches/chrome_browser_content_settings.patch index 2b238e128..b035a5a04 100644 --- a/patch/patches/chrome_browser_content_settings.patch +++ b/patch/patches/chrome_browser_content_settings.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/content_settings/host_content_settings_map_factory.cc chrome/browser/content_settings/host_content_settings_map_factory.cc -index 09e166d182eed..5e5d0d3554600 100644 +index c8a0156b69cc3..6a6fac072143d 100644 --- chrome/browser/content_settings/host_content_settings_map_factory.cc +++ chrome/browser/content_settings/host_content_settings_map_factory.cc @@ -9,6 +9,7 @@ @@ -21,8 +21,8 @@ index 09e166d182eed..5e5d0d3554600 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "base/trace_event/trace_event.h" #include "extensions/browser/api/content_settings/content_settings_custom_extension_provider.h" -@@ -54,7 +59,13 @@ HostContentSettingsMapFactory::HostContentSettingsMapFactory() - DependsOn(SupervisedUserSettingsServiceFactory::GetInstance()); +@@ -61,7 +66,13 @@ HostContentSettingsMapFactory::HostContentSettingsMapFactory() + DependsOn(TemplateURLServiceFactory::GetInstance()); #endif #if BUILDFLAG(ENABLE_EXTENSIONS) +#if BUILDFLAG(ENABLE_CEF) @@ -35,7 +35,7 @@ index 09e166d182eed..5e5d0d3554600 100644 #endif // Used by way of ShouldRestoreOldSessionCookies(). #if BUILDFLAG(ENABLE_SESSION_SERVICE) -@@ -118,6 +129,9 @@ scoped_refptr +@@ -135,6 +146,9 @@ scoped_refptr } #if BUILDFLAG(ENABLE_EXTENSIONS) @@ -45,7 +45,7 @@ index 09e166d182eed..5e5d0d3554600 100644 // These must be registered before before the HostSettings are passed over to // the IOThread. Simplest to do this on construction. settings_map->RegisterProvider( -@@ -130,6 +144,9 @@ scoped_refptr +@@ -147,6 +161,9 @@ scoped_refptr // the case where profile->IsOffTheRecord() is true? And what is the // interaction with profile->IsGuestSession()? false)); diff --git a/patch/patches/chrome_browser_context_menus.patch b/patch/patches/chrome_browser_context_menus.patch index 2838e0d4f..683a9c8a4 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 a4c41a8be6b23..0724b0e6e4ccf 100644 +index 3718ed86606d6..0721a4475ce81 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ chrome/browser/renderer_context_menu/render_view_context_menu.cc -@@ -309,6 +309,13 @@ base::OnceCallback* GetMenuShownCallback() { +@@ -310,6 +310,13 @@ base::OnceCallback* GetMenuShownCallback() { return callback.get(); } @@ -16,7 +16,7 @@ index a4c41a8be6b23..0724b0e6e4ccf 100644 enum class UmaEnumIdLookupType { GeneralEnumId, ContextSpecificEnumId, -@@ -548,6 +555,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { +@@ -549,6 +556,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { if (ContextMenuMatcher::IsExtensionsCustomCommandId(id)) return 1; @@ -27,7 +27,7 @@ index a4c41a8be6b23..0724b0e6e4ccf 100644 id = CollapseCommandsForUMA(id); const auto& map = GetIdcToUmaMap(type); auto it = map.find(id); -@@ -742,6 +753,14 @@ RenderViewContextMenu::RenderViewContextMenu( +@@ -743,6 +754,14 @@ RenderViewContextMenu::RenderViewContextMenu( ? GetBrowser()->app_controller()->system_app() : nullptr; #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -42,7 +42,7 @@ index a4c41a8be6b23..0724b0e6e4ccf 100644 } RenderViewContextMenu::~RenderViewContextMenu() = default; -@@ -1160,6 +1179,12 @@ void RenderViewContextMenu::InitMenu() { +@@ -1161,6 +1180,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 a4c41a8be6b23..0724b0e6e4ccf 100644 } Profile* RenderViewContextMenu::GetProfile() const { -@@ -3031,6 +3056,12 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( +@@ -3026,6 +3051,12 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( execute_plugin_action_callback_ = std::move(cb); } @@ -69,7 +69,7 @@ index a4c41a8be6b23..0724b0e6e4ccf 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 a6df6ba30d454..9bbd84c9c8820 100644 +index 3199231012c45..3ee3a17dab4de 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.h +++ chrome/browser/renderer_context_menu/render_view_context_menu.h @@ -134,6 +134,12 @@ class RenderViewContextMenu @@ -85,7 +85,7 @@ index a6df6ba30d454..9bbd84c9c8820 100644 protected: Profile* GetProfile() const; -@@ -381,6 +387,9 @@ class RenderViewContextMenu +@@ -387,6 +393,9 @@ class RenderViewContextMenu // built. bool is_protocol_submenu_valid_ = false; @@ -132,7 +132,7 @@ index c174f3aff2780..d072711c15c4e 100644 command_executed_ = true; RecordUsedItem(id); diff --git components/renderer_context_menu/render_view_context_menu_base.h components/renderer_context_menu/render_view_context_menu_base.h -index 1651d80a9547e..b06b811a6fb33 100644 +index 8a555391c8712..3c54143ba61c3 100644 --- components/renderer_context_menu/render_view_context_menu_base.h +++ components/renderer_context_menu/render_view_context_menu_base.h @@ -86,6 +86,9 @@ class RenderViewContextMenuBase : public ui::SimpleMenuModel::Delegate, diff --git a/patch/patches/chrome_browser_dialogs_native.patch b/patch/patches/chrome_browser_dialogs_native.patch index eaf2bc0f3..b123ba274 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 5bcfac8fffa01..859b04b90551b 100644 +index 0b9bf62547e6e..e908456356ce4 100644 --- chrome/browser/file_select_helper.cc +++ chrome/browser/file_select_helper.cc @@ -20,6 +20,7 @@ @@ -255,7 +255,7 @@ index 6260f90352141..99f1e0d7227ab 100644 return CreateSelectFileDialog(listener, std::move(policy)); } diff --git ui/shell_dialogs/select_file_dialog.h ui/shell_dialogs/select_file_dialog.h -index cff3cfc241cd1..13626cc306f61 100644 +index ab71dd6c559ef..71899846eab4e 100644 --- ui/shell_dialogs/select_file_dialog.h +++ ui/shell_dialogs/select_file_dialog.h @@ -113,7 +113,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog @@ -290,7 +290,7 @@ index cff3cfc241cd1..13626cc306f61 100644 @@ -235,6 +249,11 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog // The listener to be notified of selection completion. - raw_ptr listener_; + raw_ptr listener_; + std::unique_ptr select_file_policy_; + diff --git a/patch/patches/chrome_browser_dialogs_widget.patch b/patch/patches/chrome_browser_dialogs_widget.patch index a58b8e45c..7af15dcfd 100644 --- a/patch/patches/chrome_browser_dialogs_widget.patch +++ b/patch/patches/chrome_browser_dialogs_widget.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc -index 58842679b6102..b55a0a07ab372 100644 +index d62e9fa67d534..e7bdaeb7b5e19 100644 --- chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc +++ chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc @@ -97,7 +97,7 @@ javascript_dialogs::AppModalDialogView* CreateViewsJavaScriptDialog( @@ -12,7 +12,7 @@ index 58842679b6102..b55a0a07ab372 100644 // on the screen, we can't actually attach to it. parent_window = nullptr; diff --git components/constrained_window/constrained_window_views.cc components/constrained_window/constrained_window_views.cc -index e41f4b4ea72ad..f955a3fe87fe6 100644 +index aa0bbc8ae1a0f..d862340edfb0b 100644 --- components/constrained_window/constrained_window_views.cc +++ components/constrained_window/constrained_window_views.cc @@ -101,15 +101,24 @@ void UpdateModalDialogPosition(views::Widget* widget, diff --git a/patch/patches/chrome_browser_permission_prompt.patch b/patch/patches/chrome_browser_permission_prompt.patch index e96441cd9..e689af43b 100644 --- a/patch/patches/chrome_browser_permission_prompt.patch +++ b/patch/patches/chrome_browser_permission_prompt.patch @@ -44,7 +44,7 @@ index 40d27e69a17ce..a7e18b475dd18 100644 base::FeatureList::IsEnabled( features::kPeriodicSyncPermissionForDefaultSearchEngine) && diff --git chrome/browser/permissions/chrome_permissions_client.cc chrome/browser/permissions/chrome_permissions_client.cc -index 77faa54c6e8dc..d986538d36c2e 100644 +index d28d9f115dc18..6bc4b61617bf5 100644 --- chrome/browser/permissions/chrome_permissions_client.cc +++ chrome/browser/permissions/chrome_permissions_client.cc @@ -13,6 +13,7 @@ @@ -55,7 +55,7 @@ index 77faa54c6e8dc..d986538d36c2e 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" -@@ -211,6 +212,9 @@ ChromePermissionsClient::GetPermissionDecisionAutoBlocker( +@@ -219,6 +220,9 @@ ChromePermissionsClient::GetPermissionDecisionAutoBlocker( double ChromePermissionsClient::GetSiteEngagementScore( content::BrowserContext* browser_context, const GURL& origin) { @@ -65,7 +65,7 @@ index 77faa54c6e8dc..d986538d36c2e 100644 return site_engagement::SiteEngagementService::Get( Profile::FromBrowserContext(browser_context)) ->GetScore(origin); -@@ -295,8 +299,10 @@ ChromePermissionsClient::CreatePermissionUiSelectors( +@@ -303,8 +307,10 @@ ChromePermissionsClient::CreatePermissionUiSelectors( std::make_unique()); selectors.emplace_back(std::make_unique( Profile::FromBrowserContext(browser_context))); diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index 5c5536131..31705af20 100644 --- a/patch/patches/chrome_browser_profiles.patch +++ b/patch/patches/chrome_browser_profiles.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc -index 8f94c350756b4..a243dbaadbc2b 100644 +index b419a621763a4..2658df90a4477 100644 --- chrome/browser/profiles/off_the_record_profile_impl.cc +++ chrome/browser/profiles/off_the_record_profile_impl.cc @@ -652,7 +652,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( @@ -14,7 +14,7 @@ index 8f94c350756b4..a243dbaadbc2b 100644 } diff --git chrome/browser/profiles/profile.cc chrome/browser/profiles/profile.cc -index bd0f46ee1edce..f8efd6222175d 100644 +index a82af67cd3afb..c9dbd798dbeda 100644 --- chrome/browser/profiles/profile.cc +++ chrome/browser/profiles/profile.cc @@ -83,6 +83,7 @@ base::LazyInstance>::Leaky @@ -52,7 +52,7 @@ index bd0f46ee1edce..f8efd6222175d 100644 Profile::OTRProfileID Profile::OTRProfileID::CreateUniqueForDevTools() { return CreateUnique(kDevToolsOTRProfileIDPrefix); diff --git chrome/browser/profiles/profile.h chrome/browser/profiles/profile.h -index eb5172ba4789c..147c9d828708b 100644 +index 47fb50996f18e..23968a7b45991 100644 --- chrome/browser/profiles/profile.h +++ chrome/browser/profiles/profile.h @@ -99,6 +99,10 @@ class Profile : public content::BrowserContext { @@ -66,16 +66,16 @@ index eb5172ba4789c..147c9d828708b 100644 // Creates a unique OTR profile id to be used for DevTools browser contexts. static OTRProfileID CreateUniqueForDevTools(); -@@ -488,6 +492,8 @@ class Profile : public content::BrowserContext { +@@ -489,6 +493,8 @@ class Profile : public content::BrowserContext { - virtual void RecordPrimaryMainFrameNavigation() = 0; + base::WeakPtr GetWeakPtr(); + void NotifyOffTheRecordProfileCreated(Profile* off_the_record); + protected: // Creates an OffTheRecordProfile which points to this Profile. static std::unique_ptr CreateOffTheRecordProfile( -@@ -499,8 +505,6 @@ class Profile : public content::BrowserContext { +@@ -500,8 +506,6 @@ class Profile : public content::BrowserContext { static PrefStore* CreateExtensionPrefStore(Profile*, bool incognito_pref_store); @@ -85,10 +85,10 @@ index eb5172ba4789c..147c9d828708b 100644 virtual bool IsSignedIn() = 0; diff --git chrome/browser/profiles/profile_impl.cc chrome/browser/profiles/profile_impl.cc -index 2b1fd89740659..2bfefe3ba148d 100644 +index 10498ef42df23..c40029668cc8f 100644 --- chrome/browser/profiles/profile_impl.cc +++ chrome/browser/profiles/profile_impl.cc -@@ -985,7 +985,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, +@@ -992,7 +992,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, otr_profiles_[otr_profile_id] = std::move(otr_profile); @@ -100,10 +100,10 @@ index 2b1fd89740659..2bfefe3ba148d 100644 return raw_otr_profile; } diff --git chrome/browser/profiles/profile_manager.cc chrome/browser/profiles/profile_manager.cc -index 9b6a595c13b32..27830714cd85f 100644 +index dde8c5794d1bc..a5507de13e5d8 100644 --- chrome/browser/profiles/profile_manager.cc +++ chrome/browser/profiles/profile_manager.cc -@@ -524,7 +524,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) +@@ -539,7 +539,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) base::Unretained(this))); #endif @@ -113,7 +113,7 @@ index 9b6a595c13b32..27830714cd85f 100644 zombie_metrics_timer_.Start(FROM_HERE, base::Minutes(30), this, diff --git chrome/browser/profiles/profile_manager.h chrome/browser/profiles/profile_manager.h -index aedd5c31c6a6c..4a90ac6fce1f3 100644 +index cfe40342e3ee4..d8f26cdbb2615 100644 --- chrome/browser/profiles/profile_manager.h +++ chrome/browser/profiles/profile_manager.h @@ -140,7 +140,7 @@ class ProfileManager : public Profile::Delegate { diff --git a/patch/patches/chrome_browser_themes.patch b/patch/patches/chrome_browser_themes.patch index 80a6fd3de..e62065a0d 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 00f6166419491..6714d8596883b 100644 +index 44d3c54ab4838..8935a035834b9 100644 --- chrome/browser/themes/theme_service.cc +++ chrome/browser/themes/theme_service.cc @@ -31,6 +31,7 @@ diff --git a/patch/patches/chrome_plugins.patch b/patch/patches/chrome_plugins.patch index 5fc63ce46..40512283b 100644 --- a/patch/patches/chrome_plugins.patch +++ b/patch/patches/chrome_plugins.patch @@ -125,10 +125,10 @@ index a29a2739af3c8..0feb1a87cef64 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 2c7ca0d57ec44..7194f42b52335 100644 +index 3c3286f049ebc..5e8aae24754e3 100644 --- chrome/renderer/chrome_content_renderer_client.cc +++ chrome/renderer/chrome_content_renderer_client.cc -@@ -980,6 +980,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -979,6 +979,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( if ((status == chrome::mojom::PluginStatus::kUnauthorized || status == chrome::mojom::PluginStatus::kBlocked) && @@ -136,7 +136,7 @@ index 2c7ca0d57ec44..7194f42b52335 100644 content_settings_agent_delegate->IsPluginTemporarilyAllowed( identifier)) { status = chrome::mojom::PluginStatus::kAllowed; -@@ -1150,7 +1151,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1149,7 +1150,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( render_frame->GetRemoteAssociatedInterfaces()->GetInterface( plugin_auth_host.BindNewEndpointAndPassReceiver()); plugin_auth_host->BlockedUnauthorizedPlugin(group_name, identifier); @@ -146,7 +146,7 @@ index 2c7ca0d57ec44..7194f42b52335 100644 break; } case chrome::mojom::PluginStatus::kBlocked: { -@@ -1159,7 +1161,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1158,7 +1160,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 2c7ca0d57ec44..7194f42b52335 100644 break; } case chrome::mojom::PluginStatus::kBlockedByPolicy: { -@@ -1169,7 +1172,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1168,7 +1171,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( group_name)); RenderThread::Get()->RecordAction( UserMetricsAction("Plugin_BlockedByPolicy")); @@ -201,7 +201,7 @@ index 5c05c4c3bbde1..df728150ca821 100644 BrowserPluginGuest::~BrowserPluginGuest() = default; diff --git content/browser/browser_plugin/browser_plugin_guest.h content/browser/browser_plugin/browser_plugin_guest.h -index 091dcc8047bfa..4f6ff63f69ffa 100644 +index 4712cd8792fa4..60af76c988278 100644 --- content/browser/browser_plugin/browser_plugin_guest.h +++ content/browser/browser_plugin/browser_plugin_guest.h @@ -82,6 +82,8 @@ class BrowserPluginGuest : public WebContentsObserver { @@ -216,7 +216,7 @@ index 091dcc8047bfa..4f6ff63f69ffa 100644 @@ -91,6 +93,8 @@ class BrowserPluginGuest : public WebContentsObserver { void InitInternal(WebContentsImpl* owner_web_contents); - const raw_ptr delegate_; + const raw_ptr delegate_; + + raw_ptr owner_web_contents_ = nullptr; }; diff --git a/patch/patches/chrome_renderer.patch b/patch/patches/chrome_renderer.patch index c62bb8e5a..a081756f9 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 9d935ebc3b4da..67ff14be392d7 100644 +index 893347b565a89..11ccac1029614 100644 --- chrome/renderer/BUILD.gn +++ chrome/renderer/BUILD.gn @@ -5,6 +5,7 @@ diff --git a/patch/patches/chrome_runtime.patch b/patch/patches/chrome_runtime.patch index 40fe3ff41..b266c20da 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 87c1c47fc868a..42d7929172abc 100644 +index e8f4b7475dc7f..2a5f13dea4965 100644 --- chrome/app/chrome_main_delegate.cc +++ chrome/app/chrome_main_delegate.cc @@ -40,6 +40,7 @@ @@ -10,7 +10,7 @@ index 87c1c47fc868a..42d7929172abc 100644 #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" #include "chrome/browser/defaults.h" -@@ -494,6 +495,8 @@ struct MainFunction { +@@ -516,6 +517,8 @@ struct MainFunction { // Initializes the user data dir. Must be called before InitializeLocalState(). void InitializeUserDataDir(base::CommandLine* command_line) { @@ -19,9 +19,9 @@ index 87c1c47fc868a..42d7929172abc 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. -@@ -626,6 +629,10 @@ ChromeMainDelegate::ChromeMainDelegate(base::TimeTicks exe_entry_point_ticks) { - +@@ -665,6 +668,10 @@ ChromeMainDelegate::~ChromeMainDelegate() { ChromeMainDelegate::~ChromeMainDelegate() = default; + #endif // !BUILDFLAG(IS_ANDROID) +void ChromeMainDelegate::CleanupOnUIThread() { + heap_profiler_controller_.reset(); @@ -30,7 +30,7 @@ index 87c1c47fc868a..42d7929172abc 100644 absl::optional ChromeMainDelegate::PostEarlyInitialization( InvokedIn invoked_in) { DCHECK(base::ThreadPoolInstance::Get()); -@@ -883,7 +890,9 @@ void ChromeMainDelegate::CommonEarlyInitialization() { +@@ -946,7 +953,9 @@ void ChromeMainDelegate::CommonEarlyInitialization() { } #if BUILDFLAG(IS_WIN) @@ -40,7 +40,7 @@ index 87c1c47fc868a..42d7929172abc 100644 base::sequence_manager::internal::ThreadControllerPowerMonitor:: InitializeOnMainThread(); base::InitializePlatformThreadFeatures(); -@@ -1221,6 +1230,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1288,6 +1297,7 @@ void ChromeMainDelegate::PreSandboxStartup() { std::string process_type = command_line.GetSwitchValueASCII(switches::kProcessType); @@ -48,7 +48,7 @@ index 87c1c47fc868a..42d7929172abc 100644 crash_reporter::InitializeCrashKeys(); #if BUILDFLAG(IS_POSIX) -@@ -1231,6 +1241,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1298,6 +1308,7 @@ void ChromeMainDelegate::PreSandboxStartup() { InitMacCrashReporter(command_line, process_type); SetUpInstallerPreferences(command_line); #endif @@ -56,7 +56,7 @@ index 87c1c47fc868a..42d7929172abc 100644 #if BUILDFLAG(IS_WIN) child_process_logging::Init(); -@@ -1433,6 +1444,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1492,6 +1503,7 @@ void ChromeMainDelegate::PreSandboxStartup() { CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; } @@ -64,7 +64,7 @@ index 87c1c47fc868a..42d7929172abc 100644 #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) // Zygote needs to call InitCrashReporter() in RunZygote(). if (process_type != switches::kZygoteProcess) { -@@ -1476,6 +1488,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1535,6 +1547,7 @@ void ChromeMainDelegate::PreSandboxStartup() { // After all the platform Breakpads have been initialized, store the command // line for crash reporting. crash_keys::SetCrashKeysFromCommandLine(command_line); @@ -72,7 +72,7 @@ index 87c1c47fc868a..42d7929172abc 100644 #if BUILDFLAG(ENABLE_PDF) MaybePatchGdiGetFontData(); -@@ -1574,6 +1587,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1633,6 +1646,7 @@ void ChromeMainDelegate::ZygoteForked() { SetUpProfilingShutdownHandler(); } @@ -80,7 +80,7 @@ index 87c1c47fc868a..42d7929172abc 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 = -@@ -1596,6 +1610,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1655,6 +1669,7 @@ void ChromeMainDelegate::ZygoteForked() { // Reset the command line for the newly spawned process. crash_keys::SetCrashKeysFromCommandLine(*command_line); @@ -102,7 +102,7 @@ index de1b45f921123..077894e4a42c9 100644 // content::ContentMainDelegate: absl::optional BasicStartupComplete() override; diff --git chrome/browser/chrome_browser_main.cc chrome/browser/chrome_browser_main.cc -index e6e88723a8ea1..f03f277646775 100644 +index a9f1fa7ac0c5a..c4c42fab178ba 100644 --- chrome/browser/chrome_browser_main.cc +++ chrome/browser/chrome_browser_main.cc @@ -52,6 +52,7 @@ @@ -113,7 +113,7 @@ index e6e88723a8ea1..f03f277646775 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/active_use_util.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -1614,12 +1615,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1551,12 +1552,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { browser_process_->local_state()); } @@ -128,7 +128,7 @@ index e6e88723a8ea1..f03f277646775 100644 #if BUILDFLAG(IS_ANDROID) page_info::SetPageInfoClient(new ChromePageInfoClient()); -@@ -1771,14 +1774,17 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1708,14 +1711,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|. @@ -147,7 +147,7 @@ index e6e88723a8ea1..f03f277646775 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)) -@@ -1806,8 +1812,10 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1743,8 +1749,10 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Create the RunLoop for MainMessageLoopRun() to use and transfer // ownership of the browser's lifetime to the BrowserProcess. @@ -160,10 +160,10 @@ index e6e88723a8ea1..f03f277646775 100644 GetMainRunLoopInstance()->QuitWhenIdleClosure()); } diff --git chrome/browser/chrome_browser_main_mac.mm chrome/browser/chrome_browser_main_mac.mm -index 70f6abda15030..d7a6dcc541464 100644 +index d12abb3451882..b14d4406c2a76 100644 --- chrome/browser/chrome_browser_main_mac.mm +++ chrome/browser/chrome_browser_main_mac.mm -@@ -16,6 +16,7 @@ +@@ -17,6 +17,7 @@ #include "base/path_service.h" #include "base/strings/sys_string_conversions.h" #include "build/branding_buildflags.h" @@ -171,7 +171,7 @@ index 70f6abda15030..d7a6dcc541464 100644 #import "chrome/browser/app_controller_mac.h" #include "chrome/browser/apps/app_shim/app_shim_listener.h" #include "chrome/browser/browser_process.h" -@@ -113,6 +114,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { +@@ -112,6 +113,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { } #endif // !BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) @@ -179,7 +179,7 @@ index 70f6abda15030..d7a6dcc541464 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]; -@@ -121,6 +123,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { +@@ -120,6 +122,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { chrome::BuildMainMenu(NSApp, app_controller, l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), false); [app_controller mainMenuCreated]; @@ -187,7 +187,7 @@ index 70f6abda15030..d7a6dcc541464 100644 ui::WarmScreenCapture(); -@@ -179,7 +182,9 @@ void ChromeBrowserMainPartsMac::PostProfileInit(Profile* profile, +@@ -178,7 +181,9 @@ void ChromeBrowserMainPartsMac::PostProfileInit(Profile* profile, } void ChromeBrowserMainPartsMac::DidEndMainMessageLoop() { @@ -198,10 +198,10 @@ index 70f6abda15030..d7a6dcc541464 100644 +#endif } diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc -index 3038bbd2f7ada..73c55394367fa 100644 +index e0e8374bb5e74..bbafee080af8c 100644 --- chrome/browser/chrome_content_browser_client.cc +++ chrome/browser/chrome_content_browser_client.cc -@@ -32,6 +32,7 @@ +@@ -35,6 +35,7 @@ #include "base/values.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -209,7 +209,7 @@ index 3038bbd2f7ada..73c55394367fa 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" -@@ -1403,6 +1404,8 @@ bool DoesGaiaOriginRequireDedicatedProcess() { +@@ -1481,6 +1482,8 @@ void HandleStringData( } // namespace ChromeContentBrowserClient::ChromeContentBrowserClient() { @@ -218,7 +218,7 @@ index 3038bbd2f7ada..73c55394367fa 100644 #if BUILDFLAG(ENABLE_PLUGINS) extra_parts_.push_back(new ChromeContentBrowserClientPluginsPart); #endif -@@ -1428,6 +1431,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { +@@ -1506,6 +1509,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { extra_parts_.clear(); } @@ -230,7 +230,7 @@ index 3038bbd2f7ada..73c55394367fa 100644 // static void ChromeContentBrowserClient::RegisterLocalStatePrefs( PrefRegistrySimple* registry) { -@@ -4035,9 +4043,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( +@@ -4149,9 +4157,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( &search::HandleNewTabURLReverseRewrite); #endif // BUILDFLAG(IS_ANDROID) @@ -242,7 +242,7 @@ index 3038bbd2f7ada..73c55394367fa 100644 } base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { -@@ -5771,7 +5781,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( +@@ -5960,7 +5970,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( network_service); } @@ -251,7 +251,7 @@ index 3038bbd2f7ada..73c55394367fa 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -5789,6 +5799,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( +@@ -5978,6 +5988,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = GetApplicationLocale(); } @@ -260,7 +260,7 @@ index 3038bbd2f7ada..73c55394367fa 100644 } std::vector -@@ -6656,10 +6668,10 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( +@@ -6822,10 +6834,10 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( const auto now = base::TimeTicks::Now(); const auto timeout = GetKeepaliveTimerTimeout(context); keepalive_deadline_ = std::max(keepalive_deadline_, now + timeout); @@ -273,7 +273,7 @@ index 3038bbd2f7ada..73c55394367fa 100644 FROM_HERE, keepalive_deadline_ - now, base::BindOnce( &ChromeContentBrowserClient::OnKeepaliveTimerFired, -@@ -6678,7 +6690,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { +@@ -6844,7 +6856,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { --num_keepalive_requests_; if (num_keepalive_requests_ == 0) { DVLOG(1) << "Stopping the keepalive timer"; @@ -283,7 +283,7 @@ index 3038bbd2f7ada..73c55394367fa 100644 // This deletes the keep alive handle attached to the timer function and // unblock the shutdown sequence. } -@@ -6810,7 +6823,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( +@@ -6980,7 +6993,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( const auto now = base::TimeTicks::Now(); const auto then = keepalive_deadline_; if (now < then) { @@ -293,10 +293,10 @@ index 3038bbd2f7ada..73c55394367fa 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 10b5cf030a944..49b773042ad24 100644 +index 6e2f9c30d586e..878e35b0e7d89 100644 --- chrome/browser/chrome_content_browser_client.h +++ chrome/browser/chrome_content_browser_client.h -@@ -119,6 +119,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -120,6 +120,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { ~ChromeContentBrowserClient() override; @@ -305,7 +305,7 @@ index 10b5cf030a944..49b773042ad24 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. -@@ -591,7 +593,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -599,7 +601,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { override; void OnNetworkServiceCreated( network::mojom::NetworkService* network_service) override; @@ -314,7 +314,7 @@ index 10b5cf030a944..49b773042ad24 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -947,7 +949,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -959,7 +961,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { #if !BUILDFLAG(IS_ANDROID) uint64_t num_keepalive_requests_ = 0; @@ -324,7 +324,7 @@ index 10b5cf030a944..49b773042ad24 100644 #endif diff --git chrome/browser/prefs/browser_prefs.cc chrome/browser/prefs/browser_prefs.cc -index 621b03d86a86a..c5a24d944f984 100644 +index b0fd561c06612..dbb0512262515 100644 --- chrome/browser/prefs/browser_prefs.cc +++ chrome/browser/prefs/browser_prefs.cc @@ -11,6 +11,7 @@ @@ -335,7 +335,7 @@ index 621b03d86a86a..c5a24d944f984 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/accessibility_ui.h" -@@ -168,6 +169,10 @@ +@@ -170,6 +171,10 @@ #include "chrome/browser/background/background_mode_manager.h" #endif @@ -346,7 +346,7 @@ index 621b03d86a86a..c5a24d944f984 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/accessibility/animation_policy_prefs.h" #include "chrome/browser/apps/platform_apps/shortcut_manager.h" -@@ -1228,6 +1233,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1275,6 +1280,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { // This is intentionally last. RegisterLocalStatePrefsForMigration(registry); @@ -358,7 +358,7 @@ index 621b03d86a86a..c5a24d944f984 100644 } // Register prefs applicable to all profiles. -@@ -1602,6 +1612,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -1655,6 +1665,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, const std::string& locale) { RegisterProfilePrefs(registry, locale); diff --git a/patch/patches/chrome_runtime_views.patch b/patch/patches/chrome_runtime_views.patch index cdade7799..46f1fbc12 100644 --- a/patch/patches/chrome_runtime_views.patch +++ b/patch/patches/chrome_runtime_views.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/browser_command_controller.cc chrome/browser/ui/browser_command_controller.cc -index 56762e4de844e..ec026e5b69cc7 100644 +index 273dea900af21..a9266e6dba2bc 100644 --- chrome/browser/ui/browser_command_controller.cc +++ chrome/browser/ui/browser_command_controller.cc @@ -382,8 +382,10 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( @@ -45,7 +45,7 @@ index 56762e4de844e..ec026e5b69cc7 100644 bool BrowserCommandController::IsWebAppOrCustomTab() const { diff --git chrome/browser/ui/views/frame/browser_frame.cc chrome/browser/ui/views/frame/browser_frame.cc -index c6e125b6c80aa..ae1991c25a98b 100644 +index 59f895b5c3e65..db22d75cf8b63 100644 --- chrome/browser/ui/views/frame/browser_frame.cc +++ chrome/browser/ui/views/frame/browser_frame.cc @@ -66,15 +66,23 @@ bool IsUsingLinuxSystemTheme(Profile* profile) { @@ -127,16 +127,16 @@ index c6e125b6c80aa..ae1991c25a98b 100644 browser_frame_view_->OnBrowserViewInitViewsComplete(); } -@@ -249,6 +275,8 @@ const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const { - +@@ -250,7 +276,7 @@ const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const { ui::ColorProviderManager::ThemeInitializerSupplier* BrowserFrame::GetCustomTheme() const { -+ if (!browser_view_) -+ return nullptr; + // Do not return any custom theme if the browser has to use the dark theme. +- if (ShouldUseDarkTheme()) ++ if (ShouldUseDarkTheme() || !browser_view_) + return nullptr; + Browser* browser = browser_view_->browser(); - // If this is an incognito profile, there should never be a custom theme. - if (browser->profile()->IsIncognitoProfile()) -@@ -266,6 +294,8 @@ BrowserFrame::GetCustomTheme() const { +@@ -267,6 +293,8 @@ BrowserFrame::GetCustomTheme() const { } void BrowserFrame::OnNativeWidgetWorkspaceChanged() { @@ -145,7 +145,7 @@ index c6e125b6c80aa..ae1991c25a98b 100644 chrome::SaveWindowWorkspace(browser_view_->browser(), GetWorkspace()); chrome::SaveWindowVisibleOnAllWorkspaces(browser_view_->browser(), IsVisibleOnAllWorkspaces()); -@@ -353,6 +383,8 @@ void BrowserFrame::SetTabDragKind(TabDragKind tab_drag_kind) { +@@ -354,6 +382,8 @@ void BrowserFrame::SetTabDragKind(TabDragKind tab_drag_kind) { ui::ColorProviderManager::Key BrowserFrame::GetColorProviderKey() const { auto key = Widget::GetColorProviderKey(); @@ -154,18 +154,17 @@ index c6e125b6c80aa..ae1991c25a98b 100644 key.frame_type = UseCustomFrame() ? ui::ColorProviderManager::FrameType::kChromium : ui::ColorProviderManager::FrameType::kNative; -@@ -385,7 +417,8 @@ void BrowserFrame::SelectNativeTheme() { - // Select between regular, dark and Linux toolkit themes. - ui::NativeTheme* native_theme = ui::NativeTheme::GetInstanceForNativeUi(); +@@ -440,6 +470,8 @@ bool BrowserFrame::RegenerateFrameOnThemeChange( + } -- if (browser_view_->browser()->profile()->IsIncognitoProfile()) { -+ if (browser_view_ && -+ browser_view_->browser()->profile()->IsIncognitoProfile()) { - // No matter if we are using the default theme or not we always use the dark - // ui instance. - SetNativeTheme(ui::NativeTheme::GetInstanceForDarkUI()); + bool BrowserFrame::ShouldUseDarkTheme() const { ++ if (!browser_view_) ++ return false; + return browser_view_->browser()->profile()->IsIncognitoProfile() || + browser_view_->GetIsPictureInPictureType(); + } diff --git chrome/browser/ui/views/frame/browser_frame.h chrome/browser/ui/views/frame/browser_frame.h -index 195674a56169c..bee591ec8f2f3 100644 +index 28085aa32d7d8..312911b8a4564 100644 --- chrome/browser/ui/views/frame/browser_frame.h +++ chrome/browser/ui/views/frame/browser_frame.h @@ -56,7 +56,9 @@ enum class TabDragKind { @@ -179,7 +178,7 @@ index 195674a56169c..bee591ec8f2f3 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 ed0b1e375c5e4..0274783e07ad9 100644 +index 0c0499c5bcd9c..11cead3bd31cc 100644 --- chrome/browser/ui/views/frame/browser_view.cc +++ chrome/browser/ui/views/frame/browser_view.cc @@ -309,11 +309,10 @@ using content::NativeWebKeyboardEvent; @@ -197,7 +196,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 #if BUILDFLAG(IS_CHROMEOS_ASH) // UMA histograms that record animation smoothness for tab loading animation. -@@ -806,11 +805,22 @@ class BrowserView::SidePanelVisibilityController : public views::ViewObserver { +@@ -834,11 +833,22 @@ class BrowserView::SidePanelVisibilityController : public views::ViewObserver { /////////////////////////////////////////////////////////////////////////////// // BrowserView, public: @@ -221,7 +220,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 SetShowIcon( ::ShouldShowWindowIcon(browser_.get(), AppUsesWindowControlsOverlay())); -@@ -852,7 +862,6 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -880,7 +890,6 @@ BrowserView::BrowserView(std::unique_ptr browser) } browser_->tab_strip_model()->AddObserver(this); @@ -229,7 +228,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 // Top container holds tab strip region and toolbar and lives at the front of // the view hierarchy. -@@ -898,8 +907,15 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -926,8 +935,15 @@ BrowserView::BrowserView(std::unique_ptr browser) contents_container->SetLayoutManager(std::make_unique( devtools_web_view_, contents_web_view_)); @@ -247,7 +246,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 contents_separator_ = top_container_->AddChildView(std::make_unique()); -@@ -1877,6 +1893,8 @@ bool BrowserView::ShouldHideUIForFullscreen() const { +@@ -1911,6 +1927,8 @@ bool BrowserView::ShouldHideUIForFullscreen() const { if (immersive_mode_controller_->IsEnabled()) return false; @@ -256,7 +255,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 return frame_->GetFrameView()->ShouldHideTopUIForFullscreen(); } -@@ -2755,7 +2773,8 @@ DownloadShelf* BrowserView::GetDownloadShelf() { +@@ -2782,7 +2800,8 @@ DownloadShelf* BrowserView::GetDownloadShelf() { } DownloadBubbleUIController* BrowserView::GetDownloadBubbleUIController() { @@ -266,7 +265,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 if (auto* download_button = toolbar_button_provider_->GetDownloadButton()) return download_button->bubble_controller(); return nullptr; -@@ -3247,7 +3266,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { +@@ -3274,7 +3293,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { if (top_container()->parent() == this) return; @@ -276,7 +275,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 top_container()->DestroyLayer(); AddChildViewAt(top_container(), 0); EnsureFocusOrder(); -@@ -3792,8 +3812,10 @@ void BrowserView::Layout() { +@@ -3835,8 +3855,10 @@ void BrowserView::Layout() { // TODO(jamescook): Why was this in the middle of layout code? toolbar_->location_bar()->omnibox_view()->SetFocusBehavior( @@ -289,7 +288,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 // Some of the situations when the BrowserView is laid out are: // - Enter/exit immersive fullscreen mode. -@@ -3859,6 +3881,11 @@ void BrowserView::AddedToWidget() { +@@ -3902,6 +3924,11 @@ void BrowserView::AddedToWidget() { SetThemeProfileForWindow(GetNativeWindow(), browser_->profile()); #endif @@ -301,7 +300,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 toolbar_->Init(); // TODO(pbos): Manage this either inside SidePanel or the corresponding button -@@ -3919,13 +3946,9 @@ void BrowserView::AddedToWidget() { +@@ -3962,13 +3989,9 @@ void BrowserView::AddedToWidget() { EnsureFocusOrder(); @@ -317,7 +316,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 using_native_frame_ = frame_->ShouldUseNativeFrame(); MaybeInitializeWebUITabStrip(); -@@ -4341,7 +4364,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, +@@ -4377,7 +4400,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, // Undo our anti-jankiness hacks and force a re-layout. in_process_fullscreen_ = false; ToolbarSizeChanged(false); @@ -327,7 +326,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 } bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { -@@ -4683,6 +4707,8 @@ Profile* BrowserView::GetProfile() { +@@ -4719,6 +4743,8 @@ Profile* BrowserView::GetProfile() { } void BrowserView::UpdateUIForTabFullscreen() { @@ -336,7 +335,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 frame()->GetFrameView()->UpdateFullscreenTopUI(); } -@@ -4705,6 +4731,8 @@ void BrowserView::HideDownloadShelf() { +@@ -4741,6 +4767,8 @@ void BrowserView::HideDownloadShelf() { } bool BrowserView::CanUserExitFullscreen() const { @@ -346,7 +345,7 @@ index ed0b1e375c5e4..0274783e07ad9 100644 } diff --git chrome/browser/ui/views/frame/browser_view.h chrome/browser/ui/views/frame/browser_view.h -index 7813973b71372..c223beb92a102 100644 +index 79911e5461e2e..d70b8a3b84f84 100644 --- chrome/browser/ui/views/frame/browser_view.h +++ chrome/browser/ui/views/frame/browser_view.h @@ -131,11 +131,16 @@ class BrowserView : public BrowserWindow, @@ -423,7 +422,7 @@ index 5e059b9878fc2..c1f6fbcd40ec4 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 57d5e9f7b4e3c..da7b2d14bae49 100644 +index abd41d50e22d9..19a5a486ab9f3 100644 --- chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc @@ -556,33 +556,47 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( @@ -475,7 +474,7 @@ index 57d5e9f7b4e3c..da7b2d14bae49 100644 } diff --git chrome/browser/ui/views/toolbar/toolbar_view.cc chrome/browser/ui/views/toolbar/toolbar_view.cc -index 89ea1bf57ef43..22c39b3c6566d 100644 +index b4d585985bf4c..6c5ac33bf3de8 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.cc +++ chrome/browser/ui/views/toolbar/toolbar_view.cc @@ -171,12 +171,13 @@ auto& GetViewCommandMap() { @@ -504,10 +503,10 @@ index 89ea1bf57ef43..22c39b3c6566d 100644 size_animation_.Reset(1); diff --git chrome/browser/ui/views/toolbar/toolbar_view.h chrome/browser/ui/views/toolbar/toolbar_view.h -index da32d80ee4f08..8a5e1af098414 100644 +index 9031df4c31d52..97a60956defb2 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.h +++ chrome/browser/ui/views/toolbar/toolbar_view.h -@@ -95,7 +95,8 @@ class ToolbarView : public views::AccessiblePaneView, +@@ -94,7 +94,8 @@ class ToolbarView : public views::AccessiblePaneView, // needs to be displayed. }; diff --git a/patch/patches/component_build.patch b/patch/patches/component_build.patch index f1c72aa69..0c50fea94 100644 --- a/patch/patches/component_build.patch +++ b/patch/patches/component_build.patch @@ -1,8 +1,8 @@ diff --git content/browser/devtools/devtools_instrumentation.h content/browser/devtools/devtools_instrumentation.h -index fde774ad3e4b9..a22b4692de7c8 100644 +index 7ea19dc8d32eb..f592668272a41 100644 --- content/browser/devtools/devtools_instrumentation.h +++ content/browser/devtools/devtools_instrumentation.h -@@ -101,7 +101,7 @@ bool ApplyUserAgentMetadataOverrides( +@@ -102,7 +102,7 @@ bool ApplyUserAgentMetadataOverrides( FrameTreeNode* frame_tree_node, absl::optional* override_out); diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index ce0796b7d..627c47a96 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -1,8 +1,8 @@ diff --git content/browser/devtools/devtools_http_handler.cc content/browser/devtools/devtools_http_handler.cc -index 286e99d804cd0..2f431dcab0283 100644 +index af3f911d7f435..998ba65198721 100644 --- content/browser/devtools/devtools_http_handler.cc +++ content/browser/devtools/devtools_http_handler.cc -@@ -587,7 +587,7 @@ void DevToolsHttpHandler::OnJsonRequest( +@@ -596,7 +596,7 @@ void DevToolsHttpHandler::OnJsonRequest( version.SetString("Protocol-Version", DevToolsAgentHost::GetProtocolVersion()); version.SetString("WebKit-Version", GetWebKitVersion()); @@ -34,10 +34,10 @@ index 95ab3cd395b8a..1a82cf112454e 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 f31156ba6ea6d..bc890c2a0319c 100644 +index 560e66d4e402c..f25a012d63424 100644 --- content/public/browser/content_browser_client.cc +++ content/public/browser/content_browser_client.cc -@@ -955,7 +955,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( +@@ -960,7 +960,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( void ContentBrowserClient::OnNetworkServiceCreated( network::mojom::NetworkService* network_service) {} @@ -46,7 +46,7 @@ index f31156ba6ea6d..bc890c2a0319c 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -964,6 +964,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( +@@ -969,6 +969,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = "en-us,en"; @@ -55,10 +55,10 @@ index f31156ba6ea6d..bc890c2a0319c 100644 std::vector diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index 9b6c2b8b249af..75ac41f88708b 100644 +index bdb4632c56534..fb2334e9bd462 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h -@@ -34,6 +34,7 @@ +@@ -35,6 +35,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" @@ -66,7 +66,7 @@ index 9b6c2b8b249af..75ac41f88708b 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" -@@ -1753,7 +1754,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1768,7 +1769,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. @@ -75,7 +75,7 @@ index 9b6c2b8b249af..75ac41f88708b 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1959,6 +1960,19 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1960,6 +1961,19 @@ class CONTENT_EXPORT ContentBrowserClient { RenderFrameHost* initiator_document, mojo::PendingRemote* out_factory); @@ -92,10 +92,10 @@ index 9b6c2b8b249af..75ac41f88708b 100644 + RenderFrameHost* initiator_document, + mojo::PendingRemote* out_factory) { return false; } + - // 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. -@@ -2014,6 +2028,10 @@ class CONTENT_EXPORT ContentBrowserClient { + // Creates an OverlayWindow to be used for video or Picture-in-Picture. + // This window will house the content shown when in Picture-in-Picture mode. + // This will return a new OverlayWindow. +@@ -2012,6 +2026,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct(); @@ -107,10 +107,10 @@ index 9b6c2b8b249af..75ac41f88708b 100644 // on blink::features::kUserAgentReduction. Content may cache this value. virtual std::string GetUserAgent(); diff --git content/public/renderer/content_renderer_client.h content/public/renderer/content_renderer_client.h -index 69e9da01fd708..32ed3641566c2 100644 +index 09846e00f1a75..18b396a631f45 100644 --- content/public/renderer/content_renderer_client.h +++ content/public/renderer/content_renderer_client.h -@@ -92,6 +92,9 @@ class CONTENT_EXPORT ContentRendererClient { +@@ -96,6 +96,9 @@ class CONTENT_EXPORT ContentRendererClient { // binding requests from RenderProcessHost::BindReceiver(). virtual void ExposeInterfacesToBrowser(mojo::BinderMap* binders) {} @@ -120,7 +120,7 @@ index 69e9da01fd708..32ed3641566c2 100644 // Notifies that a new RenderFrame has been created. virtual void RenderFrameCreated(RenderFrame* render_frame) {} -@@ -311,6 +314,10 @@ class CONTENT_EXPORT ContentRendererClient { +@@ -315,6 +318,10 @@ class CONTENT_EXPORT ContentRendererClient { // This method may invalidate the frame. virtual void RunScriptsAtDocumentIdle(RenderFrame* render_frame) {} @@ -132,10 +132,10 @@ index 69e9da01fd708..32ed3641566c2 100644 // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index 17b628006b06f..cea55de60c5d3 100644 +index 49688b3adc657..6a1f4b26ef757 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc -@@ -597,6 +597,8 @@ void RenderThreadImpl::Init() { +@@ -604,6 +604,8 @@ void RenderThreadImpl::Init() { GetContentClient()->renderer()->CreateURLLoaderThrottleProvider( blink::URLLoaderThrottleProviderType::kFrame); @@ -145,10 +145,10 @@ index 17b628006b06f..cea55de60c5d3 100644 base::BindRepeating(&RenderThreadImpl::OnRendererInterfaceReceiver, base::Unretained(this))); diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc -index 4cedfbfaa2f7b..6d9c87b5c2247 100644 +index ab6a83247fb18..385d99d09a5d8 100644 --- content/renderer/renderer_blink_platform_impl.cc +++ content/renderer/renderer_blink_platform_impl.cc -@@ -1021,6 +1021,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { +@@ -1023,6 +1023,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { //------------------------------------------------------------------------------ @@ -165,12 +165,12 @@ index 4cedfbfaa2f7b..6d9c87b5c2247 100644 RendererBlinkPlatformImpl::CreateWebV8ValueConverter() { return std::make_unique(); diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h -index 78ffa14e79f12..ca007abcacf51 100644 +index 76ca0135501ae..e81ac506214d8 100644 --- content/renderer/renderer_blink_platform_impl.h +++ content/renderer/renderer_blink_platform_impl.h -@@ -227,6 +227,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { - blink::WebVector* csp) override; - base::PlatformThreadId GetIOThreadId() const override; +@@ -230,6 +230,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { + blink::mojom::AttributionOsSupport GetOsSupportForAttributionReporting() + override; + void DevToolsAgentAttached() override; + void DevToolsAgentDetached() override; diff --git a/patch/patches/content_main_654986.patch b/patch/patches/content_main_654986.patch index 513d9ac6f..128a13cb7 100644 --- a/patch/patches/content_main_654986.patch +++ b/patch/patches/content_main_654986.patch @@ -105,7 +105,7 @@ index 58f891fd7af7a..3178a0aeab935 100644 } diff --git content/app/content_main_runner_impl.cc content/app/content_main_runner_impl.cc -index 6965f862853af..d674963c89a64 100644 +index 6f50af74219a6..629d92c739ce7 100644 --- content/app/content_main_runner_impl.cc +++ content/app/content_main_runner_impl.cc @@ -43,6 +43,7 @@ @@ -116,7 +116,7 @@ index 6965f862853af..d674963c89a64 100644 #include "base/time/time.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" -@@ -1269,6 +1270,12 @@ void ContentMainRunnerImpl::Shutdown() { +@@ -1255,6 +1256,12 @@ void ContentMainRunnerImpl::Shutdown() { is_shutdown_ = true; } @@ -130,10 +130,10 @@ index 6965f862853af..d674963c89a64 100644 std::unique_ptr ContentMainRunner::Create() { return ContentMainRunnerImpl::Create(); diff --git content/app/content_main_runner_impl.h content/app/content_main_runner_impl.h -index c96e733faf281..77f5b458c3160 100644 +index 7dc520f2fffc7..3900cce3ad42f 100644 --- content/app/content_main_runner_impl.h +++ content/app/content_main_runner_impl.h -@@ -29,7 +29,7 @@ class DiscardableSharedMemoryManager; +@@ -27,7 +27,7 @@ class DiscardableSharedMemoryManager; namespace content { class MojoIpcSupport; @@ -142,7 +142,7 @@ index c96e733faf281..77f5b458c3160 100644 public: static std::unique_ptr Create(); -@@ -48,6 +48,8 @@ class ContentMainRunnerImpl : public ContentMainRunner { +@@ -46,6 +46,8 @@ class ContentMainRunnerImpl : public ContentMainRunner { int Run() override; void Shutdown() override; @@ -165,7 +165,7 @@ index 04a08015aaff6..694f5c43a29e1 100644 if (main_argv) setproctitle_init(main_argv); diff --git content/public/app/content_main.h content/public/app/content_main.h -index b29fe2403753d..0ff8262ca68a5 100644 +index 91646692bac96..316d3161a9e31 100644 --- content/public/app/content_main.h +++ content/public/app/content_main.h @@ -93,6 +93,13 @@ struct CONTENT_EXPORT ContentMainParams { diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index 7c60f4c03..bf4b4dc02 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -81,7 +81,7 @@ index 27a803784eb9e..a8b033f475cb4 100644 g_crash_helper_enabled = true; return true; diff --git chrome/common/crash_keys.cc chrome/common/crash_keys.cc -index 6771b4e2d9217..6e57adc08b986 100644 +index f748d2dd47946..98371cf551a75 100644 --- chrome/common/crash_keys.cc +++ chrome/common/crash_keys.cc @@ -6,6 +6,8 @@ @@ -93,7 +93,7 @@ index 6771b4e2d9217..6e57adc08b986 100644 #include "base/base_switches.h" #include "base/command_line.h" #include "base/format_macros.h" -@@ -94,8 +96,10 @@ void HandleEnableDisableFeatures(const base::CommandLine& command_line) { +@@ -93,8 +95,10 @@ void HandleEnableDisableFeatures(const base::CommandLine& command_line) { } #endif @@ -105,7 +105,7 @@ index 6771b4e2d9217..6e57adc08b986 100644 static const char* const kIgnoreSwitches[] = { switches::kEnableLogging, switches::kFlagSwitchesBegin, -@@ -155,13 +159,11 @@ bool IsBoringSwitch(const std::string& flag) { +@@ -154,13 +158,11 @@ bool IsBoringSwitch(const std::string& flag) { return false; } @@ -264,10 +264,10 @@ index 9f8f20dfa6506..5d42f6fc1b003 100644 } // namespace crash_reporter diff --git components/crash/core/app/crashpad.cc components/crash/core/app/crashpad.cc -index d6a90f5185a43..7c8e2176d8432 100644 +index 55ae5145e81a4..81daed959d336 100644 --- components/crash/core/app/crashpad.cc +++ components/crash/core/app/crashpad.cc -@@ -131,7 +131,8 @@ bool InitializeCrashpadImpl(bool initial_client, +@@ -130,7 +130,8 @@ bool InitializeCrashpadImpl(bool initial_client, // fallback. Forwarding is turned off for debug-mode builds even for the // browser process, because the system's crash reporter can take a very long // time to chew on symbols. diff --git a/patch/patches/crashpad_tp_1995.patch b/patch/patches/crashpad_tp_1995.patch index 4967cca3a..e06f801b2 100644 --- a/patch/patches/crashpad_tp_1995.patch +++ b/patch/patches/crashpad_tp_1995.patch @@ -40,10 +40,10 @@ index b362e0aadbadd..1588232a6e4d4 100644 virtual ~PruneCondition() {} diff --git third_party/crashpad/crashpad/client/settings.cc third_party/crashpad/crashpad/client/settings.cc -index 68fae16afc4ec..e3004425e13cb 100644 +index 5e4119e2175c7..e66600089be04 100644 --- third_party/crashpad/crashpad/client/settings.cc +++ third_party/crashpad/crashpad/client/settings.cc -@@ -116,7 +116,7 @@ void ScopedLockedFileHandleTraits::Free(FileHandle handle) { +@@ -117,7 +117,7 @@ void ScopedLockedFileHandleTraits::Free(FileHandle handle) { struct Settings::Data { static constexpr uint32_t kSettingsMagic = 'CPds'; @@ -52,7 +52,7 @@ index 68fae16afc4ec..e3004425e13cb 100644 enum Options : uint32_t { kUploadsEnabled = 1 << 0, -@@ -127,6 +127,9 @@ struct Settings::Data { +@@ -128,6 +128,9 @@ struct Settings::Data { options(0), padding_0(0), last_upload_attempt_time(0), @@ -62,7 +62,7 @@ index 68fae16afc4ec..e3004425e13cb 100644 client_id() {} uint32_t magic; -@@ -134,6 +137,9 @@ struct Settings::Data { +@@ -135,6 +138,9 @@ struct Settings::Data { uint32_t options; uint32_t padding_0; int64_t last_upload_attempt_time; // time_t @@ -72,9 +72,9 @@ index 68fae16afc4ec..e3004425e13cb 100644 UUID client_id; }; -@@ -217,6 +223,56 @@ bool Settings::SetLastUploadAttemptTime(time_t time) { - return WriteSettings(handle.get(), settings); +@@ -234,6 +240,56 @@ bool Settings::IsLockExpired(const base::FilePath& file_path, } + #endif // !CRASHPAD_FLOCK_ALWAYS_SUPPORTED +bool Settings::GetNextUploadAttemptTime(time_t* time) { + DCHECK(initialized_.is_valid()); @@ -128,14 +128,14 @@ index 68fae16afc4ec..e3004425e13cb 100644 + // static Settings::ScopedLockedFileHandle Settings::MakeScopedLockedFileHandle( - FileHandle file, + const internal::MakeScopedLockedFileHandleOptions& options, diff --git third_party/crashpad/crashpad/client/settings.h third_party/crashpad/crashpad/client/settings.h -index 2b27474a683e9..7b5a89cea7f74 100644 +index 39b2de869d225..5a4e621c650ee 100644 --- third_party/crashpad/crashpad/client/settings.h +++ third_party/crashpad/crashpad/client/settings.h -@@ -128,6 +128,11 @@ class Settings { - //! error logged. - bool SetLastUploadAttemptTime(time_t time); +@@ -156,6 +156,11 @@ class Settings { + time_t lockfile_ttl); + #endif // !CRASHPAD_FLOCK_ALWAYS_SUPPORTED + bool GetNextUploadAttemptTime(time_t* time); + bool SetNextUploadAttemptTime(time_t time); diff --git a/patch/patches/extensions_1947.patch b/patch/patches/extensions_1947.patch index 7a239fdf8..1c75e0a5d 100644 --- a/patch/patches/extensions_1947.patch +++ b/patch/patches/extensions_1947.patch @@ -161,7 +161,7 @@ index fd08f312145a5..1440a3e8246f9 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 7465d1831d9bc..a4bcf0c5527de 100644 +index 028d6b1fec3a0..0829a24eb2879 100644 --- extensions/browser/extensions_browser_client.h +++ extensions/browser/extensions_browser_client.h @@ -31,6 +31,7 @@ @@ -196,7 +196,7 @@ index 7465d1831d9bc..a4bcf0c5527de 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 ae89ae7c91cfd..af518c8319503 100644 +index 40f1782b37a71..d6d5bb4e9faa6 100644 --- extensions/browser/process_manager.cc +++ extensions/browser/process_manager.cc @@ -380,9 +380,17 @@ bool ProcessManager::CreateBackgroundHost(const Extension* extension, diff --git a/patch/patches/font_family_cache_1501.patch b/patch/patches/font_family_cache_1501.patch index a853154c7..f4df0ba3a 100644 --- a/patch/patches/font_family_cache_1501.patch +++ b/patch/patches/font_family_cache_1501.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/font_family_cache.h chrome/browser/font_family_cache.h -index d65aae32eb918..433dded32daf6 100644 +index 459a25956e6e3..ef9148bf69e9b 100644 --- chrome/browser/font_family_cache.h +++ chrome/browser/font_family_cache.h @@ -19,6 +19,8 @@ class Profile; diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index 8fba53f13..457ce24ad 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -1,5 +1,5 @@ diff --git .gn .gn -index 55f5ee19f13e4..55ad3bccc3ebd 100644 +index 53c9e4ec12aef..b303d299c49a9 100644 --- .gn +++ .gn @@ -155,6 +155,8 @@ exec_script_whitelist = @@ -12,10 +12,10 @@ index 55f5ee19f13e4..55ad3bccc3ebd 100644 # https://crbug.com/474506. "//clank/java/BUILD.gn", diff --git BUILD.gn BUILD.gn -index a6b18dea12365..b139718e9386b 100644 +index 15e67fe72dbd2..ac0c5478146e4 100644 --- BUILD.gn +++ BUILD.gn -@@ -17,6 +17,7 @@ import("//build/config/sanitizers/sanitizers.gni") +@@ -18,6 +18,7 @@ import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") import("//build/gn_logs.gni") import("//build/util/generate_wrapper.gni") @@ -23,7 +23,7 @@ index a6b18dea12365..b139718e9386b 100644 import("//chrome/browser/buildflags.gni") import("//components/nacl/features.gni") import("//device/vr/buildflags/buildflags.gni") -@@ -114,6 +115,10 @@ group("gn_all") { +@@ -115,6 +116,10 @@ group("gn_all") { deps += [ "//third_party/abseil-cpp:absl_tests" ] } @@ -80,7 +80,7 @@ index 1d6be612da8d4..c8ea70f2f256d 100644 +_OBJC_METACLASS_$_UnderlayOpenGLHostingWindow + diff --git chrome/chrome_paks.gni chrome/chrome_paks.gni -index c298d35d6268b..89cdd261ba37e 100644 +index c4178b381465f..f7e940470a375 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni @@ -6,6 +6,7 @@ import("//ash/ambient/resources/resources.gni") @@ -126,7 +126,7 @@ index adc881122cb9c..cafa71386fad6 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 6b0c60f44dc94..bb514108fe703 100644 +index f72c545630922..986a2f7866504 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 533911dac..8c44d7642 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 01f27f9eb13bd..fdf9ad6b62e9a 100644 +index 070b499be40e6..9d875d1a670d7 100644 --- tools/gritsettings/resource_ids.spec +++ tools/gritsettings/resource_ids.spec -@@ -1035,6 +1035,15 @@ +@@ -1058,6 +1058,15 @@ # END "everything else" section. # Everything but chrome/, components/, content/, and ios/ diff --git a/patch/patches/libxml_visibility.patch b/patch/patches/libxml_visibility.patch index 22b5fb324..06c567d99 100644 --- a/patch/patches/libxml_visibility.patch +++ b/patch/patches/libxml_visibility.patch @@ -1,8 +1,8 @@ diff --git third_party/libxml/BUILD.gn third_party/libxml/BUILD.gn -index c46cf43dba13b..a11069a6b2d82 100644 +index 48840f40a3d19..c6a172fded049 100644 --- third_party/libxml/BUILD.gn +++ third_party/libxml/BUILD.gn -@@ -141,6 +141,7 @@ static_library("libxml") { +@@ -140,6 +140,7 @@ static_library("libxml") { ":libxml_utils", ":xml_reader", ":xml_writer", diff --git a/patch/patches/linux_bluetooth_1319006.patch b/patch/patches/linux_bluetooth_1319006.patch index fae81e3e0..a5fb5332f 100644 --- a/patch/patches/linux_bluetooth_1319006.patch +++ b/patch/patches/linux_bluetooth_1319006.patch @@ -1,5 +1,5 @@ diff --git device/bluetooth/BUILD.gn device/bluetooth/BUILD.gn -index facb18d9bc855..77edc67f54653 100644 +index 383a05519497a..3d4c95c39712c 100644 --- device/bluetooth/BUILD.gn +++ device/bluetooth/BUILD.gn @@ -45,13 +45,6 @@ source_set("deprecated_experimental_mojo") { diff --git a/patch/patches/linux_glib_deprecated_volatile.patch b/patch/patches/linux_glib_deprecated_volatile.patch index d6b5d1ef6..38b75ed1f 100644 --- a/patch/patches/linux_glib_deprecated_volatile.patch +++ b/patch/patches/linux_glib_deprecated_volatile.patch @@ -1,8 +1,8 @@ diff --git ui/accessibility/platform/BUILD.gn ui/accessibility/platform/BUILD.gn -index 029fa1010dd78..8209782684ac4 100644 +index 4db17696494ad..c4a56a3237d58 100644 --- ui/accessibility/platform/BUILD.gn +++ ui/accessibility/platform/BUILD.gn -@@ -257,6 +257,10 @@ source_set("platform") { +@@ -272,6 +272,10 @@ source_set("platform") { if (use_glib) { configs += [ "//build/config/linux:glib" ] } @@ -14,7 +14,7 @@ index 029fa1010dd78..8209782684ac4 100644 } } diff --git ui/gtk/BUILD.gn ui/gtk/BUILD.gn -index 02ad9947176ea..5aa3096658af2 100644 +index 4fc6b6d617832..77f17ecf4caf0 100644 --- ui/gtk/BUILD.gn +++ ui/gtk/BUILD.gn @@ -176,4 +176,8 @@ component("gtk") { diff --git a/patch/patches/linux_printing_context.patch b/patch/patches/linux_printing_context.patch index 0741e5c8f..8aa682326 100644 --- a/patch/patches/linux_printing_context.patch +++ b/patch/patches/linux_printing_context.patch @@ -80,7 +80,7 @@ index 83211e80d8270..9ce9b37375762 100644 return mojom::ResultCode::kSuccess; } diff --git printing/printing_context_linux.h printing/printing_context_linux.h -index 6fb35248ec459..3be9c29c7ebf9 100644 +index 6745bc07ecd21..4139ee5562b84 100644 --- printing/printing_context_linux.h +++ printing/printing_context_linux.h @@ -16,6 +16,20 @@ namespace printing { @@ -117,7 +117,7 @@ index 33a147bd79fd1..01f573e30395e 100644 "//third_party/blink/public:blink", "//v8", diff --git ui/linux/linux_ui.cc ui/linux/linux_ui.cc -index fc0ab170837bf..3d8c437ee4733 100644 +index 29db798e8b171..a541ef1bef264 100644 --- ui/linux/linux_ui.cc +++ ui/linux/linux_ui.cc @@ -23,6 +23,10 @@ LinuxUi* g_linux_ui = nullptr; @@ -132,10 +132,10 @@ index fc0ab170837bf..3d8c437ee4733 100644 } diff --git ui/linux/linux_ui.h ui/linux/linux_ui.h -index 4c5e4e19fc94c..2bfcd7d11ea21 100644 +index b5fd57741d2f4..9ebbd444ec3ac 100644 --- ui/linux/linux_ui.h +++ ui/linux/linux_ui.h -@@ -17,6 +17,10 @@ +@@ -18,6 +18,10 @@ #include "build/chromecast_buildflags.h" #include "printing/buildflags/buildflags.h" @@ -146,7 +146,7 @@ index 4c5e4e19fc94c..2bfcd7d11ea21 100644 // The main entrypoint into Linux toolkit specific code. GTK/QT code should only // be executed behind this interface. -@@ -61,7 +65,11 @@ class WindowFrameProvider; +@@ -62,7 +66,11 @@ class WindowFrameProvider; // Adapter class with targets to render like different toolkits. Set by any // project that wants to do linux desktop native rendering. @@ -157,9 +157,9 @@ index 4c5e4e19fc94c..2bfcd7d11ea21 100644 +#endif + { public: - LinuxUi(const LinuxUi&) = delete; - LinuxUi& operator=(const LinuxUi&) = delete; -@@ -111,14 +119,6 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUi { + // Describes the window management actions that could be taken in response to + // a middle click in the non client area. +@@ -129,14 +137,6 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUi { // Returns a map of KeyboardEvent code to KeyboardEvent key values. virtual base::flat_map GetKeyboardLayoutMap() = 0; diff --git a/patch/patches/mac_gpu.patch b/patch/patches/mac_gpu.patch index 90e11ca94..f6f5aaadf 100644 --- a/patch/patches/mac_gpu.patch +++ b/patch/patches/mac_gpu.patch @@ -1,5 +1,5 @@ diff --git ui/gl/init/gl_initializer_mac.cc ui/gl/init/gl_initializer_mac.cc -index 380f2935952d6..dcee9c5aeb849 100644 +index 3185c6221b921..179072f60e930 100644 --- ui/gl/init/gl_initializer_mac.cc +++ ui/gl/init/gl_initializer_mac.cc @@ -46,11 +46,8 @@ bool InitializeOneOffForSandbox() { diff --git a/patch/patches/message_loop.patch b/patch/patches/message_loop.patch index 9730f2b37..7b4ffc013 100644 --- a/patch/patches/message_loop.patch +++ b/patch/patches/message_loop.patch @@ -30,7 +30,7 @@ index 5d6cbbdcab2d8..33a650036e909 100644 } if (has_msg) diff --git base/task/current_thread.cc base/task/current_thread.cc -index 4382f7258fd4e..d28b1e3de31a5 100644 +index 8208e32159ad2..813c33adef342 100644 --- base/task/current_thread.cc +++ base/task/current_thread.cc @@ -49,6 +49,8 @@ void CurrentThread::AddDestructionObserver( @@ -43,7 +43,7 @@ index 4382f7258fd4e..d28b1e3de31a5 100644 current_->RemoveDestructionObserver(destruction_observer); } diff --git base/task/current_thread.h base/task/current_thread.h -index 0375681bdbc2a..fad14b9ade013 100644 +index b170a5e7dc424..3cbe16584bac5 100644 --- base/task/current_thread.h +++ base/task/current_thread.h @@ -132,6 +132,12 @@ class BASE_EXPORT CurrentThread { diff --git a/patch/patches/net_cookie_flags.patch b/patch/patches/net_cookie_flags.patch index c806632e8..830b72666 100644 --- a/patch/patches/net_cookie_flags.patch +++ b/patch/patches/net_cookie_flags.patch @@ -1,8 +1,8 @@ diff --git net/base/load_flags_list.h net/base/load_flags_list.h -index 38062cfb9329e..14429ff0ee7eb 100644 +index f936d951fe272..90a3165172dce 100644 --- net/base/load_flags_list.h +++ net/base/load_flags_list.h -@@ -101,3 +101,6 @@ LOAD_FLAG(RESTRICTED_PREFETCH, 1 << 15) +@@ -103,3 +103,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) @@ -10,10 +10,10 @@ index 38062cfb9329e..14429ff0ee7eb 100644 +// This load will not send any cookies. For CEF usage. +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 0a622f7f9948d..8b5c9c7b4d4c5 100644 +index f27b0a5918a19..537644f95ad3f 100644 --- net/url_request/url_request_http_job.cc +++ net/url_request/url_request_http_job.cc -@@ -1758,7 +1758,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { +@@ -1730,7 +1730,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { // Read cookies whenever allow_credentials() is true, even if the PrivacyMode // is being overridden by NetworkDelegate and will eventually block them, as // blocked cookies still need to be logged in that case. diff --git a/patch/patches/osr_fling_2745.patch b/patch/patches/osr_fling_2745.patch index 1b867550b..9d756554d 100644 --- a/patch/patches/osr_fling_2745.patch +++ b/patch/patches/osr_fling_2745.patch @@ -41,10 +41,10 @@ index afefe3cd83dee..6668463247644 100644 } // namespace content diff --git content/browser/renderer_host/render_widget_host_impl.cc content/browser/renderer_host/render_widget_host_impl.cc -index 0133090585389..9f619e6577bbd 100644 +index bc840ec63666f..5990fed2e0f6d 100644 --- content/browser/renderer_host/render_widget_host_impl.cc +++ content/browser/renderer_host/render_widget_host_impl.cc -@@ -3175,6 +3175,11 @@ void RenderWidgetHostImpl::OnInvalidInputEventSource() { +@@ -3197,6 +3197,11 @@ void RenderWidgetHostImpl::OnInvalidInputEventSource() { GetProcess(), bad_message::INPUT_ROUTER_INVALID_EVENT_SOURCE); } @@ -57,10 +57,10 @@ index 0133090585389..9f619e6577bbd 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 688c6b226d839..f4b8a63aca530 100644 +index 7162adbd38636..b06283a7d2e60 100644 --- content/browser/renderer_host/render_widget_host_impl.h +++ content/browser/renderer_host/render_widget_host_impl.h -@@ -789,6 +789,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -787,6 +787,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 adf7e7b7b..64720ae0c 100644 --- a/patch/patches/print_preview_123.patch +++ b/patch/patches/print_preview_123.patch @@ -46,10 +46,10 @@ index 37d7f35d314cc..7ddd2f44118bf 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 d252084bffded..dc49864291c94 100644 +index 780491e14449d..a676ab5c00493 100644 --- chrome/browser/printing/print_view_manager_base.cc +++ chrome/browser/printing/print_view_manager_base.cc -@@ -599,13 +599,14 @@ void PrintViewManagerBase::UpdatePrintSettings( +@@ -606,13 +606,14 @@ void PrintViewManagerBase::UpdatePrintSettings( job_settings.Set(kSettingRasterizePdfDpi, value); } diff --git a/patch/patches/printing_context_2196.patch b/patch/patches/printing_context_2196.patch index eba8e11c5..48abbfddb 100644 --- a/patch/patches/printing_context_2196.patch +++ b/patch/patches/printing_context_2196.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/printing/print_job_worker.cc chrome/browser/printing/print_job_worker.cc -index 51bab147b3c35..1774ef9b4abbf 100644 +index d6b338aa2f5f9..ae5e9f4cf8618 100644 --- chrome/browser/printing/print_job_worker.cc +++ chrome/browser/printing/print_job_worker.cc -@@ -130,6 +130,7 @@ PrintJobWorker::PrintJobWorker(content::GlobalRenderFrameHostId rfh_id) +@@ -133,6 +133,7 @@ PrintJobWorker::PrintJobWorker(content::GlobalRenderFrameHostId rfh_id) ShouldPrintingContextSkipSystemCalls())), thread_("Printing_Worker") { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); diff --git a/patch/patches/renderer_host_1070713.patch b/patch/patches/renderer_host_1070713.patch index ba9e7e4b6..dd3aa2369 100644 --- a/patch/patches/renderer_host_1070713.patch +++ b/patch/patches/renderer_host_1070713.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/render_view_host_impl.cc content/browser/renderer_host/render_view_host_impl.cc -index 564822b722580..424b6688c2b5b 100644 +index 42940ab36a024..c22fdcfc8a82a 100644 --- content/browser/renderer_host/render_view_host_impl.cc +++ content/browser/renderer_host/render_view_host_impl.cc @@ -672,6 +672,8 @@ bool RenderViewHostImpl::IsRenderViewLive() const { diff --git a/patch/patches/runhooks.patch b/patch/patches/runhooks.patch index 4385e33a4..3aace9a2e 100644 --- a/patch/patches/runhooks.patch +++ b/patch/patches/runhooks.patch @@ -26,7 +26,7 @@ index 112690a7f7ad3..6c65b68b171ab 100644 if (cpu != 'x64'): # x64 is default target CPU thus any other CPU requires a target set diff --git build/vs_toolchain.py build/vs_toolchain.py -index 76ef5490c88f9..dd36de8edbf3c 100755 +index d426fcd842c16..cc85b09f19579 100755 --- build/vs_toolchain.py +++ build/vs_toolchain.py @@ -107,9 +107,16 @@ def SetEnvironmentAndGetRuntimeDllDirs(): diff --git a/patch/patches/rwh_background_color_1984.patch b/patch/patches/rwh_background_color_1984.patch index 27f0c1959..e32923986 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 8b712a21e7ee1..ba679e81b85ae 100644 +index e4b6563f2bcdf..1279ebed3885e 100644 --- content/browser/renderer_host/render_widget_host_view_aura.cc +++ content/browser/renderer_host/render_widget_host_view_aura.cc @@ -6,6 +6,7 @@ @@ -27,7 +27,7 @@ index 8b712a21e7ee1..ba679e81b85ae 100644 } absl::optional RenderWidgetHostViewAura::GetDisplayFeature() { -@@ -2233,6 +2236,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { +@@ -2239,6 +2242,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 7e2502a9a..1a119a8f4 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 efebd1c7cfc1e..4bd54c05f4adf 100644 +index eb8daa2c4d5fe..64f6ac00f4faa 100644 --- chrome/browser/net/profile_network_context_service.cc +++ chrome/browser/net/profile_network_context_service.cc @@ -22,6 +22,7 @@ @@ -42,10 +42,10 @@ index efebd1c7cfc1e..4bd54c05f4adf 100644 ::network::mojom::NetworkContextFilePaths::New(); diff --git net/cookies/cookie_monster.cc net/cookies/cookie_monster.cc -index 0a5f457219345..0f611cb2634cd 100644 +index 87c6a189d251e..388a02a938468 100644 --- net/cookies/cookie_monster.cc +++ net/cookies/cookie_monster.cc -@@ -548,6 +548,25 @@ void CookieMonster::SetCookieableSchemes( +@@ -571,6 +571,25 @@ void CookieMonster::SetCookieableSchemes( MaybeRunCookieCallback(std::move(callback), true); } @@ -72,20 +72,20 @@ index 0a5f457219345..0f611cb2634cd 100644 void CookieMonster::SetPersistSessionCookies(bool persist_session_cookies) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); diff --git net/cookies/cookie_monster.h net/cookies/cookie_monster.h -index 227ca621fe05d..82bd37a746652 100644 +index 77692a8ef78a3..7bf855b47b8fc 100644 --- net/cookies/cookie_monster.h +++ net/cookies/cookie_monster.h -@@ -207,6 +207,8 @@ class NET_EXPORT CookieMonster : public CookieStore { +@@ -208,6 +208,8 @@ class NET_EXPORT CookieMonster : public CookieStore { CookieChangeDispatcher& GetChangeDispatcher() override; void SetCookieableSchemes(const std::vector& schemes, SetCookieableSchemesCallback callback) override; + void AddCookieableSchemes(const std::vector& schemes, + SetCookieableSchemesCallback callback) override; - - // Enables writing session cookies into the cookie database. If this this - // method is called, it must be called before first use of the instance + absl::optional SiteHasCookieInOtherPartition( + const net::SchemefulSite& site, + const absl::optional& partition_key) const override; diff --git net/cookies/cookie_store.h net/cookies/cookie_store.h -index cf3aac9f8544f..f40de6b160bab 100644 +index f6df78d4d3878..5e4984760ba56 100644 --- net/cookies/cookie_store.h +++ net/cookies/cookie_store.h @@ -163,6 +163,11 @@ class NET_EXPORT CookieStore { @@ -101,7 +101,7 @@ index cf3aac9f8544f..f40de6b160bab 100644 // reset to null. const CookieAccessDelegate* cookie_access_delegate() const { diff --git services/network/cookie_manager.cc services/network/cookie_manager.cc -index ac4d26f0bcc4b..0ca4305c9b7f1 100644 +index 9da2056ddd3cf..c097bb2e8aba3 100644 --- services/network/cookie_manager.cc +++ services/network/cookie_manager.cc @@ -283,14 +283,9 @@ void CookieManager::FlushCookieStore(FlushCookieStoreCallback callback) { @@ -123,10 +123,10 @@ index ac4d26f0bcc4b..0ca4305c9b7f1 100644 void CookieManager::SetForceKeepSessionState() { diff --git services/network/network_context.cc services/network/network_context.cc -index a5974ea868cfc..563216e6a29eb 100644 +index c5a340b64e36d..99a9f387dbd77 100644 --- services/network/network_context.cc +++ services/network/network_context.cc -@@ -2382,16 +2382,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2393,16 +2393,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( network_service_->network_quality_estimator()); } @@ -155,10 +155,10 @@ index a5974ea868cfc..563216e6a29eb 100644 trust_token_store_ = std::make_unique(); diff --git services/network/public/mojom/network_context.mojom services/network/public/mojom/network_context.mojom -index 88e964da0580c..bb5dc7f0bc22e 100644 +index d57c6f1e7f41e..baea0d5edcb8c 100644 --- services/network/public/mojom/network_context.mojom +++ services/network/public/mojom/network_context.mojom -@@ -341,6 +341,9 @@ struct NetworkContextParams { +@@ -340,6 +340,9 @@ struct NetworkContextParams { // cookies. Otherwise it should be false. bool persist_session_cookies = false; diff --git a/patch/patches/services_network_2718.patch b/patch/patches/services_network_2718.patch index b765c5b0b..1bec437bb 100644 --- a/patch/patches/services_network_2718.patch +++ b/patch/patches/services_network_2718.patch @@ -1,5 +1,5 @@ diff --git content/browser/storage_partition_impl.cc content/browser/storage_partition_impl.cc -index fe77d59121ff3..c4caf0ff2b0f3 100644 +index 1dad5d477b4da..55dfd7e5ae5bf 100644 --- content/browser/storage_partition_impl.cc +++ content/browser/storage_partition_impl.cc @@ -491,10 +491,6 @@ class LoginHandlerDelegate { @@ -26,7 +26,7 @@ index fe77d59121ff3..c4caf0ff2b0f3 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, -@@ -2947,8 +2937,12 @@ void StoragePartitionImpl::GetQuotaSettings( +@@ -2944,8 +2934,12 @@ void StoragePartitionImpl::GetQuotaSettings( return; } @@ -40,7 +40,7 @@ index fe77d59121ff3..c4caf0ff2b0f3 100644 storage::GetDefaultDeviceInfoHelper(), std::move(callback)); } -@@ -2958,9 +2952,12 @@ void StoragePartitionImpl::InitNetworkContext() { +@@ -2955,9 +2949,12 @@ void StoragePartitionImpl::InitNetworkContext() { cert_verifier::mojom::CertVerifierCreationParamsPtr cert_verifier_creation_params = cert_verifier::mojom::CertVerifierCreationParams::New(); diff --git a/patch/patches/set_resize_background_color.patch b/patch/patches/set_resize_background_color.patch index 082ce90b5..1b44c1148 100644 --- a/patch/patches/set_resize_background_color.patch +++ b/patch/patches/set_resize_background_color.patch @@ -1,5 +1,5 @@ diff --git ui/views/controls/webview/webview.cc ui/views/controls/webview/webview.cc -index 969b675a84b3b..fc4f63c0d2e79 100644 +index fd325017d2347..84ab42c78c1fd 100644 --- ui/views/controls/webview/webview.cc +++ ui/views/controls/webview/webview.cc @@ -143,6 +143,10 @@ void WebView::EnableSizingFromWebContents(const gfx::Size& min_size, @@ -14,7 +14,7 @@ index 969b675a84b3b..fc4f63c0d2e79 100644 if (crashed_overlay_view_ == crashed_overlay_view) return; diff --git ui/views/controls/webview/webview.h ui/views/controls/webview/webview.h -index bd90e13ebfc00..b4d189401da0a 100644 +index c76c867283902..d303f2a8d8dc8 100644 --- ui/views/controls/webview/webview.h +++ ui/views/controls/webview/webview.h @@ -85,6 +85,10 @@ class WEBVIEW_EXPORT WebView : public View, diff --git a/patch/patches/trace_event.patch b/patch/patches/trace_event.patch index 8b252fbde..bd637d7a9 100644 --- a/patch/patches/trace_event.patch +++ b/patch/patches/trace_event.patch @@ -1,5 +1,5 @@ diff --git base/trace_event/builtin_categories.h base/trace_event/builtin_categories.h -index cfa800eb9fc77..22c99788f05c3 100644 +index a96b2338f39ad..48f1ef2d96045 100644 --- base/trace_event/builtin_categories.h +++ base/trace_event/builtin_categories.h @@ -64,6 +64,8 @@ diff --git a/patch/patches/ui_dragdrop_355390.patch b/patch/patches/ui_dragdrop_355390.patch index ca25dd51d..dda0787e0 100644 --- a/patch/patches/ui_dragdrop_355390.patch +++ b/patch/patches/ui_dragdrop_355390.patch @@ -1,5 +1,5 @@ diff --git ui/base/x/x11_os_exchange_data_provider.cc ui/base/x/x11_os_exchange_data_provider.cc -index a49526551138a..643c73d436758 100644 +index 50f6783cda7a0..a8f781375c719 100644 --- ui/base/x/x11_os_exchange_data_provider.cc +++ ui/base/x/x11_os_exchange_data_provider.cc @@ -139,7 +139,8 @@ void XOSExchangeDataProvider::SetURL(const GURL& url, diff --git a/patch/patches/views_1749_2102_3330.patch b/patch/patches/views_1749_2102_3330.patch index 4cbda9394..a5c85a143 100644 --- a/patch/patches/views_1749_2102_3330.patch +++ b/patch/patches/views_1749_2102_3330.patch @@ -106,10 +106,10 @@ index 5d9aaef31ecea..a6b47cd468270 100644 } // namespace gfx diff --git ui/views/animation/ink_drop_host_view.h ui/views/animation/ink_drop_host_view.h -index ab4ee48e6ecbf..448219fd2e3ee 100644 +index c9be93481712c..cfda497e15f02 100644 --- ui/views/animation/ink_drop_host_view.h +++ ui/views/animation/ink_drop_host_view.h -@@ -175,6 +175,8 @@ class VIEWS_EXPORT InkDropHost { +@@ -179,6 +179,8 @@ class VIEWS_EXPORT InkDropHost { View* host_view() { return host_view_; } const View* host_view() const { return host_view_; } @@ -217,10 +217,10 @@ index 7869347fa1408..a5464bde376b7 100644 } diff --git ui/views/controls/label.h ui/views/controls/label.h -index 5d945cc819055..c11ebddb6bb49 100644 +index c4206954d2858..ad7576db464b7 100644 --- ui/views/controls/label.h +++ ui/views/controls/label.h -@@ -236,6 +236,10 @@ class VIEWS_EXPORT Label : public View, +@@ -237,6 +237,10 @@ class VIEWS_EXPORT Label : public View, gfx::ElideBehavior GetElideBehavior() const; void SetElideBehavior(gfx::ElideBehavior elide_behavior); @@ -231,7 +231,7 @@ index 5d945cc819055..c11ebddb6bb49 100644 // Gets/Sets the tooltip text. Default behavior for a label (single-line) is // to show the full text if it is wider than its bounds. Calling this // overrides the default behavior and lets you set a custom tooltip. To -@@ -496,6 +500,7 @@ class VIEWS_EXPORT Label : public View, +@@ -497,6 +501,7 @@ class VIEWS_EXPORT Label : public View, int max_width_ = 0; // This is used in single-line mode. int max_width_single_line_ = 0; @@ -240,10 +240,10 @@ index 5d945cc819055..c11ebddb6bb49 100644 std::unique_ptr selection_controller_; diff --git ui/views/controls/menu/menu_controller.cc ui/views/controls/menu/menu_controller.cc -index 59b96ef7a5730..9effa5344d98c 100644 +index bbc0dc1683918..a6836096b55a7 100644 --- ui/views/controls/menu/menu_controller.cc +++ ui/views/controls/menu/menu_controller.cc -@@ -475,7 +475,8 @@ void MenuController::Run(Widget* parent, +@@ -476,7 +476,8 @@ void MenuController::Run(Widget* parent, MenuAnchorPosition position, bool context_menu, bool is_nested_drag, @@ -253,7 +253,7 @@ index 59b96ef7a5730..9effa5344d98c 100644 exit_type_ = ExitType::kNone; possible_drag_ = false; drag_in_progress_ = false; -@@ -522,6 +523,7 @@ void MenuController::Run(Widget* parent, +@@ -523,6 +524,7 @@ void MenuController::Run(Widget* parent, owner_->AddObserver(this); native_view_for_gestures_ = native_view_for_gestures; @@ -261,7 +261,7 @@ index 59b96ef7a5730..9effa5344d98c 100644 // Only create a MenuPreTargetHandler for non-nested menus. Nested menus // will use the existing one. -@@ -2203,6 +2205,7 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { +@@ -2204,6 +2206,7 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { params.do_capture = do_capture; params.native_view_for_gestures = native_view_for_gestures_; params.owned_window_anchor = anchor; @@ -269,7 +269,7 @@ index 59b96ef7a5730..9effa5344d98c 100644 if (item->GetParentMenuItem()) { params.context = state_.item->GetWidget(); -@@ -2889,8 +2892,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( +@@ -2888,8 +2891,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( void MenuController::OpenSubmenuChangeSelectionIfCan() { MenuItemView* item = pending_state_.item; @@ -284,7 +284,7 @@ index 59b96ef7a5730..9effa5344d98c 100644 MenuItemView* to_select = nullptr; if (!item->GetSubmenu()->GetMenuItems().empty()) to_select = FindInitialSelectableMenuItem(item, INCREMENT_SELECTION_DOWN); -@@ -2909,8 +2917,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { +@@ -2908,8 +2916,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { void MenuController::CloseSubmenu() { MenuItemView* item = state_.item; DCHECK(item); @@ -297,10 +297,10 @@ index 59b96ef7a5730..9effa5344d98c 100644 SetSelection(item, SELECTION_UPDATE_IMMEDIATELY); else if (item->GetParentMenuItem()->GetParentMenuItem()) diff --git ui/views/controls/menu/menu_controller.h ui/views/controls/menu/menu_controller.h -index b39ff8c3ae2d4..402aa6d7237c1 100644 +index aa811f23ceea2..99c54eed15ecc 100644 --- ui/views/controls/menu/menu_controller.h +++ ui/views/controls/menu/menu_controller.h -@@ -105,7 +105,9 @@ class VIEWS_EXPORT MenuController +@@ -113,7 +113,9 @@ class VIEWS_EXPORT MenuController MenuAnchorPosition position, bool context_menu, bool is_nested_drag, @@ -311,7 +311,7 @@ index b39ff8c3ae2d4..402aa6d7237c1 100644 bool for_drop() const { return for_drop_; } -@@ -717,6 +719,8 @@ class VIEWS_EXPORT MenuController +@@ -730,6 +732,8 @@ class VIEWS_EXPORT MenuController // RunType::SEND_GESTURE_EVENTS_TO_OWNER is set. gfx::NativeView native_view_for_gestures_ = nullptr; @@ -360,10 +360,10 @@ index b8fa1c116ebcd..015f15ed72385 100644 virtual int GetMaxWidthForMenu(MenuItemView* menu); diff --git ui/views/controls/menu/menu_host.cc ui/views/controls/menu/menu_host.cc -index 693ef7fa66575..c3a1e70e8ea72 100644 +index 3f72d4091f3cc..7f7253adf63d2 100644 --- ui/views/controls/menu/menu_host.cc +++ ui/views/controls/menu/menu_host.cc -@@ -144,6 +144,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { +@@ -143,6 +143,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { : gfx::kNullNativeWindow; params.bounds = init_params.bounds; @@ -372,7 +372,7 @@ index 693ef7fa66575..c3a1e70e8ea72 100644 #if defined(USE_AURA) // TODO(msisov): remove kMenutype once positioning of anchored windows // finally migrates to a new path. -@@ -155,7 +157,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { +@@ -154,7 +156,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { // If MenuHost has no parent widget, it needs to be marked // Activatable, so that calling Show in ShowMenuHost will // get keyboard focus. @@ -383,7 +383,7 @@ index 693ef7fa66575..c3a1e70e8ea72 100644 #if BUILDFLAG(IS_WIN) diff --git ui/views/controls/menu/menu_host.h ui/views/controls/menu/menu_host.h -index a1c6d8f0aa889..06d445b478d3d 100644 +index 0720b74d2f333..6b39bcc6c829d 100644 --- ui/views/controls/menu/menu_host.h +++ ui/views/controls/menu/menu_host.h @@ -55,6 +55,8 @@ class MenuHost : public Widget, public WidgetObserver { @@ -519,7 +519,7 @@ index 71385398057f6..9bf3f69b1cfd6 100644 // Look up the menu model for this menu. const std::map::const_iterator map_iterator = diff --git ui/views/controls/menu/menu_model_adapter.h ui/views/controls/menu/menu_model_adapter.h -index 5795a5b0e9eb7..025d8fc107c5f 100644 +index 74358011ec8f4..76b53ca3a8ade 100644 --- ui/views/controls/menu/menu_model_adapter.h +++ ui/views/controls/menu/menu_model_adapter.h @@ -88,6 +88,20 @@ class VIEWS_EXPORT MenuModelAdapter : public MenuDelegate, @@ -544,57 +544,51 @@ index 5795a5b0e9eb7..025d8fc107c5f 100644 void WillHideMenu(MenuItemView* menu) override; void OnMenuClosed(MenuItemView* menu) override; diff --git ui/views/controls/menu/menu_runner.cc ui/views/controls/menu/menu_runner.cc -index 5f931d0f55510..876f9a6a464e9 100644 +index adb22671b94fa..59cc421e82e1b 100644 --- ui/views/controls/menu/menu_runner.cc +++ ui/views/controls/menu/menu_runner.cc -@@ -34,7 +34,8 @@ void MenuRunner::RunMenuAt(Widget* parent, - const gfx::Rect& bounds, +@@ -36,6 +36,7 @@ void MenuRunner::RunMenuAt(Widget* parent, MenuAnchorPosition anchor, ui::MenuSourceType source_type, -- gfx::NativeView native_view_for_gestures) { -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget) { + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners) { // Do not attempt to show the menu if the application is currently shutting // down. MenuDelegate::OnMenuClosed would not be called. - if (ViewsDelegate::GetInstance() && -@@ -80,7 +81,7 @@ void MenuRunner::RunMenuAt(Widget* parent, +@@ -82,7 +83,7 @@ void MenuRunner::RunMenuAt(Widget* parent, } impl_->RunMenuAt(parent, button_controller, bounds, anchor, run_types_, -- native_view_for_gestures); -+ native_view_for_gestures, parent_widget); +- native_view_for_gestures, corners); ++ native_view_for_gestures, parent_widget, corners); } bool MenuRunner::IsRunning() const { diff --git ui/views/controls/menu/menu_runner.h ui/views/controls/menu/menu_runner.h -index 797c2c0d90b64..f36fe5f19166d 100644 +index 54a0966b1624a..69834c2256aab 100644 --- ui/views/controls/menu/menu_runner.h +++ ui/views/controls/menu/menu_runner.h -@@ -146,7 +146,9 @@ class VIEWS_EXPORT MenuRunner { - const gfx::Rect& bounds, +@@ -152,6 +152,8 @@ class VIEWS_EXPORT MenuRunner { MenuAnchorPosition anchor, ui::MenuSourceType source_type, -- gfx::NativeView native_view_for_gestures = nullptr); -+ gfx::NativeView native_view_for_gestures = nullptr, + gfx::NativeView native_view_for_gestures = nullptr, + gfx::AcceleratedWidget parent_widget = -+ gfx::kNullAcceleratedWidget); ++ gfx::kNullAcceleratedWidget, + absl::optional corners = absl::nullopt); // Returns true if we're in a nested run loop running the menu. - bool IsRunning() const; diff --git ui/views/controls/menu/menu_runner_impl.cc ui/views/controls/menu/menu_runner_impl.cc -index 067f30cd0e44c..4628a22821443 100644 +index c2513d2889a2b..5dfef1af49685 100644 --- ui/views/controls/menu/menu_runner_impl.cc +++ ui/views/controls/menu/menu_runner_impl.cc -@@ -119,7 +119,8 @@ void MenuRunnerImpl::RunMenuAt(Widget* parent, - const gfx::Rect& bounds, +@@ -117,6 +117,7 @@ void MenuRunnerImpl::RunMenuAt(Widget* parent, MenuAnchorPosition anchor, int32_t run_types, -- gfx::NativeView native_view_for_gestures) { -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget) { + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners) { closing_event_time_ = base::TimeTicks(); if (running_) { - // Ignore requests to show the menu while it's already showing. MenuItemView @@ -184,7 +185,7 @@ void MenuRunnerImpl::RunMenuAt(Widget* parent, controller->Run(parent, button_controller, menu_, bounds, anchor, (run_types & MenuRunner::CONTEXT_MENU) != 0, @@ -605,30 +599,27 @@ index 067f30cd0e44c..4628a22821443 100644 void MenuRunnerImpl::Cancel() { diff --git ui/views/controls/menu/menu_runner_impl.h ui/views/controls/menu/menu_runner_impl.h -index 3fd1c7b5c4d2a..9a03e50cc9eee 100644 +index 4d2909b5094ab..245e1a24dd810 100644 --- ui/views/controls/menu/menu_runner_impl.h +++ ui/views/controls/menu/menu_runner_impl.h -@@ -47,7 +47,8 @@ class VIEWS_EXPORT MenuRunnerImpl : public MenuRunnerImplInterface, - const gfx::Rect& bounds, - MenuAnchorPosition anchor, - int32_t run_types, -- gfx::NativeView native_view_for_gestures) override; -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget) override; +@@ -53,6 +53,7 @@ class VIEWS_EXPORT MenuRunnerImpl : public MenuRunnerImplInterface, + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners = absl::nullopt) override; void Cancel() override; base::TimeTicks GetClosingEventTime() const override; - diff --git ui/views/controls/menu/menu_runner_impl_adapter.cc ui/views/controls/menu/menu_runner_impl_adapter.cc -index 3cead46aa1450..64157a7149ea2 100644 +index b6c680063889b..a1efa677a43a5 100644 --- ui/views/controls/menu/menu_runner_impl_adapter.cc +++ ui/views/controls/menu/menu_runner_impl_adapter.cc @@ -34,9 +34,10 @@ void MenuRunnerImplAdapter::RunMenuAt( - const gfx::Rect& bounds, MenuAnchorPosition anchor, int32_t types, -- gfx::NativeView native_view_for_gestures) { -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget) { + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners) { impl_->RunMenuAt(parent, button_controller, bounds, anchor, types, - native_view_for_gestures); + native_view_for_gestures, parent_widget); @@ -636,64 +627,56 @@ index 3cead46aa1450..64157a7149ea2 100644 void MenuRunnerImplAdapter::Cancel() { diff --git ui/views/controls/menu/menu_runner_impl_adapter.h ui/views/controls/menu/menu_runner_impl_adapter.h -index 87b0622eb7891..f677d1a7f4cc6 100644 +index e6587d2208a13..c2c72f7edb89c 100644 --- ui/views/controls/menu/menu_runner_impl_adapter.h +++ ui/views/controls/menu/menu_runner_impl_adapter.h -@@ -38,7 +38,8 @@ class VIEWS_EXPORT MenuRunnerImplAdapter : public MenuRunnerImplInterface { - const gfx::Rect& bounds, - MenuAnchorPosition anchor, - int32_t types, -- gfx::NativeView native_view_for_gestures) override; -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget) override; +@@ -44,6 +44,7 @@ class VIEWS_EXPORT MenuRunnerImplAdapter : public MenuRunnerImplInterface { + MenuAnchorPosition anchor, + int32_t types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners = absl::nullopt) override; void Cancel() override; base::TimeTicks GetClosingEventTime() const override; - diff --git ui/views/controls/menu/menu_runner_impl_cocoa.h ui/views/controls/menu/menu_runner_impl_cocoa.h -index 162640a8ba448..6cd869b5c2191 100644 +index d11d5bb193102..49e494ccba304 100644 --- ui/views/controls/menu/menu_runner_impl_cocoa.h +++ ui/views/controls/menu/menu_runner_impl_cocoa.h -@@ -37,7 +37,8 @@ class VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface { - const gfx::Rect& bounds, - MenuAnchorPosition anchor, - int32_t run_types, -- gfx::NativeView native_view_for_gestures) override; -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget) override; +@@ -43,6 +43,7 @@ class VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface { + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners = absl::nullopt) override; void Cancel() override; base::TimeTicks GetClosingEventTime() const override; - diff --git ui/views/controls/menu/menu_runner_impl_cocoa.mm ui/views/controls/menu/menu_runner_impl_cocoa.mm -index 542b2856967e2..df7e88c91f13e 100644 +index c0818ab3fbec1..a77b84d873d11 100644 --- ui/views/controls/menu/menu_runner_impl_cocoa.mm +++ ui/views/controls/menu/menu_runner_impl_cocoa.mm -@@ -516,7 +516,8 @@ void MenuRunnerImplCocoa::RunMenuAt(Widget* parent, - const gfx::Rect& bounds, - MenuAnchorPosition anchor, - int32_t run_types, -- gfx::NativeView native_view_for_gestures) { -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget /*parent_widget*/) { +@@ -518,6 +518,7 @@ void MenuRunnerImplCocoa::RunMenuAt( + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget /*parent_widget*/, + absl::optional corners) { DCHECK(!IsRunning()); DCHECK(parent); - closing_event_time_ = base::TimeTicks(); diff --git ui/views/controls/menu/menu_runner_impl_interface.h ui/views/controls/menu/menu_runner_impl_interface.h -index 5246bbf6f143b..d722e2a014ea2 100644 +index 90842f90f1e75..f638f78e8ef37 100644 --- ui/views/controls/menu/menu_runner_impl_interface.h +++ ui/views/controls/menu/menu_runner_impl_interface.h -@@ -40,7 +40,9 @@ class MenuRunnerImplInterface { - const gfx::Rect& bounds, - MenuAnchorPosition anchor, - int32_t run_types, -- gfx::NativeView native_view_for_gestures) = 0; -+ gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget = -+ gfx::kNullAcceleratedWidget) = 0; +@@ -46,6 +46,8 @@ class MenuRunnerImplInterface { + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget = ++ gfx::kNullAcceleratedWidget, + absl::optional corners = absl::nullopt) = 0; // Hides and cancels the menu. - virtual void Cancel() = 0; diff --git ui/views/controls/menu/menu_scroll_view_container.cc ui/views/controls/menu/menu_scroll_view_container.cc -index fd2cf17bd9088..6a2979d8bccf9 100644 +index 4185ef2d6dba1..78d1f87aeccce 100644 --- ui/views/controls/menu/menu_scroll_view_container.cc +++ ui/views/controls/menu/menu_scroll_view_container.cc @@ -263,6 +263,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) @@ -709,7 +692,7 @@ index fd2cf17bd9088..6a2979d8bccf9 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 4a6cde118cc86..0e8dafff6103a 100644 +index f8227c7f41bc9..23743f00d0498 100644 --- ui/views/test/ui_controls_factory_desktop_aura_ozone.cc +++ ui/views/test/ui_controls_factory_desktop_aura_ozone.cc @@ -17,6 +17,7 @@ @@ -720,7 +703,7 @@ index 4a6cde118cc86..0e8dafff6103a 100644 #include "ui/aura/client/screen_position_client.h" #include "ui/aura/env.h" #include "ui/aura/test/aura_test_utils.h" -@@ -101,9 +102,11 @@ class UIControlsDesktopOzone : public UIControlsAura { +@@ -100,9 +101,11 @@ class UIControlsDesktopOzone : public UIControlsAura { aura::test::QueryLatestMousePositionRequestInHost(host); host->ConvertPixelsToDIP(&root_current_location); @@ -730,10 +713,10 @@ index 4a6cde118cc86..0e8dafff6103a 100644 screen->set_cursor_screen_point(gfx::Point(screen_x, screen_y)); +#endif - bool moved_cursor = false; #if !BUILDFLAG(IS_CHROMEOS_LACROS) + if (root_location != root_current_location && diff --git ui/views/view.h ui/views/view.h -index 32ee6dda68889..98d127b6847a1 100644 +index 28167c8e367a9..a630aefbf5dbb 100644 --- ui/views/view.h +++ ui/views/view.h @@ -21,6 +21,7 @@ diff --git a/patch/patches/views_widget.patch b/patch/patches/views_widget.patch index 8024526df..608e1ca3a 100644 --- a/patch/patches/views_widget.patch +++ b/patch/patches/views_widget.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/render_widget_host_view_base.cc content/browser/renderer_host/render_widget_host_view_base.cc -index b0c9044e9978f..13191e2d38387 100644 +index e5d57b6136722..1d34b6256823a 100644 --- content/browser/renderer_host/render_widget_host_view_base.cc +++ content/browser/renderer_host/render_widget_host_view_base.cc @@ -663,6 +663,14 @@ float RenderWidgetHostViewBase::GetScaleOverrideForCapture() const { @@ -18,10 +18,10 @@ index b0c9044e9978f..13191e2d38387 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 467eaa32808b3..58aa91e172af3 100644 +index 616aafcb98225..332ade4d33e94 100644 --- content/browser/renderer_host/render_widget_host_view_base.h +++ content/browser/renderer_host/render_widget_host_view_base.h -@@ -68,6 +68,7 @@ class CursorManager; +@@ -70,6 +70,7 @@ class CursorManager; class MouseWheelPhaseHandler; class RenderWidgetHostImpl; class RenderWidgetHostViewBaseObserver; @@ -29,7 +29,7 @@ index 467eaa32808b3..58aa91e172af3 100644 class SyntheticGestureTarget; class TextInputManager; class TouchSelectionControllerClientManager; -@@ -140,6 +141,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -142,6 +143,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 467eaa32808b3..58aa91e172af3 100644 TouchSelectionControllerClientManager* GetTouchSelectionControllerClientManager() override; ui::mojom::VirtualKeyboardMode GetVirtualKeyboardMode() override; -@@ -176,6 +179,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -178,6 +181,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { // Called when screen information or native widget bounds change. virtual void UpdateScreenInfo(); @@ -49,7 +49,7 @@ index 467eaa32808b3..58aa91e172af3 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_| -@@ -432,6 +439,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -434,6 +441,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { const gfx::Rect& bounds, const gfx::Rect& anchor_rect) = 0; @@ -62,7 +62,7 @@ index 467eaa32808b3..58aa91e172af3 100644 // Sets the cursor for this view to the one associated with the specified // cursor_type. virtual void UpdateCursor(const WebCursor& cursor) = 0; -@@ -674,6 +687,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -684,6 +697,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { // to all displays. gfx::Size system_cursor_size_; @@ -73,7 +73,7 @@ index 467eaa32808b3..58aa91e172af3 100644 private: FRIEND_TEST_ALL_PREFIXES( BrowserSideFlingBrowserTest, -@@ -695,10 +712,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -705,10 +722,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { void SynchronizeVisualProperties(); @@ -152,10 +152,10 @@ index 5342397d0a2e8..3b3878a714e56 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 45e0a75a643c2..af8dcb682d9d8 100644 +index 939345f9c662b..89ae87b666ad3 100644 --- ui/ozone/platform/x11/x11_window.cc +++ ui/ozone/platform/x11/x11_window.cc -@@ -1789,7 +1789,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { +@@ -1795,7 +1795,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { req.border_pixel = 0; bounds_in_pixels_ = SanitizeBounds(bounds); @@ -243,7 +243,7 @@ index 01d4ffe408a84..fbe41fefbb2bd 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 774a2d23a87a6..88769ad800d22 100644 +index 3fcef7e5552bf..f59f82c5f06e5 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc @@ -273,8 +273,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { @@ -258,11 +258,11 @@ index 774a2d23a87a6..88769ad800d22 100644 // Calculate initial bounds. diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc -index 0d5595767664e..d36964f634683 100644 +index 7fe6a03afbaf2..dc4585b4f398f 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc @@ -183,16 +183,28 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { - native_widget_delegate_); + native_widget_delegate_.get()); HWND parent_hwnd = nullptr; - if (params.parent && params.parent->GetHost()) @@ -294,7 +294,7 @@ index 0d5595767664e..d36964f634683 100644 message_handler_->Init(parent_hwnd, pixel_bounds, params.headless_mode); CreateCompositor(params.force_software_compositing); OnAcceleratedWidgetAvailable(); -@@ -1033,11 +1045,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { +@@ -1036,11 +1048,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { } void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { @@ -312,7 +312,7 @@ index 0d5595767664e..d36964f634683 100644 } bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { -@@ -1045,6 +1061,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { +@@ -1048,6 +1064,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { if (ui::PlatformEventSource::ShouldIgnoreNativePlatformEvents()) return true; @@ -325,7 +325,7 @@ index 0d5595767664e..d36964f634683 100644 SendEventToSink(event); return event->handled(); } -@@ -1224,8 +1246,16 @@ void DesktopWindowTreeHostWin::SetBoundsInDIP(const gfx::Rect& bounds) { +@@ -1227,8 +1249,16 @@ void DesktopWindowTreeHostWin::SetBoundsInDIP(const gfx::Rect& bounds) { // positions in variable-DPI situations. See https://crbug.com/1224715 for // details. aura::Window* root = nullptr; @@ -344,7 +344,7 @@ index 0d5595767664e..d36964f634683 100644 } diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_win.h ui/views/widget/desktop_aura/desktop_window_tree_host_win.h -index cec35ceb25477..6eab66d5676b5 100644 +index 58c13ba424645..9245711b97dac 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.h @@ -326,6 +326,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin @@ -359,10 +359,10 @@ index cec35ceb25477..6eab66d5676b5 100644 // a reference. raw_ptr tooltip_; diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc -index 8e2d4979b8a31..d7cf97b77d267 100644 +index 56206b82c4eac..da148689d38eb 100644 --- ui/views/widget/widget.cc +++ ui/views/widget/widget.cc -@@ -344,7 +344,8 @@ void Widget::Init(InitParams params) { +@@ -366,7 +366,8 @@ void Widget::Init(InitParams params) { } params.child |= (params.type == InitParams::TYPE_CONTROL); @@ -372,7 +372,7 @@ index 8e2d4979b8a31..d7cf97b77d267 100644 if (params.opacity == views::Widget::InitParams::WindowOpacity::kInferred && params.type != views::Widget::InitParams::TYPE_WINDOW) { -@@ -430,13 +431,21 @@ void Widget::Init(InitParams params) { +@@ -466,13 +467,21 @@ void Widget::Init(InitParams params) { if (show_state == ui::SHOW_STATE_MAXIMIZED) { Maximize(); @@ -395,7 +395,7 @@ index 8e2d4979b8a31..d7cf97b77d267 100644 } if (base::FeatureList::IsEnabled(features::kWidgetLayering)) { -@@ -1480,10 +1489,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { +@@ -1592,10 +1601,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { } gfx::Size Widget::GetMinimumSize() const { @@ -413,10 +413,10 @@ index 8e2d4979b8a31..d7cf97b77d267 100644 } diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index 04135ed11fa00..cfc074bad31dd 100644 +index c179c718d0255..967a87c07d026 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h -@@ -345,6 +345,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -351,6 +351,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, // the concept with bubble anchoring a la BubbleDialogDelegateView. gfx::NativeView parent = nullptr; @@ -426,10 +426,10 @@ index 04135ed11fa00..cfc074bad31dd 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 8e15368a19ec6..6fe2cff9abdcb 100644 +index a4a8a34009440..88d9721e0c71a 100644 --- ui/views/widget/widget_delegate.h +++ ui/views/widget/widget_delegate.h -@@ -375,6 +375,10 @@ class VIEWS_EXPORT WidgetDelegate { +@@ -379,6 +379,10 @@ class VIEWS_EXPORT WidgetDelegate // Returns true if the title text should be centered. bool ShouldCenterWindowTitleText() const; diff --git a/patch/patches/viz_osr_2575.patch b/patch/patches/viz_osr_2575.patch index 4b9597b11..27733239e 100644 --- a/patch/patches/viz_osr_2575.patch +++ b/patch/patches/viz_osr_2575.patch @@ -1,8 +1,8 @@ diff --git components/viz/host/host_display_client.cc components/viz/host/host_display_client.cc -index d212998176977..74df5b812116f 100644 +index 6d905b62e6258..a650c048cfcf3 100644 --- components/viz/host/host_display_client.cc +++ components/viz/host/host_display_client.cc -@@ -46,9 +46,14 @@ void HostDisplayClient::OnDisplayReceivedCALayerParams( +@@ -47,9 +47,14 @@ void HostDisplayClient::OnDisplayReceivedCALayerParams( } #endif @@ -18,26 +18,26 @@ index d212998176977..74df5b812116f 100644 if (!NeedsToUseLayerWindow(widget_)) { DLOG(ERROR) << "HWND shouldn't be using a layered window"; return; -@@ -56,8 +61,8 @@ void HostDisplayClient::CreateLayeredWindowUpdater( +@@ -57,7 +62,10 @@ void HostDisplayClient::CreateLayeredWindowUpdater( layered_window_updater_ = std::make_unique(widget_, std::move(receiver)); --} - #endif -+} - - // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch - // of lacros-chrome is complete. ++#endif + } ++ ++#if BUILDFLAG(IS_WIN) + void HostDisplayClient::AddChildWindowToBrowser( + gpu::SurfaceHandle child_window) { + NOTREACHED(); diff --git components/viz/host/host_display_client.h components/viz/host/host_display_client.h -index 640bfb050241d..2baf0f480c40e 100644 +index 5eeaadec9773f..93a716decfbb9 100644 --- components/viz/host/host_display_client.h +++ components/viz/host/host_display_client.h -@@ -34,17 +34,17 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom::DisplayClient { - mojo::PendingRemote GetBoundRemote( - scoped_refptr task_runner); +@@ -39,16 +39,17 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom::DisplayClient { + gfx::AcceleratedWidget widget() const { return widget_; } + #endif - private: -+ protected: // mojom::DisplayClient implementation: + void UseProxyOutputDevice(UseProxyOutputDeviceCallback callback) override; + @@ -49,10 +49,10 @@ index 640bfb050241d..2baf0f480c40e 100644 -#if BUILDFLAG(IS_WIN) void CreateLayeredWindowUpdater( mojo::PendingReceiver receiver) override; --#endif ++#if BUILDFLAG(IS_WIN) + void AddChildWindowToBrowser(gpu::SurfaceHandle child_window) override; + #endif - // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch - // of lacros-chrome is complete. diff --git components/viz/host/layered_window_updater_impl.cc components/viz/host/layered_window_updater_impl.cc index 271486b45dcc8..a62210d8ca3c8 100644 --- components/viz/host/layered_window_updater_impl.cc @@ -80,10 +80,10 @@ index 8af69cac78b74..9f74e511c263d 100644 private: const HWND hwnd_; diff --git components/viz/service/BUILD.gn components/viz/service/BUILD.gn -index f8ceaa5f44852..6010dfe943bde 100644 +index af5a1b2c61c45..71d0fa3c36600 100644 --- components/viz/service/BUILD.gn +++ components/viz/service/BUILD.gn -@@ -220,6 +220,8 @@ viz_component("service") { +@@ -218,6 +218,8 @@ viz_component("service") { "transitions/transferable_resource_tracker.cc", "transitions/transferable_resource_tracker.h", "viz_service_export.h", @@ -93,7 +93,7 @@ index f8ceaa5f44852..6010dfe943bde 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 eca3105036621..116f92d2b5645 100644 +index bd9f162f5053f..20e4d6d437ce2 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 @@ @@ -150,10 +150,10 @@ index aedc4d24d3fb3..442d2e4204b93 100644 TRACE_EVENT_ASYNC_BEGIN0("viz", "SoftwareOutputDeviceWinProxy::Draw", this); diff --git content/browser/compositor/viz_process_transport_factory.cc content/browser/compositor/viz_process_transport_factory.cc -index 4c5bf12286fbc..8067b12a373d4 100644 +index 3b44531f2618f..097957f0eb7b1 100644 --- content/browser/compositor/viz_process_transport_factory.cc +++ content/browser/compositor/viz_process_transport_factory.cc -@@ -388,8 +388,13 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( +@@ -399,8 +399,13 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( mojo::AssociatedRemote display_private; root_params->display_private = display_private.BindNewEndpointAndPassReceiver(); @@ -170,7 +170,7 @@ index 4c5bf12286fbc..8067b12a373d4 100644 compositor_data.display_client->GetBoundRemote(resize_task_runner_); mojo::AssociatedRemote diff --git mojo/public/cpp/bindings/sync_call_restrictions.h mojo/public/cpp/bindings/sync_call_restrictions.h -index 46e283304761c..624f4030acc6a 100644 +index d63ec55ae38d6..ff86831efd68b 100644 --- mojo/public/cpp/bindings/sync_call_restrictions.h +++ mojo/public/cpp/bindings/sync_call_restrictions.h @@ -42,6 +42,7 @@ class Compositor; @@ -181,7 +181,7 @@ index 46e283304761c..624f4030acc6a 100644 class GpuHostImpl; class HostFrameSinkManager; class HostGpuMemoryBufferManager; -@@ -104,6 +105,8 @@ class COMPONENT_EXPORT(MOJO_CPP_BINDINGS) SyncCallRestrictions { +@@ -118,6 +119,8 @@ class COMPONENT_EXPORT(MOJO_CPP_BINDINGS) SyncCallRestrictions { // For preventing frame swaps of wrong size during resize on Windows. // (https://crbug.com/811945) friend class ui::Compositor; @@ -191,10 +191,10 @@ index 46e283304761c..624f4030acc6a 100644 // running in the same process, so it won't block anything. // TODO(159346933) Remove once the origin isolation logic is moved outside of diff --git services/viz/privileged/mojom/compositing/display_private.mojom services/viz/privileged/mojom/compositing/display_private.mojom -index c837cc126bce8..269f94610c90c 100644 +index 52f44a31de4a8..10fe3d9daa207 100644 --- services/viz/privileged/mojom/compositing/display_private.mojom +++ services/viz/privileged/mojom/compositing/display_private.mojom -@@ -97,12 +97,14 @@ interface DisplayPrivate { +@@ -98,12 +98,14 @@ interface DisplayPrivate { }; interface DisplayClient { @@ -209,7 +209,7 @@ index c837cc126bce8..269f94610c90c 100644 - [EnableIf=is_win] CreateLayeredWindowUpdater(pending_receiver receiver); - // Notifies that a swap has occurred and provides information about the pixel + // Sends the created child window to the browser process so that it can be diff --git services/viz/privileged/mojom/compositing/layered_window_updater.mojom services/viz/privileged/mojom/compositing/layered_window_updater.mojom index 2f462f0deb5fc..695869b83cefa 100644 --- services/viz/privileged/mojom/compositing/layered_window_updater.mojom @@ -222,10 +222,10 @@ index 2f462f0deb5fc..695869b83cefa 100644 + Draw(gfx.mojom.Rect damage_rect) => (); }; diff --git ui/compositor/compositor.h ui/compositor/compositor.h -index ad691e760c31c..7533b409c22e5 100644 +index eb6bcc2e265a9..832d4ba916b7c 100644 --- ui/compositor/compositor.h +++ ui/compositor/compositor.h -@@ -31,7 +31,9 @@ +@@ -32,7 +32,9 @@ #include "components/viz/common/frame_sinks/begin_frame_args.h" #include "components/viz/common/surfaces/frame_sink_id.h" #include "components/viz/common/surfaces/subtree_capture_id.h" @@ -235,7 +235,7 @@ index ad691e760c31c..7533b409c22e5 100644 #include "mojo/public/cpp/bindings/associated_remote.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "services/viz/privileged/mojom/compositing/display_private.mojom.h" -@@ -142,6 +144,14 @@ class COMPOSITOR_EXPORT ContextFactory { +@@ -143,6 +145,14 @@ class COMPOSITOR_EXPORT ContextFactory { virtual viz::HostFrameSinkManager* GetHostFrameSinkManager() = 0; }; @@ -250,7 +250,7 @@ index ad691e760c31c..7533b409c22e5 100644 // Compositor object to take care of GPU painting. // A Browser compositor object is responsible for generating the final // displayable form of pixels comprising a single widget's contents. It draws an -@@ -185,6 +195,9 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver, +@@ -186,6 +196,9 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver, // Schedules a redraw of the layer tree associated with this compositor. void ScheduleDraw(); @@ -260,7 +260,7 @@ index ad691e760c31c..7533b409c22e5 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 -@@ -486,6 +499,8 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver, +@@ -496,6 +509,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 aeb686bac..d735fba02 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 04bd45199b0db..f55241b38fc7b 100644 +index 7ca95e7ec0f37..3be6aa0635ed3 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -3082,6 +3082,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3106,6 +3106,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 04bd45199b0db..f55241b38fc7b 100644 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3092,6 +3098,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3116,6 +3122,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } @@ -23,7 +23,7 @@ index 04bd45199b0db..f55241b38fc7b 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -3267,6 +3274,9 @@ void WebContentsImpl::RenderWidgetCreated( +@@ -3291,6 +3298,9 @@ void WebContentsImpl::RenderWidgetCreated( OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::RenderWidgetCreated", "render_widget_host", render_widget_host); created_widgets_.insert(render_widget_host); @@ -33,7 +33,7 @@ index 04bd45199b0db..f55241b38fc7b 100644 } void WebContentsImpl::RenderWidgetDeleted( -@@ -3995,6 +4005,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4029,6 +4039,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( params.pip_options->lock_aspect_ratio; } @@ -49,7 +49,7 @@ index 04bd45199b0db..f55241b38fc7b 100644 std::unique_ptr new_contents; if (!is_guest) { create_params.context = view_->GetNativeView(); -@@ -7879,6 +7898,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, +@@ -7931,6 +7950,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, // frames). SetFocusedFrameTree(node->frame_tree()); } @@ -60,7 +60,7 @@ index 04bd45199b0db..f55241b38fc7b 100644 void WebContentsImpl::DidCallFocus() { diff --git content/public/browser/web_contents.h content/public/browser/web_contents.h -index aea5078136b95..3371a5ee23330 100644 +index cc61bc1b43500..c5a387653d93a 100644 --- content/public/browser/web_contents.h +++ content/public/browser/web_contents.h @@ -95,10 +95,12 @@ class BrowserContext; @@ -88,7 +88,7 @@ index aea5078136b95..3371a5ee23330 100644 // the value that'll be returned by GetLastActiveTime(). If this is left // default initialized then the value is not passed on to the WebContents diff --git content/public/browser/web_contents_delegate.h content/public/browser/web_contents_delegate.h -index 7119f2fe8397a..12d493533075a 100644 +index e2ce097fb78d8..d67675467c133 100644 --- content/public/browser/web_contents_delegate.h +++ content/public/browser/web_contents_delegate.h @@ -58,9 +58,11 @@ class EyeDropperListener; @@ -119,7 +119,7 @@ index 7119f2fe8397a..12d493533075a 100644 // typically happens when popups are created. virtual void WebContentsCreated(WebContents* source_contents, diff --git content/public/browser/web_contents_observer.h content/public/browser/web_contents_observer.h -index b6e021165de91..336cbe3a96ddf 100644 +index 0fe98cc87b443..a6999f996cf40 100644 --- content/public/browser/web_contents_observer.h +++ content/public/browser/web_contents_observer.h @@ -219,6 +219,9 @@ class CONTENT_EXPORT WebContentsObserver { diff --git a/patch/patches/web_url_loader_cancel_1617042.patch b/patch/patches/web_url_loader_cancel_1617042.patch index 28ca63190..f76a4148a 100644 --- a/patch/patches/web_url_loader_cancel_1617042.patch +++ b/patch/patches/web_url_loader_cancel_1617042.patch @@ -1,8 +1,8 @@ diff --git third_party/blink/public/platform/web_url_loader.h third_party/blink/public/platform/web_url_loader.h -index 6ba4364c434fa..6400e5b34b65a 100644 +index 3d6c5c66b8edb..a77305b86aabf 100644 --- third_party/blink/public/platform/web_url_loader.h +++ third_party/blink/public/platform/web_url_loader.h -@@ -153,12 +153,14 @@ class BLINK_PLATFORM_EXPORT WebURLLoader { +@@ -143,12 +143,14 @@ class BLINK_PLATFORM_EXPORT WebURLLoader { void SetResourceRequestSenderForTesting( std::unique_ptr resource_request_sender); diff --git a/patch/patches/webkit_plugin_info_2015.patch b/patch/patches/webkit_plugin_info_2015.patch index a62b48317..f1fc7d461 100644 --- a/patch/patches/webkit_plugin_info_2015.patch +++ b/patch/patches/webkit_plugin_info_2015.patch @@ -1,10 +1,10 @@ diff --git third_party/blink/public/platform/platform.h third_party/blink/public/platform/platform.h -index bb82952036825..c828b70c4b889 100644 +index 892b1c4f29c82..e63eb20fe5f67 100644 --- third_party/blink/public/platform/platform.h +++ third_party/blink/public/platform/platform.h -@@ -772,6 +772,11 @@ class BLINK_PLATFORM_EXPORT Platform { - const WebURL& url, - blink::WebVector* csp) {} +@@ -784,6 +784,11 @@ class BLINK_PLATFORM_EXPORT Platform { + return blink::mojom::AttributionOsSupport::kDisabled; + } + // DevTools ------------------------------------------------------------ + diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index abc858ba5..9f2e86f26 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 f3b681ec44c57..f6fdbc0312fe0 100644 +index c8655d9270b81..d11450d22123a 100644 --- third_party/blink/public/web/web_view.h +++ third_party/blink/public/web/web_view.h -@@ -338,6 +338,7 @@ class BLINK_EXPORT WebView { +@@ -340,6 +340,7 @@ class BLINK_EXPORT WebView { // Sets whether select popup menus should be rendered by the browser. static void SetUseExternalPopupMenus(bool); @@ -11,7 +11,7 @@ index f3b681ec44c57..f6fdbc0312fe0 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 33cd38a8e24a2..a9206c121d0ea 100644 +index eaa633bc51909..afc38da9459a9 100644 --- third_party/blink/renderer/core/exported/web_view_impl.cc +++ third_party/blink/renderer/core/exported/web_view_impl.cc @@ -249,8 +249,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { @@ -39,7 +39,7 @@ index 33cd38a8e24a2..a9206c121d0ea 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 ac38111515f40..456718de6364a 100644 +index f283bfde9e43d..ab42d99e5747a 100644 --- third_party/blink/renderer/core/exported/web_view_impl.h +++ third_party/blink/renderer/core/exported/web_view_impl.h @@ -134,7 +134,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, @@ -52,20 +52,20 @@ index ac38111515f40..456718de6364a 100644 // Returns whether frames under this WebView are backed by a compositor. bool does_composite() const { return does_composite_; } -@@ -823,6 +824,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -839,6 +840,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; + bool should_use_external_popup_menus_; + float compositor_device_scale_factor_override_ = 0.f; - TransformationMatrix device_emulation_transform_; + gfx::Transform 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 5a1b86b62db11..deb01890a0d0a 100644 +index e319413adc293..4bfc8af7776de 100644 --- third_party/blink/renderer/core/page/chrome_client_impl.cc +++ third_party/blink/renderer/core/page/chrome_client_impl.cc -@@ -930,7 +930,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { +@@ -923,7 +923,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, HTMLSelectElement& select) { NotifyPopupOpeningObservers(); diff --git a/patch/patches/win_sandbox_3210.patch b/patch/patches/win_sandbox_3210.patch index b758b761c..6b6d69988 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 2191f51de17cf..4c46aeea4d8bb 100644 +index a885e8cbc626c..9af2869a5c038 100644 --- sandbox/policy/win/sandbox_win.cc +++ sandbox/policy/win/sandbox_win.cc -@@ -1135,6 +1135,13 @@ ResultCode SandboxWin::StartSandboxedProcess( +@@ -1136,6 +1136,13 @@ ResultCode SandboxWin::StartSandboxedProcess( const base::HandlesToInheritVector& handles_to_inherit, SandboxDelegate* delegate, base::Process* process) { diff --git a/tests/cefclient/browser/client_handler.cc b/tests/cefclient/browser/client_handler.cc index a1699f28e..7b3fa7197 100644 --- a/tests/cefclient/browser/client_handler.cc +++ b/tests/cefclient/browser/client_handler.cc @@ -953,22 +953,6 @@ bool ClientHandler::GetAuthCredentials(CefRefPtr browser, return false; } -bool ClientHandler::OnQuotaRequest(CefRefPtr browser, - const CefString& origin_url, - int64 new_size, - CefRefPtr callback) { - CEF_REQUIRE_IO_THREAD(); - - static const int64 max_size = 1024 * 1024 * 20; // 20mb. - - // Grant the quota request if the size is reasonable. - if (new_size <= max_size) - callback->Continue(); - else - callback->Cancel(); - return true; -} - bool ClientHandler::OnCertificateError(CefRefPtr browser, ErrorCode cert_error, const CefString& request_url, diff --git a/tests/cefclient/browser/client_handler.h b/tests/cefclient/browser/client_handler.h index 80272c92c..6e83505ce 100644 --- a/tests/cefclient/browser/client_handler.h +++ b/tests/cefclient/browser/client_handler.h @@ -269,10 +269,6 @@ class ClientHandler : public CefClient, const CefString& realm, const CefString& scheme, CefRefPtr callback) override; - bool OnQuotaRequest(CefRefPtr browser, - const CefString& origin_url, - int64 new_size, - CefRefPtr callback) override; bool OnCertificateError(CefRefPtr browser, ErrorCode cert_error, const CefString& request_url, diff --git a/tests/ceftests/cors_unittest.cc b/tests/ceftests/cors_unittest.cc index 464032adb..4ce0c5d87 100644 --- a/tests/ceftests/cors_unittest.cc +++ b/tests/ceftests/cors_unittest.cc @@ -806,6 +806,13 @@ void SetupIframeRequest(CookieTestSetup* setup, origin + "\" from accessing a cross-origin frame."); } + + if (has_same_origin && main_handler == iframe_handler && + IsStandardType(main_handler)) { + setup->AddConsoleMessage( + "An iframe which has both allow-scripts and allow-same-origin for " + "its sandbox attribute can remove its sandboxing."); + } } else { // Expect JavaScript execution to fail. setup->AddConsoleMessage("Blocked script execution in '" + iframe_url + diff --git a/tools/gn_args.py b/tools/gn_args.py index b670941bc..b93b4314a 100644 --- a/tools/gn_args.py +++ b/tools/gn_args.py @@ -240,12 +240,6 @@ def GetRecommendedDefaultArgs(): # etc). See https://bitbucket.org/chromiumembedded/cef/issues/2679. result['forbid_non_component_debug_builds'] = False - if platform == 'mac': - # Use the system allocator on Mac. Default is 'partition' (PartitionAlloc) - # with the allocator shim enabled. See issue #3061. - result['use_allocator'] = 'none' - result['use_allocator_shim'] = False - if platform == 'linux': # Use a sysroot environment. Default is true. False is recommended for local # builds. @@ -259,6 +253,19 @@ def GetRecommendedDefaultArgs(): # https://groups.google.com/a/chromium.org/g/chromium-packagers/c/-2VGexQAK6w/m/5K5ppK9WBAAJ result['use_qt'] = False + if platform == 'mac': + # Disable the allocator shim. Default is True. See issue #3061. + result['use_allocator_shim'] = False + + if platform == 'mac' or platform == 'linux': + # Use the system allocator instead of PartitionAlloc. Default is True with + # the allocator shim enabled. See issues #3061 and #3095. + result['use_partition_alloc_as_malloc'] = False + + # These require use_partition_alloc_as_malloc=true, so disable them. + result['enable_backup_ref_ptr_support'] = False + result['enable_mte_checked_ptr_support'] = False + return result @@ -489,9 +496,13 @@ def GetConfigArgsSandbox(platform, args, is_debug, cpu): # PartitionAlloc is selected as the default allocator in some cases. # We can't use it because it requires use_allocator_shim=true. - 'use_allocator': "none", + 'use_partition_alloc_as_malloc': False, 'use_partition_alloc': False, + # These require use_partition_alloc_as_malloc=true, so disable them. + 'enable_backup_ref_ptr_support': False, + 'enable_mte_checked_ptr_support': False, + # Avoid /LTCG linker warnings and generate smaller lib files. 'is_official_build': False,