Index: third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp b/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
index 033a49e59fb956e16f9f9914cd55df6e48e7975b..8c2c3ce044c028b60906d36df583cc33bb5cc898 100644 |
--- a/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
@@ -63,7 +63,10 @@ namespace blink { |
WebFrameWidget* WebFrameWidget::create(WebWidgetClient* client, WebLocalFrame* localRoot) |
{ |
// Pass the WebFrameWidget's self-reference to the caller. |
- return WebFrameWidgetImpl::create(client, localRoot); |
+ WebFrameWidgetImpl* widget = WebFrameWidgetImpl::create(client, localRoot); |
+ if (localRoot->parent()) |
dcheng
2016/02/11 22:40:26
Do you think it'd make sense to have this in the c
lfg
2016/02/11 23:48:02
Done.
|
+ widget->setIsTransparent(true); |
+ return widget; |
} |
WebFrameWidget* WebFrameWidget::create(WebWidgetClient* client, WebView* webView, WebLocalFrame* mainFrame) |
@@ -98,6 +101,7 @@ WebFrameWidgetImpl::WebFrameWidgetImpl(WebWidgetClient* client, WebLocalFrame* l |
, m_layerTreeViewClosed(false) |
, m_suppressNextKeypressEvent(false) |
, m_ignoreInputEvents(false) |
+ , m_isTransparent(false) |
#if ENABLE(OILPAN) |
, m_selfKeepAlive(this) |
#endif |
@@ -278,7 +282,7 @@ void WebFrameWidgetImpl::updateLayerTreeBackgroundColor() |
if (!m_layerTreeView) |
return; |
- m_layerTreeView->setBackgroundColor(alphaChannel(view()->backgroundColorOverride()) ? view()->backgroundColorOverride() : view()->backgroundColor()); |
+ m_layerTreeView->setBackgroundColor(backgroundColor()); |
} |
void WebFrameWidgetImpl::updateLayerTreeDeviceScaleFactor() |
@@ -290,10 +294,17 @@ void WebFrameWidgetImpl::updateLayerTreeDeviceScaleFactor() |
m_layerTreeView->setDeviceScaleFactor(deviceScaleFactor); |
} |
+void WebFrameWidgetImpl::setIsTransparent(bool isTransparent) |
+{ |
+ m_isTransparent = isTransparent; |
+ |
dcheng
2016/02/11 22:40:26
The WebView version also marks the FrameViews as t
lfg
2016/02/11 23:48:02
I believe this is correct. isTransparent() on Fram
dcheng
2016/02/12 22:46:23
Hm... I guess I am thinking that it would make it
|
+ if (m_layerTreeView) |
+ m_layerTreeView->setHasTransparentBackground(isTransparent); |
+} |
+ |
bool WebFrameWidgetImpl::isTransparent() const |
{ |
- // FIXME: This might need to proxy to the WebView's isTransparent(). |
- return false; |
+ return m_isTransparent; |
} |
void WebFrameWidgetImpl::layoutAndPaintAsync(WebLayoutAndPaintAsyncCallback* callback) |
@@ -381,6 +392,18 @@ bool WebFrameWidgetImpl::hasTouchEventHandlersAt(const WebPoint& point) |
return true; |
} |
+void WebFrameWidgetImpl::setBaseBackgroundColor(WebColor color) |
+{ |
+ if (m_baseBackgroundColor == color) |
+ return; |
+ |
+ m_baseBackgroundColor = color; |
+ |
+ m_localRoot->frameView()->setBaseBackgroundColor(color); |
+ |
+ updateAllLifecyclePhases(); |
+} |
+ |
void WebFrameWidgetImpl::scheduleAnimation() |
{ |
if (m_layerTreeView) { |
@@ -483,7 +506,7 @@ WebColor WebFrameWidgetImpl::backgroundColor() const |
if (isTransparent()) |
return Color::transparent; |
if (!m_localRoot->frameView()) |
- return view()->backgroundColor(); |
+ return m_baseBackgroundColor; |
FrameView* view = m_localRoot->frameView(); |
return view->documentBackgroundColor().rgb(); |
} |