summaryrefslogtreecommitdiff
path: root/Source/WebKit2/Shared/WebRenderLayer.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/Shared/WebRenderLayer.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/Shared/WebRenderLayer.cpp')
-rw-r--r--Source/WebKit2/Shared/WebRenderLayer.cpp34
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)
{
}