diff --git a/libcef/browser/osr/web_contents_view_osr.cc b/libcef/browser/osr/web_contents_view_osr.cc index 2f6c380ab..ae64b1d8a 100644 --- a/libcef/browser/osr/web_contents_view_osr.cc +++ b/libcef/browser/osr/web_contents_view_osr.cc @@ -135,9 +135,10 @@ CefWebContentsViewOSR::CreateViewForPopupWidget( void CefWebContentsViewOSR::SetPageTitle(const base::string16& title) {} void CefWebContentsViewOSR::RenderViewCreated(content::RenderViewHost* host) { - // |view| will be nullptr the first time this method is called for popup - // browsers. - CefRenderWidgetHostViewOSR* view = GetView(); + if (!host) + return; + CefRenderWidgetHostViewOSR* view = + static_cast(host->GetWidget()->GetView()); if (view) view->InstallTransparency(); } diff --git a/patch/patch.cfg b/patch/patch.cfg index 45bd129f2..41ecf376a 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -50,6 +50,9 @@ patches = [ }, { # Enable popups in offscreen rendering on OS X. + # + # Allow customization of the WebView background color. + # https://bitbucket.org/chromiumembedded/cef/issues/2345 'name': 'webkit_popups', }, { diff --git a/patch/patches/prefs_content_1161.patch b/patch/patches/prefs_content_1161.patch index d1d4921fd..eba0ff894 100644 --- a/patch/patches/prefs_content_1161.patch +++ b/patch/patches/prefs_content_1161.patch @@ -35,15 +35,14 @@ index 49be57cd2aad..417be7a55184 100644 bool record_whole_document; SavePreviousDocumentResources save_previous_document_resources; diff --git content/renderer/render_view_impl.cc content/renderer/render_view_impl.cc -index 1d136aa56ff4..23c00d73b8ed 100644 +index 1d136aa56ff4..2151ad629dd9 100644 --- content/renderer/render_view_impl.cc +++ content/renderer/render_view_impl.cc -@@ -1261,6 +1261,8 @@ void RenderViewImpl::ApplyWebPreferencesInternal( +@@ -1261,6 +1261,7 @@ void RenderViewImpl::ApplyWebPreferencesInternal( blink::WebView* web_view, CompositorDependencies* compositor_deps) { ApplyWebPreferences(prefs, web_view); -+ if (GetWebFrameWidget()) -+ GetWebFrameWidget()->SetBaseBackgroundColor(prefs.base_background_color); ++ web_view->SetBaseBackgroundColor(prefs.base_background_color); } void RenderViewImpl::OnForceRedraw(const ui::LatencyInfo& latency_info) { diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index 5d8710f51..23f008f1d 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -27,7 +27,7 @@ index d0c5134a2ad6..1434134d4212 100644 suppress_next_keypress_event_(false), ime_accept_events_(true), diff --git third_party/WebKit/Source/core/exported/WebViewImpl.h third_party/WebKit/Source/core/exported/WebViewImpl.h -index 79a702679fec..f50dca632eb4 100644 +index 79a702679fec..babc626a91bf 100644 --- third_party/WebKit/Source/core/exported/WebViewImpl.h +++ third_party/WebKit/Source/core/exported/WebViewImpl.h @@ -107,7 +107,8 @@ class CORE_EXPORT WebViewImpl final @@ -40,6 +40,15 @@ index 79a702679fec..f50dca632eb4 100644 // WebWidget methods: void Close() override; +@@ -256,7 +257,7 @@ class CORE_EXPORT WebViewImpl final + HitTestResult CoreHitTestResultAt(const WebPoint&); + void InvalidateRect(const IntRect&); + +- void SetBaseBackgroundColor(WebColor); ++ void SetBaseBackgroundColor(WebColor) override; + void SetBaseBackgroundColorOverride(WebColor); + void ClearBaseBackgroundColorOverride(); + void SetBackgroundColorOverride(WebColor); @@ -608,6 +609,8 @@ class CORE_EXPORT WebViewImpl final float fake_page_scale_animation_page_scale_factor_; bool fake_page_scale_animation_use_anchor_; @@ -63,7 +72,7 @@ index 98618289cfab..ec154753a350 100644 DCHECK(RuntimeEnabledFeatures::PagePopupEnabled()); diff --git third_party/WebKit/public/web/WebView.h third_party/WebKit/public/web/WebView.h -index 8f30d3c30bac..6d156c7837fb 100644 +index 8f30d3c30bac..062ae5e643bb 100644 --- third_party/WebKit/public/web/WebView.h +++ third_party/WebKit/public/web/WebView.h @@ -360,6 +360,7 @@ class WebView : protected WebWidget { @@ -74,3 +83,12 @@ index 8f30d3c30bac..6d156c7837fb 100644 // Hides any popup (suggestions, selects...) that might be showing. virtual void HidePopups() = 0; +@@ -390,6 +391,8 @@ class WebView : protected WebWidget { + unsigned inactive_background_color, + unsigned inactive_foreground_color) = 0; + ++ virtual void SetBaseBackgroundColor(WebColor color) = 0; ++ + // Modal dialog support ------------------------------------------------ + + // Call these methods before and after running a nested, modal event loop