diff --git a/BUILD.gn b/BUILD.gn index d53027da4..b617df892 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -103,13 +103,15 @@ import("//build/config/features.gni") import("//build/config/locales.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") -import("//build/config/win/console_app.gni") -import("//build/config/win/manifest.gni") import("//cef/cef_repack_locales.gni") import("//media/media_options.gni") import("//mojo/public/tools/bindings/mojom.gni") +import("//third_party/widevine/cdm/widevine.gni") import("//tools/grit/repack.gni") import("//tools/grit/grit_rule.gni") +if (is_clang) { + import("//build/config/clang/clang.gni") +} if (is_linux) { import("//build/config/linux/pkg_config.gni") } @@ -119,6 +121,10 @@ if (is_mac) { import("//build/mac/tweak_info_plist.gni") import("//media/cdm/ppapi/cdm_paths.gni") } +if (is_win) { + import("//build/config/win/console_app.gni") + import("//build/config/win/manifest.gni") +} # @@ -1114,6 +1120,7 @@ make_pack_header("resources") { inputs = [ "$root_gen_dir/blink/grit/devtools_resources.h", "$root_gen_dir/blink/public/resources/grit/blink_resources.h", + "$root_gen_dir/cef/grit/cef_resources.h", "$root_gen_dir/chrome/grit/browser_resources.h", "$root_gen_dir/chrome/grit/common_resources.h", "$root_gen_dir/chrome/grit/component_extension_resources.h", @@ -1125,7 +1132,6 @@ make_pack_header("resources") { "$root_gen_dir/ui/resources/grit/ui_resources.h", "$root_gen_dir/ui/resources/grit/webui_resources.h", "$root_gen_dir/ui/views/resources/grit/views_resources.h", - "$root_gen_dir/cef/grit/cef_resources.h", ] } @@ -1133,6 +1139,7 @@ make_pack_header("resources") { make_pack_header("strings") { header = "$root_out_dir/includes/include/cef_pack_strings.h" inputs = [ + "$root_gen_dir/cef/grit/cef_strings.h", "$root_gen_dir/chrome/grit/generated_resources.h", "$root_gen_dir/chrome/grit/locale_settings.h", "$root_gen_dir/chrome/grit/platform_locale_settings.h", @@ -1140,7 +1147,6 @@ make_pack_header("strings") { "$root_gen_dir/content/app/strings/grit/content_strings.h", "$root_gen_dir/extensions/strings/grit/extensions_strings.h", "$root_gen_dir/ui/strings/grit/ui_strings.h", - "$root_gen_dir/cef/grit/cef_strings.h", ] } diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index b51fc2872..a1a37c79e 100644 --- a/CHROMIUM_BUILD_COMPATIBILITY.txt +++ b/CHROMIUM_BUILD_COMPATIBILITY.txt @@ -7,5 +7,5 @@ # https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding { - 'chromium_checkout': '68623971be0cfc492a2cb0427d7f478e7b214c24', + 'chromium_checkout': 'fc6aaca4ed6ff4f050e6f5c7fb19af85da8db574', } diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index fa01feca5..f4e053b50 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -942,11 +942,12 @@ typedef enum { } cef_cert_status_t; /// -// The manner in which a link click should be opened. +// The manner in which a link click should be opened. These constants match +// their equivalents in Chromium's window_open_disposition.h and should not be +// renumbered. /// typedef enum { WOD_UNKNOWN, - WOD_SUPPRESS_OPEN, WOD_CURRENT_TAB, WOD_SINGLETON_TAB, WOD_NEW_FOREGROUND_TAB, diff --git a/libcef/browser/browser_context_impl.cc b/libcef/browser/browser_context_impl.cc index 56bc34fd5..e301995f4 100644 --- a/libcef/browser/browser_context_impl.cc +++ b/libcef/browser/browser_context_impl.cc @@ -424,8 +424,8 @@ net::URLRequestContextGetter* CefBrowserContextImpl::CreateRequestContext( url_request_getter_ = new CefURLRequestContextGetterImpl( settings_, GetPrefs(), - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE), protocol_handlers, std::move(proxy_config_service), std::move(request_interceptors)); diff --git a/libcef/browser/browser_urlrequest_impl.cc b/libcef/browser/browser_urlrequest_impl.cc index 6ab9db707..3241aae0d 100644 --- a/libcef/browser/browser_urlrequest_impl.cc +++ b/libcef/browser/browser_urlrequest_impl.cc @@ -396,7 +396,7 @@ void CefURLFetcherDelegate::OnURLFetchComplete( const net::URLFetcher* source) { // Complete asynchronously so as not to delete the URLFetcher while it's still // in the call stack. - base::MessageLoop::current()->PostTask(FROM_HERE, + base::MessageLoop::current()->task_runner()->PostTask(FROM_HERE, base::Bind(&CefBrowserURLRequest::Context::OnComplete, context_)); } diff --git a/libcef/browser/content_browser_client.cc b/libcef/browser/content_browser_client.cc index 21cef5ad2..309cc60b0 100644 --- a/libcef/browser/content_browser_client.cc +++ b/libcef/browser/content_browser_client.cc @@ -124,7 +124,7 @@ class CefGeolocationDelegate : public content::GeolocationDelegate { explicit CefGeolocationDelegate(net::URLRequestContextGetter* system_context) : system_context_(system_context) {} - content::AccessTokenStore* CreateAccessTokenStore() override { + scoped_refptr CreateAccessTokenStore() override { return new CefAccessTokenStore(system_context_); } diff --git a/libcef/browser/cookie_manager_impl.cc b/libcef/browser/cookie_manager_impl.cc index e6959e5be..13f5a4699 100644 --- a/libcef/browser/cookie_manager_impl.cc +++ b/libcef/browser/cookie_manager_impl.cc @@ -140,7 +140,7 @@ void CefCookieManagerImpl::Initialize( if (request_context.get()) { request_context_ = request_context; request_context_->GetRequestContextImpl( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefCookieManagerImpl::InitWithContext, this, callback)); } else { SetStoragePath(path, persist_session_cookies, callback); @@ -226,7 +226,7 @@ void CefCookieManagerImpl::SetSupportedSchemes( bool CefCookieManagerImpl::VisitAllCookies( CefRefPtr visitor) { GetCookieStore( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefCookieManagerImpl::VisitAllCookiesInternal, this, visitor)); return true; @@ -237,7 +237,7 @@ bool CefCookieManagerImpl::VisitUrlCookies( bool includeHttpOnly, CefRefPtr visitor) { GetCookieStore( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefCookieManagerImpl::VisitUrlCookiesInternal, this, url, includeHttpOnly, visitor)); return true; @@ -252,7 +252,7 @@ bool CefCookieManagerImpl::SetCookie( return false; GetCookieStore( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefCookieManagerImpl::SetCookieInternal, this, gurl, cookie, callback)); return true; @@ -268,7 +268,7 @@ bool CefCookieManagerImpl::DeleteCookies( return false; GetCookieStore( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefCookieManagerImpl::DeleteCookiesInternal, this, gurl, cookie_name, callback)); return true; @@ -314,8 +314,8 @@ bool CefCookieManagerImpl::SetStoragePath( persistent_store = new net::SQLitePersistentCookieStore( cookie_path, - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::DB), persist_session_cookies, NULL); } else { @@ -341,7 +341,7 @@ bool CefCookieManagerImpl::SetStoragePath( bool CefCookieManagerImpl::FlushStore( CefRefPtr callback) { GetCookieStore( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefCookieManagerImpl::FlushStoreInternal, this, callback)); return true; } @@ -427,7 +427,7 @@ void CefCookieManagerImpl::RunMethodWithContext( } else if (request_context_.get()) { // Try again after the request context is initialized. request_context_->GetRequestContextImpl( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), method); } else { NOTREACHED(); diff --git a/libcef/browser/devtools_delegate.cc b/libcef/browser/devtools_delegate.cc index 7495b8196..3c2fadd6e 100644 --- a/libcef/browser/devtools_delegate.cc +++ b/libcef/browser/devtools_delegate.cc @@ -132,6 +132,9 @@ CefDevToolsManagerDelegate::~CefDevToolsManagerDelegate() { base::DictionaryValue* CefDevToolsManagerDelegate::HandleCommand( content::DevToolsAgentHost* agent_host, - base::DictionaryValue* command) { - return NULL; + base::DictionaryValue* command_dict) { + std::unique_ptr result = + devtools_discovery::DevToolsDiscoveryManager::GetInstance() + ->HandleNewTargetCommand(command_dict); + return result.release(); // Caller takes ownership. } diff --git a/libcef/browser/devtools_frontend.cc b/libcef/browser/devtools_frontend.cc index 542a1d9c7..6bf568698 100644 --- a/libcef/browser/devtools_frontend.cc +++ b/libcef/browser/devtools_frontend.cc @@ -147,7 +147,7 @@ void CefDevToolsFrontend::InspectElementAt(int x, int y) { if (inspect_element_at_.x != x || inspect_element_at_.y != y) inspect_element_at_.Set(x, y); if (agent_host_) - agent_host_->InspectElement(x, y); + agent_host_->InspectElement(this, x, y); } void CefDevToolsFrontend::Close() { diff --git a/libcef/browser/menu_model_impl.cc b/libcef/browser/menu_model_impl.cc index 18c009407..af73ca912 100644 --- a/libcef/browser/menu_model_impl.cc +++ b/libcef/browser/menu_model_impl.cc @@ -664,7 +664,7 @@ void CefMenuModelImpl::MenuClosed() { // Due to how menus work on the different platforms, ActivatedAt will be // called after this. It's more convenient for the delegate to be called // afterwards, though, so post a task. - base::MessageLoop::current()->PostTask( + base::MessageLoop::current()->task_runner()->PostTask( FROM_HERE, base::Bind(&CefMenuModelImpl::OnMenuClosed, this)); } diff --git a/libcef/browser/native/browser_platform_delegate_native_linux.cc b/libcef/browser/native/browser_platform_delegate_native_linux.cc index 2a7525185..06c39b8dd 100644 --- a/libcef/browser/native/browser_platform_delegate_native_linux.cc +++ b/libcef/browser/native/browser_platform_delegate_native_linux.cc @@ -287,8 +287,6 @@ void CefBrowserPlatformDelegateNativeLinux::TranslateKeyEvent( result.text[0] = key_event.character; result.unmodifiedText[0] = key_event.unmodified_character; - result.setKeyIdentifierFromWindowsKeyCode(); - result.modifiers |= TranslateModifiers(key_event.modifiers); } diff --git a/libcef/browser/native/browser_platform_delegate_native_win.cc b/libcef/browser/native/browser_platform_delegate_native_win.cc index 22d19f73d..cc6dc2e75 100644 --- a/libcef/browser/native/browser_platform_delegate_native_win.cc +++ b/libcef/browser/native/browser_platform_delegate_native_win.cc @@ -406,8 +406,6 @@ void CefBrowserPlatformDelegateNativeWin::TranslateKeyEvent( result.text[0] = result.windowsKeyCode; result.unmodifiedText[0] = result.windowsKeyCode; } - if (result.type != blink::WebInputEvent::Char) - result.setKeyIdentifierFromWindowsKeyCode(); result.modifiers |= TranslateModifiers(key_event.modifiers); } diff --git a/libcef/browser/net/chrome_scheme_handler.cc b/libcef/browser/net/chrome_scheme_handler.cc index 05619a730..6c44647ff 100644 --- a/libcef/browser/net/chrome_scheme_handler.cc +++ b/libcef/browser/net/chrome_scheme_handler.cc @@ -350,10 +350,7 @@ class Delegate : public InternalHandlerDelegate { CHROME_VERSION_BUILD, CHROME_VERSION_PATCH)); parser.Add("OS", GetOSType()); - parser.Add("WEBKIT", - base::StringPrintf("%d.%d", - content::GetWebKitMajorVersion(), - content::GetWebKitMinorVersion())); + parser.Add("WEBKIT", content::GetWebKitVersion()); parser.Add("JAVASCRIPT", v8::V8::GetVersion()); parser.Add("FLASH", std::string()); // Value populated asynchronously. parser.Add("USERAGENT", CefContentClient::Get()->GetUserAgent()); diff --git a/libcef/browser/net/url_request_context_getter_impl.cc b/libcef/browser/net/url_request_context_getter_impl.cc index ed517a906..2cd0b24ff 100644 --- a/libcef/browser/net/url_request_context_getter_impl.cc +++ b/libcef/browser/net/url_request_context_getter_impl.cc @@ -124,7 +124,7 @@ CefURLRequestContextGetterImpl::CefURLRequestContextGetterImpl( std::swap(protocol_handlers_, *protocol_handlers); auto io_thread_proxy = - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO); quick_check_enabled_.Init(prefs::kQuickCheckEnabled, pref_service); quick_check_enabled_.MoveToThread(io_thread_proxy); @@ -256,7 +256,7 @@ net::URLRequestContext* CefURLRequestContextGetterImpl::GetURLRequestContext() { net::CACHE_BACKEND_DEFAULT, http_cache_path, 0, - BrowserThread::GetMessageLoopProxyForThread( + BrowserThread::GetTaskRunnerForThread( BrowserThread::CACHE))); net::HttpNetworkSession::Params network_session_params; @@ -340,7 +340,7 @@ net::URLRequestContext* CefURLRequestContextGetterImpl::GetURLRequestContext() { scoped_refptr CefURLRequestContextGetterImpl::GetNetworkTaskRunner() const { - return BrowserThread::GetMessageLoopProxyForThread(CEF_IOT); + return BrowserThread::GetTaskRunnerForThread(CEF_IOT); } net::HostResolver* CefURLRequestContextGetterImpl::GetHostResolver() const { @@ -370,8 +370,8 @@ void CefURLRequestContextGetterImpl::SetCookieStoragePath( persistent_store = new net::SQLitePersistentCookieStore( cookie_path, - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::DB), persist_session_cookies, NULL); } else { diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index d698651ff..d75937399 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -45,12 +45,6 @@ const float kDefaultScaleFactor = 1.0; // The maximum number of retry counts if frame capture fails. const int kFrameRetryLimit = 2; -// When accelerated compositing is enabled and a widget resize is pending, -// we delay further resizes of the UI. The following constant is the maximum -// length of time that we should delay further UI resizes while waiting for a -// resized frame from a renderer. -const int kResizeLockTimeoutMs = 67; - static blink::WebScreenInfo webScreenInfoFrom(const CefScreenInfo& src) { blink::WebScreenInfo webScreenInfo; webScreenInfo.deviceScaleFactor = src.device_scale_factor; @@ -67,6 +61,14 @@ static blink::WebScreenInfo webScreenInfoFrom(const CefScreenInfo& src) { return webScreenInfo; } +#if !defined(OS_MACOSX) + +// When accelerated compositing is enabled and a widget resize is pending, +// we delay further resizes of the UI. The following constant is the maximum +// length of time that we should delay further UI resizes while waiting for a +// resized frame from a renderer. +const int kResizeLockTimeoutMs = 67; + // Used to prevent further resizes while a resize is pending. class CefResizeLock : public content::ResizeLock { public: @@ -124,6 +126,8 @@ class CefResizeLock : public content::ResizeLock { DISALLOW_COPY_AND_ASSIGN(CefResizeLock); }; +#endif // !defined(OS_MACOSX) + } // namespace // Used for managing copy requests when GPU compositing is enabled. Based on @@ -202,8 +206,7 @@ class CefCopyFrameGenerator { damage_rect)); request->set_area(gfx::Rect(view_->GetPhysicalBackingSize())); - view_->DelegatedFrameHostGetLayer()->RequestCopyOfOutput( - std::move(request)); + view_->GetRootLayer()->RequestCopyOfOutput(std::move(request)); } void CopyFromCompositingSurfaceHasResult( @@ -410,7 +413,7 @@ class CefBeginFrameTimer : public cc::DelayBasedTimeSourceClient { const base::Closure& callback) : callback_(callback) { time_source_.reset(new cc::DelayBasedTimeSource( - content::BrowserThread::GetMessageLoopProxyForThread(CEF_UIT).get())); + content::BrowserThread::GetTaskRunnerForThread(CEF_UIT).get())); time_source_->SetTimebaseAndInterval( base::TimeTicks(), base::TimeDelta::FromMilliseconds(frame_rate_threshold_ms)); @@ -1035,10 +1038,7 @@ CefRenderWidgetHostViewOSR::CreateSoftwareOutputDevice( return base::WrapUnique(software_output_device_); } -int CefRenderWidgetHostViewOSR::DelegatedFrameHostGetGpuMemoryBufferClientId() - const { - return render_widget_host_->GetProcess()->GetID(); -} +#if !defined(OS_MACOSX) ui::Layer* CefRenderWidgetHostViewOSR::DelegatedFrameHostGetLayer() const { return GetRootLayer(); @@ -1084,21 +1084,14 @@ void CefRenderWidgetHostViewOSR::DelegatedFrameHostResizeLockWasReleased() { return render_widget_host_->WasResized(); } -void CefRenderWidgetHostViewOSR::DelegatedFrameHostSendCompositorSwapAck( - int output_surface_id, - const cc::CompositorFrameAck& ack) { - render_widget_host_->Send(new ViewMsg_SwapCompositorFrameAck( - render_widget_host_->GetRoutingID(), - output_surface_id, ack)); -} - void CefRenderWidgetHostViewOSR::DelegatedFrameHostSendReclaimCompositorResources( int output_surface_id, - const cc::CompositorFrameAck& ack) { + bool is_swap_ack, + const cc::ReturnedResourceArray& resources) { render_widget_host_->Send(new ViewMsg_ReclaimCompositorResources( - render_widget_host_->GetRoutingID(), - output_surface_id, ack)); + render_widget_host_->GetRoutingID(), output_surface_id, is_swap_ack, + resources)); } void CefRenderWidgetHostViewOSR::DelegatedFrameHostOnLostCompositorResources() { @@ -1118,6 +1111,12 @@ void CefRenderWidgetHostViewOSR::SetBeginFrameSource( // See https://codereview.chromium.org/1841083007. } +bool CefRenderWidgetHostViewOSR::IsAutoResizeEnabled() const { + return render_widget_host_->auto_resize_enabled(); +} + +#endif // !defined(OS_MACOSX) + bool CefRenderWidgetHostViewOSR::InstallTransparency() { if (transparent_) { SetBackgroundColor(SkColor()); @@ -1332,18 +1331,20 @@ void CefRenderWidgetHostViewOSR::RemoveGuestHostView( } #if !defined(OS_MACOSX) + ui::Compositor* CefRenderWidgetHostViewOSR::GetCompositor() const { return compositor_.get(); } +ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const { + return root_layer_.get(); +} + content::DelegatedFrameHost* CefRenderWidgetHostViewOSR::GetDelegatedFrameHost() const { return delegated_frame_host_.get(); } -ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const { - return root_layer_.get(); -} #endif // !defined(OS_MACOSX) void CefRenderWidgetHostViewOSR::SetFrameRate() { diff --git a/libcef/browser/osr/render_widget_host_view_osr.h b/libcef/browser/osr/render_widget_host_view_osr.h index 8a04850c4..bbc897982 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.h +++ b/libcef/browser/osr/render_widget_host_view_osr.h @@ -76,13 +76,16 @@ class CefWindowX11; /////////////////////////////////////////////////////////////////////////////// #if defined(OS_MACOSX) -class AcceleratedWidgetMacNSViewHelper; +class MacHelper; #endif class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase, - public ui::CompositorDelegate, - public content::DelegatedFrameHostClient { + public ui::CompositorDelegate +#if !defined(OS_MACOSX) + , public content::DelegatedFrameHostClient +#endif +{ public: CefRenderWidgetHostViewOSR(const bool transparent, content::RenderWidgetHost* widget, @@ -190,8 +193,8 @@ class CefRenderWidgetHostViewOSR std::unique_ptr CreateSoftwareOutputDevice( ui::Compositor* compositor) override; +#if !defined(OS_MACOSX) // DelegatedFrameHostClient implementation. - virtual int DelegatedFrameHostGetGpuMemoryBufferClientId() const override; ui::Layer* DelegatedFrameHostGetLayer() const override; bool DelegatedFrameHostIsVisible() const override; SkColor DelegatedFrameHostGetGutterColor(SkColor color) const override; @@ -200,17 +203,17 @@ class CefRenderWidgetHostViewOSR std::unique_ptr DelegatedFrameHostCreateResizeLock( bool defer_compositor_lock) override; void DelegatedFrameHostResizeLockWasReleased() override; - void DelegatedFrameHostSendCompositorSwapAck( - int output_surface_id, - const cc::CompositorFrameAck& ack) override; void DelegatedFrameHostSendReclaimCompositorResources( int output_surface_id, - const cc::CompositorFrameAck& ack) override; + bool is_swap_ack, + const cc::ReturnedResourceArray& resources) override; void DelegatedFrameHostOnLostCompositorResources() override; void DelegatedFrameHostUpdateVSyncParameters( const base::TimeTicks& timebase, const base::TimeDelta& interval) override; void SetBeginFrameSource(cc::BeginFrameSource* source) override; + bool IsAutoResizeEnabled() const override; +#endif // !defined(OS_MACOSX) bool InstallTransparency(); @@ -267,10 +270,10 @@ class CefRenderWidgetHostViewOSR ui::Compositor* GetCompositor() const; content::RenderWidgetHostImpl* render_widget_host() const { return render_widget_host_; } + ui::Layer* GetRootLayer() const; private: content::DelegatedFrameHost* GetDelegatedFrameHost() const; - ui::Layer* GetRootLayer() const; void SetFrameRate(); void SetDeviceScaleFactor(); @@ -286,7 +289,7 @@ class CefRenderWidgetHostViewOSR void OnScrollOffsetChanged(); #if defined(OS_MACOSX) - friend class AcceleratedWidgetMacNSViewHelper; + friend class MacHelper; // Returns composition character boundary rectangle. The |range| is // composition based range. Also stores |actual_range| which is corresponding @@ -334,7 +337,7 @@ class CefRenderWidgetHostViewOSR NSWindow* window_; CALayer* background_layer_; std::unique_ptr browser_compositor_; - AcceleratedWidgetMacNSViewHelper* accelerated_widget_helper_; + MacHelper* mac_helper_; #elif defined(USE_X11) CefWindowX11* window_; std::unique_ptr invisible_cursor_; diff --git a/libcef/browser/osr/render_widget_host_view_osr_mac.mm b/libcef/browser/osr/render_widget_host_view_osr_mac.mm index 16549d6a3..f2fcc42a1 100644 --- a/libcef/browser/osr/render_widget_host_view_osr_mac.mm +++ b/libcef/browser/osr/render_widget_host_view_osr_mac.mm @@ -32,12 +32,62 @@ CefTextInputClientOSRMac* GetInputClientFromContext( } // namespace -class AcceleratedWidgetMacNSViewHelper : public ui::AcceleratedWidgetMacNSView { +class MacHelper : + public content::BrowserCompositorMacClient, + public ui::AcceleratedWidgetMacNSView { public: - explicit AcceleratedWidgetMacNSViewHelper(CefRenderWidgetHostViewOSR* view) + explicit MacHelper(CefRenderWidgetHostViewOSR* view) : view_(view) { } - virtual ~AcceleratedWidgetMacNSViewHelper() {} + virtual ~MacHelper() {} + + // BrowserCompositorMacClient methods: + + NSView* BrowserCompositorMacGetNSView() const override { + // Intentionally return nil so that + // BrowserCompositorMac::DelegatedFrameHostDesiredSizeInDIP uses the layer + // size instead of the NSView size. + return nil; + } + + SkColor BrowserCompositorMacGetGutterColor(SkColor color) const override { + // When making an element on the page fullscreen the element's background + // may not match the page's, so use black as the gutter color to avoid + // flashes of brighter colors during the transition. + if (view_->render_widget_host()->delegate() && + view_->render_widget_host()->delegate()->IsFullscreenForCurrentTab()) { + return SK_ColorBLACK; + } + return color; + } + + void BrowserCompositorMacSendReclaimCompositorResources( + int output_surface_id, + bool is_swap_ack, + const cc::ReturnedResourceArray& resources) override { + view_->render_widget_host()->Send(new ViewMsg_ReclaimCompositorResources( + view_->render_widget_host()->GetRoutingID(), output_surface_id, + is_swap_ack, resources)); + } + + void BrowserCompositorMacOnLostCompositorResources() override { + view_->render_widget_host()->ScheduleComposite(); + } + + void BrowserCompositorMacUpdateVSyncParameters( + const base::TimeTicks& timebase, + const base::TimeDelta& interval) override { + view_->render_widget_host()->UpdateVSyncParameters(timebase, interval); + } + + void BrowserCompositorMacSendBeginFrame( + const cc::BeginFrameArgs& args) override { + view_->render_widget_host()->Send( + new ViewMsg_BeginFrame(view_->render_widget_host()->GetRoutingID(), + args)); + } + + // AcceleratedWidgetMacNSView methods: NSView* AcceleratedWidgetGetNSView() const override { return [view_->window_ contentView]; @@ -56,7 +106,7 @@ class AcceleratedWidgetMacNSViewHelper : public ui::AcceleratedWidgetMacNSView { // Guaranteed to outlive this object. CefRenderWidgetHostViewOSR* view_; - DISALLOW_COPY_AND_ASSIGN(AcceleratedWidgetMacNSViewHelper); + DISALLOW_COPY_AND_ASSIGN(MacHelper); }; @@ -311,15 +361,15 @@ ui::Compositor* CefRenderWidgetHostViewOSR::GetCompositor() const { return browser_compositor_->GetCompositor(); } +ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const { + return browser_compositor_->GetRootLayer(); +} + content::DelegatedFrameHost* CefRenderWidgetHostViewOSR::GetDelegatedFrameHost() const { return browser_compositor_->GetDelegatedFrameHost(); } -ui::Layer* CefRenderWidgetHostViewOSR::GetRootLayer() const { - return browser_compositor_->GetRootLayer(); -} - void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() { // Create a borderless non-visible 1x1 window. window_ = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1, 1) @@ -334,17 +384,14 @@ void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() { [content_view setLayer:background_layer_]; [content_view setWantsLayer:YES]; - accelerated_widget_helper_ = new AcceleratedWidgetMacNSViewHelper(this); + mac_helper_ = new MacHelper(this); browser_compositor_.reset(new content::BrowserCompositorMac( - accelerated_widget_helper_, this, render_widget_host_->is_hidden(), - true)); + mac_helper_, mac_helper_, render_widget_host_->is_hidden(), true)); } void CefRenderWidgetHostViewOSR::PlatformDestroyCompositorWidget() { DCHECK(window_); - browser_compositor_->Destroy(); - [window_ close]; window_ = nil; [background_layer_ release]; @@ -352,6 +399,6 @@ void CefRenderWidgetHostViewOSR::PlatformDestroyCompositorWidget() { browser_compositor_.reset(); - delete accelerated_widget_helper_; - accelerated_widget_helper_ = nullptr; + delete mac_helper_; + mac_helper_ = nullptr; } diff --git a/libcef/browser/pepper/pepper_isolated_file_system_message_filter.cc b/libcef/browser/pepper/pepper_isolated_file_system_message_filter.cc index 55c1d1248..32a9a94cf 100644 --- a/libcef/browser/pepper/pepper_isolated_file_system_message_filter.cc +++ b/libcef/browser/pepper/pepper_isolated_file_system_message_filter.cc @@ -75,7 +75,7 @@ PepperIsolatedFileSystemMessageFilter::OverrideTaskRunnerForMessage( const IPC::Message& msg) { // In order to reach ExtensionSystem, we need to get ProfileManager first. // ProfileManager lives in UI thread, so we need to do this in UI thread. - return content::BrowserThread::GetMessageLoopProxyForThread( + return content::BrowserThread::GetTaskRunnerForThread( content::BrowserThread::UI); } diff --git a/libcef/browser/permissions/permission_manager.cc b/libcef/browser/permissions/permission_manager.cc index 5ac46fea6..9ef8884f4 100644 --- a/libcef/browser/permissions/permission_manager.cc +++ b/libcef/browser/permissions/permission_manager.cc @@ -175,11 +175,13 @@ int CefPermissionManager::RequestPermission( PermissionType permission, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, + bool user_gesture, const base::Callback& callback) { return RequestPermissions( std::vector(1, permission), render_frame_host, requesting_origin, + user_gesture, base::Bind(&PermissionRequestResponseCallbackWrapper, callback)); } @@ -187,6 +189,7 @@ int CefPermissionManager::RequestPermissions( const std::vector& permissions, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, + bool user_gesture, const base::Callback&)>& callback) { if (permissions.empty()) { diff --git a/libcef/browser/permissions/permission_manager.h b/libcef/browser/permissions/permission_manager.h index bf81317ae..e011cefef 100644 --- a/libcef/browser/permissions/permission_manager.h +++ b/libcef/browser/permissions/permission_manager.h @@ -36,12 +36,14 @@ class CefPermissionManager : public KeyedService, content::PermissionType permission, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, + bool user_gesture, const base::Callback& callback) override; int RequestPermissions( const std::vector& permissions, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, + bool user_gesture, const base::Callback&)>& callback) override; diff --git a/libcef/browser/plugins/plugin_info_message_filter.cc b/libcef/browser/plugins/plugin_info_message_filter.cc index 06a5d251e..ec99e6e13 100644 --- a/libcef/browser/plugins/plugin_info_message_filter.cc +++ b/libcef/browser/plugins/plugin_info_message_filter.cc @@ -146,12 +146,12 @@ CefPluginInfoMessageFilter::Context::Context( allow_outdated_plugins_.Init(prefs::kPluginsAllowOutdated, profile->GetPrefs()); allow_outdated_plugins_.MoveToThread( - content::BrowserThread::GetMessageLoopProxyForThread( + content::BrowserThread::GetTaskRunnerForThread( content::BrowserThread::IO)); always_authorize_plugins_.Init(prefs::kPluginsAlwaysAuthorize, profile->GetPrefs()); always_authorize_plugins_.MoveToThread( - content::BrowserThread::GetMessageLoopProxyForThread( + content::BrowserThread::GetTaskRunnerForThread( content::BrowserThread::IO)); } @@ -475,13 +475,9 @@ void CefPluginInfoMessageFilter::Context::GetPluginContentSetting( // If there is a plugin-specific setting, we use it, unless the general // setting was set by policy, in which case it takes precedence. - // TODO(tommycli): Remove once we deprecate the plugin ASK policy. - bool legacy_ask_user = content_settings::ValueToContentSetting( - general_setting.get()) == CONTENT_SETTING_ASK; - bool use_policy = - general_info.source == content_settings::SETTING_SOURCE_POLICY && - !legacy_ask_user; - uses_plugin_specific_setting = specific_setting && !use_policy; + uses_plugin_specific_setting = + specific_setting && + general_info.source != content_settings::SETTING_SOURCE_POLICY; if (uses_plugin_specific_setting) { value = std::move(specific_setting); info = specific_info; diff --git a/libcef/browser/printing/print_dialog_linux.cc b/libcef/browser/printing/print_dialog_linux.cc index 2cd18a537..15fe27974 100644 --- a/libcef/browser/printing/print_dialog_linux.cc +++ b/libcef/browser/printing/print_dialog_linux.cc @@ -327,7 +327,7 @@ void CefPrintDialogLinux::OnPrintCancel() { void CefPrintDialogLinux::OnJobCompleted() { base::FileUtilProxy::DeleteFile( - content::BrowserThread::GetMessageLoopProxyForThread( + content::BrowserThread::GetTaskRunnerForThread( BrowserThread::FILE).get(), path_to_pdf_, false, diff --git a/libcef/browser/request_context_impl.cc b/libcef/browser/request_context_impl.cc index af54ea53e..63427e94a 100644 --- a/libcef/browser/request_context_impl.cc +++ b/libcef/browser/request_context_impl.cc @@ -239,7 +239,7 @@ void CefRequestContextImpl::GetRequestContextImpl( } else { // Need to initialize the browser context first. GetBrowserContextOnUIThread( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefRequestContextImpl::GetRequestContextImplOnIOThread, this, task_runner, callback)); } @@ -325,7 +325,7 @@ bool CefRequestContextImpl::RegisterSchemeHandlerFactory( const CefString& domain_name, CefRefPtr factory) { GetRequestContextImpl( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefRequestContextImpl::RegisterSchemeHandlerFactoryInternal, this, scheme_name, domain_name, factory)); return true; @@ -333,7 +333,7 @@ bool CefRequestContextImpl::RegisterSchemeHandlerFactory( bool CefRequestContextImpl::ClearSchemeHandlerFactories() { GetRequestContextImpl( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefRequestContextImpl::ClearSchemeHandlerFactoriesInternal, this)); return true; @@ -341,7 +341,7 @@ bool CefRequestContextImpl::ClearSchemeHandlerFactories() { void CefRequestContextImpl::PurgePluginListCache(bool reload_pages) { GetBrowserContext( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), + BrowserThread::GetTaskRunnerForThread(BrowserThread::UI), base::Bind(&CefRequestContextImpl::PurgePluginListCacheInternal, this, reload_pages)); } @@ -474,7 +474,7 @@ bool CefRequestContextImpl::SetPreference(const CefString& name, void CefRequestContextImpl::ClearCertificateExceptions( CefRefPtr callback) { GetBrowserContext( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), + BrowserThread::GetTaskRunnerForThread(BrowserThread::UI), base::Bind(&CefRequestContextImpl::ClearCertificateExceptionsInternal, this, callback)); } @@ -482,7 +482,7 @@ void CefRequestContextImpl::ClearCertificateExceptions( void CefRequestContextImpl::CloseAllConnections( CefRefPtr callback) { GetRequestContextImpl( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefRequestContextImpl::CloseAllConnectionsInternal, this, callback)); } @@ -491,7 +491,7 @@ void CefRequestContextImpl::ResolveHost( const CefString& origin, CefRefPtr callback) { GetRequestContextImpl( - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), + BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), base::Bind(&CefRequestContextImpl::ResolveHostInternal, this, origin, callback)); } diff --git a/libcef/browser/views/basic_label_button_impl.cc b/libcef/browser/views/basic_label_button_impl.cc index 7ef9f1e8a..cae258ff2 100644 --- a/libcef/browser/views/basic_label_button_impl.cc +++ b/libcef/browser/views/basic_label_button_impl.cc @@ -37,3 +37,7 @@ CefBasicLabelButtonImpl::CefBasicLabelButtonImpl(CefRefPtr de views::LabelButton* CefBasicLabelButtonImpl::CreateRootView() { return new CefBasicLabelButtonView(delegate()); } + +void CefBasicLabelButtonImpl::InitializeRootView() { + static_cast(root_view())->Initialize(); +} diff --git a/libcef/browser/views/basic_label_button_impl.h b/libcef/browser/views/basic_label_button_impl.h index b3e1824bc..10d5b3e21 100644 --- a/libcef/browser/views/basic_label_button_impl.h +++ b/libcef/browser/views/basic_label_button_impl.h @@ -37,6 +37,7 @@ class CefBasicLabelButtonImpl : // CefViewImpl methods: views::LabelButton* CreateRootView() override; + void InitializeRootView() override; IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefBasicLabelButtonImpl); DISALLOW_COPY_AND_ASSIGN(CefBasicLabelButtonImpl); diff --git a/libcef/browser/views/basic_panel_impl.cc b/libcef/browser/views/basic_panel_impl.cc index 9512ac3e8..86d7d0de0 100644 --- a/libcef/browser/views/basic_panel_impl.cc +++ b/libcef/browser/views/basic_panel_impl.cc @@ -28,3 +28,7 @@ CefBasicPanelImpl::CefBasicPanelImpl(CefRefPtr delegate) views::View* CefBasicPanelImpl::CreateRootView() { return new CefBasicPanelView(delegate()); } + +void CefBasicPanelImpl::InitializeRootView() { + static_cast(root_view())->Initialize(); +} diff --git a/libcef/browser/views/basic_panel_impl.h b/libcef/browser/views/basic_panel_impl.h index ad9284a0a..437df7696 100644 --- a/libcef/browser/views/basic_panel_impl.h +++ b/libcef/browser/views/basic_panel_impl.h @@ -33,6 +33,7 @@ class CefBasicPanelImpl : // CefViewImpl methods: views::View* CreateRootView() override; + void InitializeRootView() override; IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefBasicPanelImpl); DISALLOW_COPY_AND_ASSIGN(CefBasicPanelImpl); diff --git a/libcef/browser/views/browser_view_impl.cc b/libcef/browser/views/browser_view_impl.cc index 7879a4063..195707771 100644 --- a/libcef/browser/views/browser_view_impl.cc +++ b/libcef/browser/views/browser_view_impl.cc @@ -163,3 +163,7 @@ void CefBrowserViewImpl::SetDefaults(const CefBrowserSettings& settings) { CefBrowserViewView* CefBrowserViewImpl::CreateRootView() { return new CefBrowserViewView(delegate(), this); } + +void CefBrowserViewImpl::InitializeRootView() { + static_cast(root_view())->Initialize(); +} diff --git a/libcef/browser/views/browser_view_impl.h b/libcef/browser/views/browser_view_impl.h index bc7b37e94..49cb2f06b 100644 --- a/libcef/browser/views/browser_view_impl.h +++ b/libcef/browser/views/browser_view_impl.h @@ -73,6 +73,7 @@ class CefBrowserViewImpl : // CefViewImpl methods: CefBrowserViewView* CreateRootView() override; + void InitializeRootView() override; std::unique_ptr pending_browser_create_params_; diff --git a/libcef/browser/views/label_button_view.h b/libcef/browser/views/label_button_view.h index 6887f09ba..4bc9614a4 100644 --- a/libcef/browser/views/label_button_view.h +++ b/libcef/browser/views/label_button_view.h @@ -27,6 +27,11 @@ CEF_LABEL_BUTTON_VIEW_T class CefLabelButtonView : public CEF_BUTTON_VIEW_D { // |cef_delegate| may be nullptr. explicit CefLabelButtonView(CefViewDelegateClass* cef_delegate) : ParentClass(cef_delegate) { + } + + void Initialize() override { + ParentClass::Initialize(); + // Use our defaults instead of the Views framework defaults. ParentClass::SetFontList(gfx::FontList(view_util::kDefaultFontList)); } diff --git a/libcef/browser/views/menu_button_impl.cc b/libcef/browser/views/menu_button_impl.cc index 0bc6ed637..bba0674f0 100644 --- a/libcef/browser/views/menu_button_impl.cc +++ b/libcef/browser/views/menu_button_impl.cc @@ -58,3 +58,7 @@ CefMenuButtonImpl::CefMenuButtonImpl(CefRefPtr delegate) views::MenuButton* CefMenuButtonImpl::CreateRootView() { return new CefMenuButtonView(delegate()); } + +void CefMenuButtonImpl::InitializeRootView() { + static_cast(root_view())->Initialize(); +} diff --git a/libcef/browser/views/menu_button_impl.h b/libcef/browser/views/menu_button_impl.h index 015e8cb7e..d1dec09df 100644 --- a/libcef/browser/views/menu_button_impl.h +++ b/libcef/browser/views/menu_button_impl.h @@ -47,6 +47,7 @@ class CefMenuButtonImpl : // CefViewImpl methods: views::MenuButton* CreateRootView() override; + void InitializeRootView() override; IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefMenuButtonImpl); DISALLOW_COPY_AND_ASSIGN(CefMenuButtonImpl); diff --git a/libcef/browser/views/scroll_view_impl.cc b/libcef/browser/views/scroll_view_impl.cc index 26d53d641..bf2e023a6 100644 --- a/libcef/browser/views/scroll_view_impl.cc +++ b/libcef/browser/views/scroll_view_impl.cc @@ -86,3 +86,7 @@ CefScrollViewImpl::CefScrollViewImpl(CefRefPtr delegate) CefScrollViewView* CefScrollViewImpl::CreateRootView() { return new CefScrollViewView(delegate()); } + +void CefScrollViewImpl::InitializeRootView() { + static_cast(root_view())->Initialize(); +} diff --git a/libcef/browser/views/scroll_view_impl.h b/libcef/browser/views/scroll_view_impl.h index fc332c23b..c7cf05db7 100644 --- a/libcef/browser/views/scroll_view_impl.h +++ b/libcef/browser/views/scroll_view_impl.h @@ -45,6 +45,7 @@ class CefScrollViewImpl : // CefViewImpl methods: CefScrollViewView* CreateRootView() override; + void InitializeRootView() override; IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefScrollViewImpl); DISALLOW_COPY_AND_ASSIGN(CefScrollViewImpl); diff --git a/libcef/browser/views/textfield_impl.cc b/libcef/browser/views/textfield_impl.cc index a04d7f315..d13ebb555 100644 --- a/libcef/browser/views/textfield_impl.cc +++ b/libcef/browser/views/textfield_impl.cc @@ -212,3 +212,7 @@ CefTextfieldImpl::CefTextfieldImpl(CefRefPtr delegate) CefTextfieldView* CefTextfieldImpl::CreateRootView() { return new CefTextfieldView(delegate()); } + +void CefTextfieldImpl::InitializeRootView() { + static_cast(root_view())->Initialize(); +} diff --git a/libcef/browser/views/textfield_impl.h b/libcef/browser/views/textfield_impl.h index 6ba4aee63..373b6e0f9 100644 --- a/libcef/browser/views/textfield_impl.h +++ b/libcef/browser/views/textfield_impl.h @@ -75,6 +75,7 @@ class CefTextfieldImpl : // CefViewImpl methods: CefTextfieldView* CreateRootView() override; + void InitializeRootView() override; IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(CefTextfieldImpl); DISALLOW_COPY_AND_ASSIGN(CefTextfieldImpl); diff --git a/libcef/browser/views/textfield_view.cc b/libcef/browser/views/textfield_view.cc index 361076236..4029f87de 100644 --- a/libcef/browser/views/textfield_view.cc +++ b/libcef/browser/views/textfield_view.cc @@ -9,6 +9,10 @@ CefTextfieldView::CefTextfieldView(CefTextfieldDelegate* cef_delegate) : ParentClass(cef_delegate) { set_controller(this); +} + +void CefTextfieldView::Initialize() { + ParentClass::Initialize(); // Use our defaults instead of the Views framework defaults. SetFontList(gfx::FontList(view_util::kDefaultFontList)); diff --git a/libcef/browser/views/textfield_view.h b/libcef/browser/views/textfield_view.h index 0eec3f1d0..187ddf546 100644 --- a/libcef/browser/views/textfield_view.h +++ b/libcef/browser/views/textfield_view.h @@ -23,6 +23,8 @@ class CefTextfieldView : // |cef_delegate| may be nullptr. explicit CefTextfieldView(CefTextfieldDelegate* cef_delegate); + void Initialize() override; + // Returns the CefTextfield associated with this view. See comments on // CefViewView::GetCefView. CefRefPtr GetCefTextfield() const { diff --git a/libcef/browser/views/view_impl.h b/libcef/browser/views/view_impl.h index c63926731..c0fcd0a94 100644 --- a/libcef/browser/views/view_impl.h +++ b/libcef/browser/views/view_impl.h @@ -427,11 +427,16 @@ CEF_VIEW_IMPL_T class CefViewImpl : public CefViewAdapter, DCHECK(root_view_.get()); root_view_ref_ = root_view_.get(); view_util::Register(this); + InitializeRootView(); } // Create the root views::View object. virtual ViewsViewClass* CreateRootView() = 0; + // Perform required initialization of the root_view() object created by + // CreateRootView(). Called after this object has been registered. + virtual void InitializeRootView() = 0; + private: CefRefPtr delegate_; diff --git a/libcef/browser/views/view_view.h b/libcef/browser/views/view_view.h index 909125fca..c72ac3fc2 100644 --- a/libcef/browser/views/view_view.h +++ b/libcef/browser/views/view_view.h @@ -31,9 +31,19 @@ CEF_VIEW_VIEW_T class CefViewView : public ViewsViewClass { public: typedef ViewsViewClass ParentClass; - // |cef_delegate| may be nullptr. + // Should be created from CreateRootView() in a CefViewImpl-derived class. + // Do not call complex views::View-derived methods from a CefViewView-derived + // constructor as they may attempt to call back into CefViewImpl before + // registration has been performed. |cef_delegate| may be nullptr. explicit CefViewView(CefViewDelegateClass* cef_delegate) : cef_delegate_(cef_delegate) { + } + + // Should be called from InitializeRootView() in the CefViewImpl-derived + // class that created this object. This method will be called after + // CefViewImpl registration has completed so it is safe to call complex + // views::View-derived methods here. + virtual void Initialize() { // Use our defaults instead of the Views framework defaults. ParentClass::set_background(views::Background::CreateSolidBackground( view_util::kDefaultBackgroundColor)); diff --git a/libcef/browser/views/window_impl.cc b/libcef/browser/views/window_impl.cc index f73319849..fba71433d 100644 --- a/libcef/browser/views/window_impl.cc +++ b/libcef/browser/views/window_impl.cc @@ -484,6 +484,10 @@ CefWindowView* CefWindowImpl::CreateRootView() { return new CefWindowView(delegate(), this); } +void CefWindowImpl::InitializeRootView() { + static_cast(root_view())->Initialize(); +} + void CefWindowImpl::CreateWidget() { DCHECK(!widget_); diff --git a/libcef/browser/views/window_impl.h b/libcef/browser/views/window_impl.h index 67c3fee21..583cd8bb2 100644 --- a/libcef/browser/views/window_impl.h +++ b/libcef/browser/views/window_impl.h @@ -114,6 +114,7 @@ class CefWindowImpl : // CefViewImpl methods: CefWindowView* CreateRootView() override; + void InitializeRootView() override; // Initialize the Widget. void CreateWidget(); diff --git a/libcef/common/extensions/extensions_client.cc b/libcef/common/extensions/extensions_client.cc index fadbee1a6..c3a2e6682 100644 --- a/libcef/common/extensions/extensions_client.cc +++ b/libcef/common/extensions/extensions_client.cc @@ -19,8 +19,8 @@ #include "extensions/common/common_manifest_handlers.h" #include "extensions/common/extension_urls.h" #include "extensions/common/features/api_feature.h" -#include "extensions/common/features/base_feature_provider.h" #include "extensions/common/features/behavior_feature.h" +#include "extensions/common/features/json_feature_provider.h" #include "extensions/common/features/json_feature_provider_source.h" #include "extensions/common/features/manifest_feature.h" #include "extensions/common/features/permission_feature.h" @@ -75,16 +75,16 @@ std::unique_ptr CefExtensionsClient::CreateFeatureProvider( std::unique_ptr source( CreateFeatureProviderSource(name)); if (name == "api") { - provider.reset(new BaseFeatureProvider(source->dictionary(), + provider.reset(new JSONFeatureProvider(source->dictionary(), CreateFeature)); } else if (name == "manifest") { - provider.reset(new BaseFeatureProvider(source->dictionary(), + provider.reset(new JSONFeatureProvider(source->dictionary(), CreateFeature)); } else if (name == "permission") { - provider.reset(new BaseFeatureProvider(source->dictionary(), + provider.reset(new JSONFeatureProvider(source->dictionary(), CreateFeature)); } else if (name == "behavior") { - provider.reset(new BaseFeatureProvider(source->dictionary(), + provider.reset(new JSONFeatureProvider(source->dictionary(), CreateFeature)); } else { NOTREACHED(); diff --git a/libcef/common/request_impl.cc b/libcef/common/request_impl.cc index 147e9f33b..54d34111f 100644 --- a/libcef/common/request_impl.cc +++ b/libcef/common/request_impl.cc @@ -65,7 +65,7 @@ class BytesElementReader : public net::UploadBytesElementReader { }; base::TaskRunner* GetFileTaskRunner() { - return content::BrowserThread::GetMessageLoopProxyForThread( + return content::BrowserThread::GetTaskRunnerForThread( content::BrowserThread::FILE).get(); } @@ -559,7 +559,6 @@ void CefRequestImpl::Set(const blink::WebURLRequest& request) { void CefRequestImpl::Get(blink::WebURLRequest& request, int64& upload_data_size) const { - request.initialize(); base::AutoLock lock_scope(lock_); request.setURL(GURL(url_.ToString())); @@ -614,8 +613,6 @@ void CefRequestImpl::Get(blink::WebURLRequest& request, // static void CefRequestImpl::Get(const CefMsg_LoadRequest_Params& params, blink::WebURLRequest& request) { - request.initialize(); - request.setURL(params.url); if (!params.method.empty()) request.setHTTPMethod(base::ASCIIToUTF16(params.method)); diff --git a/libcef/common/task_runner_impl.cc b/libcef/common/task_runner_impl.cc index c2c4dc6a8..22c1c1cfa 100644 --- a/libcef/common/task_runner_impl.cc +++ b/libcef/common/task_runner_impl.cc @@ -88,7 +88,7 @@ scoped_refptr if (id >= 0 && CefContentClient::Get() && CefContentClient::Get()->browser() && BrowserThread::IsMessageLoopValid(static_cast(id))) { - // Don't use BrowserThread::GetMessageLoopProxyForThread because it returns + // Don't use BrowserThread::GetTaskRunnerForThread because it returns // a new MessageLoopProxy object for each call and makes pointer equality // testing impossible. base::MessageLoop* message_loop = diff --git a/libcef/renderer/browser_impl.cc b/libcef/renderer/browser_impl.cc index 320c2d9d4..cfba3ea65 100644 --- a/libcef/renderer/browser_impl.cc +++ b/libcef/renderer/browser_impl.cc @@ -606,7 +606,9 @@ void CefBrowserImpl::OnRequest(const Cef_Request_Params& params) { } else if (base::LowerCaseEqualsASCII(command, "gettext")) { response = webkit_glue::DumpDocumentText(web_frame); success = true; - } else if (web_frame->executeCommand(base::UTF8ToUTF16(command))) { + } else if (web_frame->isWebLocalFrame() && + web_frame->toWebLocalFrame()->executeCommand( + base::UTF8ToUTF16(command))) { success = true; } } diff --git a/libcef/renderer/dom_document_impl.cc b/libcef/renderer/dom_document_impl.cc index d0e47e840..d7815d437 100644 --- a/libcef/renderer/dom_document_impl.cc +++ b/libcef/renderer/dom_document_impl.cc @@ -12,6 +12,7 @@ #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebElement.h" #include "third_party/WebKit/public/web/WebFrame.h" +#include "third_party/WebKit/public/web/WebLocalFrame.h" #include "third_party/WebKit/public/web/WebNode.h" #include "third_party/WebKit/public/web/WebRange.h" @@ -92,17 +93,21 @@ CefRefPtr CefDOMDocumentImpl::GetFocusedNode() { } bool CefDOMDocumentImpl::HasSelection() { - if (!VerifyContext()) + if (!VerifyContext() || !frame_->isWebLocalFrame()) return false; - return frame_->hasSelection(); + return frame_->toWebLocalFrame()->hasSelection(); } int CefDOMDocumentImpl::GetSelectionStartOffset() { - if (!VerifyContext() || !frame_->hasSelection()) + if (!VerifyContext() || !frame_->isWebLocalFrame()) return 0; - const WebRange& range = frame_->selectionRange(); + blink::WebLocalFrame* local_frame = frame_->toWebLocalFrame(); + if (!!local_frame->hasSelection()) + return 0; + + const WebRange& range = local_frame->selectionRange(); if (range.isNull()) return 0; @@ -110,10 +115,14 @@ int CefDOMDocumentImpl::GetSelectionStartOffset() { } int CefDOMDocumentImpl::GetSelectionEndOffset() { - if (!VerifyContext() || !frame_->hasSelection()) + if (!VerifyContext() || !frame_->isWebLocalFrame()) return 0; - const WebRange& range = frame_->selectionRange(); + blink::WebLocalFrame* local_frame = frame_->toWebLocalFrame(); + if (!!local_frame->hasSelection()) + return 0; + + const WebRange& range = local_frame->selectionRange(); if (range.isNull()) return 0; @@ -122,10 +131,14 @@ int CefDOMDocumentImpl::GetSelectionEndOffset() { CefString CefDOMDocumentImpl::GetSelectionAsMarkup() { CefString str; - if (!VerifyContext() || !frame_->hasSelection()) + if (!VerifyContext() || !frame_->isWebLocalFrame()) return str; - const WebString& markup = frame_->selectionAsMarkup(); + blink::WebLocalFrame* local_frame = frame_->toWebLocalFrame(); + if (!!local_frame->hasSelection()) + return str; + + const WebString& markup = local_frame->selectionAsMarkup(); if (!markup.isNull()) str = markup; @@ -134,10 +147,14 @@ CefString CefDOMDocumentImpl::GetSelectionAsMarkup() { CefString CefDOMDocumentImpl::GetSelectionAsText() { CefString str; - if (!VerifyContext() || !frame_->hasSelection()) + if (!VerifyContext() || !frame_->isWebLocalFrame()) return str; - const WebString& text = frame_->selectionAsText(); + blink::WebLocalFrame* local_frame = frame_->toWebLocalFrame(); + if (!!local_frame->hasSelection()) + return str; + + const WebString& text = local_frame->selectionAsText(); if (!text.isNull()) str = text; diff --git a/libcef/renderer/frame_impl.cc b/libcef/renderer/frame_impl.cc index 19da7ec9f..692545293 100644 --- a/libcef/renderer/frame_impl.cc +++ b/libcef/renderer/frame_impl.cc @@ -28,6 +28,7 @@ #include "third_party/WebKit/public/web/WebFrame.h" #include "third_party/WebKit/public/web/WebFrameContentDumper.h" #include "third_party/WebKit/public/web/WebKit.h" +#include "third_party/WebKit/public/web/WebLocalFrame.h" #include "third_party/WebKit/public/web/WebView.h" #include "third_party/WebKit/public/web/WebScriptSource.h" @@ -50,45 +51,31 @@ bool CefFrameImpl::IsValid() { } void CefFrameImpl::Undo() { - CEF_REQUIRE_RT_RETURN_VOID(); - if (frame_) - frame_->executeCommand(WebString::fromUTF8("Undo")); + ExecuteCommand("Undo"); } void CefFrameImpl::Redo() { - CEF_REQUIRE_RT_RETURN_VOID(); - if (frame_) - frame_->executeCommand(WebString::fromUTF8("Redo")); + ExecuteCommand("Redo"); } void CefFrameImpl::Cut() { - CEF_REQUIRE_RT_RETURN_VOID(); - if (frame_) - frame_->executeCommand(WebString::fromUTF8("Cut")); + ExecuteCommand("Cut"); } void CefFrameImpl::Copy() { - CEF_REQUIRE_RT_RETURN_VOID(); - if (frame_) - frame_->executeCommand(WebString::fromUTF8("Copy")); + ExecuteCommand("Copy"); } void CefFrameImpl::Paste() { - CEF_REQUIRE_RT_RETURN_VOID(); - if (frame_) - frame_->executeCommand(WebString::fromUTF8("Paste")); + ExecuteCommand("Paste"); } void CefFrameImpl::Delete() { - CEF_REQUIRE_RT_RETURN_VOID(); - if (frame_) - frame_->executeCommand(WebString::fromUTF8("Delete")); + ExecuteCommand("Delete"); } void CefFrameImpl::SelectAll() { - CEF_REQUIRE_RT_RETURN_VOID(); - if (frame_) - frame_->executeCommand(WebString::fromUTF8("SelectAll")); + ExecuteCommand("SelectAll"); } void CefFrameImpl::ViewSource() { @@ -281,6 +268,12 @@ void CefFrameImpl::Detach() { frame_ = NULL; } +void CefFrameImpl::ExecuteCommand(const std::string& command) { + CEF_REQUIRE_RT_RETURN_VOID(); + if (frame_ && frame_->isWebLocalFrame()) + frame_->toWebLocalFrame()->executeCommand(WebString::fromUTF8(command)); +} + // Enable deprecation warnings for MSVC. See http://crbug.com/585142. #if defined(OS_WIN) diff --git a/libcef/renderer/frame_impl.h b/libcef/renderer/frame_impl.h index 64765f000..b103f3392 100644 --- a/libcef/renderer/frame_impl.h +++ b/libcef/renderer/frame_impl.h @@ -58,7 +58,9 @@ class CefFrameImpl : public CefFrame { blink::WebFrame* web_frame() const { return frame_; } - protected: + private: + void ExecuteCommand(const std::string& command); + CefBrowserImpl* browser_; blink::WebFrame* frame_; int64 frame_id_; diff --git a/libcef/renderer/plugins/cef_plugin_placeholder.cc b/libcef/renderer/plugins/cef_plugin_placeholder.cc index 7aa0cebd0..50ab6ba19 100644 --- a/libcef/renderer/plugins/cef_plugin_placeholder.cc +++ b/libcef/renderer/plugins/cef_plugin_placeholder.cc @@ -60,7 +60,7 @@ CefPluginPlaceholder::CefPluginPlaceholder( status_(CefViewHostMsg_GetPluginInfo_Status::kAllowed), title_(title), context_menu_request_id_(0), - ignore_updates_(false) { + did_send_blocked_content_notification_(false) { RenderThread::Get()->AddObserver(this); } @@ -286,29 +286,10 @@ blink::WebPlugin* CefPluginPlaceholder::CreatePlugin() { GetPluginParams(), std::move(throttler)); } -void CefPluginPlaceholder::OnLoadedRectUpdate( - const gfx::Rect& unobscured_rect, - content::RenderFrame::PeripheralContentStatus status) { - // If the placeholder is in the blocked state, do nothing. - if (ignore_updates_) +void CefPluginPlaceholder::OnBlockedTinyContent() { + if (did_send_blocked_content_notification_) return; - - // This should only be called once. - set_delayed(false); - - // block tiny cross-origin - simply by not continuing the load chain. - if (status == - content::RenderFrame::CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_TINY) { - ignore_updates_ = true; - return; - } - - // For essential content, powersaver can be turned off. - if (status != content::RenderFrame::CONTENT_STATUS_PERIPHERAL) - set_power_saver_enabled(false); - - AllowLoading(); - LoadPlugin(); + did_send_blocked_content_notification_ = true; } gin::ObjectTemplateBuilder CefPluginPlaceholder::GetObjectTemplateBuilder( diff --git a/libcef/renderer/plugins/cef_plugin_placeholder.h b/libcef/renderer/plugins/cef_plugin_placeholder.h index 0e803e00c..9a905fd35 100644 --- a/libcef/renderer/plugins/cef_plugin_placeholder.h +++ b/libcef/renderer/plugins/cef_plugin_placeholder.h @@ -52,9 +52,7 @@ class CefPluginPlaceholder final // content::LoadablePluginPlaceholder overrides: blink::WebPlugin* CreatePlugin() override; - void OnLoadedRectUpdate( - const gfx::Rect& unobscured_rect, - content::RenderFrame::PeripheralContentStatus status) override; + void OnBlockedTinyContent() override; // gin::Wrappable (via PluginPlaceholder) method gin::ObjectTemplateBuilder GetObjectTemplateBuilder( @@ -85,7 +83,7 @@ class CefPluginPlaceholder final int context_menu_request_id_; // Nonzero when request pending. base::string16 plugin_name_; - bool ignore_updates_; + bool did_send_blocked_content_notification_; DISALLOW_COPY_AND_ASSIGN(CefPluginPlaceholder); }; diff --git a/libcef/renderer/v8_impl.cc b/libcef/renderer/v8_impl.cc index b82aea321..03e4c301b 100644 --- a/libcef/renderer/v8_impl.cc +++ b/libcef/renderer/v8_impl.cc @@ -13,6 +13,7 @@ #include "base/compiler_specific.h" MSVC_PUSH_WARNING_LEVEL(0); +#include "core/dom/Document.h" #include "core/frame/Frame.h" #include "core/frame/LocalFrame.h" #include "bindings/core/v8/ScriptController.h" @@ -42,7 +43,6 @@ MSVC_POP_WARNING(); #include "third_party/WebKit/public/web/WebKit.h" #include "third_party/WebKit/public/web/WebFrame.h" #include "third_party/WebKit/public/web/WebLocalFrame.h" -#include "third_party/WebKit/public/web/WebScriptController.h" #include "url/gurl.h" namespace { @@ -661,20 +661,15 @@ v8::MaybeLocal CallV8Function(v8::Local context, v8::Isolate* isolate) { v8::MaybeLocal func_rv; - // Execute the function call using the ScriptController so that inspector + // Execute the function call using the V8ScriptRunner so that inspector // instrumentation works. - if (CEF_CURRENTLY_ON_RT()) { - blink::LocalFrame* frame = - toLocalFrame(blink::toFrameIfNotDetached(context)); - DCHECK(frame); - if (frame && - frame->script().canExecuteScripts(blink::AboutToExecuteScript)) { - func_rv = frame->script().callFunction(function, receiver, argc, args); - } - } else { - func_rv = blink::ScriptController::callFunction( - blink::toExecutionContext(context), - function, receiver, argc, args, isolate); + blink::LocalFrame* frame = + toLocalFrame(blink::toFrameIfNotDetached(context)); + DCHECK(frame); + if (frame && + frame->script().canExecuteScripts(blink::AboutToExecuteScript)) { + func_rv = blink::V8ScriptRunner::callFunction( + function, frame->document(), receiver, argc, args, isolate); } return func_rv; @@ -779,10 +774,8 @@ void MessageListenerCallbackImpl(v8::Handle message, CefRefPtr exception = new CefV8ExceptionImpl( static_cast(context.get())->GetV8Context(), message); - if (CEF_CURRENTLY_ON_RT()) { - handler->OnUncaughtException(context->GetBrowser(), context->GetFrame(), - context, exception, stackTrace); - } + handler->OnUncaughtException(context->GetBrowser(), context->GetFrame(), + context, exception, stackTrace); } } // namespace @@ -961,10 +954,6 @@ CefRefPtr CefV8ContextImpl::GetBrowser() { CefRefPtr browser; CEF_V8_REQUIRE_VALID_HANDLE_RETURN(browser); - // Return NULL for WebWorkers. - if (!CEF_CURRENTLY_ON_RT()) - return browser; - blink::WebFrame* webframe = GetWebFrame(); if (webframe) browser = CefBrowserImpl::GetBrowserForMainFrame(webframe->top()); @@ -976,10 +965,6 @@ CefRefPtr CefV8ContextImpl::GetFrame() { CefRefPtr frame; CEF_V8_REQUIRE_VALID_HANDLE_RETURN(frame); - // Return NULL for WebWorkers. - if (!CEF_CURRENTLY_ON_RT()) - return frame; - blink::WebFrame* webframe = GetWebFrame(); if (webframe) { CefRefPtr browser = diff --git a/patch/patch.cfg b/patch/patch.cfg index 37c272dc0..dfdba6f54 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -17,14 +17,6 @@ patches = [ # Move chrome target locales output to a chrome/ directory to avoid # conflicts with the CEF configuration. # - # Add public_deps support to the GN repack template. - # TODO(cef): Remove this once all grit includes are relative to the "gen" - # directory. - # https://bugs.chromium.org/p/chromium/issues/detail?id=623085 - # - # Use a unique output path for the compile_xibs template on Mac. - # https://bugs.chromium.org/p/chromium/issues/detail?id=623237 - # # Support custom VS toolchain on Windows. # https://bugs.chromium.org/p/chromium/issues/detail?id=623342 'name': 'gn_config', diff --git a/patch/patches/browser_compositor_mac.patch b/patch/patches/browser_compositor_mac.patch index 05357d9df..0b080a13f 100644 --- a/patch/patches/browser_compositor_mac.patch +++ b/patch/patches/browser_compositor_mac.patch @@ -1,8 +1,12 @@ diff --git content/browser/renderer_host/browser_compositor_view_mac.h content/browser/renderer_host/browser_compositor_view_mac.h -index 552a56b..2a817d8 100644 +index 75651c4..e422ae7 100644 --- content/browser/renderer_host/browser_compositor_view_mac.h +++ content/browser/renderer_host/browser_compositor_view_mac.h -@@ -52,6 +52,7 @@ class BrowserCompositorMac { +@@ -59,9 +59,11 @@ class BrowserCompositorMac : public cc::BeginFrameObserver, + + // These will not return nullptr until Destroy is called. + DelegatedFrameHost* GetDelegatedFrameHost(); ++ ui::Layer* GetRootLayer() { return root_layer_.get(); } // This may return nullptr, if this has detached itself from its // ui::Compositor. @@ -11,10 +15,10 @@ index 552a56b..2a817d8 100644 void SwapCompositorFrame(uint32_t output_surface_id, diff --git content/browser/renderer_host/browser_compositor_view_mac.mm content/browser/renderer_host/browser_compositor_view_mac.mm -index e9faa0a..931a92f 100644 +index 58d2a2f..69e3bbb 100644 --- content/browser/renderer_host/browser_compositor_view_mac.mm +++ content/browser/renderer_host/browser_compositor_view_mac.mm -@@ -186,6 +186,12 @@ void BrowserCompositorMac::Destroy() { +@@ -183,6 +183,12 @@ void OnCompositingShuttingDown(ui::Compositor* compositor) override {} g_spare_recyclable_compositor.Get().reset(); } @@ -27,3 +31,19 @@ index e9faa0a..931a92f 100644 ui::AcceleratedWidgetMac* BrowserCompositorMac::GetAcceleratedWidgetMac() { if (recyclable_compositor_) return recyclable_compositor_->accelerated_widget_mac(); +@@ -400,8 +406,13 @@ void OnCompositingShuttingDown(ui::Compositor* compositor) override {} + } + + gfx::Size BrowserCompositorMac::DelegatedFrameHostDesiredSizeInDIP() const { +- NSRect bounds = [client_->BrowserCompositorMacGetNSView() bounds]; +- return gfx::Size(bounds.size.width, bounds.size.height); ++ // View will be nil with CEF OSR. ++ NSView* view = client_->BrowserCompositorMacGetNSView(); ++ if (view) { ++ NSRect bounds = [view bounds]; ++ return gfx::Size(bounds.size.width, bounds.size.height); ++ } ++ return root_layer_->bounds().size(); + } + + bool BrowserCompositorMac::DelegatedFrameCanCreateResizeLock() const { diff --git a/patch/patches/browser_frame_host_guest_1687.patch b/patch/patches/browser_frame_host_guest_1687.patch index 0147bcd18..a68f52bef 100644 --- a/patch/patches/browser_frame_host_guest_1687.patch +++ b/patch/patches/browser_frame_host_guest_1687.patch @@ -1,5 +1,5 @@ diff --git render_widget_host_view_guest.cc render_widget_host_view_guest.cc -index b4557c2..6cb6c5a 100644 +index 1297035..5f45202 100644 --- render_widget_host_view_guest.cc +++ render_widget_host_view_guest.cc @@ -243,6 +243,9 @@ void RenderWidgetHostViewGuest::Destroy() { diff --git a/patch/patches/browser_plugin_guest_1565.patch b/patch/patches/browser_plugin_guest_1565.patch index 2c9cf896c..d480bb2be 100644 --- a/patch/patches/browser_plugin_guest_1565.patch +++ b/patch/patches/browser_plugin_guest_1565.patch @@ -1,5 +1,5 @@ diff --git browser/browser_plugin/browser_plugin_guest.cc browser/browser_plugin/browser_plugin_guest.cc -index 2f6fd0e..ab23a3c 100644 +index ceeaaa3..4ef1a54 100644 --- browser/browser_plugin/browser_plugin_guest.cc +++ browser/browser_plugin/browser_plugin_guest.cc @@ -28,7 +28,7 @@ diff --git a/patch/patches/build.patch b/patch/patches/build.patch index e6a20c02e..252e841a3 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,5 +1,5 @@ diff --git common.gypi common.gypi -index f5d107d..e38c4ee 100644 +index 0935433..670db78 100644 --- common.gypi +++ common.gypi @@ -9,6 +9,9 @@ diff --git a/patch/patches/chrome_crashpad_mac.patch b/patch/patches/chrome_crashpad_mac.patch index c9b864c28..0cbffcdbd 100644 --- a/patch/patches/chrome_crashpad_mac.patch +++ b/patch/patches/chrome_crashpad_mac.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/chrome_browser_main_mac.mm chrome/browser/chrome_browser_main_mac.mm -index 11d7ff4..1013b2ce 100644 +index 0e9c5ae..28fc90a 100644 --- chrome/browser/chrome_browser_main_mac.mm +++ chrome/browser/chrome_browser_main_mac.mm -@@ -186,7 +186,7 @@ void EnsureMetadataNeverIndexFile(const base::FilePath& user_data_dir) { +@@ -182,7 +182,7 @@ void ChromeBrowserMainPartsMac::PostProfileInit() { ChromeBrowserMainPartsPosix::PostProfileInit(); g_browser_process->metrics_service()->RecordBreakpadRegistration( @@ -12,10 +12,10 @@ index 11d7ff4..1013b2ce 100644 // TODO(calamity): Make this gated on first_run::IsChromeFirstRun() in M45. content::BrowserThread::PostAfterStartupTask( diff --git chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc -index af1bbec..6b92a7c 100644 +index d62973e..fc2dfa4 100644 --- chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc +++ chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc -@@ -73,8 +73,6 @@ void CrashUploadListCrashpad::LoadUploadList( +@@ -75,8 +75,6 @@ void CrashUploadListCrashpad::LoadUploadList( // database lives in the .exe, so we need to grab a pointer to a helper in the // exe to get our reports list. GetReportsThunk(&reports); diff --git a/patch/patches/chrome_widevine.patch b/patch/patches/chrome_widevine.patch index ed38ff03b..b7e4949d7 100644 --- a/patch/patches/chrome_widevine.patch +++ b/patch/patches/chrome_widevine.patch @@ -1,5 +1,5 @@ diff --git chrome/common/chrome_content_client.cc chrome/common/chrome_content_client.cc -index 57355af2..01cde06 100644 +index f67c51c..6d0a894 100644 --- chrome/common/chrome_content_client.cc +++ chrome/common/chrome_content_client.cc @@ -76,7 +76,7 @@ @@ -11,4 +11,3 @@ index 57355af2..01cde06 100644 #define WIDEVINE_CDM_AVAILABLE_NOT_COMPONENT #include "chrome/common/widevine_cdm_constants.h" #endif - diff --git a/patch/patches/compositor_1368.patch b/patch/patches/compositor_1368.patch index c5e1c6dba..1879d8cf4 100644 --- a/patch/patches/compositor_1368.patch +++ b/patch/patches/compositor_1368.patch @@ -1,8 +1,8 @@ diff --git content/browser/compositor/gpu_process_transport_factory.cc content/browser/compositor/gpu_process_transport_factory.cc -index 841fea0..8939665 100644 +index 821f642..ae61f08 100644 --- content/browser/compositor/gpu_process_transport_factory.cc +++ content/browser/compositor/gpu_process_transport_factory.cc -@@ -189,6 +189,13 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() { +@@ -206,6 +206,13 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() { std::unique_ptr GpuProcessTransportFactory::CreateSoftwareOutputDevice( ui::Compositor* compositor) { diff --git a/patch/patches/content_nav_1129.patch b/patch/patches/content_nav_1129.patch index 3a424ab7d..ed6174540 100644 --- a/patch/patches/content_nav_1129.patch +++ b/patch/patches/content_nav_1129.patch @@ -39,10 +39,10 @@ index 9ad5aef..957ef88 100644 // built in media player for the given |url|. Defaults to false. virtual bool ShouldUseMediaPlayerForURL(const GURL& url); diff --git renderer/render_frame_impl.cc renderer/render_frame_impl.cc -index e4abcb5..399348c 100644 +index aa0b905..90c705b 100644 --- renderer/render_frame_impl.cc +++ renderer/render_frame_impl.cc -@@ -4901,7 +4901,6 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( +@@ -4928,7 +4928,6 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( (pending_navigation_params_ && !pending_navigation_params_->request_params.redirects.empty()); @@ -50,7 +50,7 @@ index e4abcb5..399348c 100644 // The handlenavigation API is deprecated and will be removed once // crbug.com/325351 is resolved. if (GetContentClient()->renderer()->HandleNavigation( -@@ -4910,7 +4909,6 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( +@@ -4937,7 +4936,6 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation( is_redirect)) { return blink::WebNavigationPolicyIgnore; } diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index 145402038..c88e27412 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -1,8 +1,8 @@ diff --git .gn .gn -index 29bfe8c..a1e2af6 100644 +index 658f215..223e0f1 100644 --- .gn +++ .gn -@@ -249,6 +249,8 @@ exec_script_whitelist = [ +@@ -252,6 +252,8 @@ exec_script_whitelist = [ "//build/toolchain/win/BUILD.gn", "//build/util/branding.gni", "//build/util/version.gni", @@ -12,10 +12,10 @@ index 29bfe8c..a1e2af6 100644 "//chrome/browser/BUILD.gn", "//chrome/browser/chromeos/BUILD.gn", diff --git BUILD.gn BUILD.gn -index 23e67d9..c3d4ec6 100644 +index 2bbc1eb..715fa70 100644 --- BUILD.gn +++ BUILD.gn -@@ -259,6 +259,7 @@ group("both_gn_and_gyp") { +@@ -260,6 +260,7 @@ group("both_gn_and_gyp") { # and whether there should be other targets that are iOS-only and missing. deps += [ "//cc:cc_unittests", @@ -23,26 +23,6 @@ index 23e67d9..c3d4ec6 100644 "//chrome/test:telemetry_perf_unittests", "//chrome/test:unit_tests", "//components:components_browsertests", -diff --git build/config/mac/base_rules.gni build/config/mac/base_rules.gni -index 109710d..d2c442e 100644 ---- build/config/mac/base_rules.gni -+++ build/config/mac/base_rules.gni -@@ -366,13 +366,13 @@ template("compile_xibs") { - script = "//build/config/mac/compile_xib.py" - sources = invoker.sources - outputs = [ -- "$target_gen_dir/{{source_name_part}}.nib", -+ "$target_gen_dir/$target_name/{{source_name_part}}.nib", - ] - args = [ - "--input", - "{{source}}", - "--output", -- rebase_path("$target_gen_dir/{{source_name_part}}.nib"), -+ rebase_path("$target_gen_dir/$target_name/{{source_name_part}}.nib"), - ] + ibtool_flags - } - } diff --git build/config/win/visual_studio_version.gni build/config/win/visual_studio_version.gni index 5bfa9a7..5e6e05d 100644 --- build/config/win/visual_studio_version.gni @@ -100,10 +80,10 @@ index d58cb85..fd608ba 100644 diff --git chrome/BUILD.gn chrome/BUILD.gn -index 1c26c3f..556dd64 100644 +index 70a1759..7822a80 100644 --- chrome/BUILD.gn +++ chrome/BUILD.gn -@@ -651,7 +651,7 @@ if (is_win) { +@@ -686,7 +686,7 @@ if (is_win) { ] foreach(locale, locales_as_mac_outputs) { @@ -113,23 +93,23 @@ index 1c26c3f..556dd64 100644 outputs = [ diff --git chrome/chrome_repack_locales.gni chrome/chrome_repack_locales.gni -index 9601dd4..9a7734a 100644 +index 54559c7..8ef1e66 100644 --- chrome/chrome_repack_locales.gni +++ chrome/chrome_repack_locales.gni -@@ -161,9 +161,9 @@ template("chrome_repack_locales") { - - # Compute the output name. Mac uses a different location. - if (is_mac || is_ios) { +@@ -192,9 +192,9 @@ template("chrome_repack_locales") { + if (defined(invoker.output_dir)) { + output = "${invoker.output_dir}/${output_locale}.pak" + } else if (is_mac || is_ios) { - output = "${root_gen_dir}/repack/locales/${output_locale}.pak" + output = "${root_gen_dir}/chrome/repack/locales/${output_locale}.pak" } else { - output = "${root_out_dir}/locales/${output_locale}.pak" + output = "${root_out_dir}/chrome/locales/${output_locale}.pak" } - } + if (defined(invoker.additional_source_patterns)) { diff --git chrome/installer/mini_installer/BUILD.gn chrome/installer/mini_installer/BUILD.gn -index 699f56f..e2659fc 100644 +index 842a0b5..8814ec1 100644 --- chrome/installer/mini_installer/BUILD.gn +++ chrome/installer/mini_installer/BUILD.gn @@ -125,7 +125,7 @@ template("generate_mini_installer") { @@ -141,23 +121,3 @@ index 699f56f..e2659fc 100644 "$root_out_dir/setup.exe", release_file, ] -diff --git tools/grit/repack.gni tools/grit/repack.gni -index 42087f9..7dd1520 100644 ---- tools/grit/repack.gni -+++ tools/grit/repack.gni -@@ -18,6 +18,7 @@ declare_args() { - # File name (single string) of the output file. - # - # deps [optional] -+# public_deps [optional] - # visibility [optional] - # Normal meaning. - template("repack") { -@@ -25,6 +26,7 @@ template("repack") { - forward_variables_from(invoker, - [ - "deps", -+ "public_deps", - "testonly", - "visibility", - ]) diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index 655ea89d6..9a9e425b7 100644 --- a/patch/patches/gritsettings.patch +++ b/patch/patches/gritsettings.patch @@ -1,5 +1,5 @@ diff --git resource_ids resource_ids -index f45f57f..42754a9 100644 +index e681012..b54b107 100644 --- resource_ids +++ resource_ids @@ -14,6 +14,12 @@ diff --git a/patch/patches/gyp_build_626150.patch b/patch/patches/gyp_build_626150.patch index a65e8a22c..6c9620fbd 100644 --- a/patch/patches/gyp_build_626150.patch +++ b/patch/patches/gyp_build_626150.patch @@ -1,8 +1,8 @@ diff --git components/webmessaging.gypi components/webmessaging.gypi -index 1ea14fb..8020b74 100644 +index 318f0db..cbe0bac 100644 --- components/webmessaging.gypi +++ components/webmessaging.gypi -@@ -48,12 +48,6 @@ +@@ -49,12 +49,6 @@ 'target_name': 'webmessaging_mojo_bindings_for_blink', 'type': 'static_library', 'sources': [ '<@(mojom_files)' ], diff --git a/patch/patches/gyp_build_627924.patch b/patch/patches/gyp_build_627924.patch index 3c8babf02..6ae553a34 100644 --- a/patch/patches/gyp_build_627924.patch +++ b/patch/patches/gyp_build_627924.patch @@ -1,8 +1,8 @@ diff --git chrome_elf/chrome_elf.gyp chrome_elf/chrome_elf.gyp -index 7a49fe8..b4be214 100644 +index c9a412b..95a7fa6 100644 --- chrome_elf/chrome_elf.gyp +++ chrome_elf/chrome_elf.gyp -@@ -59,12 +59,6 @@ +@@ -65,12 +65,6 @@ ], # Set /SUBSYSTEM:WINDOWS. 'SubSystem': '2', diff --git a/patch/patches/message_loop_443_1992243003.patch b/patch/patches/message_loop_443_1992243003.patch index 15845819a..4672a15bc 100644 --- a/patch/patches/message_loop_443_1992243003.patch +++ b/patch/patches/message_loop_443_1992243003.patch @@ -1,5 +1,5 @@ diff --git message_loop.cc message_loop.cc -index 9d37691..c8ff77e 100644 +index 93b9d0a..d150345 100644 --- message_loop.cc +++ message_loop.cc @@ -143,12 +143,6 @@ MessageLoop::~MessageLoop() { @@ -15,7 +15,7 @@ index 9d37691..c8ff77e 100644 #if defined(OS_WIN) if (in_high_res_mode_) Time::ActivateHighResolutionTimer(false); -@@ -390,6 +384,9 @@ MessageLoop::MessageLoop(Type type, MessagePumpFactoryCallback pump_factory) +@@ -392,6 +386,9 @@ MessageLoop::MessageLoop(Type type, MessagePumpFactoryCallback pump_factory) in_high_res_mode_(false), #endif nestable_tasks_allowed_(true), @@ -26,10 +26,10 @@ index 9d37691..c8ff77e 100644 message_histogram_(NULL), run_loop_(NULL), diff --git message_loop.h message_loop.h -index 1230f41..1eadc1e 100644 +index d8eae01..d80aba4 100644 --- message_loop.h +++ message_loop.h -@@ -373,6 +373,16 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate { +@@ -383,6 +383,16 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate { void AddTaskObserver(TaskObserver* task_observer); void RemoveTaskObserver(TaskObserver* task_observer); @@ -46,7 +46,7 @@ index 1230f41..1eadc1e 100644 // Can only be called from the thread that owns the MessageLoop. bool is_running() const; -@@ -520,6 +530,12 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate { +@@ -530,6 +540,12 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate { // insider a (accidentally induced?) nested message pump. bool nestable_tasks_allowed_; diff --git a/patch/patches/mime_handler_view_1565.patch b/patch/patches/mime_handler_view_1565.patch index d6a7da56e..54758edcb 100644 --- a/patch/patches/mime_handler_view_1565.patch +++ b/patch/patches/mime_handler_view_1565.patch @@ -1,5 +1,5 @@ diff --git mime_handler_view_guest.cc mime_handler_view_guest.cc -index 13f7dc3..acbc1ca 100644 +index a58e021..2a20447 100644 --- mime_handler_view_guest.cc +++ mime_handler_view_guest.cc @@ -134,6 +134,8 @@ void MimeHandlerViewGuest::CreateWebContents( diff --git a/patch/patches/net_filter_515.patch b/patch/patches/net_filter_515.patch index 22eea251d..efa437845 100644 --- a/patch/patches/net_filter_515.patch +++ b/patch/patches/net_filter_515.patch @@ -45,10 +45,10 @@ index 78b8c34..387bea5 100644 friend class GZipUnitTest; friend class SdchFilterChainingTest; diff --git url_request/url_request_job.cc url_request/url_request_job.cc -index dc42edf..fb3ecf1 100644 +index b80c0b3..90d4331 100644 --- url_request/url_request_job.cc +++ url_request/url_request_job.cc -@@ -503,6 +503,9 @@ void URLRequestJob::NotifyHeadersComplete() { +@@ -499,6 +499,9 @@ void URLRequestJob::NotifyHeadersComplete() { if (request_->status().is_success()) filter_ = SetupFilter(); diff --git a/patch/patches/net_urlrequest_1327.patch b/patch/patches/net_urlrequest_1327.patch index 11f601011..c7a74020e 100644 --- a/patch/patches/net_urlrequest_1327.patch +++ b/patch/patches/net_urlrequest_1327.patch @@ -1,8 +1,8 @@ diff --git url_request.h url_request.h -index 85eb2e4..08bb463 100644 +index 005ae29..28e201e0 100644 --- url_request.h +++ url_request.h -@@ -654,10 +654,10 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), +@@ -648,10 +648,10 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), // or after the response headers are received. void GetConnectionAttempts(ConnectionAttempts* out) const; diff --git a/patch/patches/pdfium_print_549365.patch b/patch/patches/pdfium_print_549365.patch index e54e17378..15b9b3144 100644 --- a/patch/patches/pdfium_print_549365.patch +++ b/patch/patches/pdfium_print_549365.patch @@ -1,12 +1,27 @@ +diff --git BUILD.gn BUILD.gn +index c9a5fdd..81fc17a 100644 +--- BUILD.gn ++++ BUILD.gn +@@ -145,6 +145,10 @@ static_library("pdfium") { + } else { + libs += [ "freetype" ] + } ++ ++ include_dirs = [ ++ "//v8/include", ++ ] + } + + source_set("test_support") { diff --git fpdfsdk/fpdfview.cpp fpdfsdk/fpdfview.cpp -index 646fb46..42e8bdf 100644 +index 34e7d23..d65ea13 100644 --- fpdfsdk/fpdfview.cpp +++ fpdfsdk/fpdfview.cpp @@ -20,6 +20,7 @@ #include "fpdfsdk/include/fsdk_mgr.h" #include "fpdfsdk/include/fsdk_rendercontext.h" #include "fpdfsdk/javascript/ijs_runtime.h" -+#include "fpdfsdk/jsapi/include/fxjs_v8.h" ++#include "fxjs/include/fxjs_v8.h" #include "public/fpdf_ext.h" #include "public/fpdf_progressive.h" #include "third_party/base/numerics/safe_conversions_impl.h" diff --git a/patch/patches/prefs_content_1161.patch b/patch/patches/prefs_content_1161.patch index 9037ca2e7..527421fa8 100644 --- a/patch/patches/prefs_content_1161.patch +++ b/patch/patches/prefs_content_1161.patch @@ -35,10 +35,10 @@ index 3fb1a79..b97ab57 100644 bool inert_visual_viewport; bool record_whole_document; diff --git renderer/render_view_impl.cc renderer/render_view_impl.cc -index be61076..6397124 100644 +index bc6a4ee..015a22f 100644 --- renderer/render_view_impl.cc +++ renderer/render_view_impl.cc -@@ -1466,6 +1466,8 @@ void RenderViewImpl::ApplyWebPreferencesInternal( +@@ -1465,6 +1465,8 @@ void RenderViewImpl::ApplyWebPreferencesInternal( blink::WebView* web_view, CompositorDependencies* compositor_deps) { ApplyWebPreferences(prefs, web_view); diff --git a/patch/patches/print_header_footer_1478_1565.patch b/patch/patches/print_header_footer_1478_1565.patch index a32607820..5598b6594 100644 --- a/patch/patches/print_header_footer_1478_1565.patch +++ b/patch/patches/print_header_footer_1478_1565.patch @@ -12,7 +12,7 @@ index b43b88b..7779496 100644 #include "chrome/browser/sessions/session_tab_helper.h" #include "chrome/browser/ui/cocoa/applescript/apple_event_util.h" #include "chrome/browser/ui/cocoa/applescript/error_applescript.h" -@@ -227,11 +229,15 @@ - (void)handlesStopScriptCommand:(NSScriptCommand*)command { +@@ -227,11 +229,15 @@ void ResumeAppleEventAndSendReply(NSAppleEventManagerSuspensionID suspension_id, - (void)handlesPrintScriptCommand:(NSScriptCommand*)command { AppleScript::LogAppleScriptUMA(AppleScript::AppleScriptCommand::TAB_PRINT); @@ -166,10 +166,10 @@ index 705211b..a524333 100644 PrintHostMsg_SetOptionsFromDocument_Params /* params */) -#endif // defined(ENABLE_PRINT_PREVIEW) diff --git components/printing/renderer/print_web_view_helper.cc components/printing/renderer/print_web_view_helper.cc -index b25340c..47d419e 100644 +index 0169f36..c316ff2 100644 --- components/printing/renderer/print_web_view_helper.cc +++ components/printing/renderer/print_web_view_helper.cc -@@ -83,6 +83,9 @@ const float kPrintingMinimumShrinkFactor = 1.333f; +@@ -85,6 +85,9 @@ const float kPrintingMinimumShrinkFactor = 1.333f; #if defined(ENABLE_PRINT_PREVIEW) bool g_is_preview_enabled = true; @@ -179,7 +179,7 @@ index b25340c..47d419e 100644 const char kPageLoadScriptFormat[] = "document.open(); document.write(%s); document.close();"; -@@ -97,9 +100,6 @@ void ExecuteScript(blink::WebFrame* frame, +@@ -99,9 +102,6 @@ void ExecuteScript(blink::WebFrame* frame, std::string script = base::StringPrintf(script_format, json.c_str()); frame->executeScript(blink::WebString(base::UTF8ToUTF16(script))); } @@ -189,7 +189,7 @@ index b25340c..47d419e 100644 int GetDPI(const PrintMsg_Print_Params* print_params) { #if defined(OS_MACOSX) -@@ -309,7 +309,6 @@ bool PrintingNodeOrPdfFrame(const blink::WebLocalFrame* frame, +@@ -311,7 +311,6 @@ bool PrintingNodeOrPdfFrame(const blink::WebLocalFrame* frame, return plugin && plugin->supportsPaginatedPrint(); } @@ -197,7 +197,7 @@ index b25340c..47d419e 100644 // Returns true if the current destination printer is PRINT_TO_PDF. bool IsPrintToPdfRequested(const base::DictionaryValue& job_settings) { bool print_to_pdf = false; -@@ -331,7 +330,6 @@ bool PrintingFrameHasPageSizeStyle(blink::WebFrame* frame, +@@ -333,7 +332,6 @@ bool PrintingFrameHasPageSizeStyle(blink::WebLocalFrame* frame, } return frame_has_custom_page_size_style; } @@ -205,7 +205,7 @@ index b25340c..47d419e 100644 // Disable scaling when either: // - The PDF specifies disabling scaling. -@@ -378,7 +376,6 @@ MarginType GetMarginsForPdf(blink::WebLocalFrame* frame, +@@ -380,7 +378,6 @@ MarginType GetMarginsForPdf(blink::WebLocalFrame* frame, } #endif @@ -213,15 +213,15 @@ index b25340c..47d419e 100644 bool FitToPageEnabled(const base::DictionaryValue& job_settings) { bool fit_to_paper_size = false; if (!job_settings.GetBoolean(kSettingFitToPageEnabled, &fit_to_paper_size)) { -@@ -420,7 +417,6 @@ blink::WebPrintScalingOption GetPrintScalingOption( +@@ -422,7 +419,6 @@ blink::WebPrintScalingOption GetPrintScalingOption( } return blink::WebPrintScalingOptionFitToPrintableArea; } -#endif // defined(ENABLE_PRINT_PREVIEW) PrintMsg_Print_Params CalculatePrintParamsForCss( - blink::WebFrame* frame, -@@ -504,7 +500,6 @@ blink::WebView* FrameReference::view() { + blink::WebLocalFrame* frame, +@@ -506,7 +502,6 @@ blink::WebView* FrameReference::view() { return view_; } @@ -229,7 +229,7 @@ index b25340c..47d419e 100644 // static - Not anonymous so that platform implementations can use it. void PrintWebViewHelper::PrintHeaderAndFooter( blink::WebCanvas* canvas, -@@ -561,7 +556,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter( +@@ -566,7 +561,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter( web_view->close(); frame->close(); } @@ -237,7 +237,7 @@ index b25340c..47d419e 100644 // static - Not anonymous so that platform implementations can use it. float PrintWebViewHelper::RenderPageContent(blink::WebFrame* frame, -@@ -842,6 +836,7 @@ PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view, +@@ -852,6 +846,7 @@ PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view, print_for_preview_(false), delegate_(std::move(delegate)), print_node_in_progress_(false), @@ -245,7 +245,7 @@ index b25340c..47d419e 100644 is_loading_(false), is_scripted_preview_delayed_(false), ipc_nesting_level_(0), -@@ -900,10 +895,8 @@ void PrintWebViewHelper::PrintPage(blink::WebLocalFrame* frame, +@@ -910,10 +905,8 @@ void PrintWebViewHelper::PrintPage(blink::WebLocalFrame* frame, return; if (g_is_preview_enabled) { @@ -256,7 +256,7 @@ index b25340c..47d419e 100644 } else { #if defined(ENABLE_BASIC_PRINTING) Print(frame, blink::WebNode(), true); -@@ -927,14 +920,10 @@ bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { +@@ -937,14 +930,10 @@ bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { IPC_MESSAGE_HANDLER(PrintMsg_PrintPages, OnPrintPages) IPC_MESSAGE_HANDLER(PrintMsg_PrintForSystemDialog, OnPrintForSystemDialog) #endif // defined(ENABLE_BASIC_PRINTING) @@ -271,7 +271,7 @@ index b25340c..47d419e 100644 IPC_MESSAGE_HANDLER(PrintMsg_SetScriptedPrintingBlocked, SetScriptedPrintBlocked) IPC_MESSAGE_UNHANDLED(handled = false) -@@ -990,7 +979,6 @@ void PrintWebViewHelper::OnPrintForSystemDialog() { +@@ -999,7 +988,6 @@ void PrintWebViewHelper::OnPrintForSystemDialog() { } #endif // defined(ENABLE_BASIC_PRINTING) @@ -279,7 +279,7 @@ index b25340c..47d419e 100644 void PrintWebViewHelper::OnPrintForPrintPreview( const base::DictionaryValue& job_settings) { CHECK_LE(ipc_nesting_level_, 1); -@@ -1055,7 +1043,6 @@ void PrintWebViewHelper::OnPrintForPrintPreview( +@@ -1064,7 +1052,6 @@ void PrintWebViewHelper::OnPrintForPrintPreview( DidFinishPrinting(FAIL_PRINT); } } @@ -287,7 +287,7 @@ index b25340c..47d419e 100644 void PrintWebViewHelper::GetPageSizeAndContentAreaFromPageLayout( const PageSizeMargins& page_layout_in_points, -@@ -1080,7 +1067,6 @@ void PrintWebViewHelper::UpdateFrameMarginsCssInfo( +@@ -1089,7 +1076,6 @@ void PrintWebViewHelper::UpdateFrameMarginsCssInfo( ignore_css_margins_ = (margins_type != DEFAULT_MARGINS); } @@ -295,7 +295,7 @@ index b25340c..47d419e 100644 void PrintWebViewHelper::OnPrintPreview(const base::DictionaryValue& settings) { if (ipc_nesting_level_ > 1) return; -@@ -1241,7 +1227,7 @@ bool PrintWebViewHelper::CreatePreviewDocument() { +@@ -1250,7 +1236,7 @@ bool PrintWebViewHelper::CreatePreviewDocument() { return true; } @@ -304,7 +304,7 @@ index b25340c..47d419e 100644 bool PrintWebViewHelper::RenderPreviewPage( int page_number, const PrintMsg_Print_Params& print_params) { -@@ -1271,7 +1257,7 @@ bool PrintWebViewHelper::RenderPreviewPage( +@@ -1280,7 +1266,7 @@ bool PrintWebViewHelper::RenderPreviewPage( } return PreviewPageRendered(page_number, draft_metafile.get()); } @@ -313,7 +313,7 @@ index b25340c..47d419e 100644 bool PrintWebViewHelper::FinalizePrintReadyDocument() { DCHECK(!is_print_ready_metafile_sent_); -@@ -1301,7 +1287,6 @@ bool PrintWebViewHelper::FinalizePrintReadyDocument() { +@@ -1310,7 +1296,6 @@ bool PrintWebViewHelper::FinalizePrintReadyDocument() { Send(new PrintHostMsg_MetafileReadyForPrinting(routing_id(), preview_params)); return true; } @@ -321,7 +321,7 @@ index b25340c..47d419e 100644 void PrintWebViewHelper::OnPrintingDone(bool success) { if (ipc_nesting_level_ > 1) -@@ -1316,7 +1301,6 @@ void PrintWebViewHelper::SetScriptedPrintBlocked(bool blocked) { +@@ -1325,7 +1310,6 @@ void PrintWebViewHelper::SetScriptedPrintBlocked(bool blocked) { is_scripted_printing_blocked_ = blocked; } @@ -329,7 +329,7 @@ index b25340c..47d419e 100644 void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { if (ipc_nesting_level_ > 1) return; -@@ -1327,7 +1311,9 @@ void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { +@@ -1336,7 +1320,9 @@ void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { // that instead. auto plugin = delegate_->GetPdfElement(frame); if (!plugin.isNull()) { @@ -339,7 +339,7 @@ index b25340c..47d419e 100644 return; } print_preview_context_.InitWithFrame(frame); -@@ -1335,7 +1321,6 @@ void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { +@@ -1344,7 +1330,6 @@ void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { ? PRINT_PREVIEW_USER_INITIATED_SELECTION : PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME); } @@ -347,7 +347,7 @@ index b25340c..47d419e 100644 bool PrintWebViewHelper::IsPrintingEnabled() { bool result = false; -@@ -1361,11 +1346,9 @@ void PrintWebViewHelper::PrintNode(const blink::WebNode& node) { +@@ -1370,11 +1355,9 @@ void PrintWebViewHelper::PrintNode(const blink::WebNode& node) { // Make a copy of the node, in case RenderView::OnContextMenuClosed resets // its |context_menu_node_|. @@ -360,7 +360,7 @@ index b25340c..47d419e 100644 } else { #if defined(ENABLE_BASIC_PRINTING) blink::WebNode duplicate_node(node); -@@ -1431,7 +1414,6 @@ void PrintWebViewHelper::DidFinishPrinting(PrintingResult result) { +@@ -1440,7 +1423,6 @@ void PrintWebViewHelper::DidFinishPrinting(PrintingResult result) { } break; @@ -368,7 +368,7 @@ index b25340c..47d419e 100644 case FAIL_PREVIEW: int cookie = print_pages_params_ ? print_pages_params_->params.document_cookie : 0; -@@ -1443,7 +1425,6 @@ void PrintWebViewHelper::DidFinishPrinting(PrintingResult result) { +@@ -1452,7 +1434,6 @@ void PrintWebViewHelper::DidFinishPrinting(PrintingResult result) { } print_preview_context_.Failed(notify_browser_of_print_failure_); break; @@ -376,7 +376,7 @@ index b25340c..47d419e 100644 } prep_frame_view_.reset(); print_pages_params_.reset(); -@@ -1575,7 +1556,6 @@ bool PrintWebViewHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, +@@ -1584,7 +1565,6 @@ bool PrintWebViewHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, return true; } @@ -384,7 +384,7 @@ index b25340c..47d419e 100644 bool PrintWebViewHelper::SetOptionsFromPdfDocument( PrintHostMsg_SetOptionsFromDocument_Params* options) { blink::WebLocalFrame* source_frame = print_preview_context_.source_frame(); -@@ -1684,7 +1664,6 @@ bool PrintWebViewHelper::UpdatePrintSettings( +@@ -1693,7 +1673,6 @@ bool PrintWebViewHelper::UpdatePrintSettings( return true; } @@ -392,7 +392,7 @@ index b25340c..47d419e 100644 #if defined(ENABLE_BASIC_PRINTING) bool PrintWebViewHelper::GetPrintSettingsFromUser(blink::WebLocalFrame* frame, -@@ -1792,7 +1771,6 @@ void PrintWebViewHelper::PrintPageInternal( +@@ -1801,7 +1780,6 @@ void PrintWebViewHelper::PrintPageInternal( MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); @@ -400,7 +400,7 @@ index b25340c..47d419e 100644 if (params.params.display_header_footer) { // TODO(thestig): Figure out why Linux needs this. It is almost certainly // |printingMinimumShrinkFactor| from Blink. -@@ -1807,7 +1785,6 @@ void PrintWebViewHelper::PrintPageInternal( +@@ -1816,7 +1794,6 @@ void PrintWebViewHelper::PrintPageInternal( scale_factor / fudge_factor, page_layout_in_points, params.params); } @@ -408,7 +408,7 @@ index b25340c..47d419e 100644 float webkit_scale_factor = RenderPageContent(frame, params.page_number, canvas_area, content_area, -@@ -1843,7 +1820,6 @@ bool PrintWebViewHelper::CopyMetafileDataToSharedMem( +@@ -1852,7 +1829,6 @@ bool PrintWebViewHelper::CopyMetafileDataToSharedMem( return true; } @@ -416,7 +416,7 @@ index b25340c..47d419e 100644 void PrintWebViewHelper::ShowScriptedPrintPreview() { if (is_scripted_preview_delayed_) { is_scripted_preview_delayed_ = false; -@@ -1971,7 +1947,6 @@ bool PrintWebViewHelper::PreviewPageRendered(int page_number, +@@ -1980,7 +1956,6 @@ bool PrintWebViewHelper::PreviewPageRendered(int page_number, Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params)); return true; } @@ -425,10 +425,10 @@ index b25340c..47d419e 100644 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext() : total_page_count_(0), diff --git components/printing/renderer/print_web_view_helper.h components/printing/renderer/print_web_view_helper.h -index fe33d5e..3f1b7b5 100644 +index dd8d24d..7c73d38 100644 --- components/printing/renderer/print_web_view_helper.h +++ components/printing/renderer/print_web_view_helper.h -@@ -137,9 +137,7 @@ class PrintWebViewHelper +@@ -138,9 +138,7 @@ class PrintWebViewHelper OK, FAIL_PRINT_INIT, FAIL_PRINT, @@ -438,7 +438,7 @@ index fe33d5e..3f1b7b5 100644 }; enum PrintPreviewErrorBuckets { -@@ -174,10 +172,8 @@ class PrintWebViewHelper +@@ -175,10 +173,8 @@ class PrintWebViewHelper void OnPrintForSystemDialog(); void OnPrintForPrintPreview(const base::DictionaryValue& job_settings); #endif // defined(ENABLE_BASIC_PRINTING) @@ -449,7 +449,7 @@ index fe33d5e..3f1b7b5 100644 void OnPrintingDone(bool success); // Get |page_size| and |content_area| information from -@@ -190,7 +186,6 @@ class PrintWebViewHelper +@@ -191,7 +187,6 @@ class PrintWebViewHelper // Update |ignore_css_margins_| based on settings. void UpdateFrameMarginsCssInfo(const base::DictionaryValue& settings); @@ -457,7 +457,7 @@ index fe33d5e..3f1b7b5 100644 // Prepare frame for creating preview document. void PrepareFrameForPreviewDocument(); -@@ -207,7 +202,6 @@ class PrintWebViewHelper +@@ -208,7 +203,6 @@ class PrintWebViewHelper // Finalize the print ready preview document. bool FinalizePrintReadyDocument(); @@ -465,7 +465,7 @@ index fe33d5e..3f1b7b5 100644 // Enable/Disable window.print calls. If |blocked| is true window.print // calls will silently fail. Call with |blocked| set to false to reenable. -@@ -236,7 +230,6 @@ class PrintWebViewHelper +@@ -237,7 +231,6 @@ class PrintWebViewHelper const blink::WebNode& node, int* number_of_pages); @@ -473,7 +473,7 @@ index fe33d5e..3f1b7b5 100644 // Set options for print preset from source PDF document. bool SetOptionsFromPdfDocument( PrintHostMsg_SetOptionsFromDocument_Params* options); -@@ -247,7 +240,6 @@ class PrintWebViewHelper +@@ -248,7 +241,6 @@ class PrintWebViewHelper bool UpdatePrintSettings(blink::WebLocalFrame* frame, const blink::WebNode& node, const base::DictionaryValue& passed_job_settings); @@ -481,7 +481,7 @@ index fe33d5e..3f1b7b5 100644 // Get final print settings from the user. // Return false if the user cancels or on error. -@@ -322,7 +314,6 @@ class PrintWebViewHelper +@@ -323,7 +315,6 @@ class PrintWebViewHelper const PrintMsg_PrintPages_Params& params, int page_count); @@ -489,7 +489,7 @@ index fe33d5e..3f1b7b5 100644 // Given the |device| and |canvas| to draw on, prints the appropriate headers // and footers using strings from |header_footer_info| on to the canvas. static void PrintHeaderAndFooter(blink::WebCanvas* canvas, -@@ -332,7 +323,6 @@ class PrintWebViewHelper +@@ -333,7 +324,6 @@ class PrintWebViewHelper float webkit_scale_factor, const PageSizeMargins& page_layout_in_points, const PrintMsg_Print_Params& params); @@ -497,7 +497,7 @@ index fe33d5e..3f1b7b5 100644 bool GetPrintFrame(blink::WebLocalFrame** frame); -@@ -344,7 +334,6 @@ class PrintWebViewHelper +@@ -345,7 +335,6 @@ class PrintWebViewHelper bool IsScriptInitiatedPrintAllowed(blink::WebFrame* frame, bool user_initiated); @@ -505,7 +505,7 @@ index fe33d5e..3f1b7b5 100644 // Shows scripted print preview when options from plugin are available. void ShowScriptedPrintPreview(); -@@ -360,7 +349,6 @@ class PrintWebViewHelper +@@ -361,7 +350,6 @@ class PrintWebViewHelper // |metafile| is the rendered page. Otherwise |metafile| is NULL. // Returns true if print preview should continue, false on failure. bool PreviewPageRendered(int page_number, PdfMetafileSkia* metafile); @@ -513,7 +513,7 @@ index fe33d5e..3f1b7b5 100644 void SetPrintPagesParams(const PrintMsg_PrintPages_Params& settings); -@@ -513,6 +501,7 @@ class PrintWebViewHelper +@@ -514,6 +502,7 @@ class PrintWebViewHelper ScriptingThrottler scripting_throttler_; bool print_node_in_progress_; @@ -522,7 +522,7 @@ index fe33d5e..3f1b7b5 100644 bool is_loading_; bool is_scripted_preview_delayed_; diff --git components/printing/renderer/print_web_view_helper_mac.mm components/printing/renderer/print_web_view_helper_mac.mm -index d227c5e..f362093 100644 +index 0b13474..4bf7c6b 100644 --- components/printing/renderer/print_web_view_helper_mac.mm +++ components/printing/renderer/print_web_view_helper_mac.mm @@ -68,7 +68,6 @@ void PrintWebViewHelper::PrintPageInternal( diff --git a/patch/patches/render_widget_host_1070383005.patch b/patch/patches/render_widget_host_1070383005.patch index d749fb98a..cfacac57a 100644 --- a/patch/patches/render_widget_host_1070383005.patch +++ b/patch/patches/render_widget_host_1070383005.patch @@ -1,8 +1,8 @@ diff --git render_widget_host_view_mac.mm render_widget_host_view_mac.mm -index b7991fa..7e27615 100644 +index 0dc3ef0..705d8f4 100644 --- render_widget_host_view_mac.mm +++ render_widget_host_view_mac.mm -@@ -573,9 +573,6 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget, +@@ -499,9 +499,6 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget, // Paint this view host with |background_color_| when there is no content // ready to draw. background_layer_.reset([[CALayer alloc] init]); diff --git a/patch/patches/views_widget_180_1481_1677_1749.patch b/patch/patches/views_widget_180_1481_1677_1749.patch index 999bd28b6..f230f40e2 100644 --- a/patch/patches/views_widget_180_1481_1677_1749.patch +++ b/patch/patches/views_widget_180_1481_1677_1749.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/render_widget_host_view_aura.cc content/browser/renderer_host/render_widget_host_view_aura.cc -index d9b97ff..9ac9883 100644 +index 284533c..6e56986 100644 --- content/browser/renderer_host/render_widget_host_view_aura.cc +++ content/browser/renderer_host/render_widget_host_view_aura.cc @@ -769,6 +769,13 @@ void RenderWidgetHostViewAura::SetKeyboardFocus() { @@ -17,7 +17,7 @@ index d9b97ff..9ac9883 100644 if (host_ && set_focus_on_mouse_down_or_key_event_) { set_focus_on_mouse_down_or_key_event_ = false; diff --git content/browser/renderer_host/render_widget_host_view_base.cc content/browser/renderer_host/render_widget_host_view_base.cc -index 0b34ce0..de4eae7 100644 +index 8b8907e..52bee5e 100644 --- content/browser/renderer_host/render_widget_host_view_base.cc +++ content/browser/renderer_host/render_widget_host_view_base.cc @@ -42,6 +42,7 @@ RenderWidgetHostViewBase::RenderWidgetHostViewBase() @@ -28,7 +28,7 @@ index 0b34ce0..de4eae7 100644 renderer_frame_number_(0), weak_factory_(this) {} -@@ -269,6 +270,10 @@ void RenderWidgetHostViewBase::FocusedNodeTouched( +@@ -275,6 +276,10 @@ void RenderWidgetHostViewBase::FocusedNodeTouched( DVLOG(1) << "FocusedNodeTouched: " << editable; } @@ -40,7 +40,7 @@ index 0b34ce0..de4eae7 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 f6a25c1..eceab0b 100644 +index 0a1e01e..e8439d2 100644 --- content/browser/renderer_host/render_widget_host_view_base.h +++ content/browser/renderer_host/render_widget_host_view_base.h @@ -101,6 +101,7 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, @@ -51,7 +51,7 @@ index f6a25c1..eceab0b 100644 // This only needs to be overridden by RenderWidgetHostViewBase subclasses // that handle content embedded within other RenderWidgetHostViews. -@@ -456,6 +457,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, +@@ -458,6 +459,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, // destroyed before the RWHV is destroyed. TextInputManager* text_input_manager_; @@ -63,7 +63,7 @@ index f6a25c1..eceab0b 100644 void FlushInput(); diff --git content/public/browser/render_widget_host_view.h content/public/browser/render_widget_host_view.h -index 5ef49e4..d391b20 100644 +index 5475763..d92ecd0 100644 --- content/public/browser/render_widget_host_view.h +++ content/public/browser/render_widget_host_view.h @@ -167,6 +167,10 @@ class CONTENT_EXPORT RenderWidgetHostView { @@ -91,7 +91,7 @@ index f772f64..7d13f9f 100644 return host ? host->GetAcceleratedWidget() : NULL; } 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 de96b63..ed0ba73 100644 +index f58bbaa..1643f5a 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc @@ -86,6 +86,7 @@ DesktopWindowTreeHostWin::DesktopWindowTreeHostWin( @@ -116,7 +116,7 @@ index de96b63..ed0ba73 100644 remove_standard_frame_ = params.remove_standard_frame; has_non_client_view_ = Widget::RequiresNonClientView(params.type); -@@ -641,6 +646,10 @@ bool DesktopWindowTreeHostWin::CanActivate() const { +@@ -645,6 +650,10 @@ bool DesktopWindowTreeHostWin::CanActivate() const { return native_widget_delegate_->CanActivate(); } @@ -127,7 +127,7 @@ index de96b63..ed0ba73 100644 bool DesktopWindowTreeHostWin::WantsMouseEventsWhenInactive() const { return wants_mouse_events_when_inactive_; } -@@ -821,11 +830,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { +@@ -825,11 +834,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { } void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { @@ -146,10 +146,10 @@ index de96b63..ed0ba73 100644 bool DesktopWindowTreeHostWin::HandleMouseEvent(const 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 e71604d..937bf91 100644 +index ec0bd2a..e4c2403 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.h -@@ -137,6 +137,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin +@@ -138,6 +138,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin bool CanMaximize() const override; bool CanMinimize() const override; bool CanActivate() const override; @@ -157,7 +157,7 @@ index e71604d..937bf91 100644 bool WantsMouseEventsWhenInactive() const override; bool WidgetSizeIsClientSize() const override; bool IsModal() const override; -@@ -251,6 +252,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin +@@ -252,6 +253,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin // True if the window should have the frame removed. bool remove_standard_frame_; @@ -169,7 +169,7 @@ index e71604d..937bf91 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 82ba30c..c27b201 100644 +index 0475bf7..3a810de 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc @@ -174,6 +174,7 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11( @@ -209,7 +209,7 @@ index 82ba30c..c27b201 100644 return ToDIPRect(bounds_in_pixels_); } -@@ -986,6 +991,8 @@ void DesktopWindowTreeHostX11::HideImpl() { +@@ -1005,6 +1010,8 @@ void DesktopWindowTreeHostX11::HideImpl() { } gfx::Rect DesktopWindowTreeHostX11::GetBounds() const { @@ -218,7 +218,7 @@ index 82ba30c..c27b201 100644 return bounds_in_pixels_; } -@@ -1043,6 +1050,8 @@ void DesktopWindowTreeHostX11::SetBounds( +@@ -1064,6 +1071,8 @@ void DesktopWindowTreeHostX11::SetBounds( } gfx::Point DesktopWindowTreeHostX11::GetLocationOnNativeScreen() const { @@ -227,7 +227,7 @@ index 82ba30c..c27b201 100644 return bounds_in_pixels_.origin(); } -@@ -1154,9 +1163,15 @@ void DesktopWindowTreeHostX11::InitX11Window( +@@ -1175,9 +1184,15 @@ void DesktopWindowTreeHostX11::InitX11Window( None; } @@ -244,7 +244,7 @@ index 82ba30c..c27b201 100644 bounds_in_pixels_.y(), bounds_in_pixels_.width(), bounds_in_pixels_.height(), 0, // border width -@@ -1787,6 +1802,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( +@@ -1809,6 +1824,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( } break; } @@ -256,7 +256,7 @@ index 82ba30c..c27b201 100644 if (xev->xfocus.mode != NotifyGrab) { ReleaseCapture(); 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 fa262f1..78a4aba 100644 +index aced1ef..9e72692 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h @@ -86,6 +86,12 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 @@ -272,7 +272,7 @@ index fa262f1..78a4aba 100644 protected: // Overridden from DesktopWindowTreeHost: void Init(aura::Window* content_window, -@@ -266,6 +272,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 +@@ -271,6 +277,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 // The bounds of |xwindow_|. gfx::Rect bounds_in_pixels_; @@ -282,7 +282,7 @@ index fa262f1..78a4aba 100644 // Whenever the bounds are set, we keep the previous set of bounds around so // we can have a better chance of getting the real // |restored_bounds_in_pixels_|. Window managers tend to send a Configure -@@ -302,6 +311,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 +@@ -310,6 +319,10 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 // Whether we used an ARGB visual for our window. bool use_argb_visual_; @@ -293,7 +293,7 @@ index fa262f1..78a4aba 100644 DesktopDragDropClientAuraX11* drag_drop_client_; std::unique_ptr x11_non_client_event_filter_; -@@ -354,6 +367,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 +@@ -362,6 +375,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 base::WeakPtrFactory close_widget_factory_; @@ -304,10 +304,10 @@ index fa262f1..78a4aba 100644 }; diff --git ui/views/widget/desktop_aura/x11_desktop_handler.cc ui/views/widget/desktop_aura/x11_desktop_handler.cc -index 8ec4b1e..587e4e3 100644 +index aa3c234..021bd01 100644 --- ui/views/widget/desktop_aura/x11_desktop_handler.cc +++ ui/views/widget/desktop_aura/x11_desktop_handler.cc -@@ -31,6 +31,30 @@ views::X11DesktopHandler* g_handler = NULL; +@@ -33,6 +33,30 @@ views::X11DesktopHandler* g_handler = NULL; namespace views { @@ -338,7 +338,7 @@ index 8ec4b1e..587e4e3 100644 // static X11DesktopHandler* X11DesktopHandler::get() { if (!g_handler) -@@ -86,7 +110,11 @@ void X11DesktopHandler::ActivateWindow(::Window window) { +@@ -88,7 +112,11 @@ void X11DesktopHandler::ActivateWindow(::Window window) { // in an active X window. } @@ -351,7 +351,7 @@ index 8ec4b1e..587e4e3 100644 DCHECK_EQ(gfx::GetXDisplay(), xdisplay_); // If the window is not already active, send a hint to activate it -@@ -191,8 +219,10 @@ uint32_t X11DesktopHandler::DispatchEvent(const ui::PlatformEvent& event) { +@@ -213,8 +241,10 @@ uint32_t X11DesktopHandler::DispatchEvent(const ui::PlatformEvent& event) { ::Window window; if (ui::GetXIDProperty(x_root_window_, "_NET_ACTIVE_WINDOW", &window) && window) { @@ -365,7 +365,7 @@ index 8ec4b1e..587e4e3 100644 x_active_window_ = None; } diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc -index 62b4b56..5fe4bd0 100644 +index eebeb87..eed32f8 100644 --- ui/views/widget/widget.cc +++ ui/views/widget/widget.cc @@ -126,9 +126,11 @@ Widget::InitParams::InitParams(Type type) @@ -413,10 +413,10 @@ index 62b4b56..5fe4bd0 100644 // This must come after SetContentsView() or it might not be able to find // the correct NativeTheme (on Linux). See http://crbug.com/384492 diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index 0376866..7901ea4 100644 +index 4e1617f..5b1f06b 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h -@@ -238,12 +238,17 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -235,12 +235,17 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, // rendered, and that the client area should be equivalent to the window // area. Only used on some platforms (Windows and Linux). bool remove_standard_frame; @@ -432,9 +432,9 @@ index 0376866..7901ea4 100644 gfx::NativeView parent; + gfx::AcceleratedWidget parent_widget; // Used only by mus and is necessitated by mus not being a NativeView. - mus::Window* parent_mus = nullptr; + ui::Window* parent_mus = nullptr; // Specifies the initial bounds of the Widget. Default is empty, which means -@@ -754,6 +759,10 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -757,6 +762,10 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, bool movement_disabled() const { return movement_disabled_; } void set_movement_disabled(bool disabled) { movement_disabled_ = disabled; } @@ -445,7 +445,7 @@ index 0376866..7901ea4 100644 // Returns the work area bounds of the screen the Widget belongs to. gfx::Rect GetWorkAreaBoundsInScreen() const; -@@ -972,6 +981,10 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -975,6 +984,10 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, // disabled. bool movement_disabled_; diff --git a/patch/patches/web_contents_1257.patch b/patch/patches/web_contents_1257.patch index 91008afa5..dd5e4bedf 100644 --- a/patch/patches/web_contents_1257.patch +++ b/patch/patches/web_contents_1257.patch @@ -44,7 +44,7 @@ index d646060..697bf1b 100644 // window.opener property, terminate prerendering. prerender_contents_->Destroy(FINAL_STATUS_CREATE_NEW_WINDOW); diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc -index b10b2df..a47dd18 100644 +index 3951954..ca52685 100644 --- chrome/browser/ui/browser.cc +++ chrome/browser/ui/browser.cc @@ -1618,7 +1618,9 @@ bool Browser::ShouldCreateWebContents( @@ -74,10 +74,10 @@ index 693e84d..be1f1dd 100644 int opener_render_frame_id, const std::string& frame_name, diff --git content/browser/web_contents/web_contents_impl.cc content/browser/web_contents/web_contents_impl.cc -index db8263e..07f1989 100644 +index 62dfcec..acdc44d 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -1502,6 +1502,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { +@@ -1521,6 +1521,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { std::string unique_name = params.main_frame_name; frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name); @@ -90,7 +90,7 @@ index db8263e..07f1989 100644 WebContentsViewDelegate* delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -1534,6 +1540,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { +@@ -1553,6 +1559,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { std::move(view_), &render_view_host_delegate_view_)); } @@ -98,7 +98,7 @@ index db8263e..07f1989 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -1977,11 +1984,14 @@ void WebContentsImpl::CreateNewWindow( +@@ -2010,11 +2017,14 @@ void WebContentsImpl::CreateNewWindow( static_cast(session_storage_namespace); CHECK(session_storage_namespace_impl->IsFromContext(dom_storage_context)); @@ -114,7 +114,7 @@ index db8263e..07f1989 100644 if (route_id != MSG_ROUTING_NONE && !RenderViewHost::FromID(render_process_id, route_id)) { // If the embedder didn't create a WebContents for this route, we need to -@@ -2005,6 +2015,8 @@ void WebContentsImpl::CreateNewWindow( +@@ -2038,6 +2048,8 @@ void WebContentsImpl::CreateNewWindow( create_params.opener_render_process_id = render_process_id; create_params.opener_render_frame_id = params.opener_render_frame_id; create_params.opener_suppressed = params.opener_suppressed; @@ -139,7 +139,7 @@ index fa0afb5..d677b31 100644 WebContents::CreateParams::CreateParams(const CreateParams& other) = default; diff --git content/public/browser/web_contents.h content/public/browser/web_contents.h -index 9ccb6fe..d8561f9 100644 +index 65de3da..6807203 100644 --- content/public/browser/web_contents.h +++ content/public/browser/web_contents.h @@ -55,8 +55,10 @@ class PageState; diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index 5f0ae6c80..ffece3f4e 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -1,8 +1,8 @@ diff --git Source/web/ChromeClientImpl.cpp Source/web/ChromeClientImpl.cpp -index 6b3b603..0530199 100644 +index da897ce..c1d6cf8 100644 --- Source/web/ChromeClientImpl.cpp +++ Source/web/ChromeClientImpl.cpp -@@ -883,7 +883,7 @@ bool ChromeClientImpl::hasOpenedPopup() const +@@ -843,7 +843,7 @@ bool ChromeClientImpl::hasOpenedPopup() const PopupMenu* ChromeClientImpl::openPopupMenu(LocalFrame& frame, HTMLSelectElement& select) { notifyPopupOpeningObservers(); @@ -12,7 +12,7 @@ index 6b3b603..0530199 100644 DCHECK(RuntimeEnabledFeatures::pagePopupEnabled()); diff --git Source/web/WebViewImpl.cpp Source/web/WebViewImpl.cpp -index 3e92e32..049d5d8 100644 +index fcb4d10..dea498b 100644 --- Source/web/WebViewImpl.cpp +++ Source/web/WebViewImpl.cpp @@ -422,6 +422,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client, WebPageVisibilityState visibilit @@ -23,7 +23,7 @@ index 3e92e32..049d5d8 100644 , m_doingDragAndDrop(false) , m_ignoreInputEvents(false) , m_compositorDeviceScaleFactorOverride(0) -@@ -4067,9 +4068,14 @@ void WebViewImpl::pageScaleFactorChanged() +@@ -4108,9 +4109,14 @@ void WebViewImpl::pageScaleFactorChanged() m_client->pageScaleFactorChanged(); } @@ -40,10 +40,10 @@ index 3e92e32..049d5d8 100644 void WebViewImpl::startDragging(LocalFrame* frame, diff --git Source/web/WebViewImpl.h Source/web/WebViewImpl.h -index 2c3e9a0..7d6a2dc 100644 +index 5292560..08e6afe 100644 --- Source/web/WebViewImpl.h +++ Source/web/WebViewImpl.h -@@ -384,7 +384,8 @@ public: +@@ -382,7 +382,8 @@ public: // Returns true if popup menus should be rendered by the browser, false if // they should be rendered by WebKit (which is the default). @@ -53,7 +53,7 @@ index 2c3e9a0..7d6a2dc 100644 bool shouldAutoResize() const { -@@ -675,6 +676,8 @@ private: +@@ -678,6 +679,8 @@ private: float m_fakePageScaleAnimationPageScaleFactor; bool m_fakePageScaleAnimationUseAnchor; @@ -63,10 +63,10 @@ index 2c3e9a0..7d6a2dc 100644 bool m_ignoreInputEvents; diff --git public/web/WebView.h public/web/WebView.h -index fe06749..22895f9 100644 +index 4f81bb6..66f1b2d 100644 --- public/web/WebView.h +++ public/web/WebView.h -@@ -438,6 +438,7 @@ public: +@@ -437,6 +437,7 @@ public: // Sets whether select popup menus should be rendered by the browser. BLINK_EXPORT static void setUseExternalPopupMenus(bool); diff --git a/tests/unittests/os_rendering_unittest.cc b/tests/unittests/os_rendering_unittest.cc index 85557015f..2729cec22 100644 --- a/tests/unittests/os_rendering_unittest.cc +++ b/tests/unittests/os_rendering_unittest.cc @@ -656,10 +656,7 @@ class OSRTestHandler : public RoutingTestHandler, #if defined(OS_MACOSX) EXPECT_EQ(0xff5d99d6, *(reinterpret_cast(buffer))); #elif defined(OS_LINUX) || defined(OS_WIN) - if (scale_factor_ == 1.0f) - EXPECT_EQ(0xff6497ea, *(reinterpret_cast(buffer))); - else if (scale_factor_ == 2.0f) - EXPECT_EQ(0xff4d90fe, *(reinterpret_cast(buffer))); + EXPECT_EQ(0xff6497ea, *(reinterpret_cast(buffer))); #else #error "Unsupported platform" #endif diff --git a/tests/unittests/run_all_unittests.cc b/tests/unittests/run_all_unittests.cc index 32d3b4102..99140adc4 100644 --- a/tests/unittests/run_all_unittests.cc +++ b/tests/unittests/run_all_unittests.cc @@ -70,7 +70,7 @@ class CefTestThread : public base::Thread { // Called on the UI thread. void RunTests(CefTestThread* thread) { // Run the test suite on the test thread. - thread->message_loop()->PostTask(FROM_HERE, + thread->message_loop()->task_runner()->PostTask(FROM_HERE, base::Bind(&CefTestThread::RunTests, base::Unretained(thread))); } diff --git a/tools/gn_args.py b/tools/gn_args.py index 7a0050eb0..d8ff104fe 100644 --- a/tools/gn_args.py +++ b/tools/gn_args.py @@ -266,6 +266,8 @@ def GetAllPlatformConfigs(build_args): # Don't create debug directories for asan builds. is_asan = GetArgValue(args, 'is_asan') + if is_asan: + msg('Only generating Release configuration due to is_asan=true') # Always create x64 configs. if not is_asan: