diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index 1105c8baa..3673c82eb 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/74.0.3729.0' + 'chromium_checkout': 'refs/tags/75.0.3749.0' } diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index 218dcb8e8..09d799b60 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -938,6 +938,7 @@ typedef enum { ERR_UNEXPECTED_PROXY_AUTH = -323, ERR_EMPTY_RESPONSE = -324, ERR_RESPONSE_HEADERS_TOO_BIG = -325, + ERR_CONTENT_DECODING_FAILED = -330, ERR_CACHE_MISS = -400, ERR_INSECURE_RESPONSE = -501, } cef_errorcode_t; diff --git a/libcef/browser/browser_info_manager.h b/libcef/browser/browser_info_manager.h index a3f5f1c6a..da5d473be 100644 --- a/libcef/browser/browser_info_manager.h +++ b/libcef/browser/browser_info_manager.h @@ -16,7 +16,7 @@ #include "base/synchronization/lock.h" #include "content/public/browser/render_process_host_observer.h" -#include "third_party/blink/public/web/window_features.mojom.h" +#include "third_party/blink/public/mojom/window_features/window_features.mojom.h" #include "ui/base/window_open_disposition.h" #include "url/gurl.h" diff --git a/libcef/browser/content_browser_client.cc b/libcef/browser/content_browser_client.cc index 680631b73..b1b941633 100644 --- a/libcef/browser/content_browser_client.cc +++ b/libcef/browser/content_browser_client.cc @@ -101,6 +101,7 @@ #include "extensions/common/switches.h" #include "net/ssl/ssl_cert_request_info.h" #include "ppapi/host/ppapi_host.h" +#include "services/network/public/cpp/network_switches.h" #include "services/service_manager/embedder/switches.h" #include "services/service_manager/public/mojom/connector.mojom.h" #include "services/service_manager/sandbox/switches.h" @@ -736,7 +737,7 @@ void CefContentBrowserClient::AppendExtraCommandLineSwitches( switches::kPpapiFlashPath, switches::kPpapiFlashVersion, switches::kUncaughtExceptionStackSize, - switches::kUnsafelyTreatInsecureOriginAsSecure, + network::switches::kUnsafelyTreatInsecureOriginAsSecure, }; command_line->CopySwitchesFrom(*browser_cmd, kSwitchNames, base::size(kSwitchNames)); @@ -1239,7 +1240,9 @@ bool CefContentBrowserClient::HandleExternalProtocol( ui::PageTransition page_transition, bool has_user_gesture, const std::string& method, - const net::HttpRequestHeaders& headers) { + const net::HttpRequestHeaders& headers, + network::mojom::URLLoaderFactoryRequest* factory_request, + network::mojom::URLLoaderFactory*& out_factory) { CEF_POST_TASK( CEF_UIT, base::Bind( diff --git a/libcef/browser/content_browser_client.h b/libcef/browser/content_browser_client.h index 7688b261f..e3f3a7127 100644 --- a/libcef/browser/content_browser_client.h +++ b/libcef/browser/content_browser_client.h @@ -171,7 +171,9 @@ class CefContentBrowserClient : public content::ContentBrowserClient { ui::PageTransition page_transition, bool has_user_gesture, const std::string& method, - const net::HttpRequestHeaders& headers) override; + const net::HttpRequestHeaders& headers, + network::mojom::URLLoaderFactoryRequest* factory_request, + network::mojom::URLLoaderFactory*& out_factory) override; std::string GetProduct() const override; std::string GetChromeProduct() const override; std::string GetUserAgent() const override; diff --git a/libcef/browser/devtools/devtools_file_manager.cc b/libcef/browser/devtools/devtools_file_manager.cc index 61f0fb775..de440b504 100644 --- a/libcef/browser/devtools/devtools_file_manager.cc +++ b/libcef/browser/devtools/devtools_file_manager.cc @@ -199,5 +199,5 @@ void CefDevToolsFileManager::CallClientFunction( } javascript.append(");"); browser_impl_->web_contents()->GetMainFrame()->ExecuteJavaScript( - base::UTF8ToUTF16(javascript)); + base::UTF8ToUTF16(javascript), base::NullCallback()); } diff --git a/libcef/browser/devtools/devtools_frontend.cc b/libcef/browser/devtools/devtools_frontend.cc index 26a1e9986..98ec92178 100644 --- a/libcef/browser/devtools/devtools_frontend.cc +++ b/libcef/browser/devtools/devtools_frontend.cc @@ -265,7 +265,8 @@ void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( agent_host_->DispatchProtocolMessage(this, protocol_message); } else if (method == "loadCompleted") { web_contents()->GetMainFrame()->ExecuteJavaScriptForTests( - base::ASCIIToUTF16("DevToolsAPI.setUseSoftMenu(true);")); + base::ASCIIToUTF16("DevToolsAPI.setUseSoftMenu(true);"), + base::NullCallback()); } else if (method == "loadNetworkResource" && params->GetSize() == 3) { // TODO(pfeldman): handle some of the embedder messages in content. std::string url; @@ -344,7 +345,8 @@ void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( update.Get()->RemoveWithoutPathExpansion(name, nullptr); } else if (method == "requestFileSystems") { web_contents()->GetMainFrame()->ExecuteJavaScriptForTests( - base::ASCIIToUTF16("DevToolsAPI.fileSystemsLoaded([]);")); + base::ASCIIToUTF16("DevToolsAPI.fileSystemsLoaded([]);"), + base::NullCallback()); } else if (method == "reattach") { if (!agent_host_) return; @@ -388,7 +390,8 @@ void CefDevToolsFrontend::DispatchProtocolMessage( base::EscapeJSONString(message, true, ¶m); std::string code = "DevToolsAPI.dispatchMessage(" + param + ");"; base::string16 javascript = base::UTF8ToUTF16(code); - web_contents()->GetMainFrame()->ExecuteJavaScriptForTests(javascript); + web_contents()->GetMainFrame()->ExecuteJavaScriptForTests( + javascript, base::NullCallback()); return; } @@ -400,7 +403,8 @@ void CefDevToolsFrontend::DispatchProtocolMessage( std::string code = "DevToolsAPI.dispatchMessageChunk(" + param + "," + std::to_string(pos ? 0 : total_size) + ");"; base::string16 javascript = base::UTF8ToUTF16(code); - web_contents()->GetMainFrame()->ExecuteJavaScriptForTests(javascript); + web_contents()->GetMainFrame()->ExecuteJavaScriptForTests( + javascript, base::NullCallback()); } } @@ -448,7 +452,7 @@ void CefDevToolsFrontend::CallClientFunction(const std::string& function_name, } javascript.append(");"); web_contents()->GetMainFrame()->ExecuteJavaScriptForTests( - base::UTF8ToUTF16(javascript)); + base::UTF8ToUTF16(javascript), base::NullCallback()); } void CefDevToolsFrontend::SendMessageAck(int request_id, diff --git a/libcef/browser/native/menu_runner_linux.cc b/libcef/browser/native/menu_runner_linux.cc index 91e49beaf..926a93e93 100644 --- a/libcef/browser/native/menu_runner_linux.cc +++ b/libcef/browser/native/menu_runner_linux.cc @@ -27,7 +27,7 @@ bool CefMenuRunnerLinux::RunContextMenu( parent_widget = browser->GetWindowWidget(); menu_->RunMenuAt(parent_widget, NULL, gfx::Rect(screen_point, gfx::Size()), - views::MENU_ANCHOR_TOPRIGHT, ui::MENU_SOURCE_NONE); + views::MenuAnchorPosition::kTopRight, ui::MENU_SOURCE_NONE); return true; } diff --git a/libcef/browser/native/window_delegate_view.cc b/libcef/browser/native/window_delegate_view.cc index fc9de781b..1da7a6c4c 100644 --- a/libcef/browser/native/window_delegate_view.cc +++ b/libcef/browser/native/window_delegate_view.cc @@ -67,7 +67,7 @@ void CefWindowDelegateView::InitContent() { } void CefWindowDelegateView::ViewHierarchyChanged( - const ViewHierarchyChangedDetails& details) { + const views::ViewHierarchyChangedDetails& details) { if (details.is_add && details.child == this) InitContent(); } diff --git a/libcef/browser/native/window_delegate_view.h b/libcef/browser/native/window_delegate_view.h index 7c50d3658..57ff0ec57 100644 --- a/libcef/browser/native/window_delegate_view.h +++ b/libcef/browser/native/window_delegate_view.h @@ -38,7 +38,7 @@ class CefWindowDelegateView : public views::WidgetDelegateView { // View methods: void ViewHierarchyChanged( - const ViewHierarchyChangedDetails& details) override; + const views::ViewHierarchyChangedDetails& details) override; private: SkColor background_color_; diff --git a/libcef/browser/net/cookie_manager_old_impl.cc b/libcef/browser/net/cookie_manager_old_impl.cc index 8adce45a2..4a7728ee5 100644 --- a/libcef/browser/net/cookie_manager_old_impl.cc +++ b/libcef/browser/net/cookie_manager_old_impl.cc @@ -323,7 +323,8 @@ void CefCookieManagerOldImpl::SetCookieMonsterSchemes( all_schemes.push_back("ws"); all_schemes.push_back("wss"); - cookie_monster->SetCookieableSchemes(all_schemes); + cookie_monster->SetCookieableSchemes( + all_schemes, net::CookieStore::SetCookieableSchemesCallback()); } void CefCookieManagerOldImpl::RunMethodWithContext( @@ -462,6 +463,10 @@ void CefCookieManagerOldImpl::SetCookieInternal( if (cookie.has_expires) cef_time_to_basetime(cookie.expires, expiration_time); + net::CookieOptions options; + if (cookie.httponly) + options.set_include_httponly(); + cookie_store->SetCanonicalCookieAsync( net::CanonicalCookie::CreateSanitizedCookie( url, name, value, domain, path, @@ -470,8 +475,7 @@ void CefCookieManagerOldImpl::SetCookieInternal( base::Time(), // Last access time. cookie.secure ? true : false, cookie.httponly ? true : false, net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT), - url.scheme(), cookie.httponly ? true : false, - base::Bind(SetCookieCallbackImpl, callback)); + url.scheme(), options, base::Bind(SetCookieCallbackImpl, callback)); } void CefCookieManagerOldImpl::DeleteCookiesInternal( diff --git a/libcef/browser/net/resource_request_job.cc b/libcef/browser/net/resource_request_job.cc index 1c3f20611..39b7521eb 100644 --- a/libcef/browser/net/resource_request_job.cc +++ b/libcef/browser/net/resource_request_job.cc @@ -18,11 +18,11 @@ #include "base/bind.h" #include "base/logging.h" #include "base/strings/string_util.h" +#include "net/base/http_user_agent_settings.h" #include "net/base/io_buffer.h" #include "net/base/load_flags.h" #include "net/base/mime_util.h" #include "net/http/http_response_headers.h" -#include "net/url_request/http_user_agent_settings.h" #include "net/url_request/url_request.h" #include "net/url_request/url_request_context.h" @@ -566,8 +566,7 @@ void CefResourceRequestJob::SaveNextCookie() { if (can_set_cookie) { request_->context()->cookie_store()->SetCanonicalCookieAsync( - std::move(cookie), request_->url().scheme(), - !options.exclude_httponly(), + std::move(cookie), request_->url().scheme(), options, base::Bind(&CefResourceRequestJob::OnCookieSaved, weak_factory_.GetWeakPtr())); return; diff --git a/libcef/browser/net/url_request_context_getter.cc b/libcef/browser/net/url_request_context_getter.cc index e7872b42b..8947ae0a4 100644 --- a/libcef/browser/net/url_request_context_getter.cc +++ b/libcef/browser/net/url_request_context_getter.cc @@ -39,6 +39,7 @@ #include "content/public/common/content_client.h" #include "content/public/common/content_switches.h" #include "content/public/common/url_constants.h" +#include "net/base/http_user_agent_settings.h" #include "net/cert/cert_verifier.h" #include "net/cert/ct_log_verifier.h" #include "net/cert/multi_log_ct_verifier.h" @@ -56,7 +57,6 @@ #include "net/proxy_resolution/pac_file_fetcher_impl.h" #include "net/proxy_resolution/proxy_resolution_service.h" #include "net/ssl/ssl_config_service_defaults.h" -#include "net/url_request/http_user_agent_settings.h" #include "net/url_request/url_request.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context_storage.h" @@ -318,7 +318,7 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() { base::WrapUnique(new CefHttpUserAgentSettings(accept_language))); io_state_->storage_->set_host_resolver( - net::HostResolver::CreateDefaultResolver(io_state_->net_log_)); + net::HostResolver::CreateStandaloneResolver(io_state_->net_log_)); io_state_->storage_->set_cert_verifier(net::CertVerifier::CreateDefault()); std::unique_ptr transport_security_state( @@ -542,7 +542,7 @@ void CefURLRequestContextGetter::SetCookieStoragePath( // cookie store, if any, will be automatically flushed and closed when no // longer referenced. std::unique_ptr cookie_monster(new net::CookieMonster( - persistent_store.get(), nullptr, io_state_->net_log_)); + persistent_store.get(), io_state_->net_log_)); if (persistent_store.get() && persist_session_cookies) cookie_monster->SetPersistSessionCookies(true); io_state_->cookie_store_path_ = path; diff --git a/libcef/browser/net_service/cookie_manager_impl.cc b/libcef/browser/net_service/cookie_manager_impl.cc index ce9470d51..366f0f737 100644 --- a/libcef/browser/net_service/cookie_manager_impl.cc +++ b/libcef/browser/net_service/cookie_manager_impl.cc @@ -206,9 +206,12 @@ bool CefCookieManagerImpl::SetCookie(const CefString& url, cookie.secure ? true : false, cookie.httponly ? true : false, net::CookieSameSite::DEFAULT_MODE, net::COOKIE_PRIORITY_DEFAULT); + net::CookieOptions options; + if (cookie.httponly) + options.set_include_httponly(); + GetCookieManager(request_context_.get()) - ->SetCanonicalCookie(*canonical_cookie, gurl.scheme(), - cookie.httponly ? true : false, + ->SetCanonicalCookie(*canonical_cookie, gurl.scheme(), options, base::Bind(SetCookieCallbackImpl, callback)); return true; } diff --git a/libcef/browser/prefs/browser_prefs.cc b/libcef/browser/prefs/browser_prefs.cc index 63e81d590..5717dbbb7 100644 --- a/libcef/browser/prefs/browser_prefs.cc +++ b/libcef/browser/prefs/browser_prefs.cc @@ -176,7 +176,7 @@ std::unique_ptr CreatePrefService(Profile* profile, // Call RegisterProfilePrefs() for all services listed by // EnsureBrowserContextKeyedServiceFactoriesBuilt(). BrowserContextDependencyManager::GetInstance() - ->RegisterProfilePrefsForServices(profile, registry.get()); + ->RegisterProfilePrefsForServices(registry.get()); // Default profile preferences. AccessibilityUIMessageHandler::RegisterProfilePrefs(registry.get()); @@ -185,7 +185,7 @@ std::unique_ptr CreatePrefService(Profile* profile, extensions::ExtensionPrefs::RegisterProfilePrefs(registry.get()); GoogleURLTracker::RegisterProfilePrefs(registry.get()); HostContentSettingsMap::RegisterProfilePrefs(registry.get()); - language::RegisterProfilePrefs(registry.get()); + language::LanguagePrefs::RegisterProfilePrefs(registry.get()); ProfileNetworkContextService::RegisterProfilePrefs(registry.get()); renderer_prefs::RegisterProfilePrefs(registry.get()); diff --git a/libcef/browser/request_context_impl.cc b/libcef/browser/request_context_impl.cc index 9675b54ec..14fa897fb 100644 --- a/libcef/browser/request_context_impl.cc +++ b/libcef/browser/request_context_impl.cc @@ -49,6 +49,8 @@ const char* GetTypeString(base::Value::Type type) { return "DICTIONARY"; case base::Value::Type::LIST: return "LIST"; + case base::Value::Type::DEAD: + return "DEAD"; } NOTREACHED(); diff --git a/libcef/browser/server_impl.cc b/libcef/browser/server_impl.cc index 6c9226900..a42fa232d 100644 --- a/libcef/browser/server_impl.cc +++ b/libcef/browser/server_impl.cc @@ -492,8 +492,7 @@ void CefServerImpl::OnWebSocketRequest( CreateRequest(address_, request_info, true), callback); } -void CefServerImpl::OnWebSocketMessage(int connection_id, - const std::string& data) { +void CefServerImpl::OnWebSocketMessage(int connection_id, std::string data) { CEF_REQUIRE_HT(); ConnectionInfo* info = GetConnectionInfo(connection_id); diff --git a/libcef/browser/server_impl.h b/libcef/browser/server_impl.h index 49386c210..9703f5953 100644 --- a/libcef/browser/server_impl.h +++ b/libcef/browser/server_impl.h @@ -71,7 +71,7 @@ class CefServerImpl : public CefServer, net::HttpServer::Delegate { void OnWebSocketRequest( int connection_id, const net::HttpServerRequestInfo& request_info) override; - void OnWebSocketMessage(int connection_id, const std::string& data) override; + void OnWebSocketMessage(int connection_id, std::string data) override; void OnClose(int connection_id) override; void StartOnUIThread(const std::string& address, uint16 port, int backlog); diff --git a/libcef/browser/views/browser_view_view.cc b/libcef/browser/views/browser_view_view.cc index d3b6bccd2..467adf1a6 100644 --- a/libcef/browser/views/browser_view_view.cc +++ b/libcef/browser/views/browser_view_view.cc @@ -13,7 +13,7 @@ CefBrowserViewView::CefBrowserViewView(CefBrowserViewDelegate* cef_delegate, } void CefBrowserViewView::ViewHierarchyChanged( - const ViewHierarchyChangedDetails& details) { + const views::ViewHierarchyChangedDetails& details) { ParentClass::ViewHierarchyChanged(details); if (details.is_add && details.child == this) { gfx::Size size = GetPreferredSize(); diff --git a/libcef/browser/views/browser_view_view.h b/libcef/browser/views/browser_view_view.h index 462a4eedc..32c09bb74 100644 --- a/libcef/browser/views/browser_view_view.h +++ b/libcef/browser/views/browser_view_view.h @@ -40,7 +40,7 @@ class CefBrowserViewView // View methods: void ViewHierarchyChanged( - const ViewHierarchyChangedDetails& details) override; + const views::ViewHierarchyChangedDetails& details) override; private: // Not owned by this object. diff --git a/libcef/browser/views/menu_button_view.cc b/libcef/browser/views/menu_button_view.cc index 1054d7e15..5c832c555 100644 --- a/libcef/browser/views/menu_button_view.cc +++ b/libcef/browser/views/menu_button_view.cc @@ -14,10 +14,10 @@ namespace { class ButtonPressedLock : public CefMenuButtonPressedLock { public: explicit ButtonPressedLock(views::MenuButton* menu_button) - : pressed_lock_(menu_button->menu_button_event_handler()) {} + : pressed_lock_(menu_button->menu_button_controller()) {} private: - views::MenuButtonEventHandler::PressedLock pressed_lock_; + views::MenuButtonController::PressedLock pressed_lock_; IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(ButtonPressedLock); DISALLOW_COPY_AND_ASSIGN(ButtonPressedLock); diff --git a/libcef/browser/views/panel_impl.h b/libcef/browser/views/panel_impl.h index a8fc173ae..f72713cc0 100644 --- a/libcef/browser/views/panel_impl.h +++ b/libcef/browser/views/panel_impl.h @@ -178,7 +178,7 @@ CEF_PANEL_IMPL_T void CEF_PANEL_IMPL_D::RemoveChildView( CEF_PANEL_IMPL_T void CEF_PANEL_IMPL_D::RemoveAllChildViews() { CEF_REQUIRE_VALID_RETURN_VOID(); - while (ParentClass::content_view()->has_children()) { + while (!ParentClass::content_view()->children().empty()) { CefRefPtr view = view_util::GetFor(ParentClass::content_view()->child_at(0), false); RemoveChildView(view); diff --git a/libcef/browser/views/scroll_view_impl.cc b/libcef/browser/views/scroll_view_impl.cc index 3367cfde5..08ec22b39 100644 --- a/libcef/browser/views/scroll_view_impl.cc +++ b/libcef/browser/views/scroll_view_impl.cc @@ -27,8 +27,7 @@ void CefScrollViewImpl::SetContentView(CefRefPtr view) { if (!view.get() || !view->IsValid() || view->IsAttached()) return; - std::unique_ptr view_ptr = view_util::PassOwnership(view); - root_view()->SetContents(view_ptr.release()); + root_view()->SetContents(view_util::PassOwnership(view)); } CefRefPtr CefScrollViewImpl::GetContentView() { diff --git a/libcef/browser/views/view_view.h b/libcef/browser/views/view_view.h index ab103119f..4ebce179b 100644 --- a/libcef/browser/views/view_view.h +++ b/libcef/browser/views/view_view.h @@ -69,7 +69,7 @@ CEF_VIEW_VIEW_T class CefViewView : public ViewsViewClass { int GetHeightForWidth(int w) const override; void Layout() override; void ViewHierarchyChanged( - const views::View::ViewHierarchyChangedDetails& details) override; + const views::ViewHierarchyChangedDetails& details) override; void OnFocus() override; void OnBlur() override; @@ -79,9 +79,9 @@ CEF_VIEW_VIEW_T class CefViewView : public ViewsViewClass { private: void NotifyChildViewChanged( - const views::View::ViewHierarchyChangedDetails& details); + const views::ViewHierarchyChangedDetails& details); void NotifyParentViewChanged( - const views::View::ViewHierarchyChangedDetails& details); + const views::ViewHierarchyChangedDetails& details); // Not owned by this object. CefViewDelegateClass* cef_delegate_; @@ -156,7 +156,7 @@ CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::Layout() { } CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::ViewHierarchyChanged( - const views::View::ViewHierarchyChangedDetails& details) { + const views::ViewHierarchyChangedDetails& details) { NotifyChildViewChanged(details); NotifyParentViewChanged(details); ParentClass::ViewHierarchyChanged(details); @@ -175,7 +175,7 @@ CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::OnBlur() { } CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::NotifyChildViewChanged( - const views::View::ViewHierarchyChangedDetails& details) { + const views::ViewHierarchyChangedDetails& details) { if (!cef_delegate()) return; @@ -192,7 +192,7 @@ CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::NotifyChildViewChanged( } CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::NotifyParentViewChanged( - const views::View::ViewHierarchyChangedDetails& details) { + const views::ViewHierarchyChangedDetails& details) { if (!cef_delegate()) return; diff --git a/libcef/browser/views/window_view.cc b/libcef/browser/views/window_view.cc index 462ae6523..461a14904 100644 --- a/libcef/browser/views/window_view.cc +++ b/libcef/browser/views/window_view.cc @@ -461,7 +461,7 @@ bool CefWindowView::MaybeGetMaximumSize(gfx::Size* size) const { } void CefWindowView::ViewHierarchyChanged( - const views::View::ViewHierarchyChangedDetails& details) { + const views::ViewHierarchyChangedDetails& details) { if (details.child == this) { // This View's parent types (RootView, ClientView) are not exposed via the // CEF API. Therefore don't send notifications about this View's parent diff --git a/libcef/browser/views/window_view.h b/libcef/browser/views/window_view.h index 2cb333d56..50093e1d4 100644 --- a/libcef/browser/views/window_view.h +++ b/libcef/browser/views/window_view.h @@ -73,7 +73,7 @@ class CefWindowView // views::View methods: void ViewHierarchyChanged( - const views::View::ViewHierarchyChangedDetails& details) override; + const views::ViewHierarchyChangedDetails& details) override; // Returns the Display containing this Window. display::Display GetDisplay() const; diff --git a/libcef/common/request_impl.cc b/libcef/common/request_impl.cc index de76f8620..55274fb8b 100644 --- a/libcef/common/request_impl.cc +++ b/libcef/common/request_impl.cc @@ -218,7 +218,7 @@ void SetHeaderMap(const CefRequest::HeaderMap& map, blink::WebURLRequest& request) { CefRequest::HeaderMap::const_iterator it = map.begin(); for (; it != map.end(); ++it) { - request.SetHTTPHeaderField( + request.SetHttpHeaderField( blink::WebString::FromUTF16(it->first.ToString16()), blink::WebString::FromUTF16(it->second.ToString16())); } @@ -595,7 +595,7 @@ void CefRequestImpl::Get(const CefMsg_LoadRequest_Params& params, for (net::HttpUtil::HeadersIterator i(params.headers.begin(), params.headers.end(), "\n\r"); i.GetNext();) { - request.AddHTTPHeaderField(blink::WebString::FromUTF8(i.name()), + request.AddHttpHeaderField(blink::WebString::FromUTF8(i.name()), blink::WebString::FromUTF8(i.values())); headerMap.insert(std::make_pair(i.name(), i.values())); } @@ -613,7 +613,7 @@ void CefRequestImpl::Get(const CefMsg_LoadRequest_Params& params, .HttpHeaderField(blink::WebString::FromASCII( net::HttpRequestHeaders::kContentType)) .length() == 0) { - request.SetHTTPHeaderField( + request.SetHttpHeaderField( blink::WebString::FromASCII(net::HttpRequestHeaders::kContentType), blink::WebString::FromASCII(kApplicationFormURLEncoded)); } diff --git a/libcef/common/values_impl.cc b/libcef/common/values_impl.cc index fd036bb4c..d46d44ae6 100644 --- a/libcef/common/values_impl.cc +++ b/libcef/common/values_impl.cc @@ -748,6 +748,8 @@ CefValueType CefDictionaryValueImpl::GetType(const CefString& key) { return VTYPE_DICTIONARY; case base::Value::Type::LIST: return VTYPE_LIST; + case base::Value::Type::DEAD: + return VTYPE_INVALID; } } @@ -1156,6 +1158,8 @@ CefValueType CefListValueImpl::GetType(size_t index) { return VTYPE_DICTIONARY; case base::Value::Type::LIST: return VTYPE_LIST; + case base::Value::Type::DEAD: + return VTYPE_INVALID; } } diff --git a/libcef/renderer/blink_glue.cc b/libcef/renderer/blink_glue.cc index e0a6ea3fa..f8a464734 100644 --- a/libcef/renderer/blink_glue.cc +++ b/libcef/renderer/blink_glue.cc @@ -9,6 +9,7 @@ #include "third_party/blink/public/platform/web_url_response.h" #include "third_party/blink/public/web/web_document.h" #include "third_party/blink/public/web/web_element.h" +#include "third_party/blink/public/web/web_local_frame_client.h" #include "third_party/blink/public/web/web_node.h" #include "third_party/blink/public/web/web_view_client.h" @@ -54,17 +55,29 @@ bool CanGoForward(blink::WebView* view) { void GoBack(blink::WebView* view) { if (!view) return; - blink::WebViewImpl* impl = reinterpret_cast(view); - if (impl->Client()->HistoryBackListCount() > 0) - impl->Client()->NavigateBackForwardSoon(-1, true /* has_user_gesture */); + + blink::WebFrame* main_frame = view->MainFrame(); + if (main_frame && main_frame->IsWebLocalFrame()) { + blink::WebViewImpl* view_impl = reinterpret_cast(view); + if (view_impl->Client()->HistoryBackListCount() > 0) { + main_frame->ToWebLocalFrame()->Client()->NavigateBackForwardSoon( + -1, true /* has_user_gesture */); + } + } } void GoForward(blink::WebView* view) { if (!view) return; - blink::WebViewImpl* impl = reinterpret_cast(view); - if (impl->Client()->HistoryForwardListCount() > 0) - impl->Client()->NavigateBackForwardSoon(1, true /* has_user_gesture */); + + blink::WebFrame* main_frame = view->MainFrame(); + if (main_frame && main_frame->IsWebLocalFrame()) { + blink::WebViewImpl* view_impl = reinterpret_cast(view); + if (view_impl->Client()->HistoryForwardListCount() > 0) { + main_frame->ToWebLocalFrame()->Client()->NavigateBackForwardSoon( + 1, true /* has_user_gesture */); + } + } } std::string DumpDocumentText(blink::WebLocalFrame* frame) { diff --git a/libcef/renderer/content_renderer_client.cc b/libcef/renderer/content_renderer_client.cc index f0f818a97..6e80d7fef 100644 --- a/libcef/renderer/content_renderer_client.cc +++ b/libcef/renderer/content_renderer_client.cc @@ -51,7 +51,6 @@ #include "build/build_config.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/constants.mojom.h" -#include "chrome/common/secure_origin_whitelist.h" #include "chrome/common/url_constants.h" #include "chrome/renderer/chrome_content_renderer_client.h" #include "chrome/renderer/loadtimes_extension_bindings.h" @@ -84,6 +83,7 @@ #include "ipc/ipc_sync_channel.h" #include "media/base/media.h" #include "printing/print_settings.h" +#include "services/network/public/cpp/is_potentially_trustworthy.h" #include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" @@ -412,8 +412,7 @@ void CefContentRendererClient::RenderThreadStarted() { pdf::PepperPDFHost::SetPrintClient(pdf_print_client_.get()); } - for (auto& origin_or_hostname_pattern : - secure_origin_whitelist::GetWhitelist()) { + for (auto& origin_or_hostname_pattern : network::GetSecureOriginAllowlist()) { blink::WebSecurityPolicy::AddOriginTrustworthyWhiteList( blink::WebString::FromUTF8(origin_or_hostname_pattern)); } @@ -541,14 +540,13 @@ void CefContentRendererClient::WillSendRequest( } } -unsigned long long CefContentRendererClient::VisitedLinkHash( - const char* canonical_url, - size_t length) { +uint64_t CefContentRendererClient::VisitedLinkHash(const char* canonical_url, + size_t length) { return observer_->visited_link_slave()->ComputeURLFingerprint(canonical_url, length); } -bool CefContentRendererClient::IsLinkVisited(unsigned long long link_hash) { +bool CefContentRendererClient::IsLinkVisited(uint64_t link_hash) { return observer_->visited_link_slave()->IsVisited(link_hash); } diff --git a/libcef/renderer/content_renderer_client.h b/libcef/renderer/content_renderer_client.h index 15f2a6924..da8f9a2f0 100644 --- a/libcef/renderer/content_renderer_client.h +++ b/libcef/renderer/content_renderer_client.h @@ -121,9 +121,8 @@ class CefContentRendererClient const url::Origin* initiator_origin, GURL* new_url, bool* attach_same_site_cookies) override; - unsigned long long VisitedLinkHash(const char* canonical_url, - size_t length) override; - bool IsLinkVisited(unsigned long long link_hash) override; + uint64_t VisitedLinkHash(const char* canonical_url, size_t length) override; + bool IsLinkVisited(uint64_t link_hash) override; bool IsOriginIsolatedPepperPlugin(const base::FilePath& plugin_path) override; content::BrowserPluginDelegate* CreateBrowserPluginDelegate( content::RenderFrame* render_frame, diff --git a/libcef/renderer/extensions/extensions_dispatcher_delegate.cc b/libcef/renderer/extensions/extensions_dispatcher_delegate.cc index 8584af7b8..51d3751ef 100644 --- a/libcef/renderer/extensions/extensions_dispatcher_delegate.cc +++ b/libcef/renderer/extensions/extensions_dispatcher_delegate.cc @@ -16,12 +16,6 @@ CefExtensionsDispatcherDelegate::CefExtensionsDispatcherDelegate() {} CefExtensionsDispatcherDelegate::~CefExtensionsDispatcherDelegate() {} void CefExtensionsDispatcherDelegate::PopulateSourceMap( - extensions::ResourceBundleSourceMap* source_map) { - // These bindings are unnecessary with native bindings enabled. - if (!base::FeatureList::IsEnabled(extensions_features::kNativeCrxBindings)) { - // Custom types sources. - source_map->RegisterSource("ContentSetting", IDR_CONTENT_SETTING_JS); - } -} + extensions::ResourceBundleSourceMap* source_map) {} } // namespace extensions diff --git a/libcef/renderer/render_urlrequest_impl.cc b/libcef/renderer/render_urlrequest_impl.cc index 3a4148f5b..1e02d208d 100644 --- a/libcef/renderer/render_urlrequest_impl.cc +++ b/libcef/renderer/render_urlrequest_impl.cc @@ -55,6 +55,8 @@ class CefWebURLLoaderClient : public blink::WebURLLoaderClient { int64_t total_encoded_data_length, int64_t total_encoded_body_length, int64_t total_decoded_body_length) override; + void DidStartLoadingResponseBody( + mojo::ScopedDataPipeConsumerHandle response_body) override; bool WillFollowRedirect( const WebURL& new_url, const WebURL& new_site_for_cookies, @@ -87,6 +89,7 @@ class CefRenderURLRequest::Context task_runner_(CefTaskRunnerImpl::GetCurrentTaskRunner()), status_(UR_IO_PENDING), error_code_(ERR_NONE), + body_watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL), response_was_cached_(false), upload_data_size_(0), got_upload_progress_complete_(false), @@ -189,6 +192,10 @@ class CefRenderURLRequest::Context void OnComplete() { DCHECK(CalledOnValidThread()); + if (body_handle_.is_valid()) { + return; + } + if (status_ == UR_IO_PENDING) { status_ = UR_SUCCESS; NotifyUploadProgressIfNecessary(); @@ -204,6 +211,61 @@ class CefRenderURLRequest::Context url_request_ = NULL; } + void OnBodyReadable(MojoResult, const mojo::HandleSignalsState&) { + const void* buffer = nullptr; + uint32_t read_bytes = 0; + MojoResult result = body_handle_->BeginReadData(&buffer, &read_bytes, + MOJO_READ_DATA_FLAG_NONE); + if (result == MOJO_RESULT_SHOULD_WAIT) { + body_watcher_.ArmOrNotify(); + return; + } + + if (result == MOJO_RESULT_FAILED_PRECONDITION) { + // Whole body has been read. + body_handle_.reset(); + body_watcher_.Cancel(); + OnComplete(); + return; + } + + if (result != MOJO_RESULT_OK) { + // Something went wrong. + body_handle_.reset(); + body_watcher_.Cancel(); + OnComplete(); + return; + } + + download_data_received_ += read_bytes; + + client_->OnDownloadProgress(url_request_.get(), download_data_received_, + download_data_total_); + + if (!(request_->GetFlags() & UR_FLAG_NO_DOWNLOAD_DATA)) { + client_->OnDownloadData(url_request_.get(), buffer, read_bytes); + } + + body_handle_->EndReadData(read_bytes); + body_watcher_.ArmOrNotify(); + } + + void OnStartLoadingResponseBody( + mojo::ScopedDataPipeConsumerHandle response_body) { + DCHECK(CalledOnValidThread()); + DCHECK(response_body); + DCHECK(!body_handle_); + body_handle_ = std::move(response_body); + + body_watcher_.Watch( + body_handle_.get(), + MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, + MOJO_TRIGGER_CONDITION_SIGNALS_SATISFIED, + base::BindRepeating(&CefRenderURLRequest::Context::OnBodyReadable, + base::Unretained(this))); + body_watcher_.ArmOrNotify(); + } + void OnDownloadProgress(int64_t current) { DCHECK(CalledOnValidThread()); DCHECK(url_request_.get()); @@ -260,6 +322,8 @@ class CefRenderURLRequest::Context CefURLRequest::Status status_; CefURLRequest::ErrorCode error_code_; CefRefPtr response_; + mojo::ScopedDataPipeConsumerHandle body_handle_; + mojo::SimpleWatcher body_watcher_; bool response_was_cached_; std::unique_ptr loader_; std::unique_ptr url_client_; @@ -314,6 +378,11 @@ void CefWebURLLoaderClient::DidFail(const WebURLError& error, context_->OnError(error); } +void CefWebURLLoaderClient::DidStartLoadingResponseBody( + mojo::ScopedDataPipeConsumerHandle response_body) { + context_->OnStartLoadingResponseBody(std::move(response_body)); +} + bool CefWebURLLoaderClient::WillFollowRedirect( const WebURL& new_url, const WebURL& new_site_for_cookies, diff --git a/patch/patch.cfg b/patch/patch.cfg index 5cd466990..bbe687421 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -407,20 +407,19 @@ patches = [ # https://bitbucket.org/chromiumembedded/cef/issues/1936 'name': 'linux_assets_path_1936', }, - { - # Windows: Fix jumbo build error in AccessibilityTreeFormatterWin - # https://bugs.chromium.org/p/chromium/issues/detail?id=939668 - 'name': 'accessibility_win_939668', - }, { # Windows: Revert base::Value change which breaks cef_sandbox build. # https://bugs.chromium.org/p/chromium/issues/detail?id=646113#c173 'name': 'base_value_646113', }, { - # Fix CHECK on startup when running with --trace-startup=mojom. - # This change can be removed once we bump Chromium past the following: - # https://bugs.chromium.org/p/chromium/issues/detail?id=839084#c60 - 'name': 'services_tracing_839084', + # Restore WebView::SetResizeBackgroundColor() that was removed. + # http://crrev.com/3955c9f9eb + 'name': 'set_resize_background_color', + }, + { + # Remove requirement that enforces component builds + # http://crrev.com/567d828446 + 'name': 'remove_component_build_check', } ] diff --git a/patch/patches/accessibility_win_939668.patch b/patch/patches/accessibility_win_939668.patch deleted file mode 100644 index d639ae7ac..000000000 --- a/patch/patches/accessibility_win_939668.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git content/browser/accessibility/accessibility_tree_formatter_win.cc content/browser/accessibility/accessibility_tree_formatter_win.cc -index 59f85adf85c3..a60cb7aa874c 100644 ---- content/browser/accessibility/accessibility_tree_formatter_win.cc -+++ content/browser/accessibility/accessibility_tree_formatter_win.cc -@@ -35,7 +35,7 @@ - #include "ui/base/win/atl_module.h" - #include "ui/gfx/win/hwnd_util.h" - --namespace { -+namespace internal { - - struct HwndWithProcId { - HwndWithProcId(const base::ProcessId id) : pid(id), hwnd(nullptr) {} -@@ -60,7 +60,7 @@ HWND GetHwndForProcess(base::ProcessId pid) { - return hwnd_with_proc_id.hwnd; - } - --} // namespace -+} // namespace internal - - namespace content { - -@@ -354,7 +354,7 @@ std::unique_ptr - AccessibilityTreeFormatterWin::BuildAccessibilityTreeForProcess( - base::ProcessId pid) { - // Get HWND for process id. -- HWND hwnd = GetHwndForProcess(pid); -+ HWND hwnd = ::internal::GetHwndForProcess(pid); - return BuildAccessibilityTreeForWindow(hwnd); - } - diff --git a/patch/patches/base_value_646113.patch b/patch/patches/base_value_646113.patch index b81719c0e..d0e307704 100644 --- a/patch/patches/base_value_646113.patch +++ b/patch/patches/base_value_646113.patch @@ -1,5 +1,5 @@ diff --git base/values.cc base/values.cc -index 2b0c6c8163d8..fc12313a7bb5 100644 +index 6f3a9e2cd8a2..d35972814034 100644 --- base/values.cc +++ base/values.cc @@ -22,20 +22,6 @@ @@ -23,100 +23,67 @@ index 2b0c6c8163d8..fc12313a7bb5 100644 namespace { const char* const kTypeNames[] = {"null", "boolean", "integer", "double", -@@ -90,7 +76,7 @@ std::unique_ptr CopyWithoutEmptyChildren(const Value& node) { - - } // namespace - --constexpr uint16_t Value::kMagicIsAlive; -+constexpr uint32_t Value::kMagicIsAlive; - - // static - std::unique_ptr Value::CreateWithCopiedBuffer(const char* buffer, -@@ -112,9 +98,9 @@ Value::Value(Value&& that) noexcept { - InternalMoveConstructFrom(std::move(that)); +@@ -150,15 +136,15 @@ Value::Value(Type type) : type_(type) { } --Value::Value() noexcept : type_(Type::NONE), is_alive_(kMagicIsAlive) {} -+Value::Value() noexcept : type_(Type::NONE) {} - --Value::Value(Type type) : type_(type), is_alive_(kMagicIsAlive) { -+Value::Value(Type type) : type_(type) { - // Initialize with the default value. - switch (type_) { - case Type::NONE: -@@ -144,20 +130,11 @@ Value::Value(Type type) : type_(type), is_alive_(kMagicIsAlive) { - } - } - --Value::Value(bool in_bool) + Value::Value(bool in_bool) - : bool_type_(Type::BOOLEAN), -- bool_is_alive_(kMagicIsAlive), -- bool_value_(in_bool) {} -+Value::Value(bool in_bool) : type_(Type::BOOLEAN), bool_value_(in_bool) {} ++ : type_(Type::BOOLEAN), + bool_value_(in_bool) {} --Value::Value(int in_int) + Value::Value(int in_int) - : int_type_(Type::INTEGER), -- int_is_alive_(kMagicIsAlive), -- int_value_(in_int) {} -+Value::Value(int in_int) : type_(Type::INTEGER), int_value_(in_int) {} ++ : type_(Type::INTEGER), + int_value_(in_int) {} --Value::Value(double in_double) + Value::Value(double in_double) - : double_type_(Type::DOUBLE), -- double_is_alive_(kMagicIsAlive), -- double_value_(in_double) { -+Value::Value(double in_double) : type_(Type::DOUBLE), double_value_(in_double) { ++ : type_(Type::DOUBLE), + double_value_(in_double) { if (!std::isfinite(double_value_)) { NOTREACHED() << "Non-finite (i.e. NaN or positive/negative infinity) " - << "values cannot be represented in JSON"; -@@ -170,9 +147,7 @@ Value::Value(const char* in_string) : Value(std::string(in_string)) {} +@@ -172,7 +158,7 @@ Value::Value(const char* in_string) : Value(std::string(in_string)) {} Value::Value(StringPiece in_string) : Value(std::string(in_string)) {} Value::Value(std::string&& in_string) noexcept - : string_type_(Type::STRING), -- string_is_alive_(kMagicIsAlive), -- string_value_(std::move(in_string)) { -+ : type_(Type::STRING), string_value_(std::move(in_string)) { ++ : type_(Type::STRING), + string_value_(std::move(in_string)) { DCHECK(IsStringUTF8(string_value_)); } - -@@ -181,22 +156,15 @@ Value::Value(const char16* in_string16) : Value(StringPiece16(in_string16)) {} +@@ -182,19 +168,19 @@ Value::Value(const char16* in_string16) : Value(StringPiece16(in_string16)) {} Value::Value(StringPiece16 in_string16) : Value(UTF16ToUTF8(in_string16)) {} Value::Value(const std::vector& in_blob) - : binary_type_(Type::BINARY), -- binary_is_alive_(kMagicIsAlive), -- binary_value_(in_blob.begin(), in_blob.end()) {} -+ : type_(Type::BINARY), binary_value_(in_blob.begin(), in_blob.end()) {} ++ : type_(Type::BINARY), + binary_value_(in_blob.begin(), in_blob.end()) {} Value::Value(base::span in_blob) - : binary_type_(Type::BINARY), -- binary_is_alive_(kMagicIsAlive), -- binary_value_(in_blob.begin(), in_blob.end()) {} -+ : type_(Type::BINARY), binary_value_(in_blob.begin(), in_blob.end()) {} ++ : type_(Type::BINARY), + binary_value_(in_blob.begin(), in_blob.end()) {} Value::Value(BlobStorage&& in_blob) noexcept - : binary_type_(Type::BINARY), -- binary_is_alive_(kMagicIsAlive), -- binary_value_(std::move(in_blob)) {} -+ : type_(Type::BINARY), binary_value_(std::move(in_blob)) {} ++ : type_(Type::BINARY), + binary_value_(std::move(in_blob)) {} --Value::Value(const DictStorage& in_dict) -- : dict_type_(Type::DICTIONARY), dict_is_alive_(kMagicIsAlive), dict_() { -+Value::Value(const DictStorage& in_dict) : type_(Type::DICTIONARY), dict_() { + Value::Value(const DictStorage& in_dict) +- : dict_type_(Type::DICTIONARY), dict_() { ++ : type_(Type::DICTIONARY), dict_() { dict_.reserve(in_dict.size()); for (const auto& it : in_dict) { dict_.try_emplace(dict_.end(), it.first, -@@ -205,21 +173,16 @@ Value::Value(const DictStorage& in_dict) +@@ -203,17 +189,17 @@ Value::Value(const DictStorage& in_dict) } Value::Value(DictStorage&& in_dict) noexcept - : dict_type_(Type::DICTIONARY), -- dict_is_alive_(kMagicIsAlive), -- dict_(std::move(in_dict)) {} -+ : type_(Type::DICTIONARY), dict_(std::move(in_dict)) {} ++ : type_(Type::DICTIONARY), + dict_(std::move(in_dict)) {} --Value::Value(const ListStorage& in_list) -- : list_type_(Type::LIST), list_is_alive_(kMagicIsAlive), list_() { +-Value::Value(const ListStorage& in_list) : list_type_(Type::LIST), list_() { +Value::Value(const ListStorage& in_list) : type_(Type::LIST), list_() { list_.reserve(in_list.size()); for (const auto& val : in_list) @@ -125,46 +92,18 @@ index 2b0c6c8163d8..fc12313a7bb5 100644 Value::Value(ListStorage&& in_list) noexcept - : list_type_(Type::LIST), -- list_is_alive_(kMagicIsAlive), -- list_(std::move(in_list)) {} -+ : type_(Type::LIST), list_(std::move(in_list)) {} ++ : type_(Type::LIST), + list_(std::move(in_list)) {} Value& Value::operator=(Value&& that) noexcept { - InternalCleanup(); -@@ -733,7 +696,6 @@ size_t Value::EstimateMemoryUsage() const { - - void Value::InternalMoveConstructFrom(Value&& that) { - type_ = that.type_; -- is_alive_ = that.is_alive_; - - switch (type_) { - case Type::NONE: diff --git base/values.h base/values.h -index 7546fa53756d..00a357342d23 100644 +index 7bc355ee586d..441967681a4b 100644 --- base/values.h +++ base/values.h -@@ -96,6 +96,10 @@ class BASE_EXPORT Value { - // Note: Do not add more types. See the file-level comment above for why. - }; - -+ // Magic IsAlive signature to debug double frees. -+ // TODO(crbug.com/859477): Remove once root cause is found. -+ static constexpr uint32_t kMagicIsAlive = 0x15272f19; -+ - // For situations where you want to keep ownership of your buffer, this - // factory method creates a new BinaryValue by copying the contents of the - // buffer that's passed in. -@@ -375,100 +379,28 @@ class BASE_EXPORT Value { +@@ -390,78 +390,18 @@ class BASE_EXPORT Value { size_t EstimateMemoryUsage() const; protected: -- // Magic IsAlive signature to debug double frees. -- // TODO(crbug.com/859477): Remove once root cause is found. -- static constexpr uint16_t kMagicIsAlive = 0x2f19; -+ // TODO(crbug.com/646113): Make these private once DictionaryValue and -+ // ListValue are properly inlined. -+ Type type_; - - // Technical note: - // The naive way to implement a tagged union leads to wasted bytes - // in the object on CPUs like ARM ones, which impose an 8-byte alignment @@ -194,35 +133,32 @@ index 7546fa53756d..00a357342d23 100644 - // that |double_value_| below is always located at an offset that is a - // multiple of 8, relative to the start of the overall data structure. - // -- // Each struct must declare its own |type_| and |is_alive_| field, which -- // must have a different name, to appease the C++ compiler. +- // Each struct must declare its own |type_| field, which must have a different +- // name, to appease the C++ compiler. - // - // Using this technique sizeof(base::Value) == 16 on 32-bit ARM instead - // of 24, without losing any information. Results are unchanged for x86, - // x86_64 and arm64 (16, 32 and 32 bytes respectively). ++ // TODO(crbug.com/646113): Make these private once DictionaryValue and ++ // ListValue are properly inlined. ++ Type type_; ++ union { - struct { - // TODO(crbug.com/646113): Make these private once DictionaryValue and - // ListValue are properly inlined. - Type type_ : 8; -- -- // IsAlive member to debug double frees. -- // TODO(crbug.com/859477): Remove once root cause is found. -- uint16_t is_alive_ = kMagicIsAlive; - }; - struct { - Type bool_type_ : 8; -- uint16_t bool_is_alive_; - bool bool_value_; - }; - struct { - Type int_type_ : 8; -- uint16_t int_is_alive_; - int int_value_; - }; - struct { - Type double_type_ : 8; -- uint16_t double_is_alive_; - // Subtle: On architectures that require it, the compiler will ensure - // that |double_value_|'s offset is a multiple of 8 (e.g. 32-bit ARM). - // See technical note above to understand why it is important. @@ -230,22 +166,18 @@ index 7546fa53756d..00a357342d23 100644 - }; - struct { - Type string_type_ : 8; -- uint16_t string_is_alive_; - std::string string_value_; - }; - struct { - Type binary_type_ : 8; -- uint16_t binary_is_alive_; - BlobStorage binary_value_; - }; - struct { - Type dict_type_ : 8; -- uint16_t dict_is_alive_; - DictStorage dict_; - }; - struct { - Type list_type_ : 8; -- uint16_t list_is_alive_; - ListStorage list_; - }; + bool bool_value_; @@ -258,19 +190,8 @@ index 7546fa53756d..00a357342d23 100644 }; private: -- friend class ValuesTest_SizeOfValue_Test; - void InternalMoveConstructFrom(Value&& that); - void InternalCleanup(); - -+ // IsAlive member to debug double frees. -+ // TODO(crbug.com/859477): Remove once root cause is found. -+ uint32_t is_alive_ = kMagicIsAlive; -+ - DISALLOW_COPY_AND_ASSIGN(Value); - }; - diff --git base/values_unittest.cc base/values_unittest.cc -index 0a641bcc7ef4..bedacd9b1dee 100644 +index 2907dc066843..3a65e2d6ff2b 100644 --- base/values_unittest.cc +++ base/values_unittest.cc @@ -6,7 +6,6 @@ @@ -289,16 +210,18 @@ index 0a641bcc7ef4..bedacd9b1dee 100644 #include "base/strings/string16.h" #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" -@@ -25,43 +23,6 @@ +@@ -26,46 +24,6 @@ namespace base { +-// Test is currently incorrect on Windows x86. +-#if !defined(OS_WIN) || !defined(ARCH_CPU_X86) -TEST(ValuesTest, SizeOfValue) { - // Ensure that base::Value is as small as possible, i.e. that there is - // no wasted space after the inner value due to alignment constraints. -- // Distinguish between the 'header' that includes |type_| and |is_alive_| -- // and the inner value that follows it, which can be a bool, int, double, -- // string, blob, list or dict. +- // Distinguish between the 'header' that includes |type_| and and the inner +- // value that follows it, which can be a bool, int, double, string, blob, list +- // or dict. -#define INNER_TYPES_LIST(X) \ - X(bool, bool_value_) \ - X(int, int_value_) \ @@ -329,6 +252,7 @@ index 0a641bcc7ef4..bedacd9b1dee 100644 - LOG(INFO) << "max_inner_struct_limit=" << max_inner_struct_limit; - } -} +-#endif - TEST(ValuesTest, TestNothrow) { static_assert(std::is_nothrow_move_constructible::value, diff --git a/patch/patches/browser_child_frame_2507.patch b/patch/patches/browser_child_frame_2507.patch index 701812d05..a9362bda0 100644 --- a/patch/patches/browser_child_frame_2507.patch +++ b/patch/patches/browser_child_frame_2507.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/render_widget_host_view_child_frame.cc content/browser/renderer_host/render_widget_host_view_child_frame.cc -index 1e2a66d449be..639bb2096cf4 100644 +index 88681456e180..aec9ee42e21b 100644 --- content/browser/renderer_host/render_widget_host_view_child_frame.cc +++ content/browser/renderer_host/render_widget_host_view_child_frame.cc @@ -650,6 +650,7 @@ void RenderWidgetHostViewChildFrame::SubmitCompositorFrame( diff --git a/patch/patches/browser_compositor_mac.patch b/patch/patches/browser_compositor_mac.patch index a712f0b83..5c2ea1336 100644 --- a/patch/patches/browser_compositor_mac.patch +++ b/patch/patches/browser_compositor_mac.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/browser_compositor_view_mac.h content/browser/renderer_host/browser_compositor_view_mac.h -index 454c4cfd5a73..2bc6f341b9f5 100644 +index de89d291e5cb..9ce7bf4cb250 100644 --- content/browser/renderer_host/browser_compositor_view_mac.h +++ content/browser/renderer_host/browser_compositor_view_mac.h @@ -59,6 +59,8 @@ class CONTENT_EXPORT BrowserCompositorMac : public DelegatedFrameHostClient, @@ -12,7 +12,7 @@ index 454c4cfd5a73..2bc6f341b9f5 100644 // Force a new surface id to be allocated. Returns true if the // RenderWidgetHostImpl sent the resulting surface id to the renderer. diff --git content/browser/renderer_host/browser_compositor_view_mac.mm content/browser/renderer_host/browser_compositor_view_mac.mm -index 0817b4eca4f4..ddc37768ff47 100644 +index 6cdd1d10b580..312f27823674 100644 --- content/browser/renderer_host/browser_compositor_view_mac.mm +++ content/browser/renderer_host/browser_compositor_view_mac.mm @@ -84,6 +84,12 @@ DelegatedFrameHost* BrowserCompositorMac::GetDelegatedFrameHost() { diff --git a/patch/patches/browser_plugin_guest_1565.patch b/patch/patches/browser_plugin_guest_1565.patch index 1875f09e5..ca707c3f7 100644 --- a/patch/patches/browser_plugin_guest_1565.patch +++ b/patch/patches/browser_plugin_guest_1565.patch @@ -50,10 +50,10 @@ index dbc6281ef737..e413bf418b25 100644 render_view_host_->GetMainFrame()->AllowBindings( BINDINGS_POLICY_DOM_AUTOMATION); diff --git content/browser/web_contents/web_contents_view.h content/browser/web_contents/web_contents_view.h -index 2960f298ff54..218743f1847c 100644 +index bfb918a2cba3..a193b5a0fed8 100644 --- content/browser/web_contents/web_contents_view.h +++ content/browser/web_contents/web_contents_view.h -@@ -24,7 +24,7 @@ struct ScreenInfo; +@@ -23,7 +23,7 @@ struct DropData; // The WebContentsView is an interface that is implemented by the platform- // dependent web contents views. The WebContents uses this interface to talk to // them. @@ -62,7 +62,7 @@ index 2960f298ff54..218743f1847c 100644 public: virtual ~WebContentsView() {} -@@ -88,13 +88,9 @@ class WebContentsView { +@@ -84,13 +84,9 @@ class WebContentsView { // Sets up the View that holds the rendered web page, receives messages for // it and contains page plugins. The host view should be sized to the current // size of the WebContents. @@ -79,10 +79,10 @@ index 2960f298ff54..218743f1847c 100644 // Creates a new View that holds a non-top-level widget and receives messages // for it. diff --git content/browser/web_contents/web_contents_view_aura.cc content/browser/web_contents/web_contents_view_aura.cc -index 3ae2cd85d98e..d1eaec9bd939 100644 +index 0c15633445d7..e6224d9a7612 100644 --- content/browser/web_contents/web_contents_view_aura.cc +++ content/browser/web_contents/web_contents_view_aura.cc -@@ -867,7 +867,8 @@ void WebContentsViewAura::CreateView(const gfx::Size& initial_size, +@@ -763,7 +763,8 @@ void WebContentsViewAura::CreateView(const gfx::Size& initial_size, } RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( @@ -92,7 +92,7 @@ index 3ae2cd85d98e..d1eaec9bd939 100644 if (render_widget_host->GetView()) { // During testing, the view will already be set up in most cases to the // test view, so we don't want to clobber it with a real one. To verify that -@@ -879,6 +880,7 @@ RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( +@@ -775,6 +776,7 @@ RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget( render_widget_host->GetView()); } @@ -101,10 +101,10 @@ index 3ae2cd85d98e..d1eaec9bd939 100644 g_create_render_widget_host_view ? g_create_render_widget_host_view(render_widget_host, diff --git content/browser/web_contents/web_contents_view_aura.h content/browser/web_contents/web_contents_view_aura.h -index c917d912bbdf..36b9d9b8e3e9 100644 +index a1395dab81d4..b8c33779fef4 100644 --- content/browser/web_contents/web_contents_view_aura.h +++ content/browser/web_contents/web_contents_view_aura.h -@@ -110,7 +110,7 @@ class CONTENT_EXPORT WebContentsViewAura +@@ -109,7 +109,7 @@ class CONTENT_EXPORT WebContentsViewAura gfx::NativeView context) override; RenderWidgetHostViewBase* CreateViewForWidget( RenderWidgetHost* render_widget_host, @@ -208,7 +208,7 @@ index 913fbc4bb00e..731a81c72803 100644 RenderWidgetHost* render_widget_host) override; void SetPageTitle(const base::string16& title) override; diff --git content/browser/web_contents/web_contents_view_mac.h content/browser/web_contents/web_contents_view_mac.h -index be73ba6b3aca..3ba5aba86462 100644 +index 4266d4c817d4..7bcede99bca1 100644 --- content/browser/web_contents/web_contents_view_mac.h +++ content/browser/web_contents/web_contents_view_mac.h @@ -74,7 +74,7 @@ class WebContentsViewMac : public WebContentsView, @@ -221,7 +221,7 @@ index be73ba6b3aca..3ba5aba86462 100644 RenderWidgetHost* render_widget_host) override; void SetPageTitle(const base::string16& title) override; diff --git content/browser/web_contents/web_contents_view_mac.mm content/browser/web_contents/web_contents_view_mac.mm -index 92ac389639d8..83a2ddb344ba 100644 +index 011c81a25cb6..2d2a744a582c 100644 --- content/browser/web_contents/web_contents_view_mac.mm +++ content/browser/web_contents/web_contents_view_mac.mm @@ -319,7 +319,8 @@ void WebContentsViewMac::CreateView( diff --git a/patch/patches/build.patch b/patch/patches/build.patch index 502142dda..7439efdc4 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 ca6ff2b13809..c48e65157f5b 100644 +index b37e8d1f2ab6..f42ea327a9e8 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn -@@ -168,7 +168,7 @@ declare_args() { +@@ -157,7 +157,7 @@ declare_args() { !use_clang_coverage && !(is_android && use_order_profiling) && (use_lld || (use_gold && @@ -11,7 +11,7 @@ index ca6ff2b13809..c48e65157f5b 100644 !(current_cpu == "x86" || current_cpu == "x64")))) } -@@ -1709,8 +1709,6 @@ config("thin_archive") { +@@ -1696,8 +1696,6 @@ config("thin_archive") { # archive names to 16 characters, which is not what we want). if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) { arflags = [ "-T" ] diff --git a/patch/patches/chrome_browser.patch b/patch/patches/chrome_browser.patch index dd1720fb7..aa856988a 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 f8dfe8e20824..ec6fc42d11de 100644 +index c9a0e95880f3..2a3667c5acc5 100644 --- chrome/browser/BUILD.gn +++ chrome/browser/BUILD.gn @@ -8,6 +8,7 @@ import("//build/config/features.gni") @@ -10,7 +10,7 @@ index f8dfe8e20824..ec6fc42d11de 100644 import("//chrome/common/features.gni") import("//components/feature_engagement/features.gni") import("//components/feed/features.gni") -@@ -1812,6 +1813,7 @@ jumbo_split_static_library("browser") { +@@ -1807,6 +1808,7 @@ jumbo_split_static_library("browser") { "//base:i18n", "//base/allocator:buildflags", "//cc", @@ -18,7 +18,7 @@ index f8dfe8e20824..ec6fc42d11de 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2109,6 +2111,10 @@ jumbo_split_static_library("browser") { +@@ -2105,6 +2107,10 @@ jumbo_split_static_library("browser") { ] } @@ -29,7 +29,7 @@ index f8dfe8e20824..ec6fc42d11de 100644 if (is_android) { sources += [ "after_startup_task_utils_android.cc", -@@ -3858,7 +3864,7 @@ jumbo_split_static_library("browser") { +@@ -3877,7 +3883,7 @@ jumbo_split_static_library("browser") { ] } diff --git a/patch/patches/chrome_browser_net_export.patch b/patch/patches/chrome_browser_net_export.patch index 780c1a3ab..0b42371d3 100644 --- a/patch/patches/chrome_browser_net_export.patch +++ b/patch/patches/chrome_browser_net_export.patch @@ -24,7 +24,7 @@ index cac72c6a2fd1..2ed83a4af1b3 100644 // network quality change events. virtual network::NetworkQualityTracker* network_quality_tracker() = 0; diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc -index 27092f6375c4..b8ce740e4a08 100644 +index 6699792348cc..5a550106043d 100644 --- chrome/browser/browser_process_impl.cc +++ chrome/browser/browser_process_impl.cc @@ -665,6 +665,10 @@ BrowserProcessImpl::system_network_context_manager() { @@ -39,10 +39,10 @@ index 27092f6375c4..b8ce740e4a08 100644 BrowserProcessImpl::shared_url_loader_factory() { return system_network_context_manager()->GetSharedURLLoaderFactory(); diff --git chrome/browser/browser_process_impl.h chrome/browser/browser_process_impl.h -index 7168c719aa25..bae7162a539c 100644 +index 9bf48b759148..90d455eae40d 100644 --- chrome/browser/browser_process_impl.h +++ chrome/browser/browser_process_impl.h -@@ -140,6 +140,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -141,6 +141,7 @@ class BrowserProcessImpl : public BrowserProcess, // TODO(qinmin): Remove this method as callers can retrieve the global // instance from SystemNetworkContextManager directly. SystemNetworkContextManager* system_network_context_manager() override; @@ -51,7 +51,7 @@ index 7168c719aa25..bae7162a539c 100644 override; network::NetworkQualityTracker* network_quality_tracker() override; diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index 911e49e41313..eecbca982a92 100644 +index dba025da98a5..c6d4e2998bf4 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn @@ -9,6 +9,7 @@ import("//build/config/features.gni") @@ -81,7 +81,7 @@ index 911e49e41313..eecbca982a92 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2309,7 +2315,7 @@ jumbo_split_static_library("ui") { +@@ -2322,7 +2328,7 @@ jumbo_split_static_library("ui") { "views/frame/native_browser_frame_factory_ozone.cc", ] } else { diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index 300072ad5..ea080e158 100644 --- a/patch/patches/chrome_browser_profiles.patch +++ b/patch/patches/chrome_browser_profiles.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/profiles/profile_manager.cc chrome/browser/profiles/profile_manager.cc -index d66a0216832f..25c5ea80cb07 100644 +index ec2433d53264..85e2043b25b5 100644 --- chrome/browser/profiles/profile_manager.cc +++ chrome/browser/profiles/profile_manager.cc @@ -384,7 +384,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) diff --git a/patch/patches/chrome_plugins.patch b/patch/patches/chrome_plugins.patch index 071cd6e6d..343082402 100644 --- a/patch/patches/chrome_plugins.patch +++ b/patch/patches/chrome_plugins.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/plugins/plugin_info_host_impl.cc chrome/browser/plugins/plugin_info_host_impl.cc -index 989d5d02cedb..e05810db6824 100644 +index e699f1feb070..f5fcc878c246 100644 --- chrome/browser/plugins/plugin_info_host_impl.cc +++ chrome/browser/plugins/plugin_info_host_impl.cc @@ -18,6 +18,7 @@ @@ -86,7 +86,7 @@ index 989d5d02cedb..e05810db6824 100644 if (security_status == PluginMetadata::SECURITY_STATUS_FULLY_TRUSTED) { *status = chrome::mojom::PluginStatus::kAllowed; return; -@@ -378,16 +402,36 @@ bool PluginInfoHostImpl::Context::FindEnabledPlugin( +@@ -377,16 +401,36 @@ bool PluginInfoHostImpl::Context::FindEnabledPlugin( return false; } @@ -125,10 +125,10 @@ index 989d5d02cedb..e05810db6824 100644 // If we broke out of the loop, we have found an enabled plugin. bool enabled = i < matching_plugins.size(); diff --git chrome/renderer/chrome_content_renderer_client.cc chrome/renderer/chrome_content_renderer_client.cc -index d007c018c95f..1c48ced4abc2 100644 +index a838fabbdfcb..93ccc1cbdb35 100644 --- chrome/renderer/chrome_content_renderer_client.cc +++ chrome/renderer/chrome_content_renderer_client.cc -@@ -807,6 +807,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -752,6 +752,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( if ((status == chrome::mojom::PluginStatus::kUnauthorized || status == chrome::mojom::PluginStatus::kBlocked) && @@ -136,7 +136,7 @@ index d007c018c95f..1c48ced4abc2 100644 observer->IsPluginTemporarilyAllowed(identifier)) { status = chrome::mojom::PluginStatus::kAllowed; } -@@ -991,7 +992,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -936,7 +937,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( render_frame->GetRemoteAssociatedInterfaces()->GetInterface( &plugin_auth_host); plugin_auth_host->BlockedUnauthorizedPlugin(group_name, identifier); @@ -146,7 +146,7 @@ index d007c018c95f..1c48ced4abc2 100644 break; } case chrome::mojom::PluginStatus::kBlocked: { -@@ -1000,7 +1002,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -945,7 +947,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 d007c018c95f..1c48ced4abc2 100644 break; } case chrome::mojom::PluginStatus::kBlockedByPolicy: { -@@ -1010,7 +1013,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -955,7 +958,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( group_name)); RenderThread::Get()->RecordAction( UserMetricsAction("Plugin_BlockedByPolicy")); @@ -166,7 +166,7 @@ index d007c018c95f..1c48ced4abc2 100644 break; } case chrome::mojom::PluginStatus::kBlockedNoLoading: { -@@ -1018,7 +1022,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -963,7 +967,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( IDR_BLOCKED_PLUGIN_HTML, l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED_NO_LOADING, group_name)); @@ -177,10 +177,10 @@ index d007c018c95f..1c48ced4abc2 100644 } case chrome::mojom::PluginStatus::kComponentUpdateRequired: { diff --git chrome/renderer/plugins/chrome_plugin_placeholder.cc chrome/renderer/plugins/chrome_plugin_placeholder.cc -index eac14f9ae0d2..f6a3c8f0039b 100644 +index fe074e5b99ac..5d19f37db3d0 100644 --- chrome/renderer/plugins/chrome_plugin_placeholder.cc +++ chrome/renderer/plugins/chrome_plugin_placeholder.cc -@@ -350,8 +350,11 @@ void ChromePluginPlaceholder::OnBlockedContent( +@@ -357,8 +357,11 @@ void ChromePluginPlaceholder::OnBlockedContent( if (status == content::RenderFrame::PeripheralContentStatus::CONTENT_STATUS_TINY) { diff --git a/patch/patches/chrome_renderer.patch b/patch/patches/chrome_renderer.patch index e60fb69c5..289e449f7 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 245a7102ec7b..6ca00c19f881 100644 +index 2fa66151a8ad..de180c486eda 100644 --- chrome/renderer/BUILD.gn +++ chrome/renderer/BUILD.gn @@ -4,6 +4,7 @@ diff --git a/patch/patches/chrome_widevine.patch b/patch/patches/chrome_widevine.patch index d93f7380f..6df95b4ac 100644 --- a/patch/patches/chrome_widevine.patch +++ b/patch/patches/chrome_widevine.patch @@ -1,8 +1,8 @@ diff --git chrome/common/chrome_content_client.cc chrome/common/chrome_content_client.cc -index 45f0aa95dbde..83d4d5bb5eb9 100644 +index 406683776819..d8bf3372dd60 100644 --- chrome/common/chrome_content_client.cc +++ chrome/common/chrome_content_client.cc -@@ -98,7 +98,8 @@ +@@ -97,7 +97,8 @@ // Registers Widevine CDM if Widevine is enabled, the Widevine CDM is // bundled and not a component. When the Widevine CDM is a component, it is // registered in widevine_cdm_component_installer.cc. diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index ee9cf5819..583b3406c 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/download/download_target_determiner.cc chrome/browser/download/download_target_determiner.cc -index 25de1508db60..5fcfffa96b89 100644 +index 010f9511741c..a777f2d7a106 100644 --- chrome/browser/download/download_target_determiner.cc +++ chrome/browser/download/download_target_determiner.cc -@@ -597,8 +597,8 @@ void IsHandledBySafePlugin(content::ResourceContext* resource_context, +@@ -602,8 +602,8 @@ void IsHandledBySafePlugin(content::ResourceContext* resource_context, content::PluginService* plugin_service = content::PluginService::GetInstance(); bool plugin_found = plugin_service->GetPluginInfo( @@ -14,10 +14,10 @@ index 25de1508db60..5fcfffa96b89 100644 // The GetPlugins call causes the plugin list to be refreshed. Once that's // done we can retry the GetPluginInfo call. We break out of this cycle diff --git chrome/browser/plugins/chrome_plugin_service_filter.cc chrome/browser/plugins/chrome_plugin_service_filter.cc -index e16e00dc888b..5d102629a0d4 100644 +index c9ca4a805d1b..0928f0e237f1 100644 --- chrome/browser/plugins/chrome_plugin_service_filter.cc +++ chrome/browser/plugins/chrome_plugin_service_filter.cc -@@ -168,6 +168,7 @@ bool ChromePluginServiceFilter::IsPluginAvailable( +@@ -169,6 +169,7 @@ bool ChromePluginServiceFilter::IsPluginAvailable( int render_frame_id, const void* context, const GURL& plugin_content_url, @@ -66,10 +66,10 @@ index be77d0e074e9..949873b9bb22 100644 } diff --git content/browser/frame_host/navigation_handle_impl.cc content/browser/frame_host/navigation_handle_impl.cc -index 1e912186c32c..38d03aafc8b0 100644 +index 8191262c3815..0fc558a96b1b 100644 --- content/browser/frame_host/navigation_handle_impl.cc +++ content/browser/frame_host/navigation_handle_impl.cc -@@ -308,12 +308,6 @@ net::Error NavigationHandleImpl::GetNetErrorCode() { +@@ -316,12 +316,6 @@ net::Error NavigationHandleImpl::GetNetErrorCode() { } RenderFrameHostImpl* NavigationHandleImpl::GetRenderFrameHost() { @@ -83,10 +83,10 @@ index 1e912186c32c..38d03aafc8b0 100644 "WillFailRequest state should come before WillProcessResponse"); return navigation_request_->render_frame_host(); diff --git content/browser/frame_host/render_frame_message_filter.cc content/browser/frame_host/render_frame_message_filter.cc -index 09095ba2dc8e..2fb0becabf88 100644 +index 23470d05e0bd..550d1dd993af 100644 --- content/browser/frame_host/render_frame_message_filter.cc +++ content/browser/frame_host/render_frame_message_filter.cc -@@ -704,6 +704,7 @@ void RenderFrameMessageFilter::GetCookies(int render_frame_id, +@@ -707,6 +707,7 @@ void RenderFrameMessageFilter::GetCookies(int render_frame_id, void RenderFrameMessageFilter::OnGetPluginInfo( int render_frame_id, const GURL& url, @@ -94,7 +94,7 @@ index 09095ba2dc8e..2fb0becabf88 100644 const url::Origin& main_frame_origin, const std::string& mime_type, bool* found, -@@ -715,8 +716,8 @@ void RenderFrameMessageFilter::OnGetPluginInfo( +@@ -718,8 +719,8 @@ void RenderFrameMessageFilter::OnGetPluginInfo( bool allow_wildcard = true; *found = plugin_service_->GetPluginInfo( render_process_id_, render_frame_id, resource_context_, url, @@ -133,10 +133,10 @@ index 31aa4bc38442..0314343499d3 100644 if (stale) { // Refresh the plugins asynchronously. diff --git content/browser/loader/navigation_url_loader_impl.cc content/browser/loader/navigation_url_loader_impl.cc -index 161ab06fa1dd..fddb3557b3c7 100644 +index f9d3104fa375..729b6886e9df 100644 --- content/browser/loader/navigation_url_loader_impl.cc +++ content/browser/loader/navigation_url_loader_impl.cc -@@ -1141,7 +1141,7 @@ class NavigationURLLoaderImpl::URLLoaderRequestController +@@ -1156,7 +1156,7 @@ class NavigationURLLoaderImpl::URLLoaderRequestController // path does as well for navigations. bool has_plugin = PluginService::GetInstance()->GetPluginInfo( -1 /* render_process_id */, -1 /* render_frame_id */, resource_context_, @@ -180,10 +180,10 @@ index cb19abcd26b8..12d66dd7db6e 100644 const std::string& mime_type, bool allow_wildcard, diff --git content/browser/renderer_host/plugin_registry_impl.cc content/browser/renderer_host/plugin_registry_impl.cc -index 0c598ddb2df7..1049a9ac2b74 100644 +index 427e1cb8946c..2f00734e9dfc 100644 --- content/browser/renderer_host/plugin_registry_impl.cc +++ content/browser/renderer_host/plugin_registry_impl.cc -@@ -25,6 +25,7 @@ void PluginRegistryImpl::Bind(blink::mojom::PluginRegistryRequest request) { +@@ -27,6 +27,7 @@ void PluginRegistryImpl::Bind(blink::mojom::PluginRegistryRequest request) { } void PluginRegistryImpl::GetPlugins(bool refresh, @@ -191,7 +191,7 @@ index 0c598ddb2df7..1049a9ac2b74 100644 const url::Origin& main_frame_origin, GetPluginsCallback callback) { auto* plugin_service = PluginServiceImpl::GetInstance(); -@@ -46,17 +47,18 @@ void PluginRegistryImpl::GetPlugins(bool refresh, +@@ -48,10 +49,11 @@ void PluginRegistryImpl::GetPlugins(bool refresh, plugin_service->GetPlugins(base::BindOnce( &PluginRegistryImpl::GetPluginsComplete, weak_factory_.GetWeakPtr(), @@ -204,15 +204,16 @@ index 0c598ddb2df7..1049a9ac2b74 100644 const url::Origin& main_frame_origin, GetPluginsCallback callback, const std::vector& all_plugins) { - PluginServiceFilter* filter = PluginServiceImpl::GetInstance()->GetFilter(); - std::vector plugins; +@@ -61,7 +63,7 @@ void PluginRegistryImpl::GetPluginsComplete( + GetContentClient()->browser()->GetMimeHandlerViewMimeTypes( + resource_context_); - const int child_process_id = -1; + const int child_process_id = render_process_id_; const int routing_id = MSG_ROUTING_NONE; // In this loop, copy the WebPluginInfo (and do not use a reference) because // the filter might mutate it. -@@ -65,7 +67,7 @@ void PluginRegistryImpl::GetPluginsComplete( +@@ -70,7 +72,7 @@ void PluginRegistryImpl::GetPluginsComplete( if (!filter || filter->IsPluginAvailable(child_process_id, routing_id, resource_context_, main_frame_origin.GetURL(), @@ -252,10 +253,10 @@ index 3009401dac6b..b4c5a9e2db50 100644 }; diff --git content/common/frame_messages.h content/common/frame_messages.h -index f1b940d02a3e..7ba4495c34b0 100644 +index 5ea18183cc12..a40b09f2e0e4 100644 --- content/common/frame_messages.h +++ content/common/frame_messages.h -@@ -1319,9 +1319,10 @@ IPC_MESSAGE_ROUTED1(FrameHostMsg_PepperStopsPlayback, +@@ -1278,9 +1278,10 @@ IPC_MESSAGE_ROUTED1(FrameHostMsg_PepperStopsPlayback, // type. If there is no matching plugin, |found| is false. // |actual_mime_type| is the actual mime type supported by the // found plugin. @@ -292,7 +293,7 @@ index 3b610b1f554e..7c439e060779 100644 WebPluginInfo* plugin) = 0; diff --git content/public/renderer/content_renderer_client.h content/public/renderer/content_renderer_client.h -index 3b5c53a10c8d..bb56c4ed5c77 100644 +index a7413c47e02b..54e7f221ed04 100644 --- content/public/renderer/content_renderer_client.h +++ content/public/renderer/content_renderer_client.h @@ -73,6 +73,9 @@ class CONTENT_EXPORT ContentRendererClient { @@ -305,7 +306,7 @@ index 3b5c53a10c8d..bb56c4ed5c77 100644 // Notifies that a new RenderFrame has been created. virtual void RenderFrameCreated(RenderFrame* render_frame) {} -@@ -333,6 +336,10 @@ class CONTENT_EXPORT ContentRendererClient { +@@ -332,6 +335,10 @@ class CONTENT_EXPORT ContentRendererClient { // This method may invalidate the frame. virtual void RunScriptsAtDocumentIdle(RenderFrame* render_frame) {} @@ -317,10 +318,10 @@ index 3b5c53a10c8d..bb56c4ed5c77 100644 // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} diff --git content/public/renderer/render_frame_observer.h content/public/renderer/render_frame_observer.h -index c9ce48e3c3ec..0a3448b194a3 100644 +index f16b90c8077b..8f6c7cddaf9a 100644 --- content/public/renderer/render_frame_observer.h +++ content/public/renderer/render_frame_observer.h -@@ -193,6 +193,9 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, +@@ -194,6 +194,9 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, virtual void DidReceiveTransferSizeUpdate(int resource_id, int received_data_length) {} @@ -331,10 +332,10 @@ index c9ce48e3c3ec..0a3448b194a3 100644 virtual void FocusedNodeChanged(const blink::WebNode& node) {} diff --git content/renderer/render_frame_impl.cc content/renderer/render_frame_impl.cc -index b82743edbc63..cae550657487 100644 +index 61e0039608e8..b79b6a2dbc22 100644 --- content/renderer/render_frame_impl.cc +++ content/renderer/render_frame_impl.cc -@@ -3922,7 +3922,8 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( +@@ -3926,7 +3926,8 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( std::string mime_type; bool found = false; Send(new FrameHostMsg_GetPluginInfo( @@ -344,7 +345,7 @@ index b82743edbc63..cae550657487 100644 params.mime_type.Utf8(), &found, &info, &mime_type)); if (!found) return nullptr; -@@ -4340,6 +4341,8 @@ void RenderFrameImpl::FrameDetached(DetachType type) { +@@ -4353,6 +4354,8 @@ void RenderFrameImpl::FrameDetached(DetachType type) { void RenderFrameImpl::FrameFocused() { Send(new FrameHostMsg_FrameFocused(routing_id_)); @@ -352,9 +353,9 @@ index b82743edbc63..cae550657487 100644 + observer.FrameFocused(); } - void RenderFrameImpl::WillCommitProvisionalLoad() { + void RenderFrameImpl::DidChangeName(const blink::WebString& name) { diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index 9d029d4ee65b..d5aff5825371 100644 +index 47903ba66fd6..8c2fdded4d32 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc @@ -806,6 +806,8 @@ void RenderThreadImpl::Init() { @@ -367,10 +368,10 @@ index 9d029d4ee65b..d5aff5825371 100644 base::Bind(&RenderThreadImpl::OnRendererInterfaceRequest, base::Unretained(this))); diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc -index 1277a3b2c1e4..9e62e5ce6dd6 100644 +index 2c6828e7b474..f0e0611a0c59 100644 --- content/renderer/renderer_blink_platform_impl.cc +++ content/renderer/renderer_blink_platform_impl.cc -@@ -1070,6 +1070,14 @@ void RendererBlinkPlatformImpl::WorkerContextCreated( +@@ -1113,6 +1113,14 @@ void RendererBlinkPlatformImpl::RecordMetricsForBackgroundedRendererPurge() { //------------------------------------------------------------------------------ @@ -386,10 +387,10 @@ index 1277a3b2c1e4..9e62e5ce6dd6 100644 if (!web_database_host_) { web_database_host_ = blink::mojom::ThreadSafeWebDatabaseHostPtr::Create( diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h -index 38ff3be90843..6514d37afe00 100644 +index d8620e051044..517d795f815e 100644 --- content/renderer/renderer_blink_platform_impl.h +++ content/renderer/renderer_blink_platform_impl.h -@@ -235,6 +235,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -241,6 +241,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { std::unique_ptr CreateDataConsumerHandle( mojo::ScopedDataPipeConsumerHandle handle) override; diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index ee260e4b4..c354333d0 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -45,7 +45,7 @@ index bcf172e645a2..f879aa745adf 100644 // on the given |command_line|. void SetCrashKeysFromCommandLine(const base::CommandLine& command_line); diff --git chrome_elf/BUILD.gn chrome_elf/BUILD.gn -index 61efc526eed9..b8d101eda7fd 100644 +index 7643f2793a0a..5da3775ac932 100644 --- chrome_elf/BUILD.gn +++ chrome_elf/BUILD.gn @@ -7,6 +7,7 @@ diff --git a/patch/patches/crashpad_tp_1995.patch b/patch/patches/crashpad_tp_1995.patch index 0d02c700b..f59808009 100644 --- a/patch/patches/crashpad_tp_1995.patch +++ b/patch/patches/crashpad_tp_1995.patch @@ -1,5 +1,5 @@ diff --git third_party/crashpad/crashpad/client/prune_crash_reports.cc third_party/crashpad/crashpad/client/prune_crash_reports.cc -index d045eb6a65a0..bc347a30ea26 100644 +index c6fa389ba88f..8912e2169972 100644 --- third_party/crashpad/crashpad/client/prune_crash_reports.cc +++ third_party/crashpad/crashpad/client/prune_crash_reports.cc @@ -66,13 +66,19 @@ void PruneCrashReportDatabase(CrashReportDatabase* database, @@ -146,7 +146,7 @@ index a2b0c74636f4..01370fdc20d9 100644 struct Data; diff --git third_party/crashpad/crashpad/handler/BUILD.gn third_party/crashpad/crashpad/handler/BUILD.gn -index b22ab2c4b912..223e43e910d7 100644 +index e1e673e26a01..ae0224dd847d 100644 --- third_party/crashpad/crashpad/handler/BUILD.gn +++ third_party/crashpad/crashpad/handler/BUILD.gn @@ -12,6 +12,7 @@ diff --git a/patch/patches/devtools_product_2300.patch b/patch/patches/devtools_product_2300.patch index fa09b1b2d..8624c17ac 100644 --- a/patch/patches/devtools_product_2300.patch +++ b/patch/patches/devtools_product_2300.patch @@ -1,8 +1,8 @@ diff --git content/browser/devtools/devtools_http_handler.cc content/browser/devtools/devtools_http_handler.cc -index 3a1bc8719732..129f178fd5a7 100644 +index 94892dd57d36..1d4036fdedf8 100644 --- content/browser/devtools/devtools_http_handler.cc +++ content/browser/devtools/devtools_http_handler.cc -@@ -574,7 +574,7 @@ void DevToolsHttpHandler::OnJsonRequest( +@@ -572,7 +572,7 @@ void DevToolsHttpHandler::OnJsonRequest( version.SetString("Protocol-Version", DevToolsAgentHost::GetProtocolVersion()); version.SetString("WebKit-Version", GetWebKitVersion()); diff --git a/patch/patches/extensions_1947.patch b/patch/patches/extensions_1947.patch index c9f1b6252..b8776f1ac 100644 --- a/patch/patches/extensions_1947.patch +++ b/patch/patches/extensions_1947.patch @@ -27,10 +27,10 @@ index 9e81f0a33ede..b796e79ae7ef 100644 auto* browser_context = web_contents->GetBrowserContext(); diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index 7fc0a70f4e79..7d9a334c06d4 100644 +index b89c08735e10..8a63d21d6771 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h -@@ -1491,6 +1491,10 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1506,6 +1506,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct() const; @@ -42,7 +42,7 @@ index 7fc0a70f4e79..7d9a334c06d4 100644 virtual std::string GetUserAgent() const; diff --git extensions/browser/extension_host.cc extensions/browser/extension_host.cc -index 0714c63350c8..c1acbd8bd531 100644 +index 8cc9503fc131..b74c385b40a2 100644 --- extensions/browser/extension_host.cc +++ extensions/browser/extension_host.cc @@ -67,11 +67,12 @@ ExtensionHost::ExtensionHost(const Extension* extension, diff --git a/patch/patches/external_textures_1006.patch b/patch/patches/external_textures_1006.patch index c3de39db2..e022f17bf 100644 --- a/patch/patches/external_textures_1006.patch +++ b/patch/patches/external_textures_1006.patch @@ -27,10 +27,10 @@ index 3c4d448b972f..fa3f01f59484 100644 virtual void OnReflectorChanged(); diff --git content/browser/compositor/gpu_process_transport_factory.cc content/browser/compositor/gpu_process_transport_factory.cc -index 4768ac1a3bac..9432533a3db2 100644 +index 0da5e9c1ecbc..49c79455b4aa 100644 --- content/browser/compositor/gpu_process_transport_factory.cc +++ content/browser/compositor/gpu_process_transport_factory.cc -@@ -209,6 +209,18 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() { +@@ -208,6 +208,18 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() { task_graph_runner_->Shutdown(); } @@ -49,7 +49,7 @@ index 4768ac1a3bac..9432533a3db2 100644 std::unique_ptr GpuProcessTransportFactory::CreateSoftwareOutputDevice( gfx::AcceleratedWidget widget, -@@ -452,11 +464,20 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( +@@ -450,11 +462,20 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( // surfaces as they are not following the correct mode. DisableGpuCompositing(compositor.get()); } @@ -73,7 +73,7 @@ index 4768ac1a3bac..9432533a3db2 100644 } else { DCHECK(context_provider); const auto& capabilities = context_provider->ContextCapabilities(); -@@ -464,7 +485,8 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( +@@ -462,7 +483,8 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( display_output_surface = std::make_unique( context_provider, std::move(vsync_callback), @@ -83,7 +83,7 @@ index 4768ac1a3bac..9432533a3db2 100644 } else if (capabilities.surfaceless) { #if defined(OS_MACOSX) const auto& gpu_feature_info = context_provider->GetGpuFeatureInfo(); -@@ -909,7 +931,8 @@ GpuProcessTransportFactory::CreatePerCompositorData( +@@ -914,7 +936,8 @@ GpuProcessTransportFactory::CreatePerCompositorData( gfx::AcceleratedWidget widget = compositor->widget(); auto data = std::make_unique(); @@ -94,10 +94,10 @@ index 4768ac1a3bac..9432533a3db2 100644 } else { #if defined(GPU_SURFACE_HANDLE_IS_ACCELERATED_WINDOW) diff --git content/browser/compositor/gpu_process_transport_factory.h content/browser/compositor/gpu_process_transport_factory.h -index 4c4548058be5..335099597a9d 100644 +index 525fa0c06b33..1f95b4f53496 100644 --- content/browser/compositor/gpu_process_transport_factory.h +++ content/browser/compositor/gpu_process_transport_factory.h -@@ -99,6 +99,7 @@ class GpuProcessTransportFactory : public ui::ContextFactory, +@@ -101,6 +101,7 @@ class GpuProcessTransportFactory : public ui::ContextFactory, void IssueExternalBeginFrame(ui::Compositor* compositor, const viz::BeginFrameArgs& args) override; void SetOutputIsSecure(ui::Compositor* compositor, bool secure) override; @@ -449,7 +449,7 @@ index b68942087179..2248762fcd77 100644 "glInvalidateReadbackBufferShadowDataCHROMIUM", reinterpret_cast( diff --git gpu/command_buffer/client/gles2_cmd_helper_autogen.h gpu/command_buffer/client/gles2_cmd_helper_autogen.h -index 02f89cdad67c..a2da1b7c518a 100644 +index e2ac01959e22..83fb39054432 100644 --- gpu/command_buffer/client/gles2_cmd_helper_autogen.h +++ gpu/command_buffer/client/gles2_cmd_helper_autogen.h @@ -3521,6 +3521,42 @@ void DestroyGpuFenceCHROMIUM(GLuint gpu_fence_id) { @@ -496,10 +496,10 @@ index 02f89cdad67c..a2da1b7c518a 100644 GLint shm_id, GLuint shm_offset, diff --git gpu/command_buffer/client/gles2_implementation.cc gpu/command_buffer/client/gles2_implementation.cc -index 985e6324567b..d2e067f28521 100644 +index e748a48a8e2a..a92b41df54d3 100644 --- gpu/command_buffer/client/gles2_implementation.cc +++ gpu/command_buffer/client/gles2_implementation.cc -@@ -7680,6 +7680,22 @@ void GLES2Implementation::Viewport(GLint x, +@@ -7687,6 +7687,22 @@ void GLES2Implementation::Viewport(GLint x, CheckGLError(); } @@ -682,7 +682,7 @@ index 4b7932e147b0..b0f5f2cafae3 100644 GLuint buffer_id) { TRACE_EVENT_BINARY_EFFICIENT0( diff --git gpu/command_buffer/common/gles2_cmd_format_autogen.h gpu/command_buffer/common/gles2_cmd_format_autogen.h -index 68d9861198e0..98e8772b2993 100644 +index 2a59e11c2d25..fbb6c4551d70 100644 --- gpu/command_buffer/common/gles2_cmd_format_autogen.h +++ gpu/command_buffer/common/gles2_cmd_format_autogen.h @@ -17336,6 +17336,193 @@ static_assert(offsetof(DestroyGpuFenceCHROMIUM, header) == 0, @@ -880,7 +880,7 @@ index 68d9861198e0..98e8772b2993 100644 typedef SetReadbackBufferShadowAllocationINTERNAL ValueType; static const CommandId kCmdId = kSetReadbackBufferShadowAllocationINTERNAL; diff --git gpu/command_buffer/common/gles2_cmd_format_test_autogen.h gpu/command_buffer/common/gles2_cmd_format_test_autogen.h -index 790e72622c7d..bf87d86d9386 100644 +index 128473360af0..b4947682c816 100644 --- gpu/command_buffer/common/gles2_cmd_format_test_autogen.h +++ gpu/command_buffer/common/gles2_cmd_format_test_autogen.h @@ -5721,6 +5721,52 @@ TEST_F(GLES2FormatTest, DestroyGpuFenceCHROMIUM) { @@ -954,7 +954,7 @@ index b3dd9b38feba..bcb3656e4481 100644 enum CommandId { kOneBeforeStartPoint = diff --git gpu/command_buffer/gles2_cmd_buffer_functions.txt gpu/command_buffer/gles2_cmd_buffer_functions.txt -index aa55852d05dd..4638d070c48c 100644 +index 2f9b93fda757..9897a2790587 100644 --- gpu/command_buffer/gles2_cmd_buffer_functions.txt +++ gpu/command_buffer/gles2_cmd_buffer_functions.txt @@ -417,6 +417,12 @@ GL_APICALL GLuint GL_APIENTRY glCreateClientGpuFenceCHROMIUM (ClientGpuFen @@ -971,7 +971,7 @@ index aa55852d05dd..4638d070c48c 100644 GL_APICALL void GL_APIENTRY glInvalidateReadbackBufferShadowDataCHROMIUM (GLidBuffer buffer_id); // (used for CHROMIUM_nonblocking_readback implementation) diff --git gpu/command_buffer/service/BUILD.gn gpu/command_buffer/service/BUILD.gn -index 6955858281e7..045dee3185bf 100644 +index bbf81312c8d9..817a6b6fa421 100644 --- gpu/command_buffer/service/BUILD.gn +++ gpu/command_buffer/service/BUILD.gn @@ -107,6 +107,8 @@ target(link_target_type, "gles2_sources") { @@ -981,10 +981,10 @@ index 6955858281e7..045dee3185bf 100644 + "//cef/libcef/browser/gpu/external_texture_manager.cc", + "//cef/libcef/browser/gpu/external_texture_manager.h", "abstract_texture.h", - "buffer_manager.cc", - "buffer_manager.h", + "abstract_texture_impl_shared_context_state.cc", + "abstract_texture_impl_shared_context_state.h", diff --git gpu/command_buffer/service/gles2_cmd_decoder.cc gpu/command_buffer/service/gles2_cmd_decoder.cc -index d7197fe6455c..bfb072283725 100644 +index 5bb86a2a5d32..5439662701af 100644 --- gpu/command_buffer/service/gles2_cmd_decoder.cc +++ gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -38,6 +38,7 @@ @@ -1009,7 +1009,7 @@ index d7197fe6455c..bfb072283725 100644 ImageManager* image_manager() { return group_->image_manager(); } VertexArrayManager* vertex_array_manager() { -@@ -2643,6 +2651,8 @@ class GLES2DecoderImpl : public GLES2Decoder, public ErrorStateClient { +@@ -2644,6 +2652,8 @@ class GLES2DecoderImpl : public GLES2Decoder, public ErrorStateClient { std::unique_ptr vertex_array_manager_; @@ -1018,7 +1018,7 @@ index d7197fe6455c..bfb072283725 100644 base::flat_set> writes_submitted_but_not_completed_; // The format of the back buffer_ -@@ -5618,6 +5628,59 @@ error::Error GLES2DecoderImpl::HandleDestroyGpuFenceCHROMIUM( +@@ -5619,6 +5629,59 @@ error::Error GLES2DecoderImpl::HandleDestroyGpuFenceCHROMIUM( return error::kNoError; } @@ -1079,7 +1079,7 @@ index d7197fe6455c..bfb072283725 100644 for (auto it = saved_back_textures_.begin(); it != saved_back_textures_.end(); ++it) { diff --git gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc -index 805d9ae94712..6723682670e4 100644 +index 2766bcbc5418..417f26076423 100644 --- gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc +++ gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc @@ -11,6 +11,7 @@ @@ -1090,7 +1090,7 @@ index 805d9ae94712..6723682670e4 100644 #include "gpu/command_buffer/service/command_buffer_service.h" #include "gpu/command_buffer/service/decoder_client.h" #include "gpu/command_buffer/service/feature_info.h" -@@ -2501,6 +2502,67 @@ error::Error GLES2DecoderPassthroughImpl::CheckSwapBuffersResult( +@@ -2512,6 +2513,67 @@ error::Error GLES2DecoderPassthroughImpl::CheckSwapBuffersResult( return error::kNoError; } @@ -1210,7 +1210,7 @@ index 311c26b6e0ea..8583fdfecc19 100644 observer_list_.AddObserver(observer); } diff --git ui/compositor/compositor.h ui/compositor/compositor.h -index 29784c677f4b..6e82af0d6aab 100644 +index 4e28277f7750..cd283ca49bd7 100644 --- ui/compositor/compositor.h +++ ui/compositor/compositor.h @@ -25,6 +25,7 @@ @@ -1221,7 +1221,7 @@ index 29784c677f4b..6e82af0d6aab 100644 #include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkMatrix44.h" #include "ui/compositor/compositor_animation_observer.h" -@@ -158,6 +159,8 @@ class COMPOSITOR_EXPORT ContextFactoryPrivate { +@@ -160,6 +161,8 @@ class COMPOSITOR_EXPORT ContextFactoryPrivate { const viz::BeginFrameArgs& args) = 0; virtual void SetOutputIsSecure(Compositor* compositor, bool secure) = 0; @@ -1230,7 +1230,7 @@ index 29784c677f4b..6e82af0d6aab 100644 }; // This class abstracts the creation of the 3D context for the compositor. It is -@@ -193,6 +196,17 @@ class COMPOSITOR_EXPORT ContextFactory { +@@ -200,6 +203,17 @@ class COMPOSITOR_EXPORT ContextFactory { virtual bool SyncTokensRequiredForDisplayCompositor() = 0; }; @@ -1248,7 +1248,7 @@ index 29784c677f4b..6e82af0d6aab 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 -@@ -235,6 +249,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, +@@ -242,6 +256,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, // Schedules a redraw of the layer tree associated with this compositor. void ScheduleDraw(); @@ -1258,7 +1258,7 @@ index 29784c677f4b..6e82af0d6aab 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 -@@ -348,6 +365,10 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, +@@ -355,6 +372,10 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, return task_runner_; } @@ -1269,7 +1269,7 @@ index 29784c677f4b..6e82af0d6aab 100644 // Compositor does not own observers. It is the responsibility of the // observer to remove itself when it is done observing. void AddObserver(CompositorObserver* observer); -@@ -458,6 +479,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, +@@ -465,6 +486,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, ui::ContextFactory* context_factory_; ui::ContextFactoryPrivate* context_factory_private_; @@ -1278,7 +1278,7 @@ index 29784c677f4b..6e82af0d6aab 100644 // The root of the Layer tree drawn by this compositor. Layer* root_layer_ = nullptr; -@@ -492,6 +515,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, +@@ -499,6 +522,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, ExternalBeginFrameClient* const external_begin_frame_client_; @@ -1288,10 +1288,10 @@ index 29784c677f4b..6e82af0d6aab 100644 // The device scale factor of the monitor that this compositor is compositing diff --git ui/compositor/host/host_context_factory_private.cc ui/compositor/host/host_context_factory_private.cc -index 8297e1aabe3b..6acb9fa6cdfb 100644 +index 2b23ed42a933..109841847888 100644 --- ui/compositor/host/host_context_factory_private.cc +++ ui/compositor/host/host_context_factory_private.cc -@@ -255,6 +255,10 @@ void HostContextFactoryPrivate::SetOutputIsSecure(Compositor* compositor, +@@ -254,6 +254,10 @@ void HostContextFactoryPrivate::SetOutputIsSecure(Compositor* compositor, iter->second.display_private->SetOutputIsSecure(secure); } @@ -1303,7 +1303,7 @@ index 8297e1aabe3b..6acb9fa6cdfb 100644 // When running with viz there is no FrameSinkManagerImpl in the browser // process. FrameSinkManagerImpl runs in the GPU process instead. Anything in diff --git ui/compositor/host/host_context_factory_private.h ui/compositor/host/host_context_factory_private.h -index a74630258fd5..3a370c422e21 100644 +index 18cd096449d2..aa25ea058925 100644 --- ui/compositor/host/host_context_factory_private.h +++ ui/compositor/host/host_context_factory_private.h @@ -50,6 +50,8 @@ class HostContextFactoryPrivate : public ContextFactoryPrivate { diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index fdeb57acc..1b935f1f9 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -1,8 +1,8 @@ diff --git .gn .gn -index 0591fc512d52..23d066a9254d 100644 +index 94ccc332ef23..2eae5c3a0c9f 100644 --- .gn +++ .gn -@@ -669,6 +669,8 @@ exec_script_whitelist = +@@ -666,6 +666,8 @@ exec_script_whitelist = # in the Chromium repo outside of //build. "//build_overrides/build.gni", @@ -12,7 +12,7 @@ index 0591fc512d52..23d066a9254d 100644 # https://crbug.com/474506. "//clank/java/BUILD.gn", diff --git BUILD.gn BUILD.gn -index f50c9f99a36e..33be1efac8f0 100644 +index 40343b6a520a..f59de9f9999e 100644 --- BUILD.gn +++ BUILD.gn @@ -189,6 +189,7 @@ group("gn_all") { @@ -56,10 +56,10 @@ index 982fbe8d3f0d..e757be4688f1 100644 + "studio path") } diff --git build/toolchain/win/setup_toolchain.py build/toolchain/win/setup_toolchain.py -index 2c8675206f31..d3e419d8fe98 100644 +index ef8aeda56458..5b7f057311b9 100644 --- build/toolchain/win/setup_toolchain.py +++ build/toolchain/win/setup_toolchain.py -@@ -134,22 +134,25 @@ def _LoadToolchainEnv(cpu, sdk_dir, target_store): +@@ -136,22 +136,25 @@ def _LoadToolchainEnv(cpu, sdk_dir, target_store): # variable. if 'VSINSTALLDIR' in os.environ: del os.environ['VSINSTALLDIR'] @@ -100,10 +100,10 @@ index 2c8675206f31..d3e419d8fe98 100644 diff --git build/vs_toolchain.py build/vs_toolchain.py -index 1ab7be527726..1467d18c1a81 100755 +index 0ce237fe1323..6201bbba992c 100755 --- build/vs_toolchain.py +++ build/vs_toolchain.py -@@ -76,11 +76,18 @@ def SetEnvironmentAndGetRuntimeDllDirs(): +@@ -78,11 +78,18 @@ def SetEnvironmentAndGetRuntimeDllDirs(): runtime_path = os.path.pathsep.join(vs_runtime_dll_dirs) os.environ['PATH'] = runtime_path + os.path.pathsep + os.environ['PATH'] elif sys.platform == 'win32' and not depot_tools_win_toolchain: @@ -123,10 +123,10 @@ index 1ab7be527726..1467d18c1a81 100755 # directory in order to run binaries locally, but they are needed in order # to create isolates or the mini_installer. Copying them to the output diff --git chrome/chrome_paks.gni chrome/chrome_paks.gni -index ca18ca7ca65b..b51ebadccd0d 100644 +index 803db7cc95fd..e450ba296e77 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni -@@ -263,7 +263,7 @@ template("chrome_paks") { +@@ -261,7 +261,7 @@ template("chrome_paks") { } input_locales = locales @@ -136,7 +136,7 @@ index ca18ca7ca65b..b51ebadccd0d 100644 if (is_mac) { output_locales = locales_as_mac_outputs diff --git chrome/installer/mini_installer/BUILD.gn chrome/installer/mini_installer/BUILD.gn -index ec629333b006..981f3f26548d 100644 +index 397c151b160b..adfc8c0e27b2 100644 --- chrome/installer/mini_installer/BUILD.gn +++ chrome/installer/mini_installer/BUILD.gn @@ -134,7 +134,7 @@ template("generate_mini_installer") { diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index 8cabe77db..6bb5d3892 100644 --- a/patch/patches/gritsettings.patch +++ b/patch/patches/gritsettings.patch @@ -1,8 +1,8 @@ diff --git tools/gritsettings/resource_ids tools/gritsettings/resource_ids -index e823c9b9edfd..2402613c8d44 100644 +index dc660db144df..6fc116b2c8ff 100644 --- tools/gritsettings/resource_ids +++ tools/gritsettings/resource_ids -@@ -431,4 +431,11 @@ +@@ -434,4 +434,11 @@ # Please read the header and find the right section above instead. # Resource ids starting at 31000 are reserved for projects built on Chromium. diff --git a/patch/patches/ime_1610.patch b/patch/patches/ime_1610.patch index 70533315d..f6e2067b8 100644 --- a/patch/patches/ime_1610.patch +++ b/patch/patches/ime_1610.patch @@ -1,5 +1,5 @@ diff --git ui/base/ime/input_method_win_base.cc ui/base/ime/input_method_win_base.cc -index 6b7c3bef62ae..e731d5037a4e 100644 +index bd7edb13c4d1..8917f77e557e 100644 --- ui/base/ime/input_method_win_base.cc +++ ui/base/ime/input_method_win_base.cc @@ -267,8 +267,9 @@ bool InputMethodWinBase::IsWindowFocused(const TextInputClient* client) const { diff --git a/patch/patches/linux_assets_path_1936.patch b/patch/patches/linux_assets_path_1936.patch index 39fde5688..67a1ea583 100644 --- a/patch/patches/linux_assets_path_1936.patch +++ b/patch/patches/linux_assets_path_1936.patch @@ -1,5 +1,5 @@ diff --git sandbox/linux/suid/client/setuid_sandbox_host.cc sandbox/linux/suid/client/setuid_sandbox_host.cc -index 7a103bf7f13c..cd3167ebed09 100644 +index a277ffa5eb59..3935b9f8c17c 100644 --- sandbox/linux/suid/client/setuid_sandbox_host.cc +++ sandbox/linux/suid/client/setuid_sandbox_host.cc @@ -120,7 +120,7 @@ bool SetuidSandboxHost::IsDisabledViaEnvironment() { diff --git a/patch/patches/linux_gtk_2014.patch b/patch/patches/linux_gtk_2014.patch index c53a5fadd..dd5c5cfd5 100644 --- a/patch/patches/linux_gtk_2014.patch +++ b/patch/patches/linux_gtk_2014.patch @@ -28,7 +28,7 @@ index 547b42fb5c66..0eae3470e1bb 100644 # Additional dependent variables ----------------------------------------------- diff --git chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc -index faae7805435a..5101e0d51bf2 100644 +index 79c24d729c08..1c2b19b75e6b 100644 --- chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc +++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc @@ -6,6 +6,7 @@ @@ -61,17 +61,17 @@ index faae7805435a..5101e0d51bf2 100644 void ChromeBrowserMainExtraPartsViewsLinux::PreEarlyInitialization() { +#if !BUILDFLAG(ENABLE_CEF) views::LinuxUI* gtk_ui = BuildGtkUi(); - gtk_ui->SetNativeThemeOverride(base::Bind(&GetNativeThemeForWindow)); + gtk_ui->SetNativeThemeOverride(base::BindRepeating(&GetNativeThemeForWindow)); views::LinuxUI::SetInstance(gtk_ui); +#endif } void ChromeBrowserMainExtraPartsViewsLinux::ToolkitInitialized() { diff --git chrome/test/BUILD.gn chrome/test/BUILD.gn -index fd7f3e60a599..9678ad4828cf 100644 +index a4bd99bf7cd1..13b7b96609bf 100644 --- chrome/test/BUILD.gn +++ chrome/test/BUILD.gn -@@ -4115,7 +4115,7 @@ test("unit_tests") { +@@ -4146,7 +4146,7 @@ test("unit_tests") { "../browser/ui/input_method/input_method_engine_unittest.cc", ] } @@ -80,7 +80,7 @@ index fd7f3e60a599..9678ad4828cf 100644 sources += [ "../browser/ui/libgtkui/select_file_dialog_impl_gtk_unittest.cc" ] deps += [ "//build/config/linux/gtk" ] -@@ -4136,7 +4136,7 @@ test("unit_tests") { +@@ -4167,7 +4167,7 @@ test("unit_tests") { if (use_gio) { configs += [ "//build/linux:gio_config" ] } @@ -89,7 +89,7 @@ index fd7f3e60a599..9678ad4828cf 100644 deps += [ "//chrome/browser/ui/libgtkui" ] } -@@ -5152,7 +5152,7 @@ if (!is_android) { +@@ -5184,7 +5184,7 @@ if (!is_android) { # suites, it seems like one or another starts timing out too. "../browser/ui/views/keyboard_access_browsertest.cc", ] @@ -99,7 +99,7 @@ index fd7f3e60a599..9678ad4828cf 100644 "../browser/ui/libgtkui/select_file_dialog_interactive_uitest.cc", ] diff --git remoting/host/BUILD.gn remoting/host/BUILD.gn -index 647f01cfae49..fdbc8f8d49aa 100644 +index 7aeefa7b1b89..13fc19218a4c 100644 --- remoting/host/BUILD.gn +++ remoting/host/BUILD.gn @@ -351,7 +351,7 @@ static_library("common") { @@ -111,7 +111,7 @@ index 647f01cfae49..fdbc8f8d49aa 100644 deps += [ "//build/config/linux/gtk" ] } } else { -@@ -733,7 +733,7 @@ if (enable_me2me_host) { +@@ -734,7 +734,7 @@ if (enable_me2me_host) { deps += [ "//components/policy:generated" ] } @@ -134,10 +134,10 @@ index ffaaa0b5b423..9fc7f88859a9 100644 deps += [ "//build/config/linux/gtk" ] } diff --git remoting/host/it2me/BUILD.gn remoting/host/it2me/BUILD.gn -index 39dc46737578..e5cb11d5ef04 100644 +index e6298a0cb0b2..cee7134af3ec 100644 --- remoting/host/it2me/BUILD.gn +++ remoting/host/it2me/BUILD.gn -@@ -53,7 +53,7 @@ source_set("common") { +@@ -56,7 +56,7 @@ source_set("common") { "//remoting/resources", "//remoting/signaling", ] @@ -146,7 +146,7 @@ index 39dc46737578..e5cb11d5ef04 100644 deps += [ "//build/config/linux/gtk", -@@ -247,7 +247,7 @@ if (!is_chromeos && enable_remoting_host) { +@@ -250,7 +250,7 @@ if (!is_chromeos && enable_remoting_host) { } } diff --git a/patch/patches/message_loop.patch b/patch/patches/message_loop.patch index fdf6e06f5..2095b51d5 100644 --- a/patch/patches/message_loop.patch +++ b/patch/patches/message_loop.patch @@ -1,5 +1,5 @@ diff --git base/message_loop/message_loop.cc base/message_loop/message_loop.cc -index fff922d36819..28fea401be5f 100644 +index ae58f829393d..453368e55bb7 100644 --- base/message_loop/message_loop.cc +++ base/message_loop/message_loop.cc @@ -163,6 +163,9 @@ MessageLoopBase* MessageLoop::GetMessageLoopBase() { @@ -25,10 +25,10 @@ index 46782b49a7f0..78ebaf71cbdf 100644 #if defined(OS_IOS) // On iOS, the main message loop cannot be Run(). Instead call Attach(), diff --git base/message_loop/message_loop_current.cc base/message_loop/message_loop_current.cc -index c0b2ff7e0ad6..75802589ca01 100644 +index 7dcab95f6838..4a6ec38e051a 100644 --- base/message_loop/message_loop_current.cc +++ base/message_loop/message_loop_current.cc -@@ -49,6 +49,8 @@ void MessageLoopCurrent::AddDestructionObserver( +@@ -46,6 +46,8 @@ void MessageLoopCurrent::AddDestructionObserver( void MessageLoopCurrent::RemoveDestructionObserver( DestructionObserver* destruction_observer) { @@ -38,7 +38,7 @@ index c0b2ff7e0ad6..75802589ca01 100644 current_->RemoveDestructionObserver(destruction_observer); } diff --git base/message_loop/message_loop_current.h base/message_loop/message_loop_current.h -index bcab89d6e2e7..3160b321990e 100644 +index 1809f870d188..d0e8e645e3a7 100644 --- base/message_loop/message_loop_current.h +++ base/message_loop/message_loop_current.h @@ -133,6 +133,12 @@ class BASE_EXPORT MessageLoopCurrent { @@ -54,8 +54,8 @@ index bcab89d6e2e7..3160b321990e 100644 // Enables or disables the recursive task processing. This happens in the case // of recursive message loops. Some unwanted message loops may occur when // using common controls or printer functions. By default, recursive task -@@ -213,6 +219,13 @@ class BASE_EXPORT MessageLoopCurrent { - MessageLoopBase* ToMessageLoopBaseDeprecated() const { return current_; } +@@ -200,6 +206,13 @@ class BASE_EXPORT MessageLoopCurrent { + friend class web::TestWebThreadBundle; MessageLoopBase* current_; + diff --git a/patch/patches/pdfium_print_549365.patch b/patch/patches/pdfium_print_549365.patch index de7324b3f..0587a543b 100644 --- a/patch/patches/pdfium_print_549365.patch +++ b/patch/patches/pdfium_print_549365.patch @@ -1,5 +1,5 @@ diff --git BUILD.gn BUILD.gn -index 6885fc27d..72f312ac1 100644 +index f0accf1fe..1799af5c1 100644 --- BUILD.gn +++ BUILD.gn @@ -215,6 +215,10 @@ jumbo_static_library("pdfium") { diff --git a/patch/patches/prefs_content_1161.patch b/patch/patches/prefs_content_1161.patch index 9298184d2..38c66deae 100644 --- a/patch/patches/prefs_content_1161.patch +++ b/patch/patches/prefs_content_1161.patch @@ -1,8 +1,8 @@ diff --git content/public/common/common_param_traits_macros.h content/public/common/common_param_traits_macros.h -index 39ff86491246..163eaec35230 100644 +index 0886144e1314..6a8e9a997fdc 100644 --- content/public/common/common_param_traits_macros.h +++ content/public/common/common_param_traits_macros.h -@@ -186,6 +186,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences) +@@ -189,6 +189,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences) IPC_STRUCT_TRAITS_MEMBER(main_frame_resizes_are_orientation_changes) IPC_STRUCT_TRAITS_MEMBER(initialize_at_minimum_page_scale) IPC_STRUCT_TRAITS_MEMBER(smart_insert_delete_enabled) @@ -11,10 +11,10 @@ index 39ff86491246..163eaec35230 100644 IPC_STRUCT_TRAITS_MEMBER(navigate_on_drag_drop) IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled) diff --git content/public/common/web_preferences.cc content/public/common/web_preferences.cc -index b76f327dccca..eecf13a609ca 100644 +index 1822036e406d..b5f0e63d0b37 100644 --- content/public/common/web_preferences.cc +++ content/public/common/web_preferences.cc -@@ -168,6 +168,7 @@ WebPreferences::WebPreferences() +@@ -169,6 +169,7 @@ WebPreferences::WebPreferences() spatial_navigation_enabled(false), use_solid_color_scrollbars(false), navigate_on_drag_drop(true), @@ -23,10 +23,10 @@ index b76f327dccca..eecf13a609ca 100644 record_whole_document(false), cookie_enabled(true), diff --git content/public/common/web_preferences.h content/public/common/web_preferences.h -index 9052d1d6f4db..acb7027bb637 100644 +index 2e7285fa9bf8..6b21ff08d887 100644 --- content/public/common/web_preferences.h +++ content/public/common/web_preferences.h -@@ -183,6 +183,7 @@ struct CONTENT_EXPORT WebPreferences { +@@ -185,6 +185,7 @@ struct CONTENT_EXPORT WebPreferences { bool spatial_navigation_enabled; bool use_solid_color_scrollbars; bool navigate_on_drag_drop; @@ -35,10 +35,10 @@ index 9052d1d6f4db..acb7027bb637 100644 bool record_whole_document; diff --git content/renderer/render_view_impl.cc content/renderer/render_view_impl.cc -index c748edbf5a32..0d549ad30f4c 100644 +index 37444267d71f..579f56cd18be 100644 --- content/renderer/render_view_impl.cc +++ content/renderer/render_view_impl.cc -@@ -1028,6 +1028,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, +@@ -1025,6 +1025,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, #endif WebRuntimeFeatures::EnableTranslateService(prefs.translate_service_available); diff --git a/patch/patches/print_header_footer_1478_1565.patch b/patch/patches/print_header_footer_1478_1565.patch index 17e4fd5f0..f8bf59ce1 100644 --- a/patch/patches/print_header_footer_1478_1565.patch +++ b/patch/patches/print_header_footer_1478_1565.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/cocoa/applescript/tab_applescript.mm chrome/browser/ui/cocoa/applescript/tab_applescript.mm -index 71abc5c50e42..20429f93760a 100644 +index d4c9283b3cef..4a91987bfe7f 100644 --- chrome/browser/ui/cocoa/applescript/tab_applescript.mm +++ chrome/browser/ui/cocoa/applescript/tab_applescript.mm @@ -9,7 +9,7 @@ @@ -242,10 +242,10 @@ index 1802034a6e15..ae0d479ecafa 100644 #endif // COMPONENTS_PRINTING_COMMON_PRINT_MESSAGES_H_ diff --git components/printing/renderer/print_render_frame_helper.cc components/printing/renderer/print_render_frame_helper.cc -index 40ea9d21b07a..d45e607cc316 100644 +index f0e785dc303f..e919b4355307 100644 --- components/printing/renderer/print_render_frame_helper.cc +++ components/printing/renderer/print_render_frame_helper.cc -@@ -344,7 +344,6 @@ bool IsPrintingNodeOrPdfFrame(const blink::WebLocalFrame* frame, +@@ -351,7 +351,6 @@ bool IsPrintingNodeOrPdfFrame(const blink::WebLocalFrame* frame, return plugin && plugin->SupportsPaginatedPrint(); } @@ -253,7 +253,7 @@ index 40ea9d21b07a..d45e607cc316 100644 // Returns true if the current destination printer is PRINT_TO_PDF. bool IsPrintToPdfRequested(const base::DictionaryValue& job_settings) { bool print_to_pdf = false; -@@ -366,7 +365,6 @@ bool PrintingFrameHasPageSizeStyle(blink::WebLocalFrame* frame, +@@ -373,7 +372,6 @@ bool PrintingFrameHasPageSizeStyle(blink::WebLocalFrame* frame, } return frame_has_custom_page_size_style; } @@ -261,7 +261,7 @@ index 40ea9d21b07a..d45e607cc316 100644 #if BUILDFLAG(ENABLE_PRINTING) // Disable scaling when either: -@@ -421,7 +419,6 @@ MarginType GetMarginsForPdf(blink::WebLocalFrame* frame, +@@ -428,7 +426,6 @@ MarginType GetMarginsForPdf(blink::WebLocalFrame* frame, : PRINTABLE_AREA_MARGINS; } @@ -269,7 +269,7 @@ index 40ea9d21b07a..d45e607cc316 100644 gfx::Size GetPdfPageSize(const gfx::Size& page_size, int dpi) { return gfx::Size(ConvertUnit(page_size.width(), dpi, kPointsPerInch), ConvertUnit(page_size.height(), dpi, kPointsPerInch)); -@@ -468,7 +465,6 @@ blink::WebPrintScalingOption GetPrintScalingOption( +@@ -475,7 +472,6 @@ blink::WebPrintScalingOption GetPrintScalingOption( } return blink::kWebPrintScalingOptionFitToPrintableArea; } @@ -277,7 +277,7 @@ index 40ea9d21b07a..d45e607cc316 100644 // Helper function to scale and round an integer value with a double valued // scaling. -@@ -1099,10 +1095,8 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) { +@@ -1108,10 +1104,8 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) { return; if (g_is_preview_enabled) { @@ -288,7 +288,7 @@ index 40ea9d21b07a..d45e607cc316 100644 } else { auto weak_this = weak_ptr_factory_.GetWeakPtr(); web_frame->DispatchBeforePrintEvent(); -@@ -1130,13 +1124,11 @@ bool PrintRenderFrameHelper::OnMessageReceived(const IPC::Message& message) { +@@ -1139,13 +1133,11 @@ bool PrintRenderFrameHelper::OnMessageReceived(const IPC::Message& message) { IPC_BEGIN_MESSAGE_MAP(PrintRenderFrameHelper, message) IPC_MESSAGE_HANDLER(PrintMsg_PrintPages, OnPrintPages) IPC_MESSAGE_HANDLER(PrintMsg_PrintForSystemDialog, OnPrintForSystemDialog) @@ -302,7 +302,7 @@ index 40ea9d21b07a..d45e607cc316 100644 IPC_MESSAGE_HANDLER(PrintMsg_PrintFrameContent, OnPrintFrameContent) IPC_MESSAGE_HANDLER(PrintMsg_SetPrintingEnabled, OnSetPrintingEnabled) IPC_MESSAGE_UNHANDLED(handled = false) -@@ -1216,7 +1208,6 @@ void PrintRenderFrameHelper::UpdateFrameMarginsCssInfo( +@@ -1225,7 +1217,6 @@ void PrintRenderFrameHelper::UpdateFrameMarginsCssInfo( ignore_css_margins_ = (margins_type != DEFAULT_MARGINS); } @@ -310,7 +310,7 @@ index 40ea9d21b07a..d45e607cc316 100644 void PrintRenderFrameHelper::OnPrintPreview( const base::DictionaryValue& settings) { if (ipc_nesting_level_ > 1) -@@ -1481,7 +1472,6 @@ int PrintRenderFrameHelper::GetFitToPageScaleFactor( +@@ -1490,7 +1481,6 @@ int PrintRenderFrameHelper::GetFitToPageScaleFactor( printable_height / static_cast(uniform_page_size.height); return static_cast(100.0f * std::min(scale_width, scale_height)); } @@ -318,7 +318,7 @@ index 40ea9d21b07a..d45e607cc316 100644 void PrintRenderFrameHelper::OnPrintingDone(bool success) { if (ipc_nesting_level_ > 1) -@@ -1496,7 +1486,6 @@ void PrintRenderFrameHelper::OnSetPrintingEnabled(bool enabled) { +@@ -1505,7 +1495,6 @@ void PrintRenderFrameHelper::OnSetPrintingEnabled(bool enabled) { is_printing_enabled_ = enabled; } @@ -326,7 +326,7 @@ index 40ea9d21b07a..d45e607cc316 100644 void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { if (ipc_nesting_level_ > 1) return; -@@ -1507,7 +1496,9 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { +@@ -1516,7 +1505,9 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { // that instead. auto plugin = delegate_->GetPdfElement(frame); if (!plugin.IsNull()) { @@ -336,7 +336,7 @@ index 40ea9d21b07a..d45e607cc316 100644 return; } print_preview_context_.InitWithFrame(frame); -@@ -1519,7 +1510,6 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { +@@ -1528,7 +1519,6 @@ void PrintRenderFrameHelper::OnInitiatePrintPreview(bool has_selection) { void PrintRenderFrameHelper::OnClosePrintPreviewDialog() { print_preview_context_.source_frame()->DispatchAfterPrintEvent(); } @@ -344,7 +344,7 @@ index 40ea9d21b07a..d45e607cc316 100644 void PrintRenderFrameHelper::OnPrintFrameContent( const PrintMsg_PrintFrame_Params& params) { -@@ -1603,11 +1593,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { +@@ -1612,11 +1602,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { print_node_in_progress_ = true; @@ -357,7 +357,7 @@ index 40ea9d21b07a..d45e607cc316 100644 } else { // Make a copy of the node, in case RenderView::OnContextMenuClosed() resets // its |context_menu_node_|. -@@ -1683,13 +1671,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, +@@ -1692,13 +1680,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { int cookie = print_pages_params_ ? print_pages_params_->params.document_cookie : 0; @@ -371,7 +371,7 @@ index 40ea9d21b07a..d45e607cc316 100644 switch (result) { case OK: break; -@@ -1704,7 +1690,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { +@@ -1713,7 +1699,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { } break; @@ -379,7 +379,7 @@ index 40ea9d21b07a..d45e607cc316 100644 case FAIL_PREVIEW: if (!is_print_ready_metafile_sent_) { if (notify_browser_of_print_failure_) { -@@ -1722,7 +1707,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { +@@ -1731,7 +1716,6 @@ void PrintRenderFrameHelper::DidFinishPrinting(PrintingResult result) { cookie, ids)); print_preview_context_.Failed(false); break; @@ -387,7 +387,7 @@ index 40ea9d21b07a..d45e607cc316 100644 } prep_frame_view_.reset(); print_pages_params_.reset(); -@@ -1895,7 +1879,6 @@ bool PrintRenderFrameHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, +@@ -1904,7 +1888,6 @@ bool PrintRenderFrameHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, return true; } @@ -395,7 +395,7 @@ index 40ea9d21b07a..d45e607cc316 100644 bool PrintRenderFrameHelper::SetOptionsFromPdfDocument( PrintHostMsg_SetOptionsFromDocument_Params* options) { blink::WebLocalFrame* source_frame = print_preview_context_.source_frame(); -@@ -1988,7 +1971,6 @@ bool PrintRenderFrameHelper::UpdatePrintSettings( +@@ -1989,7 +1972,6 @@ bool PrintRenderFrameHelper::UpdatePrintSettings( print_preview_context_.set_error(PREVIEW_ERROR_INVALID_PRINTER_SETTINGS); return false; } @@ -403,7 +403,7 @@ index 40ea9d21b07a..d45e607cc316 100644 void PrintRenderFrameHelper::GetPrintSettingsFromUser( blink::WebLocalFrame* frame, -@@ -2140,7 +2122,6 @@ bool PrintRenderFrameHelper::CopyMetafileDataToReadOnlySharedMem( +@@ -2141,7 +2123,6 @@ bool PrintRenderFrameHelper::CopyMetafileDataToReadOnlySharedMem( return true; } @@ -411,7 +411,7 @@ index 40ea9d21b07a..d45e607cc316 100644 void PrintRenderFrameHelper::ShowScriptedPrintPreview() { if (is_scripted_preview_delayed_) { is_scripted_preview_delayed_ = false; -@@ -2266,7 +2247,6 @@ bool PrintRenderFrameHelper::PreviewPageRendered( +@@ -2267,7 +2248,6 @@ bool PrintRenderFrameHelper::PreviewPageRendered( Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params, ids)); return true; } diff --git a/patch/patches/remove_component_build_check.patch b/patch/patches/remove_component_build_check.patch new file mode 100644 index 000000000..d7726269e --- /dev/null +++ b/patch/patches/remove_component_build_check.patch @@ -0,0 +1,21 @@ +diff --git build/config/compiler/compiler.gni build/config/compiler/compiler.gni +index 2074800ce409..d99fadd7e5c4 100644 +--- build/config/compiler/compiler.gni ++++ build/config/compiler/compiler.gni +@@ -253,16 +253,6 @@ if (symbol_level == -1) { + } + } + +-# Non-component debug builds with symbol_level = 2 are an undesirable (very slow +-# build times) and unsupported (some test binaries will fail with > 4 GB PDBs) +-# combination. This is only checked when current_toolchain == default_toolchain +-# because the is_component_build flag is set to false in various components of +-# the build (like nacl) and we don't want to assert on those. asan builds are +-# excluded because Mac ASAN Debug builds use this configuration. +-assert(symbol_level != 2 || current_toolchain != default_toolchain || +- is_component_build || !is_debug || is_asan, +- "Can't do non-component debug builds at symbol_level=2") +- + # Assert that the configuration isn't going to hit https://crbug.com/648948. + # An exception is made when target_os == "chromeos" as we only use the Android + # toolchain there to build relatively small binaries. diff --git a/patch/patches/rwh_background_color_1984.patch b/patch/patches/rwh_background_color_1984.patch index 506f4c60f..cbb650ac0 100644 --- a/patch/patches/rwh_background_color_1984.patch +++ b/patch/patches/rwh_background_color_1984.patch @@ -1,8 +1,8 @@ diff --git content/browser/renderer_host/render_widget_host_view_aura.cc content/browser/renderer_host/render_widget_host_view_aura.cc -index cbee55a9f87c..c31a358239ff 100644 +index 45c4dfa8d3e2..0be00ced462a 100644 --- content/browser/renderer_host/render_widget_host_view_aura.cc +++ content/browser/renderer_host/render_widget_host_view_aura.cc -@@ -738,10 +738,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() const { +@@ -741,10 +741,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() const { void RenderWidgetHostViewAura::UpdateBackgroundColor() { DCHECK(GetBackgroundColor()); @@ -19,7 +19,7 @@ index cbee55a9f87c..c31a358239ff 100644 } void RenderWidgetHostViewAura::WindowTitleChanged() { -@@ -2053,6 +2055,15 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { +@@ -2078,6 +2080,15 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { if (frame_sink_id_.is_valid()) window_->SetEmbedFrameSinkId(frame_sink_id_); diff --git a/patch/patches/service_manager_654986.patch b/patch/patches/service_manager_654986.patch index 0697169a8..dfd321cfd 100644 --- a/patch/patches/service_manager_654986.patch +++ b/patch/patches/service_manager_654986.patch @@ -1,8 +1,8 @@ diff --git services/service_manager/embedder/main.cc services/service_manager/embedder/main.cc -index 46ae0545c0a9..c6f193b7c6dd 100644 +index 0fbc2149df74..14f5bbb2579c 100644 --- services/service_manager/embedder/main.cc +++ services/service_manager/embedder/main.cc -@@ -244,22 +244,36 @@ int RunService(MainDelegate* delegate) { +@@ -233,22 +233,36 @@ int RunService(MainDelegate* delegate) { return 0; } @@ -43,7 +43,7 @@ index 46ae0545c0a9..c6f193b7c6dd 100644 // A flag to indicate whether Main() has been called before. On Android, we // may re-run Main() without restarting the browser process. This flag -@@ -335,12 +349,7 @@ int Main(const MainParams& params) { +@@ -334,12 +348,7 @@ int Main(const MainParams& params) { MainDelegate::InitializeParams init_params; #if defined(OS_MACOSX) @@ -57,7 +57,7 @@ index 46ae0545c0a9..c6f193b7c6dd 100644 InitializeMac(); #endif -@@ -384,18 +393,16 @@ int Main(const MainParams& params) { +@@ -383,18 +392,16 @@ int Main(const MainParams& params) { } } @@ -85,7 +85,7 @@ index 46ae0545c0a9..c6f193b7c6dd 100644 switch (process_type) { case ProcessType::kDefault: NOTREACHED(); -@@ -417,6 +424,8 @@ int Main(const MainParams& params) { +@@ -416,6 +423,8 @@ int Main(const MainParams& params) { break; } @@ -94,7 +94,7 @@ index 46ae0545c0a9..c6f193b7c6dd 100644 if (tracker) { if (exit_code == 0) { tracker->SetProcessPhaseIfEnabled( -@@ -428,13 +437,38 @@ int Main(const MainParams& params) { +@@ -427,13 +436,38 @@ int Main(const MainParams& params) { } } diff --git a/patch/patches/services_tracing_839084.patch b/patch/patches/services_tracing_839084.patch deleted file mode 100644 index cac982ee2..000000000 --- a/patch/patches/services_tracing_839084.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git services/tracing/public/cpp/tracing_features.cc services/tracing/public/cpp/tracing_features.cc -index 08887d9243d6..c098a44cf1ad 100644 ---- services/tracing/public/cpp/tracing_features.cc -+++ services/tracing/public/cpp/tracing_features.cc -@@ -34,9 +34,16 @@ const base::Feature kTracingServiceInProcess { - namespace tracing { - - bool TracingUsesPerfettoBackend() { -- return base::CommandLine::ForCurrentProcess()->HasSwitch( -- switches::kEnablePerfetto) || -- base::FeatureList::IsEnabled(features::kTracingPerfettoBackend); -+ if (base::CommandLine::ForCurrentProcess()->HasSwitch( -+ switches::kEnablePerfetto)) { -+ return true; -+ } -+ -+ if (base::FeatureList::GetInstance()) { -+ return base::FeatureList::IsEnabled(features::kTracingPerfettoBackend); -+ } -+ -+ return false; - } - - } // namespace tracing diff --git a/patch/patches/set_resize_background_color.patch b/patch/patches/set_resize_background_color.patch new file mode 100644 index 000000000..d869abdcb --- /dev/null +++ b/patch/patches/set_resize_background_color.patch @@ -0,0 +1,70 @@ +diff --git ui/views/controls/native/native_view_host.cc ui/views/controls/native/native_view_host.cc +index e64c679eccb4..85d0824e86b9 100644 +--- ui/views/controls/native/native_view_host.cc ++++ ui/views/controls/native/native_view_host.cc +@@ -146,7 +146,7 @@ void NativeViewHost::OnPaint(gfx::Canvas* canvas) { + // It would be nice if this used some approximation of the page's + // current background color. + if (native_wrapper_->HasInstalledClip()) +- canvas->FillRect(GetLocalBounds(), SK_ColorWHITE); ++ canvas->FillRect(GetLocalBounds(), resize_background_color_); + } + + void NativeViewHost::VisibilityChanged(View* starting_from, bool is_visible) { +diff --git ui/views/controls/native/native_view_host.h ui/views/controls/native/native_view_host.h +index 1a4bcee29cb6..c7601201aacd 100644 +--- ui/views/controls/native/native_view_host.h ++++ ui/views/controls/native/native_view_host.h +@@ -86,6 +86,12 @@ class VIEWS_EXPORT NativeViewHost : public View { + void set_fast_resize(bool fast_resize) { fast_resize_ = fast_resize; } + bool fast_resize() const { return fast_resize_; } + ++ // Sets the color to paint the background during a resize that involves a ++ // clip. This is white by default. ++ void set_resize_background_color(SkColor resize_background_color) { ++ resize_background_color_ = resize_background_color; ++ } ++ + // Value of fast_resize() the last time Layout() was invoked. + bool fast_resize_at_last_layout() const { + return fast_resize_at_last_layout_; +@@ -141,6 +147,9 @@ class VIEWS_EXPORT NativeViewHost : public View { + // Value of |fast_resize_| during the last call to Layout. + bool fast_resize_at_last_layout_ = false; + ++ // Color to paint in the background while resizing. ++ SkColor resize_background_color_ = SK_ColorWHITE; ++ + DISALLOW_COPY_AND_ASSIGN(NativeViewHost); + }; + +diff --git ui/views/controls/webview/webview.cc ui/views/controls/webview/webview.cc +index c77cb52a0aa4..c58c7e8d473d 100644 +--- ui/views/controls/webview/webview.cc ++++ ui/views/controls/webview/webview.cc +@@ -121,6 +121,10 @@ void WebView::EnableSizingFromWebContents(const gfx::Size& min_size, + MaybeEnableAutoResize(); + } + ++void WebView::SetResizeBackgroundColor(SkColor resize_background_color) { ++ holder_->set_resize_background_color(resize_background_color); ++} ++ + void WebView::SetCrashedOverlayView(View* crashed_overlay_view) { + if (crashed_overlay_view_ == crashed_overlay_view) + return; +diff --git ui/views/controls/webview/webview.h ui/views/controls/webview/webview.h +index 2d358a9d028f..2a4b4937c160 100644 +--- ui/views/controls/webview/webview.h ++++ ui/views/controls/webview/webview.h +@@ -81,6 +81,10 @@ class WEBVIEW_EXPORT WebView : public View, + void EnableSizingFromWebContents(const gfx::Size& min_size, + const gfx::Size& max_size); + ++ // Set the background color to use while resizing with a clip. This is white ++ // by default. ++ void SetResizeBackgroundColor(SkColor resize_background_color); ++ + // If provided, this View will be shown in place of the web contents + // when the web contents is in a crashed state. This is cleared automatically + // if the web contents is changed. diff --git a/patch/patches/storage_incognito_2289.patch b/patch/patches/storage_incognito_2289.patch index 6a6fd1ec5..5aa284a2a 100644 --- a/patch/patches/storage_incognito_2289.patch +++ b/patch/patches/storage_incognito_2289.patch @@ -52,10 +52,10 @@ index b2b3920da3b0..686afc464b42 100644 std::move(stats_db), BrowserFeatureProvider::GetFactoryCB()); decode_history = new_decode_history.get(); diff --git content/browser/renderer_host/render_process_host_impl.cc content/browser/renderer_host/render_process_host_impl.cc -index 221dc8424f85..0366d1682ca7 100644 +index 9f2665f0587c..514ec596582d 100644 --- content/browser/renderer_host/render_process_host_impl.cc +++ content/browser/renderer_host/render_process_host_impl.cc -@@ -2222,6 +2222,9 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { +@@ -2205,6 +2205,9 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { plugin_registry_.reset( new PluginRegistryImpl(GetBrowserContext()->GetResourceContext())); } diff --git a/patch/patches/trace_event.patch b/patch/patches/trace_event.patch index 51aac3003..d1b06a568 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 ac68abb4ab2a..310f36e807c3 100644 +index f65a2aeec12f..eac1f0d46692 100644 --- base/trace_event/builtin_categories.h +++ base/trace_event/builtin_categories.h @@ -47,6 +47,8 @@ diff --git a/patch/patches/views_1749_2102.patch b/patch/patches/views_1749_2102.patch index 26140aa79..dd7227657 100644 --- a/patch/patches/views_1749_2102.patch +++ b/patch/patches/views_1749_2102.patch @@ -102,10 +102,10 @@ index 18e57f9823d0..4ec5cb20dabb 100644 }; diff --git ui/views/animation/ink_drop_host_view.h ui/views/animation/ink_drop_host_view.h -index 4e20d534c103..096015a4038b 100644 +index cb9ef740c6f3..aa7de6bb1924 100644 --- ui/views/animation/ink_drop_host_view.h +++ ui/views/animation/ink_drop_host_view.h -@@ -119,6 +119,8 @@ class VIEWS_EXPORT InkDropHostView : public View { +@@ -120,6 +120,8 @@ class VIEWS_EXPORT InkDropHostView : public View { // them. void AnimateInkDrop(InkDropState state, const ui::LocatedEvent* event); @@ -115,10 +115,10 @@ index 4e20d534c103..096015a4038b 100644 // Size used for the default SquareInkDropRipple. static constexpr int kDefaultInkDropSize = 24; diff --git ui/views/controls/button/label_button.cc ui/views/controls/button/label_button.cc -index ae8d430460a2..fcf82329ac10 100644 +index 2be096ee8083..c5510fe90d9c 100644 --- ui/views/controls/button/label_button.cc +++ ui/views/controls/button/label_button.cc -@@ -185,6 +185,7 @@ gfx::Size LabelButton::CalculatePreferredSize() const { +@@ -184,6 +184,7 @@ gfx::Size LabelButton::CalculatePreferredSize() const { Label label(GetText(), {label_->font_list()}); label.SetLineHeight(label_->line_height()); label.SetShadows(label_->shadows()); @@ -126,7 +126,7 @@ index ae8d430460a2..fcf82329ac10 100644 if (style_ == STYLE_BUTTON) { // Some text appears wider when rendered normally than when rendered bold. -@@ -380,6 +381,12 @@ void LabelButton::GetAccessibleNodeData(ui::AXNodeData* node_data) { +@@ -379,6 +380,12 @@ void LabelButton::GetAccessibleNodeData(ui::AXNodeData* node_data) { Button::GetAccessibleNodeData(node_data); } @@ -154,10 +154,10 @@ index 46f81be3d27a..249edf8cc5f8 100644 ImageView* image() const { return image_; } Label* label() const; diff --git ui/views/controls/label.cc ui/views/controls/label.cc -index ef1ed1092eb4..e913d9d50741 100644 +index 09c24be5fab2..c36455ea1f42 100644 --- ui/views/controls/label.cc +++ ui/views/controls/label.cc -@@ -43,6 +43,22 @@ bool IsOpaque(SkColor color) { +@@ -44,6 +44,22 @@ bool IsOpaque(SkColor color) { namespace views { @@ -180,7 +180,7 @@ index ef1ed1092eb4..e913d9d50741 100644 const char Label::kViewClassName[] = "Label"; Label::Label() : Label(base::string16()) { -@@ -202,6 +218,14 @@ void Label::SetElideBehavior(gfx::ElideBehavior elide_behavior) { +@@ -205,6 +221,14 @@ void Label::SetElideBehavior(gfx::ElideBehavior elide_behavior) { ResetLayout(); } @@ -195,7 +195,7 @@ index ef1ed1092eb4..e913d9d50741 100644 void Label::SetTooltipText(const base::string16& tooltip_text) { DCHECK(handles_tooltips_); tooltip_text_ = tooltip_text; -@@ -430,7 +454,19 @@ std::unique_ptr Label::CreateRenderText() const { +@@ -432,7 +456,19 @@ std::unique_ptr Label::CreateRenderText() const { render_text->SetFontList(font_list()); render_text->set_shadows(shadows()); render_text->SetCursorEnabled(false); @@ -217,10 +217,10 @@ index ef1ed1092eb4..e913d9d50741 100644 render_text->SetMaxLines(multi_line() ? max_lines() : 0); render_text->SetWordWrapBehavior(full_text_->word_wrap_behavior()); diff --git ui/views/controls/label.h ui/views/controls/label.h -index 771034ccebbe..79e3026f6870 100644 +index 9df5c850d12d..e7007ffbb762 100644 --- ui/views/controls/label.h +++ ui/views/controls/label.h -@@ -154,6 +154,10 @@ class VIEWS_EXPORT Label : public View, +@@ -159,6 +159,10 @@ class VIEWS_EXPORT Label : public View, void SetElideBehavior(gfx::ElideBehavior elide_behavior); gfx::ElideBehavior elide_behavior() const { return elide_behavior_; } @@ -231,7 +231,7 @@ index 771034ccebbe..79e3026f6870 100644 // 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 revert to -@@ -378,6 +382,7 @@ class VIEWS_EXPORT Label : public View, +@@ -387,6 +391,7 @@ class VIEWS_EXPORT Label : public View, bool collapse_when_hidden_; int fixed_width_; int max_width_; @@ -240,10 +240,10 @@ index 771034ccebbe..79e3026f6870 100644 std::unique_ptr selection_controller_; diff --git ui/views/controls/menu/menu_controller.cc ui/views/controls/menu/menu_controller.cc -index 8a302b528875..8125b5af96c5 100644 +index cdbd697838bd..18d5d3273a18 100644 --- ui/views/controls/menu/menu_controller.cc +++ ui/views/controls/menu/menu_controller.cc -@@ -2618,8 +2618,13 @@ MenuItemView* MenuController::FindNextSelectableMenuItem( +@@ -2573,8 +2573,13 @@ MenuItemView* MenuController::FindNextSelectableMenuItem( void MenuController::OpenSubmenuChangeSelectionIfCan() { MenuItemView* item = pending_state_.item; @@ -255,10 +255,10 @@ index 8a302b528875..8125b5af96c5 100644 + base::i18n::IsRTL()); return; + } - MenuItemView* to_select = NULL; + MenuItemView* to_select = nullptr; if (item->GetSubmenu()->GetMenuItemCount() > 0) to_select = FindInitialSelectableMenuItem(item, INCREMENT_SELECTION_DOWN); -@@ -2638,8 +2643,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { +@@ -2593,8 +2598,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { void MenuController::CloseSubmenu() { MenuItemView* item = state_.item; DCHECK(item); @@ -310,10 +310,10 @@ index 921aef245bf3..4b7474c01c0e 100644 virtual int GetMaxWidthForMenu(MenuItemView* menu); diff --git ui/views/controls/menu/menu_item_view.cc ui/views/controls/menu/menu_item_view.cc -index e609b8521842..73971df2a441 100644 +index 57962a8ba4ba..49d84f7c1497 100644 --- ui/views/controls/menu/menu_item_view.cc +++ ui/views/controls/menu/menu_item_view.cc -@@ -1063,6 +1063,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, +@@ -1054,6 +1054,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, spilling_rect.set_y(spilling_rect.y() - corner_radius_); spilling_rect.set_height(spilling_rect.height() + corner_radius_); canvas->DrawRoundRect(spilling_rect, corner_radius_, flags); @@ -329,7 +329,7 @@ index e609b8521842..73971df2a441 100644 } else if (render_selection) { gfx::Rect item_bounds = GetLocalBounds(); if (type_ == ACTIONABLE_SUBMENU) { -@@ -1129,6 +1138,13 @@ void MenuItemView::PaintMinorIconAndText( +@@ -1120,6 +1129,13 @@ void MenuItemView::PaintMinorIconAndText( } SkColor MenuItemView::GetTextColor(bool minor, bool render_selection) const { @@ -344,10 +344,10 @@ index e609b8521842..73971df2a441 100644 minor ? ui::NativeTheme::kColorId_MenuItemMinorTextColor : ui::NativeTheme::kColorId_EnabledMenuItemForegroundColor; diff --git ui/views/controls/menu/menu_model_adapter.cc ui/views/controls/menu/menu_model_adapter.cc -index 03186888c8de..1382571e8d8c 100644 +index 8b75a57af027..9af49374fd4b 100644 --- ui/views/controls/menu/menu_model_adapter.cc +++ ui/views/controls/menu/menu_model_adapter.cc -@@ -224,6 +224,77 @@ bool MenuModelAdapter::IsItemChecked(int id) const { +@@ -223,6 +223,77 @@ bool MenuModelAdapter::IsItemChecked(int id) const { return false; } @@ -426,7 +426,7 @@ index 03186888c8de..1382571e8d8c 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 240525c22b8b..6dcaa7045c3b 100644 +index 2e4b8f9cdbe8..6b797f0b4dc8 100644 --- ui/views/controls/menu/menu_model_adapter.h +++ ui/views/controls/menu/menu_model_adapter.h @@ -84,6 +84,20 @@ class VIEWS_EXPORT MenuModelAdapter : public MenuDelegate, @@ -451,7 +451,7 @@ index 240525c22b8b..6dcaa7045c3b 100644 void WillHideMenu(MenuItemView* menu) override; void OnMenuClosed(MenuItemView* menu) override; diff --git ui/views/controls/menu/menu_scroll_view_container.cc ui/views/controls/menu/menu_scroll_view_container.cc -index 43752f51ba8e..f15197713548 100644 +index 85ae4ec99e76..144c872ec894 100644 --- ui/views/controls/menu/menu_scroll_view_container.cc +++ ui/views/controls/menu/menu_scroll_view_container.cc @@ -181,6 +181,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) @@ -467,7 +467,7 @@ index 43752f51ba8e..f15197713548 100644 content_view_->GetMenuItem()->GetMenuController()->GetAnchorPosition()); diff --git ui/views/test/ui_controls_factory_desktop_aurax11.cc ui/views/test/ui_controls_factory_desktop_aurax11.cc -index 0180b30d383a..c0724b6b80a7 100644 +index df718d54917a..43f53750879d 100644 --- ui/views/test/ui_controls_factory_desktop_aurax11.cc +++ ui/views/test/ui_controls_factory_desktop_aurax11.cc @@ -140,10 +140,6 @@ class UIControlsDesktopX11 : public UIControlsAura { @@ -482,7 +482,7 @@ index 0180b30d383a..c0724b6b80a7 100644 // Move the cursor because EnterNotify/LeaveNotify are generated with the // current mouse position as a result of XGrabPointer() diff --git ui/views/view.h ui/views/view.h -index b0f106e272a6..c89b37be9b63 100644 +index a93aec7c4493..2d0126bc627d 100644 --- ui/views/view.h +++ ui/views/view.h @@ -19,6 +19,7 @@ @@ -493,7 +493,7 @@ index b0f106e272a6..c89b37be9b63 100644 #include "build/build_config.h" #include "third_party/skia/include/core/SkPath.h" #include "ui/accessibility/ax_enums.mojom.h" -@@ -119,7 +120,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, +@@ -148,7 +149,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, public ui::AcceleratorTarget, public ui::EventTarget, public ui::EventHandler, diff --git a/patch/patches/views_widget_180_1481_1565_1677_1749.patch b/patch/patches/views_widget_180_1481_1565_1677_1749.patch index 5f77dec36..eb08abe1c 100644 --- a/patch/patches/views_widget_180_1481_1565_1677_1749.patch +++ b/patch/patches/views_widget_180_1481_1565_1677_1749.patch @@ -1,8 +1,8 @@ diff --git content/browser/renderer_host/render_widget_host_view_base.cc content/browser/renderer_host/render_widget_host_view_base.cc -index 2672a26d934d..d911db336c0f 100644 +index e43c594742e8..63a16678ba83 100644 --- content/browser/renderer_host/render_widget_host_view_base.cc +++ content/browser/renderer_host/render_widget_host_view_base.cc -@@ -571,6 +571,14 @@ float RenderWidgetHostViewBase::GetDeviceScaleFactor() const { +@@ -585,6 +585,14 @@ float RenderWidgetHostViewBase::GetDeviceScaleFactor() const { return screen_info.device_scale_factor; } @@ -18,10 +18,10 @@ index 2672a26d934d..d911db336c0f 100644 return renderer_frame_number_; } diff --git content/browser/renderer_host/render_widget_host_view_base.h content/browser/renderer_host/render_widget_host_view_base.h -index 8cdb72afa1bc..ab32e9e06b8c 100644 +index 4535431ad0c9..3bf8658e5315 100644 --- content/browser/renderer_host/render_widget_host_view_base.h +++ content/browser/renderer_host/render_widget_host_view_base.h -@@ -84,6 +84,7 @@ class CursorManager; +@@ -83,6 +83,7 @@ class CursorManager; class MouseWheelPhaseHandler; class RenderWidgetHostImpl; class RenderWidgetHostViewBaseObserver; @@ -29,7 +29,7 @@ index 8cdb72afa1bc..ab32e9e06b8c 100644 class SyntheticGestureTarget; class TextInputManager; class TouchSelectionControllerClientManager; -@@ -105,6 +106,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -104,6 +105,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase float current_device_scale_factor() const { return current_device_scale_factor_; } @@ -39,7 +39,7 @@ index 8cdb72afa1bc..ab32e9e06b8c 100644 // Returns the focused RenderWidgetHost inside this |view|'s RWH. RenderWidgetHostImpl* GetFocusedWidget() const; -@@ -139,6 +143,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -138,6 +142,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase void DisableAutoResize(const gfx::Size& new_size) override; bool IsScrollOffsetAtTop() const override; float GetDeviceScaleFactor() const final; @@ -47,8 +47,8 @@ index 8cdb72afa1bc..ab32e9e06b8c 100644 + bool HasExternalParent() const override; TouchSelectionControllerClientManager* GetTouchSelectionControllerClientManager() override; - -@@ -474,6 +480,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase + void SetLastTabChangeStartTime(base::TimeTicks start_time) final; +@@ -490,6 +496,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase // helps to position the full screen widget on the correct monitor. virtual void InitAsFullscreen(RenderWidgetHostView* reference_host_view) = 0; @@ -61,7 +61,7 @@ index 8cdb72afa1bc..ab32e9e06b8c 100644 // Sets the cursor for this view to the one associated with the specified // cursor_type. virtual void UpdateCursor(const WebCursor& cursor) = 0; -@@ -675,6 +687,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -686,6 +698,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase bool is_currently_scrolling_viewport_ = false; @@ -103,7 +103,7 @@ index c362e6be4c35..a63527310e05 100644 // TODO(wjmaclean): can host_ ever be null? if (host_ && set_focus_on_mouse_down_or_key_event_) { diff --git content/public/browser/render_widget_host_view.h content/public/browser/render_widget_host_view.h -index d02f832a9945..accbabeae2d2 100644 +index 300222fde149..2aa14a12eb20 100644 --- content/public/browser/render_widget_host_view.h +++ content/public/browser/render_widget_host_view.h @@ -246,6 +246,14 @@ class CONTENT_EXPORT RenderWidgetHostView { @@ -122,20 +122,20 @@ index d02f832a9945..accbabeae2d2 100644 // Set the view's active state (i.e., tint state of controls). virtual void SetActive(bool active) = 0; diff --git ui/views/widget/desktop_aura/desktop_screen_win.cc ui/views/widget/desktop_aura/desktop_screen_win.cc -index f772f64d656e..7d13f9f81b6c 100644 +index 70553b153c44..ecd99bc78373 100644 --- ui/views/widget/desktop_aura/desktop_screen_win.cc +++ ui/views/widget/desktop_aura/desktop_screen_win.cc -@@ -32,6 +32,8 @@ display::Display DesktopScreenWin::GetDisplayMatching( +@@ -30,6 +30,8 @@ display::Display DesktopScreenWin::GetDisplayMatching( } HWND DesktopScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const { + if (!window) + return NULL; aura::WindowTreeHost* host = window->GetHost(); - return host ? host->GetAcceleratedWidget() : NULL; + return host ? host->GetAcceleratedWidget() : nullptr; } 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 383a23422e76..cf788070202d 100644 +index b9e903a06bbc..23b1d4ad2d79 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc @@ -90,6 +90,7 @@ DesktopWindowTreeHostWin::DesktopWindowTreeHostWin( @@ -143,13 +143,13 @@ index 383a23422e76..cf788070202d 100644 pending_close_(false), has_non_client_view_(false), + has_external_parent_(false), - tooltip_(NULL) { - } + tooltip_(nullptr) {} -@@ -124,8 +125,12 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { + DesktopWindowTreeHostWin::~DesktopWindowTreeHostWin() { +@@ -123,8 +124,12 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { native_widget_delegate_); - HWND parent_hwnd = NULL; + HWND parent_hwnd = nullptr; - if (params.parent && params.parent->GetHost()) + if (params.parent_widget) { + parent_hwnd = params.parent_widget; @@ -160,7 +160,7 @@ index 383a23422e76..cf788070202d 100644 remove_standard_frame_ = params.remove_standard_frame; has_non_client_view_ = Widget::RequiresNonClientView(params.type); -@@ -892,11 +897,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { +@@ -894,11 +899,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { } void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { @@ -179,10 +179,10 @@ index 383a23422e76..cf788070202d 100644 bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { 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 57fdabdb047a..db7c6b027452 100644 +index 4a87724d58d4..17c1e62b6585 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.h -@@ -287,6 +287,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin +@@ -293,6 +293,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin // True if the window should have the frame removed. bool remove_standard_frame_; @@ -194,7 +194,7 @@ index 57fdabdb047a..db7c6b027452 100644 // a reference. corewm::TooltipWin* tooltip_; diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc -index 6f9892830001..1369d7e367ea 100644 +index 867867b53ff4..ca7d26a375f1 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc @@ -146,6 +146,7 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11( @@ -205,7 +205,7 @@ index 6f9892830001..1369d7e367ea 100644 drag_drop_client_(NULL), native_widget_delegate_(native_widget_delegate), desktop_native_widget_aura_(desktop_native_widget_aura), -@@ -158,6 +159,7 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11( +@@ -159,6 +160,7 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11( has_window_focus_(false), has_pointer_focus_(false), modal_dialog_counter_(0), @@ -213,7 +213,7 @@ index 6f9892830001..1369d7e367ea 100644 close_widget_factory_(this), weak_factory_(this) {} -@@ -193,6 +195,8 @@ std::vector DesktopWindowTreeHostX11::GetAllOpenWindows() { +@@ -194,6 +196,8 @@ std::vector DesktopWindowTreeHostX11::GetAllOpenWindows() { } gfx::Rect DesktopWindowTreeHostX11::GetX11RootWindowBounds() const { @@ -222,7 +222,7 @@ index 6f9892830001..1369d7e367ea 100644 return bounds_in_pixels_; } -@@ -503,7 +507,8 @@ void DesktopWindowTreeHostX11::CloseNow() { +@@ -504,7 +508,8 @@ void DesktopWindowTreeHostX11::CloseNow() { // Actually free our native resources. if (ui::PlatformEventSource::GetInstance()) ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this); @@ -232,7 +232,7 @@ index 6f9892830001..1369d7e367ea 100644 xwindow_ = x11::None; desktop_native_widget_aura_->OnHostClosed(); -@@ -648,6 +653,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement( +@@ -649,6 +654,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement( } gfx::Rect DesktopWindowTreeHostX11::GetWindowBoundsInScreen() const { @@ -241,7 +241,7 @@ index 6f9892830001..1369d7e367ea 100644 return ToDIPRect(bounds_in_pixels_); } -@@ -1274,6 +1281,8 @@ void DesktopWindowTreeHostX11::SetBoundsInPixels( +@@ -1277,6 +1284,8 @@ void DesktopWindowTreeHostX11::SetBoundsInPixels( } gfx::Point DesktopWindowTreeHostX11::GetLocationOnScreenInPixels() const { @@ -250,7 +250,7 @@ index 6f9892830001..1369d7e367ea 100644 return bounds_in_pixels_.origin(); } -@@ -1414,7 +1423,6 @@ void DesktopWindowTreeHostX11::InitX11Window( +@@ -1417,7 +1426,6 @@ void DesktopWindowTreeHostX11::InitX11Window( XAtom window_type; switch (params.type) { case Widget::InitParams::TYPE_MENU: @@ -258,7 +258,7 @@ index 6f9892830001..1369d7e367ea 100644 window_type = gfx::GetAtom("_NET_WM_WINDOW_TYPE_MENU"); break; case Widget::InitParams::TYPE_TOOLTIP: -@@ -1470,9 +1478,15 @@ void DesktopWindowTreeHostX11::InitX11Window( +@@ -1474,9 +1482,15 @@ void DesktopWindowTreeHostX11::InitX11Window( attribute_mask |= CWBorderPixel; swa.border_pixel = 0; @@ -275,7 +275,7 @@ index 6f9892830001..1369d7e367ea 100644 bounds_in_pixels_.y(), bounds_in_pixels_.width(), bounds_in_pixels_.height(), 0, // border width -@@ -2093,6 +2107,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( +@@ -2097,6 +2111,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( } break; } @@ -287,7 +287,7 @@ index 6f9892830001..1369d7e367ea 100644 case x11::FocusOut: OnFocusEvent(xev->type == x11::FocusIn, event->xfocus.mode, diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h -index c547609abf03..5092e2a38b67 100644 +index ca1a738ce019..3e4908b37f45 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h @@ -91,6 +91,12 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 @@ -324,7 +324,7 @@ index c547609abf03..5092e2a38b67 100644 DesktopDragDropClientAuraX11* drag_drop_client_; std::unique_ptr x11_non_client_event_filter_; -@@ -454,6 +467,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 +@@ -458,6 +471,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 uint32_t modal_dialog_counter_; @@ -335,7 +335,7 @@ index c547609abf03..5092e2a38b67 100644 base::WeakPtrFactory weak_factory_; diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc -index c6c267383674..c66481e65a72 100644 +index 30cd8d62f5ee..21cabfd06228 100644 --- ui/views/widget/widget.cc +++ ui/views/widget/widget.cc @@ -138,6 +138,7 @@ Widget::InitParams::InitParams(Type type) @@ -346,7 +346,7 @@ index c6c267383674..c66481e65a72 100644 native_widget(nullptr), desktop_window_tree_host(nullptr), layer_type(ui::LAYER_TEXTURED), -@@ -310,7 +311,7 @@ void Widget::Init(const InitParams& in_params) { +@@ -289,7 +290,7 @@ void Widget::Init(const InitParams& in_params) { params.name = params.delegate->GetContentsView()->GetClassName(); params.child |= (params.type == InitParams::TYPE_CONTROL); @@ -355,7 +355,7 @@ index c6c267383674..c66481e65a72 100644 if (params.opacity == views::Widget::InitParams::INFER_OPACITY && params.type != views::Widget::InitParams::TYPE_WINDOW) { -@@ -375,7 +376,12 @@ void Widget::Init(const InitParams& in_params) { +@@ -354,7 +355,12 @@ void Widget::Init(const InitParams& in_params) { } } else if (params.delegate) { SetContentsView(params.delegate->GetContentsView()); @@ -369,7 +369,7 @@ index c6c267383674..c66481e65a72 100644 } // This must come after SetContentsView() or it might not be able to find // the correct NativeTheme (on Linux). See http://crbug.com/384492 -@@ -1150,10 +1156,16 @@ void Widget::OnNativeWidgetDestroyed() { +@@ -1128,10 +1134,16 @@ void Widget::OnNativeWidgetDestroyed() { } gfx::Size Widget::GetMinimumSize() const { @@ -387,7 +387,7 @@ index c6c267383674..c66481e65a72 100644 } diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index d04ca53ec52e..f47caf483a7e 100644 +index 6f1f45fed1b3..063e4c8ac778 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h @@ -255,6 +255,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, @@ -427,10 +427,10 @@ index 5bcb8d8b9bae..020fa85573aa 100644 if (native_widget_delegate->IsDialogBox()) { *style |= DS_MODALFRAME; diff --git ui/views/win/hwnd_message_handler.cc ui/views/win/hwnd_message_handler.cc -index 3703f163d237..83db8b82f960 100644 +index fb8e820175ac..66c5cb91f7e8 100644 --- ui/views/win/hwnd_message_handler.cc +++ ui/views/win/hwnd_message_handler.cc -@@ -2916,10 +2916,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, +@@ -2918,10 +2918,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, } else if (event.type() == ui::ET_MOUSEWHEEL) { ui::MouseWheelEvent mouse_wheel_event(msg); // Reroute the mouse wheel to the window under the pointer if applicable. diff --git a/patch/patches/web_contents_1257_1565.patch b/patch/patches/web_contents_1257_1565.patch index abd3782d9..5cffd5461 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 9ad76884fa8c..d04f8c633384 100644 +index 249162757a03..070473ae57ab 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -2068,21 +2068,30 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { +@@ -2067,21 +2067,30 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { std::string unique_name; frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name); @@ -45,7 +45,7 @@ index 9ad76884fa8c..d04f8c633384 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -2781,6 +2790,15 @@ void WebContentsImpl::CreateNewWindow( +@@ -2780,6 +2789,15 @@ void WebContentsImpl::CreateNewWindow( create_params.renderer_initiated_creation = main_frame_route_id != MSG_ROUTING_NONE; @@ -61,7 +61,7 @@ index 9ad76884fa8c..d04f8c633384 100644 std::unique_ptr new_contents; if (!is_guest) { create_params.context = view_->GetNativeView(); -@@ -2813,7 +2831,7 @@ void WebContentsImpl::CreateNewWindow( +@@ -2812,7 +2830,7 @@ void WebContentsImpl::CreateNewWindow( // TODO(brettw): It seems bogus that we have to call this function on the // newly created object and give it one of its own member variables. new_view->CreateViewForWidget( @@ -70,7 +70,7 @@ index 9ad76884fa8c..d04f8c633384 100644 } // Save the created window associated with the route so we can show it // later. -@@ -6377,7 +6395,7 @@ InterstitialPageImpl* WebContentsImpl::GetInterstitialForRenderManager() { +@@ -6374,7 +6392,7 @@ InterstitialPageImpl* WebContentsImpl::GetInterstitialForRenderManager() { void WebContentsImpl::CreateRenderWidgetHostViewForRenderManager( RenderViewHost* render_view_host) { RenderWidgetHostViewBase* rwh_view = diff --git a/patch/patches/webkit_plugin_info_2015.patch b/patch/patches/webkit_plugin_info_2015.patch index 420638892..df2b9e3ac 100644 --- a/patch/patches/webkit_plugin_info_2015.patch +++ b/patch/patches/webkit_plugin_info_2015.patch @@ -1,8 +1,8 @@ diff --git third_party/blink/public/mojom/plugins/plugin_registry.mojom third_party/blink/public/mojom/plugins/plugin_registry.mojom -index 92e9cb865204..4628c56882b4 100644 +index 0cc3d5b6c9df..a4044788af10 100644 --- third_party/blink/public/mojom/plugins/plugin_registry.mojom +++ third_party/blink/public/mojom/plugins/plugin_registry.mojom -@@ -34,5 +34,5 @@ interface PluginRegistry { +@@ -37,5 +37,5 @@ interface PluginRegistry { // // TODO(crbug.com/850278): We shouldn't rely on the renderer to tell us the main frame origin. [Sync] @@ -10,10 +10,10 @@ index 92e9cb865204..4628c56882b4 100644 + GetPlugins(bool refresh, bool is_main_frame, url.mojom.Origin main_frame_origin) => (array plugins); }; diff --git third_party/blink/public/platform/platform.h third_party/blink/public/platform/platform.h -index e89fff83c1c7..d6162de6986f 100644 +index ef373d2abdd3..bdf69253d070 100644 --- third_party/blink/public/platform/platform.h +++ third_party/blink/public/platform/platform.h -@@ -724,6 +724,11 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -729,6 +729,11 @@ class BLINK_PLATFORM_EXPORT Platform { // runs during Chromium's build step). virtual bool IsTakingV8ContextSnapshot() { return false; } @@ -26,7 +26,7 @@ index e89fff83c1c7..d6162de6986f 100644 static void InitializeCommon(Platform* platform, std::unique_ptr main_thread); diff --git third_party/blink/renderer/core/dom/dom_implementation.cc third_party/blink/renderer/core/dom/dom_implementation.cc -index eff68a91b185..e2487f1aa0dc 100644 +index 0c51c31103af..fa3b11014ae4 100644 --- third_party/blink/renderer/core/dom/dom_implementation.cc +++ third_party/blink/renderer/core/dom/dom_implementation.cc @@ -243,10 +243,11 @@ Document* DOMImplementation::createDocument(const String& type, @@ -44,10 +44,10 @@ index eff68a91b185..e2487f1aa0dc 100644 .Top() .GetSecurityContext() diff --git third_party/blink/renderer/core/frame/local_frame.cc third_party/blink/renderer/core/frame/local_frame.cc -index c6cc53beb1d4..469869b0ff60 100644 +index 9101b7bb1c66..c74746199c5d 100644 --- third_party/blink/renderer/core/frame/local_frame.cc +++ third_party/blink/renderer/core/frame/local_frame.cc -@@ -1359,7 +1359,7 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() { +@@ -1318,7 +1318,7 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() { PluginData* LocalFrame::GetPluginData() const { if (!Loader().AllowPlugins(kNotAboutToInstantiatePlugin)) return nullptr; @@ -85,10 +85,10 @@ index 13d28689750a..b7c710c747c3 100644 void DevToolsSession::FlushProtocolNotifications() { diff --git third_party/blink/renderer/core/page/page.cc third_party/blink/renderer/core/page/page.cc -index 6c65ef4322bb..d536609c8d09 100644 +index d10a5881d58e..7461e4ff47f8 100644 --- third_party/blink/renderer/core/page/page.cc +++ third_party/blink/renderer/core/page/page.cc -@@ -173,7 +173,8 @@ Page::Page(PageClients& page_clients) +@@ -175,7 +175,8 @@ Page::Page(PageClients& page_clients) overscroll_controller_( OverscrollController::Create(GetVisualViewport(), GetChromeClient())), link_highlights_(LinkHighlights::Create(*this)), @@ -98,7 +98,7 @@ index 6c65ef4322bb..d536609c8d09 100644 // TODO(pdr): Initialize |validation_message_client_| lazily. validation_message_client_(ValidationMessageClientImpl::Create(*this)), opened_by_dom_(false), -@@ -329,21 +330,40 @@ void Page::InitialStyleChanged() { +@@ -332,21 +333,40 @@ void Page::InitialStyleChanged() { } } @@ -148,7 +148,7 @@ index 6c65ef4322bb..d536609c8d09 100644 page->NotifyPluginsChanged(); } } -@@ -769,7 +789,8 @@ void Page::Trace(blink::Visitor* visitor) { +@@ -779,7 +799,8 @@ void Page::Trace(blink::Visitor* visitor) { visitor->Trace(link_highlights_); visitor->Trace(spatial_navigation_controller_); visitor->Trace(main_frame_); @@ -159,10 +159,10 @@ index 6c65ef4322bb..d536609c8d09 100644 visitor->Trace(plugins_changed_observers_); visitor->Trace(next_related_page_); diff --git third_party/blink/renderer/core/page/page.h third_party/blink/renderer/core/page/page.h -index 38e73455007f..cae4a0c51d55 100644 +index b782c201c08a..7e8334d55c97 100644 --- third_party/blink/renderer/core/page/page.h +++ third_party/blink/renderer/core/page/page.h -@@ -139,7 +139,8 @@ class CORE_EXPORT Page final : public GarbageCollectedFinalized, +@@ -140,7 +140,8 @@ class CORE_EXPORT Page final : public GarbageCollectedFinalized, ViewportDescription GetViewportDescription() const; // Returns the plugin data associated with |main_frame_origin|. @@ -172,7 +172,7 @@ index 38e73455007f..cae4a0c51d55 100644 // Resets the plugin data for all pages in the renderer process and notifies // PluginsChangedObservers. -@@ -361,7 +362,8 @@ class CORE_EXPORT Page final : public GarbageCollectedFinalized, +@@ -363,7 +364,8 @@ class CORE_EXPORT Page final : public GarbageCollectedFinalized, const Member link_highlights_; Member spatial_navigation_controller_; @@ -183,10 +183,10 @@ index 38e73455007f..cae4a0c51d55 100644 Member validation_message_client_; diff --git third_party/blink/renderer/core/page/plugin_data.cc third_party/blink/renderer/core/page/plugin_data.cc -index 072f97a6f7d7..4c691ceeb068 100644 +index f333f38a88a8..b981b2234467 100644 --- third_party/blink/renderer/core/page/plugin_data.cc +++ third_party/blink/renderer/core/page/plugin_data.cc -@@ -88,10 +88,12 @@ void PluginData::RefreshBrowserSidePluginCache() { +@@ -90,10 +90,12 @@ void PluginData::RefreshBrowserSidePluginCache() { Platform::Current()->GetInterfaceProvider()->GetInterface( mojo::MakeRequest(®istry)); Vector plugins; @@ -201,7 +201,7 @@ index 072f97a6f7d7..4c691ceeb068 100644 ResetPluginData(); main_frame_origin_ = main_frame_origin; -@@ -99,7 +101,7 @@ void PluginData::UpdatePluginList(const SecurityOrigin* main_frame_origin) { +@@ -101,7 +103,7 @@ void PluginData::UpdatePluginList(const SecurityOrigin* main_frame_origin) { Platform::Current()->GetInterfaceProvider()->GetInterface( mojo::MakeRequest(®istry)); Vector plugins; @@ -211,10 +211,10 @@ index 072f97a6f7d7..4c691ceeb068 100644 auto* plugin_info = MakeGarbageCollected( plugin->name, FilePathToWebString(plugin->filename), diff --git third_party/blink/renderer/core/page/plugin_data.h third_party/blink/renderer/core/page/plugin_data.h -index c25e74204efd..21ca09179da6 100644 +index 47129faba0c0..8451e98eeaf5 100644 --- third_party/blink/renderer/core/page/plugin_data.h +++ third_party/blink/renderer/core/page/plugin_data.h -@@ -101,7 +101,8 @@ class CORE_EXPORT PluginData final +@@ -102,7 +102,8 @@ class CORE_EXPORT PluginData final const HeapVector>& Plugins() const { return plugins_; } const HeapVector>& Mimes() const { return mimes_; } const SecurityOrigin* Origin() const { return main_frame_origin_.get(); } diff --git a/patch/patches/webkit_pointer_event_781966.patch b/patch/patches/webkit_pointer_event_781966.patch index 8b7b33ede..7746bc9d4 100644 --- a/patch/patches/webkit_pointer_event_781966.patch +++ b/patch/patches/webkit_pointer_event_781966.patch @@ -1,8 +1,8 @@ diff --git third_party/blink/renderer/core/input/pointer_event_manager.cc third_party/blink/renderer/core/input/pointer_event_manager.cc -index 21f30c6fb608..746d75d2b145 100644 +index b84e3bdd6679..a0d65d9a65a1 100644 --- third_party/blink/renderer/core/input/pointer_event_manager.cc +++ third_party/blink/renderer/core/input/pointer_event_manager.cc -@@ -284,7 +284,7 @@ void PointerEventManager::HandlePointerInterruption( +@@ -285,7 +285,7 @@ void PointerEventManager::HandlePointerInterruption( for (auto pointer_event : canceled_pointer_events) { // If we are sending a pointercancel we have sent the pointerevent to some // target before. diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index ea9c75ac8..0689ba9d3 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -1,5 +1,5 @@ diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h -index 61ea5ce43940..776eb720aaae 100644 +index 36d767e51b2f..4425dfeaa786 100644 --- third_party/blink/public/web/web_view.h +++ third_party/blink/public/web/web_view.h @@ -358,6 +358,7 @@ class WebView { @@ -11,7 +11,7 @@ index 61ea5ce43940..776eb720aaae 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 8dd8d5e381cf..6b8d2d3c2e19 100644 +index 92529f378bb2..7ec3894f996c 100644 --- third_party/blink/renderer/core/exported/web_view_impl.cc +++ third_party/blink/renderer/core/exported/web_view_impl.cc @@ -234,8 +234,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { @@ -36,10 +36,10 @@ index 8dd8d5e381cf..6b8d2d3c2e19 100644 maximum_zoom_level_(ZoomFactorToZoomLevel(kMaxTextSizeMultiplier)), + should_use_external_popup_menus_(g_should_use_external_popup_menus), does_composite_(does_composite), - fullscreen_controller_(FullscreenController::Create(this)) { + fullscreen_controller_(std::make_unique(this)) { if (!AsView().client) { diff --git third_party/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h -index 52b62bace7a8..3d962d2880c3 100644 +index d161ab3cf8af..6b655c488a0a 100644 --- third_party/blink/renderer/core/exported/web_view_impl.h +++ third_party/blink/renderer/core/exported/web_view_impl.h @@ -106,7 +106,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, @@ -52,7 +52,7 @@ index 52b62bace7a8..3d962d2880c3 100644 // WebView methods: void DidAttachLocalMainFrame(WebWidgetClient*) override; -@@ -614,6 +615,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -616,6 +617,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, float fake_page_scale_animation_page_scale_factor_ = 0.f; bool fake_page_scale_animation_use_anchor_ = false; @@ -62,10 +62,10 @@ index 52b62bace7a8..3d962d2880c3 100644 TransformationMatrix device_emulation_transform_; diff --git third_party/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc -index cb0aa3034bad..88cdd25b427b 100644 +index c9e907264bfe..4b4395144ba5 100644 --- third_party/blink/renderer/core/page/chrome_client_impl.cc +++ third_party/blink/renderer/core/page/chrome_client_impl.cc -@@ -801,7 +801,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { +@@ -823,7 +823,7 @@ bool ChromeClientImpl::HasOpenedPopup() const { PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, HTMLSelectElement& select) { NotifyPopupOpeningObservers(); diff --git a/patch/patches/webui_2037.patch b/patch/patches/webui_2037.patch index 65953f4e9..975bc48d4 100644 --- a/patch/patches/webui_2037.patch +++ b/patch/patches/webui_2037.patch @@ -1,16 +1,16 @@ diff --git chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc -index 8f60e60d6ad3..ff85f58185f2 100644 +index ea311eb90f4d..9e4a6ff96c56 100644 --- chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc -@@ -19,6 +19,7 @@ +@@ -21,6 +21,7 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/common/channel_info.h" +#include "chrome/common/chrome_switches.h" - #include "chrome/common/pref_names.h" #include "components/prefs/pref_service.h" #include "components/sync/driver/about_sync_util.h" -@@ -267,6 +268,10 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { + #include "components/sync/driver/sync_service.h" +@@ -268,6 +269,10 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { } void ChromeInternalLogSource::PopulateSyncLogs(SystemLogsResponse* response) { @@ -21,7 +21,7 @@ index 8f60e60d6ad3..ff85f58185f2 100644 // We are only interested in sync logs for the primary user profile. Profile* profile = ProfileManager::GetPrimaryUserProfile(); if (!profile || !ProfileSyncServiceFactory::HasSyncService(profile)) -@@ -309,6 +314,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( +@@ -310,6 +315,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( if (!profile) return; diff --git a/patch/patches/webview_plugin_2020.patch b/patch/patches/webview_plugin_2020.patch index bc0a836ee..61034572f 100644 --- a/patch/patches/webview_plugin_2020.patch +++ b/patch/patches/webview_plugin_2020.patch @@ -1,8 +1,8 @@ diff --git chrome/app/generated_resources.grd chrome/app/generated_resources.grd -index ef5304602534..f2921f6f9da7 100644 +index 563000c780b4..35f019c4d2de 100644 --- chrome/app/generated_resources.grd +++ chrome/app/generated_resources.grd -@@ -4589,7 +4589,7 @@ Keep your key file in a safe place. You will need it to create new versions of y +@@ -4581,7 +4581,7 @@ Keep your key file in a safe place. You will need it to create new versions of y diff --git a/tests/ceftests/navigation_unittest.cc b/tests/ceftests/navigation_unittest.cc index 596dcf234..122556eb6 100644 --- a/tests/ceftests/navigation_unittest.cc +++ b/tests/ceftests/navigation_unittest.cc @@ -3010,8 +3010,8 @@ class CancelBeforeNavTestHandler : public TestHandler { got_get_resource_handler_.yes(); - CefPostDelayedTask( - TID_UI, base::Bind(&CancelBeforeNavTestHandler::CancelLoad, this), 100); + CefPostTask(TID_UI, + base::Bind(&CancelBeforeNavTestHandler::CancelLoad, this)); return new UnstartedSchemeHandler(); } @@ -3035,7 +3035,10 @@ class CancelBeforeNavTestHandler : public TestHandler { ErrorCode errorCode, const CefString& errorText, const CefString& failedUrl) override { - EXPECT_TRUE(false); // Not reached. + EXPECT_EQ(GetBrowserId(), browser->GetIdentifier()); + EXPECT_STREQ("", frame->GetURL().ToString().c_str()); + EXPECT_EQ(ERR_ABORTED, errorCode); + EXPECT_STREQ(kCancelPageUrl, failedUrl.ToString().c_str()); got_load_error_.yes(); } @@ -3064,7 +3067,7 @@ class CancelBeforeNavTestHandler : public TestHandler { EXPECT_TRUE(got_get_resource_handler_); EXPECT_FALSE(got_load_start_); EXPECT_TRUE(got_cancel_load_); - EXPECT_FALSE(got_load_error_); + EXPECT_TRUE(got_load_error_); EXPECT_FALSE(got_load_end_); EXPECT_FALSE(got_loading_state_changed_end_); @@ -3090,7 +3093,7 @@ class CancelBeforeNavTestHandler : public TestHandler { EXPECT_TRUE(got_get_resource_handler_); EXPECT_FALSE(got_load_start_); EXPECT_TRUE(got_cancel_load_); - EXPECT_FALSE(got_load_error_); + EXPECT_TRUE(got_load_error_); EXPECT_FALSE(got_load_end_); EXPECT_TRUE(got_loading_state_changed_end_); diff --git a/tests/ceftests/os_rendering_unittest.cc b/tests/ceftests/os_rendering_unittest.cc index c809f95b9..83c379a93 100644 --- a/tests/ceftests/os_rendering_unittest.cc +++ b/tests/ceftests/os_rendering_unittest.cc @@ -824,18 +824,12 @@ class OSRTestHandler : public RoutingTestHandler, const CefRect& expanded_select_rect = GetScaledRect(kExpandedSelectRect); EXPECT_EQ(dirtyRects.size(), 1U); - // dirtyRects[0] has a 1px inset. -#if defined(OS_MACOSX) - const int inset = GetScaledInt(1); -#else - const int inset = 1; -#endif - EXPECT_EQ(inset, dirtyRects[0].x); - EXPECT_EQ(inset, dirtyRects[0].y); + EXPECT_EQ(0, dirtyRects[0].x); + EXPECT_EQ(0, dirtyRects[0].y); if (ExpectComputedPopupSize()) { - EXPECT_EQ(expanded_select_rect.width - inset * 2, + EXPECT_EQ(expanded_select_rect.width, dirtyRects[0].width); - EXPECT_EQ(expanded_select_rect.height - inset * 2, + EXPECT_EQ(expanded_select_rect.height, dirtyRects[0].height); } else { EXPECT_GT(dirtyRects[0].width, kExpandedSelectRect.width); diff --git a/tests/ceftests/request_handler_unittest.cc b/tests/ceftests/request_handler_unittest.cc index daa15ca91..004909916 100644 --- a/tests/ceftests/request_handler_unittest.cc +++ b/tests/ceftests/request_handler_unittest.cc @@ -1222,6 +1222,10 @@ class ResponseFilterTestBase : public CefResponseFilter { EXPECT_GT(filter_count_, 0U); } + virtual void VerifyStatusCode(int httpStatusCode) const { + EXPECT_TRUE(httpStatusCode == 0 || httpStatusCode == 200) << httpStatusCode; + } + protected: TrackCallback got_init_filter_; size_t filter_count_; @@ -1490,13 +1494,16 @@ class ResponseFilterError : public ResponseFilterTestBase { EXPECT_EQ(UR_FAILED, status); // Expect empty content. - const std::string& output = std::string(kInputHeader) + kInputFooter; - EXPECT_STREQ(output.c_str(), received_content.c_str()); + EXPECT_STREQ("", received_content.c_str()); EXPECT_EQ(0U, received_content_length); // Expect to only be called one time. EXPECT_EQ(filter_count_, 1U); } + + void VerifyStatusCode(int httpStatusCode) const override { + EXPECT_EQ(ERR_CONTENT_DECODING_FAILED, httpStatusCode); + } }; // Browser side. @@ -1550,7 +1557,7 @@ class ResponseFilterTestHandler : public TestHandler { DCHECK(!got_load_end_); got_load_end_.yes(); - EXPECT_TRUE(httpStatusCode == 0 || httpStatusCode == 200); + response_filter_->VerifyStatusCode(httpStatusCode); GetOutputContent(frame); }