Fix OSR transparency problems (issue #2212, issue #2345)

This commit is contained in:
Marshall Greenblatt
2018-02-22 12:59:06 -05:00
parent db41052eac
commit f406a7400a
4 changed files with 30 additions and 9 deletions

View File

@@ -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<CefRenderWidgetHostViewOSR*>(host->GetWidget()->GetView());
if (view)
view->InstallTransparency();
}

View File

@@ -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',
},
{

View File

@@ -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 6b128219c76a..d6396b810c11 100644
index 6b128219c76a..c169a2b2d773 100644
--- content/renderer/render_view_impl.cc
+++ content/renderer/render_view_impl.cc
@@ -1263,6 +1263,8 @@ void RenderViewImpl::ApplyWebPreferencesInternal(
@@ -1263,6 +1263,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) {

View File

@@ -27,7 +27,7 @@ index d91e3b143073..35fd90706031 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 a17a3af5ec27..7036d8e87ba0 100644
index a17a3af5ec27..810293b7ac44 100644
--- third_party/WebKit/Source/core/exported/WebViewImpl.h
+++ third_party/WebKit/Source/core/exported/WebViewImpl.h
@@ -106,7 +106,8 @@ class CORE_EXPORT WebViewImpl final
@@ -40,6 +40,15 @@ index a17a3af5ec27..7036d8e87ba0 100644
// WebWidget methods:
void Close() override;
@@ -255,7 +256,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);
@@ -605,6 +606,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