| 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 a2be5873f8a5f343773a77898d6b10e475f85254..7e293aa0ccc242e4bcbad8e048b117d4a0de52ef 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())
|
| + widget->setIsTransparent(true);
|
| + return widget;
|
| }
|
|
|
| WebFrameWidget* WebFrameWidget::create(WebWidgetClient* client, WebView* webView, WebLocalFrame* mainFrame)
|
| @@ -98,6 +101,8 @@ WebFrameWidgetImpl::WebFrameWidgetImpl(WebWidgetClient* client, WebLocalFrame* l
|
| , m_layerTreeViewClosed(false)
|
| , m_suppressNextKeypressEvent(false)
|
| , m_ignoreInputEvents(false)
|
| + , m_isTransparent(false)
|
| + , m_backgroundColorOverride(Color::transparent)
|
| #if ENABLE(OILPAN)
|
| , m_selfKeepAlive(this)
|
| #endif
|
| @@ -278,7 +283,7 @@ void WebFrameWidgetImpl::updateLayerTreeBackgroundColor()
|
| if (!m_layerTreeView)
|
| return;
|
|
|
| - m_layerTreeView->setBackgroundColor(alphaChannel(view()->backgroundColorOverride()) ? view()->backgroundColorOverride() : view()->backgroundColor());
|
| + m_layerTreeView->setBackgroundColor(alphaChannel(backgroundColorOverride()) ? backgroundColorOverride() : backgroundColor());
|
| }
|
|
|
| void WebFrameWidgetImpl::updateLayerTreeDeviceScaleFactor()
|
| @@ -290,10 +295,17 @@ void WebFrameWidgetImpl::updateLayerTreeDeviceScaleFactor()
|
| m_layerTreeView->setDeviceScaleFactor(deviceScaleFactor);
|
| }
|
|
|
| +void WebFrameWidgetImpl::setIsTransparent(bool isTransparent)
|
| +{
|
| + m_isTransparent = isTransparent;
|
| +
|
| + 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 +393,24 @@ 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::setBackgroundColorOverride(WebColor color)
|
| +{
|
| + m_backgroundColorOverride = color;
|
| + updateLayerTreeBackgroundColor();
|
| +}
|
| +
|
| void WebFrameWidgetImpl::scheduleAnimation()
|
| {
|
| if (m_layerTreeView) {
|
| @@ -483,7 +513,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();
|
| }
|
|
|