diff options
Diffstat (limited to 'Source/WebKit2/Shared/WebRenderLayer.cpp')
-rw-r--r-- | Source/WebKit2/Shared/WebRenderLayer.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/Source/WebKit2/Shared/WebRenderLayer.cpp b/Source/WebKit2/Shared/WebRenderLayer.cpp index f4baad331..9cc10eca4 100644 --- a/Source/WebKit2/Shared/WebRenderLayer.cpp +++ b/Source/WebKit2/Shared/WebRenderLayer.cpp @@ -32,9 +32,11 @@ #include <WebCore/Frame.h> #include <WebCore/FrameLoader.h> #include <WebCore/FrameLoaderClient.h> +#include <WebCore/MainFrame.h> #include <WebCore/RenderLayer.h> #include <WebCore/RenderLayerBacking.h> #include <WebCore/RenderView.h> +#include <WebCore/RenderWidget.h> #include <WebCore/StyledElement.h> using namespace WebCore; @@ -45,25 +47,25 @@ PassRefPtr<WebRenderLayer> WebRenderLayer::create(WebPage* page) { Frame* mainFrame = page->mainFrame(); if (!mainFrame) - return 0; + return nullptr; if (!mainFrame->loader().client().hasHTMLView()) - return 0; + return nullptr; RenderView* contentRenderer = mainFrame->contentRenderer(); if (!contentRenderer) - return 0; + return nullptr; RenderLayer* rootLayer = contentRenderer->layer(); if (!rootLayer) - return 0; + return nullptr; return adoptRef(new WebRenderLayer(rootLayer)); } -PassRefPtr<WebRenderLayer> WebRenderLayer::create(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList) +PassRefPtr<WebRenderLayer> WebRenderLayer::create(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList, PassRefPtr<WebRenderLayer> frameContentsLayer) { - return adoptRef(new WebRenderLayer(renderer, isReflection, isClipping, isClipped, type, absoluteBoundingBox, negativeZOrderList, normalFlowList, positiveZOrderList)); + return adoptRef(new WebRenderLayer(renderer, isReflection, isClipping, isClipped, type, absoluteBoundingBox, backingStoreMemoryEstimate, negativeZOrderList, normalFlowList, positiveZOrderList, frameContentsLayer)); } PassRefPtr<API::Array> WebRenderLayer::createArrayFromLayerList(Vector<RenderLayer*>* list) @@ -77,7 +79,7 @@ PassRefPtr<API::Array> WebRenderLayer::createArrayFromLayerList(Vector<RenderLay for (const auto& layer : *list) layers.uncheckedAppend(adoptRef(new WebRenderLayer(layer))); - return API::Array::create(std::move(layers)); + return API::Array::create(WTFMove(layers)); } WebRenderLayer::WebRenderLayer(RenderLayer* layer) @@ -85,7 +87,6 @@ WebRenderLayer::WebRenderLayer(RenderLayer* layer) m_renderer = WebRenderObject::create(&layer->renderer()); m_isReflection = layer->isReflection(); -#if USE(ACCELERATED_COMPOSITING) if (layer->isComposited()) { RenderLayerBacking* backing = layer->backing(); m_isClipping = backing->hasClippingLayer(); @@ -104,32 +105,41 @@ WebRenderLayer::WebRenderLayer(RenderLayer* layer) m_compositingLayerType = Container; break; } + + m_backingStoreMemoryEstimate = backing->backingStoreMemoryEstimate(); } else { -#endif m_isClipping = false; m_isClipped = false; m_compositingLayerType = None; -#if USE(ACCELERATED_COMPOSITING) + m_backingStoreMemoryEstimate = 0; } -#endif m_absoluteBoundingBox = layer->absoluteBoundingBox(); m_negativeZOrderList = createArrayFromLayerList(layer->negZOrderList()); m_normalFlowList = createArrayFromLayerList(layer->normalFlowList()); m_positiveZOrderList = createArrayFromLayerList(layer->posZOrderList()); + + if (is<RenderWidget>(layer->renderer())) { + if (Document* contentDocument = downcast<RenderWidget>(layer->renderer()).frameOwnerElement().contentDocument()) { + if (RenderView* view = contentDocument->renderView()) + m_frameContentsLayer = adoptRef(new WebRenderLayer(view->layer())); + } + } } -WebRenderLayer::WebRenderLayer(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList) +WebRenderLayer::WebRenderLayer(PassRefPtr<WebRenderObject> renderer, bool isReflection, bool isClipping, bool isClipped, CompositingLayerType type, WebCore::IntRect absoluteBoundingBox, double backingStoreMemoryEstimate, PassRefPtr<API::Array> negativeZOrderList, PassRefPtr<API::Array> normalFlowList, PassRefPtr<API::Array> positiveZOrderList, PassRefPtr<WebRenderLayer> frameContentsLayer) : m_renderer(renderer) , m_isReflection(isReflection) , m_isClipping(isClipping) , m_isClipped(isClipped) , m_compositingLayerType(type) , m_absoluteBoundingBox(absoluteBoundingBox) + , m_backingStoreMemoryEstimate(backingStoreMemoryEstimate) , m_negativeZOrderList(negativeZOrderList) , m_normalFlowList(normalFlowList) , m_positiveZOrderList(positiveZOrderList) + , m_frameContentsLayer(frameContentsLayer) { } |