Remove the initial spv2 property tree code
The initial approach to property trees in slimming paint v2 was to
compute them after paint. Our new design [1] now computes property
tree data before paint which makes the initial implementation
obsolete. This patch removes the original property tree code and
plumbing of a composited display list.
The lifecycle phase for compositing in spv2 has not been removed yet
due to test dependencies.
[1] https://docs.google.com/document/d/12I3JD1-Jmnb59ZHKyntFTSsNUzQhPae8QpCECtZt5zs
BUG=537409
TBR=chrishtr
Review URL: https://codereview.chromium.org/1402403004
Cr-Commit-Position: refs/heads/master@{#354830}
diff --git a/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilder.cpp b/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilder.cpp
deleted file mode 100644
index 9b0b69d..0000000
--- a/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilder.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "core/compositing/DisplayListCompositingBuilder.h"
-
-#include "platform/graphics/paint/DisplayItemPropertyTreeBuilder.h"
-
-namespace blink {
-
-void DisplayListCompositingBuilder::build(CompositedDisplayList& compositedDisplayList)
-{
- // TODO(pdr): Properly implement simple layer compositing here.
- // See: https://docs.google.com/document/d/1qF7wpO_lhuxUO6YXKZ3CJuXi0grcb5gKZJBBgnoTd0k/view
- DisplayItemPropertyTreeBuilder treeBuilder;
- for (const auto& displayItem : m_paintController.displayItemList())
- treeBuilder.processDisplayItem(displayItem);
- compositedDisplayList.transformTree = treeBuilder.releaseTransformTree();
- // TODO(pdr, jbroman): Also release other trees, and use range records to
- // construct simple layers.
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilder.h b/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilder.h
deleted file mode 100644
index ef159c5..0000000
--- a/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilder.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef DisplayListCompositingBuilder_h
-#define DisplayListCompositingBuilder_h
-
-#include "core/CoreExport.h"
-#include "platform/graphics/CompositedDisplayList.h"
-#include "platform/graphics/paint/PaintController.h"
-
-namespace blink {
-
-class CORE_EXPORT DisplayListCompositingBuilder {
-public:
- DisplayListCompositingBuilder(const PaintController& paintController)
- : m_paintController(paintController) { }
-
- void build(CompositedDisplayList&);
-
-private:
- const PaintController& m_paintController;
-};
-
-} // namespace blink
-
-#endif // DisplayListCompositingBuilder_h
diff --git a/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilderTest.cpp b/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilderTest.cpp
deleted file mode 100644
index bb3ae613..0000000
--- a/third_party/WebKit/Source/core/compositing/DisplayListCompositingBuilderTest.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "core/compositing/DisplayListCompositingBuilder.h"
-
-#include "platform/RuntimeEnabledFeatures.h"
-#include <gtest/gtest.h>
-
-namespace blink {
-
-class DisplayListCompositingBuilderTest : public ::testing::Test {
-public:
- DisplayListCompositingBuilderTest()
- : m_originalSlimmingPaintV2Enabled(RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { }
-
-private:
- void SetUp() override
- {
- RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(true);
- }
-
- void TearDown() override
- {
- RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(m_originalSlimmingPaintV2Enabled);
- }
-
- bool m_originalSlimmingPaintV2Enabled;
-};
-
-TEST_F(DisplayListCompositingBuilderTest, BasicTransformPropertyTree)
-{
- OwnPtr<PaintController> paintController = PaintController::create();
- paintController->commitNewDisplayItems();
-
- DisplayListCompositingBuilder compositingBuilder(*paintController);
- CompositedDisplayList compositedDisplayList;
- compositingBuilder.build(compositedDisplayList);
-
- const auto& tree = *compositedDisplayList.transformTree;
- ASSERT_EQ(1u, tree.nodeCount());
- EXPECT_TRUE(tree.nodeAt(0).isRoot());
- EXPECT_TRUE(tree.nodeAt(0).matrix.isIdentity());
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/core/compositing/DisplayListCompositingTest.cpp b/third_party/WebKit/Source/core/compositing/DisplayListCompositingTest.cpp
deleted file mode 100644
index 818d5887..0000000
--- a/third_party/WebKit/Source/core/compositing/DisplayListCompositingTest.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-
-#include "core/layout/LayoutTestHelper.h"
-#include "core/page/Page.h"
-#include "core/paint/PaintLayer.h"
-#include "platform/graphics/CompositedDisplayList.h"
-#include "platform/graphics/GraphicsLayer.h"
-#include "platform/transforms/TransformTestHelper.h"
-#include "platform/transforms/TransformationMatrix.h"
-#include <gtest/gtest.h>
-
-namespace blink {
-namespace {
-
-class DisplayListCompositingTest : public RenderingTest {
-public:
- DisplayListCompositingTest()
- : m_page(nullptr)
- , m_originalSlimmingPaintV2Enabled(RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { }
-
-protected:
- Page& page() { return *m_page; }
-
-private:
- void SetUp() override
- {
- RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(true);
-
- RenderingTest::SetUp();
- enableCompositing();
-
- m_page = document().page();
- ASSERT_TRUE(m_page);
- }
-
- void TearDown() override
- {
- RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(m_originalSlimmingPaintV2Enabled);
- }
-
- Page* m_page;
- bool m_originalSlimmingPaintV2Enabled;
-};
-
-TEST_F(DisplayListCompositingTest, TransformTreeBuildingNoTransforms)
-{
- setBodyInnerHTML("<style>* { margin: 0; padding: 0;}</style><div>A</div>");
- auto* compositedDisplayList = page().compositedDisplayListForTesting();
- ASSERT_TRUE(compositedDisplayList);
- auto* tree = compositedDisplayList->transformTree.get();
-
- // There should only be a root transform node.
- ASSERT_EQ(1u, tree->nodeCount());
- EXPECT_TRUE(tree->nodeAt(0).isRoot());
- EXPECT_TRUE(tree->nodeAt(0).matrix.isIdentity());
-}
-
-TEST_F(DisplayListCompositingTest, TransformTreeBuildingMultipleTransforms)
-{
- setBodyInnerHTML("<style>* { margin: 0; padding: 0;}</style><div style=\"transform: translate3d(2px,3px,4px);\">X</div>");
- auto* compositedDisplayList = page().compositedDisplayListForTesting();
- ASSERT_TRUE(compositedDisplayList);
- auto* tree = compositedDisplayList->transformTree.get();
-
- ASSERT_EQ(2u, tree->nodeCount());
- EXPECT_TRUE(tree->nodeAt(0).isRoot());
- EXPECT_FALSE(tree->nodeAt(1).isRoot());
-
- TransformationMatrix matrix;
- matrix.translate3d(2, 3, 4);
- EXPECT_TRANSFORMS_ALMOST_EQ(matrix, tree->nodeAt(1).matrix);
-
- // Add a nested 3d transform.
- setBodyInnerHTML("<style>* { margin: 0; padding: 0;}</style><div style=\"transform: translate3d(2px,3px,4px);\"><div style=\"transform: translate3d(5px,6px,7px);\">X</div></div>");
- compositedDisplayList = page().compositedDisplayListForTesting();
- ASSERT_TRUE(compositedDisplayList);
- tree = compositedDisplayList->transformTree.get();
-
- ASSERT_EQ(3u, tree->nodeCount());
- EXPECT_TRUE(tree->nodeAt(0).isRoot());
- EXPECT_FALSE(tree->nodeAt(1).isRoot());
- EXPECT_FALSE(tree->nodeAt(2).isRoot());
-
- matrix.makeIdentity();
- matrix.translate3d(2, 3, 4);
- EXPECT_TRANSFORMS_ALMOST_EQ(matrix, tree->nodeAt(1).matrix);
-
- matrix.makeIdentity();
- matrix.translate3d(5, 6, 7);
- EXPECT_TRANSFORMS_ALMOST_EQ(matrix, tree->nodeAt(2).matrix);
-}
-
-}
-} // namespace blink
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi
index 6ddfa80..99b0299b 100644
--- a/third_party/WebKit/Source/core/core.gypi
+++ b/third_party/WebKit/Source/core/core.gypi
@@ -1003,8 +1003,6 @@
'animation/css/CSSTimingData.h',
'animation/css/CSSTransitionData.cpp',
'animation/css/CSSTransitionData.h',
- 'compositing/DisplayListCompositingBuilder.cpp',
- 'compositing/DisplayListCompositingBuilder.h',
'clipboard/DataObject.cpp',
'clipboard/DataObject.h',
'clipboard/DataObjectItem.cpp',
@@ -3775,8 +3773,6 @@
'animation/animatable/AnimatableValueTestHelper.h',
'animation/animatable/AnimatableValueTestHelperTest.cpp',
'clipboard/DataObjectTest.cpp',
- 'compositing/DisplayListCompositingBuilderTest.cpp',
- 'compositing/DisplayListCompositingTest.cpp',
'css/AffectedByFocusTest.cpp',
'css/CSSCalculationValueTest.cpp',
'css/CSSFontFaceTest.cpp',
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
index 2a2aca8..e4351ba 100644
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
@@ -29,7 +29,6 @@
#include "core/HTMLNames.h"
#include "core/MediaTypeNames.h"
-#include "core/compositing/DisplayListCompositingBuilder.h"
#include "core/css/FontFaceSet.h"
#include "core/css/resolver/StyleResolver.h"
#include "core/dom/AXObjectCache.h"
@@ -2526,15 +2525,9 @@
forAllFrameViews([](FrameView& frameView) { frameView.lifecycle().advanceTo(DocumentLifecycle::InCompositingForSlimmingPaintV2); });
// Detached frames can have no root graphics layer.
- if (GraphicsLayer* rootGraphicsLayer = layoutView()->layer()->graphicsLayerBacking()) {
+ if (GraphicsLayer* rootGraphicsLayer = layoutView()->layer()->graphicsLayerBacking())
rootGraphicsLayer->paintController()->commitNewDisplayItems(rootGraphicsLayer);
- DisplayListCompositingBuilder compositingBuilder(*rootGraphicsLayer->paintController());
- OwnPtr<CompositedDisplayList> compositedDisplayList = adoptPtr(new CompositedDisplayList());
- compositingBuilder.build(*compositedDisplayList);
- page()->setCompositedDisplayList(compositedDisplayList.release());
- }
-
forAllFrameViews([](FrameView& frameView) { frameView.lifecycle().advanceTo(DocumentLifecycle::CompositingForSlimmingPaintV2Clean); });
}
diff --git a/third_party/WebKit/Source/core/layout/LayoutTestHelper.cpp b/third_party/WebKit/Source/core/layout/LayoutTestHelper.cpp
index ebe8d8d..702089fc 100644
--- a/third_party/WebKit/Source/core/layout/LayoutTestHelper.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutTestHelper.cpp
@@ -8,7 +8,6 @@
#include "core/loader/EmptyClients.h"
#include "platform/graphics/GraphicsLayer.h"
#include "platform/graphics/GraphicsLayerFactory.h"
-#include "public/platform/WebCompositedDisplayList.h"
namespace blink {
@@ -29,19 +28,6 @@
static FakeGraphicsLayerFactory* factory = adoptPtr(new FakeGraphicsLayerFactory).leakPtr();
return factory;
}
-
- void setCompositedDisplayList(PassOwnPtr<CompositedDisplayList> compositedDisplayList) override
- {
- m_compositedDisplayList.assign(compositedDisplayList);
- }
-
- CompositedDisplayList* compositedDisplayListForTesting() override
- {
- return m_compositedDisplayList.compositedDisplayListForTesting();
- }
-
-private:
- WebCompositedDisplayList m_compositedDisplayList;
};
void RenderingTest::SetUp()
diff --git a/third_party/WebKit/Source/core/layout/LayoutView.h b/third_party/WebKit/Source/core/layout/LayoutView.h
index 8c0e6c5..e43417f 100644
--- a/third_party/WebKit/Source/core/layout/LayoutView.h
+++ b/third_party/WebKit/Source/core/layout/LayoutView.h
@@ -23,7 +23,6 @@
#define LayoutView_h
#include "core/CoreExport.h"
-#include "core/compositing/DisplayListCompositingBuilder.h"
#include "core/layout/HitTestCache.h"
#include "core/layout/HitTestResult.h"
#include "core/layout/LayoutBlockFlow.h"
diff --git a/third_party/WebKit/Source/core/page/ChromeClient.h b/third_party/WebKit/Source/core/page/ChromeClient.h
index b474502..9dcffe3 100644
--- a/third_party/WebKit/Source/core/page/ChromeClient.h
+++ b/third_party/WebKit/Source/core/page/ChromeClient.h
@@ -32,7 +32,6 @@
#include "platform/Cursor.h"
#include "platform/HostWindow.h"
#include "platform/PopupMenu.h"
-#include "platform/graphics/CompositedDisplayList.h"
#include "platform/heap/Handle.h"
#include "platform/scroll/ScrollTypes.h"
#include "public/platform/WebFocusType.h"
@@ -185,9 +184,6 @@
// one. Otherwise it sets it for the WebViewImpl.
virtual void attachRootGraphicsLayer(GraphicsLayer*, LocalFrame* localRoot) = 0;
- virtual void setCompositedDisplayList(PassOwnPtr<CompositedDisplayList>) { }
- virtual CompositedDisplayList* compositedDisplayListForTesting() { return nullptr; }
-
virtual void attachCompositorAnimationTimeline(WebCompositorAnimationTimeline*, LocalFrame* localRoot) { }
virtual void detachCompositorAnimationTimeline(WebCompositorAnimationTimeline*, LocalFrame* localRoot) { }
diff --git a/third_party/WebKit/Source/core/page/Page.cpp b/third_party/WebKit/Source/core/page/Page.cpp
index eac289d..201ae01 100644
--- a/third_party/WebKit/Source/core/page/Page.cpp
+++ b/third_party/WebKit/Source/core/page/Page.cpp
@@ -540,16 +540,6 @@
frames[i]->localDOMWindow()->acceptLanguagesChanged();
}
-void Page::setCompositedDisplayList(PassOwnPtr<CompositedDisplayList> compositedDisplayList)
-{
- chromeClient().setCompositedDisplayList(compositedDisplayList);
-}
-
-CompositedDisplayList* Page::compositedDisplayListForTesting()
-{
- return chromeClient().compositedDisplayListForTesting();
-}
-
DEFINE_TRACE(Page)
{
#if ENABLE(OILPAN)
diff --git a/third_party/WebKit/Source/core/page/Page.h b/third_party/WebKit/Source/core/page/Page.h
index ec5f8def..5ef7ff1 100644
--- a/third_party/WebKit/Source/core/page/Page.h
+++ b/third_party/WebKit/Source/core/page/Page.h
@@ -46,7 +46,6 @@
class AutoscrollController;
class ChromeClient;
class ClientRectList;
-class CompositedDisplayList;
class ContextMenuClient;
class ContextMenuController;
class Document;
@@ -200,9 +199,6 @@
void acceptLanguagesChanged();
- void setCompositedDisplayList(PassOwnPtr<CompositedDisplayList>);
- CompositedDisplayList* compositedDisplayListForTesting();
-
static void networkStateChanged(bool online);
MemoryPurgeController& memoryPurgeController();
diff --git a/third_party/WebKit/Source/platform/blink_platform.gypi b/third_party/WebKit/Source/platform/blink_platform.gypi
index b2776af..774d6a5 100644
--- a/third_party/WebKit/Source/platform/blink_platform.gypi
+++ b/third_party/WebKit/Source/platform/blink_platform.gypi
@@ -263,7 +263,6 @@
'exported/WebAudioBus.cpp',
'exported/WebAudioDevice.cpp',
'exported/WebBlobData.cpp',
- 'exported/WebCompositedDisplayList.cpp',
'exported/WebCompositorAnimationPlayerClient.cpp',
'exported/WebContentDecryptionModule.cpp',
'exported/WebContentDecryptionModuleAccess.cpp',
@@ -281,8 +280,6 @@
'exported/WebDataConsumerHandle.cpp',
'exported/WebDeviceMotionData.cpp',
'exported/WebDeviceOrientationData.cpp',
- 'exported/WebDisplayItemClipTree.cpp',
- 'exported/WebDisplayItemTransformTree.cpp',
'exported/WebDragData.cpp',
'exported/WebEncryptedMediaClient.cpp',
'exported/WebEncryptedMediaKeyInformation.cpp',
@@ -499,7 +496,6 @@
'graphics/Color.h',
'graphics/ColorSpace.cpp',
'graphics/ColorSpace.h',
- 'graphics/CompositedDisplayList.h',
'graphics/CompositingReasons.cpp',
'graphics/CompositingReasons.h',
'graphics/ContentLayerDelegate.cpp',
@@ -671,13 +667,7 @@
'graphics/paint/DisplayItem.h',
'graphics/paint/DisplayItemCacheSkipper.h',
'graphics/paint/DisplayItemClient.h',
- 'graphics/paint/DisplayItemClipTree.cpp',
- 'graphics/paint/DisplayItemClipTree.h',
'graphics/paint/DisplayItemList.h',
- 'graphics/paint/DisplayItemPropertyTreeBuilder.cpp',
- 'graphics/paint/DisplayItemPropertyTreeBuilder.h',
- 'graphics/paint/DisplayItemTransformTree.cpp',
- 'graphics/paint/DisplayItemTransformTree.h',
'graphics/paint/DrawingDisplayItem.cpp',
'graphics/paint/DrawingDisplayItem.h',
'graphics/paint/DrawingRecorder.cpp',
@@ -1009,7 +999,6 @@
'graphics/filters/FilterOperationsTest.cpp',
'graphics/filters/ImageFilterBuilderTest.cpp',
'graphics/gpu/DrawingBufferTest.cpp',
- 'graphics/paint/DisplayItemPropertyTreeBuilderTest.cpp',
'graphics/paint/DisplayItemTest.cpp',
'graphics/paint/PaintChunkerTest.cpp',
'graphics/paint/PaintControllerTest.cpp',
diff --git a/third_party/WebKit/Source/platform/exported/WebCompositedDisplayList.cpp b/third_party/WebKit/Source/platform/exported/WebCompositedDisplayList.cpp
deleted file mode 100644
index 9eeb2f5..0000000
--- a/third_party/WebKit/Source/platform/exported/WebCompositedDisplayList.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "public/platform/WebCompositedDisplayList.h"
-
-#include "platform/graphics/CompositedDisplayList.h"
-
-namespace blink {
-
-WebCompositedDisplayList::~WebCompositedDisplayList()
-{
- // WebPrivateOwnPtr requires explicit clearing here.
- m_private.reset(nullptr);
-}
-
-void WebCompositedDisplayList::assign(PassOwnPtr<CompositedDisplayList> compositedDisplayList)
-{
- m_private.reset(compositedDisplayList);
-}
-
-CompositedDisplayList* WebCompositedDisplayList::compositedDisplayListForTesting()
-{
- return m_private.get();
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/exported/WebDisplayItemClipTree.cpp b/third_party/WebKit/Source/platform/exported/WebDisplayItemClipTree.cpp
deleted file mode 100644
index 8625e18..0000000
--- a/third_party/WebKit/Source/platform/exported/WebDisplayItemClipTree.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "public/platform/WebDisplayItemClipTree.h"
-
-#include "platform/graphics/paint/DisplayItemClipTree.h"
-
-namespace blink {
-
-WebDisplayItemClipTree::WebDisplayItemClipTree()
-{
-}
-
-WebDisplayItemClipTree::WebDisplayItemClipTree(const PassOwnPtr<DisplayItemClipTree>& passImpl)
- : m_private(passImpl)
-{
-}
-
-WebDisplayItemClipTree::~WebDisplayItemClipTree()
-{
- // WebPrivateOwnPtr requires explicit clearing here.
- m_private.reset(nullptr);
-}
-
-size_t WebDisplayItemClipTree::nodeCount() const
-{
- return m_private->nodeCount();
-}
-
-const WebDisplayItemClipTree::ClipNode& WebDisplayItemClipTree::nodeAt(size_t index) const
-{
- return m_private->nodeAt(index);
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/exported/WebDisplayItemTransformTree.cpp b/third_party/WebKit/Source/platform/exported/WebDisplayItemTransformTree.cpp
deleted file mode 100644
index 9b823db..0000000
--- a/third_party/WebKit/Source/platform/exported/WebDisplayItemTransformTree.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "public/platform/WebDisplayItemTransformTree.h"
-
-#include "platform/graphics/paint/DisplayItemTransformTree.h"
-
-namespace blink {
-
-WebDisplayItemTransformTree::WebDisplayItemTransformTree()
-{
-}
-
-WebDisplayItemTransformTree::WebDisplayItemTransformTree(const PassOwnPtr<DisplayItemTransformTree>& passImpl)
- : m_private(passImpl)
-{
-}
-
-WebDisplayItemTransformTree::~WebDisplayItemTransformTree()
-{
- // WebPrivateOwnPtr requires explicit clearing here.
- m_private.reset(nullptr);
-}
-
-size_t WebDisplayItemTransformTree::nodeCount() const
-{
- return m_private->nodeCount();
-}
-
-const WebDisplayItemTransformTree::TransformNode& WebDisplayItemTransformTree::nodeAt(size_t index) const
-{
- return m_private->nodeAt(index);
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/CompositedDisplayList.h b/third_party/WebKit/Source/platform/graphics/CompositedDisplayList.h
deleted file mode 100644
index d2f945d..0000000
--- a/third_party/WebKit/Source/platform/graphics/CompositedDisplayList.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CompositedDisplayList_h
-#define CompositedDisplayList_h
-
-#include "platform/graphics/paint/DisplayItemTransformTree.h"
-#include "platform/graphics/paint/PaintController.h"
-
-namespace blink {
-
-// The result of running the simple layer compositing algorithm. See:
-// https://docs.google.com/document/d/1qF7wpO_lhuxUO6YXKZ3CJuXi0grcb5gKZJBBgnoTd0k/view
-class CompositedDisplayList {
-public:
- // TODO(pdr): Also add our SimpleLayers here.
- // TODO(pdr): Add the additional property trees (e.g., clip, scroll, etc).
- OwnPtr<const DisplayItemTransformTree> transformTree;
-};
-
-} // namespace blink
-
-#endif // CompositedDisplayList_h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClipTree.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClipTree.cpp
deleted file mode 100644
index 6e7ddb8..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClipTree.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "platform/graphics/paint/DisplayItemClipTree.h"
-
-#include <limits>
-
-namespace blink {
-
-DisplayItemClipTree::DisplayItemClipTree()
-{
- // There is always a root node.
- // And it's always in the root transform space.
- float infinity = std::numeric_limits<float>::infinity();
- WebFloatRect infiniteRect(-infinity, -infinity, infinity, infinity);
- m_nodes.append(ClipNode(kInvalidIndex, 0 /* root transform node */, infiniteRect));
- ASSERT(m_nodes[0].isRoot());
-}
-
-DisplayItemClipTree::~DisplayItemClipTree()
-{
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClipTree.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClipTree.h
deleted file mode 100644
index 8637847..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClipTree.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef DisplayItemClipTree_h
-#define DisplayItemClipTree_h
-
-#include "platform/PlatformExport.h"
-#include "platform/geometry/FloatRect.h"
-#include "public/platform/WebDisplayItemClipTree.h"
-#include "wtf/Vector.h"
-
-namespace blink {
-
-// Represents a hierarchy of rectangular clips which apply to ranges of a
-// display list and may be of interest to the compositor.
-//
-// This class is also the private implementation of WebDisplayItemClipTree.
-// For more detail, see WebDisplayItemClipTree.h.
-class PLATFORM_EXPORT DisplayItemClipTree {
-public:
- using ClipNode = WebDisplayItemClipTree::ClipNode;
- enum : size_t { kInvalidIndex = WebDisplayItemClipTree::kInvalidIndex };
-
- DisplayItemClipTree();
- ~DisplayItemClipTree();
-
- size_t nodeCount() const { return m_nodes.size(); }
- ClipNode& nodeAt(size_t index) { return m_nodes[index]; }
- const ClipNode& nodeAt(size_t index) const { return m_nodes[index]; }
-
- // Returns the new node index.
- size_t createNewNode(size_t parentNodeIndex, size_t transformNodeIndex, const FloatRect& clipRect)
- {
- ASSERT(parentNodeIndex != kInvalidIndex);
- ASSERT(transformNodeIndex != kInvalidIndex);
- m_nodes.append(ClipNode(parentNodeIndex, transformNodeIndex, clipRect));
- return m_nodes.size() - 1;
- }
-
-private:
- Vector<ClipNode> m_nodes;
-};
-
-} // namespace blink
-
-#endif // DisplayItemClipTree_h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilder.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilder.cpp
deleted file mode 100644
index b758a35..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilder.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "platform/graphics/paint/DisplayItemPropertyTreeBuilder.h"
-
-#include "platform/graphics/paint/DisplayItem.h"
-#include "platform/graphics/paint/DisplayItemClipTree.h"
-#include "platform/graphics/paint/DisplayItemTransformTree.h"
-#include "platform/graphics/paint/ScrollDisplayItem.h"
-#include "platform/graphics/paint/Transform3DDisplayItem.h"
-#include "platform/graphics/paint/TransformDisplayItem.h"
-
-namespace blink {
-
-DisplayItemPropertyTreeBuilder::DisplayItemPropertyTreeBuilder()
- : m_transformTree(adoptPtr(new DisplayItemTransformTree))
- , m_clipTree(adoptPtr(new DisplayItemClipTree))
- , m_rangeBeginIndex(0)
- , m_currentIndex(0)
-{
- m_stateStack.append(BuilderState());
-}
-
-DisplayItemPropertyTreeBuilder::~DisplayItemPropertyTreeBuilder()
-{
-}
-
-PassOwnPtr<DisplayItemTransformTree> DisplayItemPropertyTreeBuilder::releaseTransformTree()
-{
- ASSERT(m_stateStack.size() == 1);
- ASSERT(currentState().ignoredBeginCount == 0);
- finishRange();
- return m_transformTree.release();
-}
-
-PassOwnPtr<DisplayItemClipTree> DisplayItemPropertyTreeBuilder::releaseClipTree()
-{
- ASSERT(m_stateStack.size() == 1);
- ASSERT(currentState().ignoredBeginCount == 0);
- finishRange();
- return m_clipTree.release();
-}
-
-Vector<DisplayItemPropertyTreeBuilder::RangeRecord> DisplayItemPropertyTreeBuilder::releaseRangeRecords()
-{
- Vector<RangeRecord> output;
- output.swap(m_rangeRecords);
- return output;
-}
-
-void DisplayItemPropertyTreeBuilder::processDisplayItem(const DisplayItem& displayItem)
-{
- if (displayItem.isBegin())
- processBeginItem(displayItem);
- else if (displayItem.isEnd())
- processEndItem(displayItem);
- m_currentIndex++;
-}
-
-namespace {
-
-enum TransformKind { NotATransform = 0, Only2DTranslation, RequiresTransformNode };
-enum ClipKind { NotAClip = 0, RequiresClipNode };
-
-struct BeginDisplayItemClassification {
- // |transformOrigin| is irrelevant unless a non-translation matrix is
- // provided.
- TransformKind transformKind = NotATransform;
- TransformationMatrix matrix;
- FloatPoint3D transformOrigin;
-
- ClipKind clipKind = NotAClip;
- FloatRect clipRect;
-};
-
-// Classifies a begin display item based on how it affects the property trees.
-static BeginDisplayItemClassification classifyBeginItem(const DisplayItem& beginDisplayItem)
-{
- ASSERT(beginDisplayItem.isBegin());
-
- BeginDisplayItemClassification result;
- DisplayItem::Type type = beginDisplayItem.type();
- if (DisplayItem::isTransform3DType(type)) {
- const auto& begin3D = static_cast<const BeginTransform3DDisplayItem&>(beginDisplayItem);
- result.matrix = begin3D.transform();
- result.transformOrigin = begin3D.transformOrigin();
- result.transformKind = result.matrix.isIdentityOr2DTranslation() ? Only2DTranslation : RequiresTransformNode;
- } else if (type == DisplayItem::BeginTransform) {
- const auto& begin2D = static_cast<const BeginTransformDisplayItem&>(beginDisplayItem);
- result.matrix = begin2D.transform();
- result.transformKind = begin2D.transform().isIdentityOrTranslation() ? Only2DTranslation : RequiresTransformNode;
- } else if (DisplayItem::isScrollType(type)) {
- const auto& beginScroll = static_cast<const BeginScrollDisplayItem&>(beginDisplayItem);
- const IntSize& offset = beginScroll.currentOffset();
- result.matrix.translate(-offset.width(), -offset.height());
- result.transformKind = Only2DTranslation;
- }
- return result;
-}
-
-} // namespace
-
-void DisplayItemPropertyTreeBuilder::processBeginItem(const DisplayItem& displayItem)
-{
- BeginDisplayItemClassification classification = classifyBeginItem(displayItem);
-
- if (!classification.transformKind && !classification.clipKind) {
- currentState().ignoredBeginCount++;
- return;
- }
-
- finishRange();
- BuilderState newState(currentState());
- newState.ignoredBeginCount = 0;
-
- switch (classification.transformKind) {
- case NotATransform:
- break;
- case Only2DTranslation:
- // Adjust the offset associated with the current transform node.
- newState.offset += classification.matrix.to2DTranslation();
- break;
- case RequiresTransformNode:
- // Emit a transform node.
- newState.transformNode = m_transformTree->createNewNode(
- newState.transformNode, classification.matrix, classification.transformOrigin);
- newState.offset = FloatSize();
- break;
- }
-
- switch (classification.clipKind) {
- case NotAClip:
- break;
- case RequiresClipNode:
- // Emit a clip node.
- FloatRect adjustedClipRect = classification.clipRect;
- adjustedClipRect.move(newState.offset);
- newState.clipNode = m_clipTree->createNewNode(
- newState.clipNode, newState.transformNode, adjustedClipRect);
- break;
- }
-
- m_stateStack.append(newState);
-}
-
-void DisplayItemPropertyTreeBuilder::processEndItem(const DisplayItem& displayItem)
-{
- if (currentState().ignoredBeginCount) {
- // Ignored this end display item.
- currentState().ignoredBeginCount--;
- } else {
- // We've closed the scope of some property.
- finishRange();
- m_stateStack.removeLast();
- ASSERT(!m_stateStack.isEmpty());
- }
-}
-
-void DisplayItemPropertyTreeBuilder::finishRange()
-{
- // Don't emit an empty range record.
- if (m_rangeBeginIndex < m_currentIndex) {
- const auto& current = currentState();
- RangeRecord rangeRecord;
- rangeRecord.displayListBeginIndex = m_rangeBeginIndex;
- rangeRecord.displayListEndIndex = m_currentIndex;
- rangeRecord.transformNodeIndex = current.transformNode;
- rangeRecord.offset = current.offset;
- rangeRecord.clipNodeIndex = current.clipNode;
- m_rangeRecords.append(rangeRecord);
- }
-
- // The current display item is a boundary.
- // The earliest the next range could begin is the next one.
- m_rangeBeginIndex = m_currentIndex + 1;
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilder.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilder.h
deleted file mode 100644
index 9026e07f..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilder.h
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef DisplayItemPropertyTreeBuilder_h
-#define DisplayItemPropertyTreeBuilder_h
-
-#include "platform/PlatformExport.h"
-#include "platform/geometry/FloatSize.h"
-#include "wtf/OwnPtr.h"
-#include "wtf/PassOwnPtr.h"
-#include "wtf/Vector.h"
-
-namespace blink {
-
-class DisplayItem;
-class DisplayItemClipTree;
-class DisplayItemTransformTree;
-
-// Builds property trees from a sequence of (properly nested) display items.
-//
-// The produced trees are not independent (for example, the resultant clip tree
-// may have indicies into the transform tree's node list). Also produced is a
-// vector of "range records", which correspond to non-overlapping ranges of
-// display items in the list, in sorted order.
-//
-// Since the begin/end display items that create transform nodes are not
-// included in these ranges, and empty ranges are omitted, these are not a
-// partition of the display list. Rather, they constitute a partial map from
-// display item indices to property tree data (node indices, plus a content
-// offset from the origin of the transform node).
-//
-// Similarly, there may be property tree nodes with no associated range records.
-// This doesn't necessarily mean that they can be ignored. It may be the parent
-// of one or more other property nodes.
-//
-// See also the headers for the particular types of property tree.
-class PLATFORM_EXPORT DisplayItemPropertyTreeBuilder {
-public:
- struct RangeRecord {
- // Index of the first affected display item.
- size_t displayListBeginIndex;
-
- // Index of the first unaffected display item after |displayListBeginIndex|.
- size_t displayListEndIndex;
-
- // Index of the applicable transform node.
- size_t transformNodeIndex;
-
- // The offset of this range's drawing in the coordinate space of the
- // transform node.
- FloatSize offset;
-
- // Index of the applicable clip node.
- size_t clipNodeIndex;
- };
-
- DisplayItemPropertyTreeBuilder();
- ~DisplayItemPropertyTreeBuilder();
-
- // Detach the built property trees.
- PassOwnPtr<DisplayItemTransformTree> releaseTransformTree();
- PassOwnPtr<DisplayItemClipTree> releaseClipTree();
- Vector<RangeRecord> releaseRangeRecords();
-
- // Process another display item from the list.
- void processDisplayItem(const DisplayItem&);
-
-private:
- struct BuilderState {
- // Initial state (root nodes, no display items seen).
- BuilderState() : transformNode(0), clipNode(0), ignoredBeginCount(0) { }
-
- // Index of the current transform node.
- size_t transformNode;
-
- // Offset from the current origin (i.e. where a drawing at (0, 0) would
- // be) from the transform node's origin.
- FloatSize offset;
-
- // Index of the current clip node.
- size_t clipNode;
-
- // Number of "begin" display items that have been ignored, whose
- // corresponding "end" display items should be skipped.
- unsigned ignoredBeginCount;
- };
-
- // Used to manipulate the current transform node stack.
- BuilderState& currentState() { return m_stateStack.last(); }
-
- // Handle a begin display item.
- void processBeginItem(const DisplayItem&);
-
- // Handle an end display item.
- void processEndItem(const DisplayItem&);
-
- // Emit a range record, unless it would be empty.
- void finishRange();
-
- OwnPtr<DisplayItemTransformTree> m_transformTree;
- OwnPtr<DisplayItemClipTree> m_clipTree;
- Vector<RangeRecord> m_rangeRecords;
- // TODO(jbroman): Experimentally select a less arbitrary inline capacity.
- Vector<BuilderState, 40> m_stateStack;
- size_t m_rangeBeginIndex;
- size_t m_currentIndex;
-};
-
-} // namespace blink
-
-#endif // DisplayItemPropertyTreeBuilder_h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilderTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilderTest.cpp
deleted file mode 100644
index a1f76c70..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemPropertyTreeBuilderTest.cpp
+++ /dev/null
@@ -1,442 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "platform/graphics/paint/DisplayItemPropertyTreeBuilder.h"
-
-#include "platform/graphics/paint/DisplayItem.h"
-#include "platform/graphics/paint/DisplayItemClient.h"
-#include "platform/graphics/paint/DisplayItemClipTree.h"
-#include "platform/graphics/paint/DisplayItemTransformTree.h"
-#include "platform/graphics/paint/ScrollDisplayItem.h"
-#include "platform/graphics/paint/Transform3DDisplayItem.h"
-#include "platform/graphics/paint/TransformDisplayItem.h"
-#include "platform/transforms/TransformTestHelper.h"
-#include "platform/transforms/TransformationMatrix.h"
-#include "public/platform/WebDisplayItemTransformTree.h"
-#include "wtf/OwnPtr.h"
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-namespace blink {
-namespace {
-
-using ::testing::AllOf;
-using ::testing::ElementsAre;
-
-using RangeRecord = DisplayItemPropertyTreeBuilder::RangeRecord;
-
-MATCHER_P2(hasRange, begin, end, "")
-{
- return arg.displayListBeginIndex == static_cast<size_t>(begin)
- && arg.displayListEndIndex == static_cast<size_t>(end);
-}
-
-MATCHER_P(hasTransformNode, transformNode, "")
-{
- return arg.transformNodeIndex == static_cast<size_t>(transformNode);
-}
-
-MATCHER_P(hasOffset, offset, "")
-{
- return arg.offset == offset;
-}
-
-struct DummyClient {
- DisplayItemClient displayItemClient() const { return toDisplayItemClient(this); }
- String debugName() const { return "DummyClient"; }
-};
-
-class DummyDisplayItem final : public DisplayItem {
-public:
- DummyDisplayItem(const DummyClient& client) : DisplayItem(client, DisplayItem::DrawingFirst, sizeof(*this)) { }
-};
-
-class DisplayItemPropertyTreeBuilderTest : public ::testing::Test {
-protected:
- DisplayItemPropertyTreeBuilder& builder() { return m_builder; }
- const DisplayItemTransformTree& transformTree() { return *m_transformTree; }
- const DisplayItemClipTree& clipTree() { return *m_clipTree; }
- const Vector<RangeRecord>& rangeRecords() { return m_rangeRecords; }
- std::vector<RangeRecord> rangeRecordsAsStdVector() { return std::vector<RangeRecord>(m_rangeRecords.begin(), m_rangeRecords.end()); }
-
- void processDisplayItem(const DisplayItem& displayItem) { m_builder.processDisplayItem(displayItem); }
- void processDisplayItem(PassOwnPtr<DisplayItem> displayItem) { processDisplayItem(*displayItem); }
- void processDummyDisplayItem() { processDisplayItem(DummyDisplayItem(newDummyClient())); }
- const DummyClient& processBeginTransform3D(const TransformationMatrix& transform, const FloatPoint3D& transformOrigin = FloatPoint3D())
- {
- const DummyClient& client = newDummyClient();
- processDisplayItem(BeginTransform3DDisplayItem(client, DisplayItem::Transform3DElementTransform, transform, transformOrigin));
- return client;
- }
- void processEndTransform3D(const DummyClient& client)
- {
- processDisplayItem(EndTransform3DDisplayItem(client, DisplayItem::transform3DTypeToEndTransform3DType(DisplayItem::Transform3DElementTransform)));
- }
- const DummyClient& processBeginTransform(const AffineTransform& transform)
- {
- const DummyClient& client = newDummyClient();
- processDisplayItem(BeginTransformDisplayItem(client, transform));
- return client;
- }
- void processEndTransform(const DummyClient& client)
- {
- processDisplayItem(EndTransformDisplayItem(client));
- }
- const DummyClient& processBeginScroll(int offsetX, int offsetY)
- {
- const DummyClient& client = newDummyClient();
- processDisplayItem(BeginScrollDisplayItem(client, DisplayItem::ScrollFirst, IntSize(offsetX, offsetY)));
- return client;
- }
- void processEndScroll(const DummyClient& client)
- {
- processDisplayItem(EndScrollDisplayItem(client, DisplayItem::EndScrollFirst));
- }
-
- void finishPropertyTrees()
- {
- m_transformTree = m_builder.releaseTransformTree();
- m_clipTree = m_builder.releaseClipTree();
- m_rangeRecords = m_builder.releaseRangeRecords();
- }
-
-private:
- // This makes empty objects which can be used as display item clients.
- const DummyClient& newDummyClient()
- {
- m_dummyClients.append(adoptPtr(new DummyClient));
- return *m_dummyClients.last();
- }
-
- DisplayItemPropertyTreeBuilder m_builder;
- OwnPtr<DisplayItemTransformTree> m_transformTree;
- OwnPtr<DisplayItemClipTree> m_clipTree;
- Vector<RangeRecord> m_rangeRecords;
- Vector<OwnPtr<DummyClient>> m_dummyClients;
-};
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, NoDisplayItems)
-{
- finishPropertyTrees();
-
- // There should be a root transform node.
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // There should be no range records, because there are no non-empty
- // transformed ranges.
- ASSERT_EQ(0u, rangeRecords().size());
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, NoTransforms)
-{
- // Three dummy display items.
- processDummyDisplayItem();
- processDummyDisplayItem();
- processDummyDisplayItem();
- finishPropertyTrees();
-
- // There should only be a root transform node.
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // There should be one range record, for the entire list.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 3), hasTransformNode(0))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, IdentityTransform)
-{
- TransformationMatrix identity;
-
- // There's an identity transform here, but we should not make a node for it.
- processDummyDisplayItem();
- auto transformClient = processBeginTransform3D(identity);
- processDummyDisplayItem();
- processEndTransform3D(transformClient);
- processDummyDisplayItem();
- finishPropertyTrees();
-
- // There should only be a root transform node.
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // There should be three range records.
- // Since the transform is the identity, these could be combined, but there
- // is not currently a special path for this case.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 1), hasTransformNode(0)),
- AllOf(hasRange(2, 3), hasTransformNode(0)),
- AllOf(hasRange(4, 5), hasTransformNode(0))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, Only2DTranslation)
-{
- FloatSize offset(200.5, -100);
- TransformationMatrix translation;
- translation.translate(offset.width(), offset.height());
-
- // There's a translation here, but we should not make a node for it.
- processDummyDisplayItem();
- auto transformClient = processBeginTransform3D(translation);
- processDummyDisplayItem();
- processEndTransform3D(transformClient);
- processDummyDisplayItem();
- finishPropertyTrees();
-
- // There should only be a root transform node.
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // There should be three ranges, even though there's only one node.
- // The middle one requires an offset.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 1), hasTransformNode(0)),
- AllOf(hasRange(2, 3), hasTransformNode(0)),
- AllOf(hasRange(4, 5), hasTransformNode(0))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, Nested2DTranslation)
-{
- FloatSize offset1(10, -40);
- TransformationMatrix translation1;
- translation1.translate(offset1.width(), offset1.height());
- FloatSize offset2(80, 80);
- TransformationMatrix translation2;
- translation2.translate(offset2.width(), offset2.height());
-
- // These drawings should share a transform node but have different range
- // record offsets.
- processDummyDisplayItem();
- auto transform1 = processBeginTransform3D(translation1);
- processDummyDisplayItem();
- auto transform2 = processBeginTransform3D(translation2);
- processDummyDisplayItem();
- processEndTransform3D(transform2);
- processEndTransform3D(transform1);
- finishPropertyTrees();
-
- // There should only be a root transform node.
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // Check that the range records have the right offsets.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 1), hasTransformNode(0), hasOffset(FloatSize())),
- AllOf(hasRange(2, 3), hasTransformNode(0), hasOffset(offset1)),
- AllOf(hasRange(4, 5), hasTransformNode(0), hasOffset(offset1 + offset2))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, ZTranslation)
-{
- TransformationMatrix zTranslation;
- zTranslation.translate3d(0, 0, 1);
-
- // Z translation: we expect another node.
- processDummyDisplayItem();
- auto transformClient = processBeginTransform3D(zTranslation);
- processDummyDisplayItem();
- processEndTransform3D(transformClient);
- processDummyDisplayItem();
- finishPropertyTrees();
-
- // There should be two nodes here.
- ASSERT_EQ(2u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
- EXPECT_EQ(0u, transformTree().nodeAt(1).parentNodeIndex);
-
- // There should be three range records.
- // The middle of these should be transformed, and the others should be
- // attached to the root node.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 1), hasTransformNode(0)),
- AllOf(hasRange(2, 3), hasTransformNode(1)),
- AllOf(hasRange(4, 5), hasTransformNode(0))));
-}
-
-template <typename TreeType, typename NodeType>
-size_t nodeDepth(const TreeType& tree, const NodeType& node)
-{
- const auto* currentNode = &node;
- size_t depth = 0;
- while (!currentNode->isRoot()) {
- currentNode = &tree.nodeAt(currentNode->parentNodeIndex);
- depth++;
- }
- return depth;
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, SkipUnnecessaryRangeRecords)
-{
- TransformationMatrix rotation;
- rotation.rotate(1 /* degrees */);
-
- // The only drawing is in the second transform.
- auto transform1 = processBeginTransform3D(rotation);
- auto transform2 = processBeginTransform3D(rotation);
- processDummyDisplayItem();
- auto transform3 = processBeginTransform3D(rotation);
- processEndTransform3D(transform3);
- processDummyDisplayItem();
- processEndTransform3D(transform2);
- processEndTransform3D(transform1);
- finishPropertyTrees();
-
- // There should be only two ranges.
- // They must both belong to the same grandchild of the root node.
- ASSERT_EQ(2u, rangeRecords().size());
- size_t transformNodeIndex = rangeRecords()[0].transformNodeIndex;
- EXPECT_EQ(2u, nodeDepth(transformTree(), transformTree().nodeAt(transformNodeIndex)));
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(2, 3), hasTransformNode(transformNodeIndex)),
- AllOf(hasRange(5, 6), hasTransformNode(transformNodeIndex))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, RootTransformNodeHasIdentityTransform)
-{
- finishPropertyTrees();
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).matrix.isIdentity());
- EXPECT_TRANSFORMS_ALMOST_EQ(TransformationMatrix(), transformTree().nodeAt(0).matrix);
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, Transform3DMatrix)
-{
- TransformationMatrix matrix;
- matrix.rotate3d(45, 45, 45);
-
- auto transform1 = processBeginTransform3D(matrix);
- processDummyDisplayItem();
- processEndTransform3D(transform1);
- finishPropertyTrees();
-
- const auto& transformNode = transformTree().nodeAt(rangeRecords()[0].transformNodeIndex);
- EXPECT_TRANSFORMS_ALMOST_EQ(matrix, transformNode.matrix);
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, NestedTransformsAreNotCombined)
-{
- // It's up the consumer of the tree to multiply transformation matrices.
-
- TransformationMatrix matrix1;
- matrix1.rotate3d(45, 45, 45);
- TransformationMatrix matrix2;
- matrix2.translate3d(0, 10, 20);
- EXPECT_NE(matrix2, matrix1 * matrix2);
-
- auto transform1 = processBeginTransform3D(matrix1);
- auto transform2 = processBeginTransform3D(matrix2);
- processDummyDisplayItem();
- processEndTransform3D(transform2);
- processDummyDisplayItem();
- processEndTransform3D(transform1);
- finishPropertyTrees();
-
- const auto& transformNode = transformTree().nodeAt(rangeRecords()[0].transformNodeIndex);
- ASSERT_FALSE(transformNode.isRoot());
- EXPECT_TRANSFORMS_ALMOST_EQ(matrix2, transformNode.matrix);
- const auto& parentNode = transformTree().nodeAt(transformNode.parentNodeIndex);
- EXPECT_TRANSFORMS_ALMOST_EQ(matrix1, parentNode.matrix);
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, TransformDisplayItemCreatesTransformNode)
-{
- // 2D transform display items should create a transform node as well,
- // unless the transform is a 2D translation only.
- AffineTransform rotation;
- rotation.rotate(45);
-
- processDummyDisplayItem();
- auto transformClient = processBeginTransform(rotation);
- processDummyDisplayItem();
- processEndTransform(transformClient);
- processDummyDisplayItem();
- finishPropertyTrees();
-
- // There should be two transform nodes.
- ASSERT_EQ(2u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
- EXPECT_EQ(0u, transformTree().nodeAt(1).parentNodeIndex);
- EXPECT_TRANSFORMS_ALMOST_EQ(TransformationMatrix(rotation), transformTree().nodeAt(1).matrix);
-
- // There should be three range records, the middle one affected by the
- // rotation.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 1), hasTransformNode(0)),
- AllOf(hasRange(2, 3), hasTransformNode(1)),
- AllOf(hasRange(4, 5), hasTransformNode(0))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, TransformDisplayItemOnly2DTranslation)
-{
- // In this case no transform node should be created for the 2D translation.
- AffineTransform translation = AffineTransform::translation(10, -40);
-
- processDummyDisplayItem();
- auto transformClient = processBeginTransform(translation);
- processDummyDisplayItem();
- processEndTransform(transformClient);
- processDummyDisplayItem();
- finishPropertyTrees();
-
- // There should be only one transform node.
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // There should be three range records, the middle one affected by the
- // translation.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 1), hasTransformNode(0), hasOffset(FloatSize(0, 0))),
- AllOf(hasRange(2, 3), hasTransformNode(0), hasOffset(FloatSize(10, -40))),
- AllOf(hasRange(4, 5), hasTransformNode(0), hasOffset(FloatSize(0, 0)))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, ScrollDisplayItemIs2DTranslation)
-{
- processDummyDisplayItem();
- auto scrollClient = processBeginScroll(-90, 400);
- processDummyDisplayItem();
- processEndScroll(scrollClient);
- processDummyDisplayItem();
- finishPropertyTrees();
-
- // There should be only one transform node.
- ASSERT_EQ(1u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // There should be three range records, the middle one affected by the
- // scroll. Note that the translation due to scroll is the negative of the
- // scroll offset.
- EXPECT_THAT(rangeRecordsAsStdVector(), ElementsAre(
- AllOf(hasRange(0, 1), hasTransformNode(0), hasOffset(FloatSize(0, 0))),
- AllOf(hasRange(2, 3), hasTransformNode(0), hasOffset(FloatSize(90, -400))),
- AllOf(hasRange(4, 5), hasTransformNode(0), hasOffset(FloatSize(0, 0)))));
-}
-
-TEST_F(DisplayItemPropertyTreeBuilderTest, TransformTreeIncludesTransformOrigin)
-{
- FloatPoint3D transformOrigin(1, 2, 3);
- TransformationMatrix matrix;
- matrix.scale3d(2, 2, 2);
-
- auto transformClient = processBeginTransform3D(matrix, transformOrigin);
- processDummyDisplayItem();
- processEndTransform3D(transformClient);
- finishPropertyTrees();
-
- // There should be two transform nodes.
- ASSERT_EQ(2u, transformTree().nodeCount());
- EXPECT_TRUE(transformTree().nodeAt(0).isRoot());
-
- // And the non-root node should have both the matrix and the origin,
- // separately.
- const auto& transformNode = transformTree().nodeAt(1);
- EXPECT_EQ(0u, transformNode.parentNodeIndex);
- EXPECT_EQ(TransformationMatrix::toSkMatrix44(matrix), transformNode.matrix);
- EXPECT_EQ(transformOrigin, transformNode.transformOrigin);
-}
-
-} // namespace
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemTransformTree.cpp b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemTransformTree.cpp
deleted file mode 100644
index 484b3b6..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemTransformTree.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "platform/graphics/paint/DisplayItemTransformTree.h"
-
-namespace blink {
-
-DisplayItemTransformTree::DisplayItemTransformTree()
-{
- // There is always a root node.
- m_nodes.append(TransformNode(kInvalidIndex, SkMatrix44::kIdentity_Constructor, FloatPoint3D()));
- ASSERT(m_nodes[0].isRoot());
-}
-
-DisplayItemTransformTree::~DisplayItemTransformTree()
-{
-}
-
-} // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemTransformTree.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemTransformTree.h
deleted file mode 100644
index 1c7d99b..0000000
--- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemTransformTree.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef DisplayItemTransformTree_h
-#define DisplayItemTransformTree_h
-
-#include "platform/PlatformExport.h"
-#include "platform/geometry/FloatPoint3D.h"
-#include "platform/transforms/TransformationMatrix.h"
-#include "public/platform/WebDisplayItemTransformTree.h"
-#include "wtf/Vector.h"
-
-namespace blink {
-
-// Represents the hierarchy of transforms which apply to ranges of a display
-// item list and may be of interest to the compositor.
-//
-// This class is also the private implementation of WebDisplayItemTransformTree.
-// For more detail, see WebDisplayItemTransformTree.h.
-//
-// TODO(pdr): Remove this in favor of TransformPaintPropertyNode.
-class PLATFORM_EXPORT DisplayItemTransformTree {
-public:
- using TransformNode = WebDisplayItemTransformTree::TransformNode;
- enum : size_t { kInvalidIndex = WebDisplayItemTransformTree::kInvalidIndex };
-
- DisplayItemTransformTree();
- ~DisplayItemTransformTree();
-
- size_t nodeCount() const { return m_nodes.size(); }
- TransformNode& nodeAt(size_t index) { return m_nodes[index]; }
- const TransformNode& nodeAt(size_t index) const { return m_nodes[index]; }
-
- // Returns the new node index.
- size_t createNewNode(size_t parentNodeIndex, const TransformationMatrix& matrix, const FloatPoint3D& transformOrigin)
- {
- ASSERT(parentNodeIndex != kInvalidIndex);
- m_nodes.append(TransformNode(
- parentNodeIndex,
- TransformationMatrix::toSkMatrix44(matrix),
- transformOrigin));
- return m_nodes.size() - 1;
- }
-
-private:
- Vector<TransformNode> m_nodes;
-};
-
-} // namespace blink
-
-#endif // DisplayItemTransformTree_h
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.cpp b/third_party/WebKit/Source/web/ChromeClientImpl.cpp
index b53773a..5c07b32 100644
--- a/third_party/WebKit/Source/web/ChromeClientImpl.cpp
+++ b/third_party/WebKit/Source/web/ChromeClientImpl.cpp
@@ -746,18 +746,6 @@
}
}
-void ChromeClientImpl::setCompositedDisplayList(PassOwnPtr<CompositedDisplayList> compositedDisplayList)
-{
- m_webView->setCompositedDisplayList(compositedDisplayList);
-}
-
-CompositedDisplayList* ChromeClientImpl::compositedDisplayListForTesting()
-{
- if (WebCompositedDisplayList* compositedDisplayList = m_webView->compositedDisplayList())
- return compositedDisplayList->compositedDisplayListForTesting();
- return nullptr;
-}
-
void ChromeClientImpl::attachCompositorAnimationTimeline(WebCompositorAnimationTimeline* compositorTimeline, LocalFrame* localRoot)
{
// FIXME: For top-level frames we still use the WebView as a WebWidget. This
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.h b/third_party/WebKit/Source/web/ChromeClientImpl.h
index bed75e3..047371c 100644
--- a/third_party/WebKit/Source/web/ChromeClientImpl.h
+++ b/third_party/WebKit/Source/web/ChromeClientImpl.h
@@ -120,9 +120,6 @@
// Pass 0 as the GraphicsLayer to detatch the root layer.
void attachRootGraphicsLayer(GraphicsLayer*, LocalFrame* localRoot) override;
- void setCompositedDisplayList(PassOwnPtr<CompositedDisplayList>) override;
- CompositedDisplayList* compositedDisplayListForTesting() override;
-
void attachCompositorAnimationTimeline(WebCompositorAnimationTimeline*, LocalFrame* localRoot) override;
void detachCompositorAnimationTimeline(WebCompositorAnimationTimeline*, LocalFrame* localRoot) override;
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp
index 8328ce8..a6d65e7 100644
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
@@ -3316,16 +3316,6 @@
return IntSize(widthScaled, heightScaled);
}
-void WebViewImpl::setCompositedDisplayList(PassOwnPtr<CompositedDisplayList> compositedDisplayList)
-{
- m_compositedDisplayList.assign(compositedDisplayList);
-}
-
-WebCompositedDisplayList* WebViewImpl::compositedDisplayList()
-{
- return &m_compositedDisplayList;
-}
-
void WebViewImpl::enableViewport()
{
settings()->setViewportEnabled(true);
diff --git a/third_party/WebKit/Source/web/WebViewImpl.h b/third_party/WebKit/Source/web/WebViewImpl.h
index febe2c0..177b04a5 100644
--- a/third_party/WebKit/Source/web/WebViewImpl.h
+++ b/third_party/WebKit/Source/web/WebViewImpl.h
@@ -35,10 +35,8 @@
#include "core/page/EventWithHitTestResults.h"
#include "platform/geometry/IntPoint.h"
#include "platform/geometry/IntRect.h"
-#include "platform/graphics/CompositedDisplayList.h"
#include "platform/graphics/GraphicsLayer.h"
#include "platform/heap/Handle.h"
-#include "public/platform/WebCompositedDisplayList.h"
#include "public/platform/WebCompositorAnimationTimeline.h"
#include "public/platform/WebDisplayMode.h"
#include "public/platform/WebFloatSize.h"
@@ -274,9 +272,6 @@
void setShowScrollBottleneckRects(bool) override;
void acceptLanguagesChanged() override;
- void setCompositedDisplayList(PassOwnPtr<CompositedDisplayList>);
- WebCompositedDisplayList* compositedDisplayList() override;
-
// WebViewImpl
void enableViewport();
void disableViewport();
@@ -727,8 +722,6 @@
bool m_recreatingGraphicsContext;
static const WebInputEvent* m_currentInputEvent;
- WebCompositedDisplayList m_compositedDisplayList;
-
MediaKeysClientImpl m_mediaKeysClientImpl;
OwnPtr<WebActiveGestureAnimation> m_gestureAnimation;
WebPoint m_positionOnFlingStart;
diff --git a/third_party/WebKit/public/platform/WebCompositedDisplayList.h b/third_party/WebKit/public/platform/WebCompositedDisplayList.h
deleted file mode 100644
index f424fd1c..0000000
--- a/third_party/WebKit/public/platform/WebCompositedDisplayList.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef WebCompositedDisplayList_h
-#define WebCompositedDisplayList_h
-
-#include "public/platform/WebCommon.h"
-#include "public/platform/WebPrivateOwnPtr.h"
-
-namespace blink {
-
-class CompositedDisplayList;
-
-class BLINK_PLATFORM_EXPORT WebCompositedDisplayList {
-public:
- WebCompositedDisplayList() {}
- ~WebCompositedDisplayList();
-
-#if INSIDE_BLINK
- void assign(WTF::PassOwnPtr<CompositedDisplayList>);
- CompositedDisplayList* compositedDisplayListForTesting();
-#endif
-
- // TODO(pdr): Add accessor functions for the data in m_private as needed.
-
-private:
- WebPrivateOwnPtr<CompositedDisplayList> m_private;
-};
-
-} // namespace blink
-
-#endif // WebCompositedDisplayList_h
diff --git a/third_party/WebKit/public/platform/WebDisplayItemClipTree.h b/third_party/WebKit/public/platform/WebDisplayItemClipTree.h
deleted file mode 100644
index 768b6d4..0000000
--- a/third_party/WebKit/public/platform/WebDisplayItemClipTree.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef WebDisplayItemClipTree_h
-#define WebDisplayItemClipTree_h
-
-#include "public/platform/WebCommon.h"
-#include "public/platform/WebFloatRect.h"
-#include "public/platform/WebPrivateOwnPtr.h"
-
-namespace blink {
-
-class DisplayItemClipTree;
-
-// Represents a hierarchy of rectangular clips which apply to ranges of a
-// display list and may be of interest to the compositor.
-//
-// It consists of a tree of "transform nodes", stored in a flattened
-// representation in which their order is not guaranteed. Each node has a
-// parent (whose clip, and those of its ancestors, also apply to content),
-// a transform node index (into an associated |WebDisplayItemTransformTree|
-// which defines the coordinate space in which this clip is interpreted),
-// and a rectangle representing the clip.
-//
-// Rounded-rect clips are represented here by their bounding rect; the rounded
-// clip should be represented outside the clip tree (e.g. as a mask).
-class BLINK_PLATFORM_EXPORT WebDisplayItemClipTree {
-public:
- enum : size_t { kInvalidIndex = static_cast<size_t>(-1) };
-
- struct ClipNode {
- ClipNode(size_t parent, size_t transformNodeIndex, const WebFloatRect& clipRect)
- : parentNodeIndex(parent)
- , transformNodeIndex(transformNodeIndex)
- , clipRect(clipRect)
- {
- }
-
- bool isRoot() const { return parentNodeIndex == kInvalidIndex; }
-
- // Index of parent in m_nodes (kInvalidIndex for root).
- size_t parentNodeIndex;
-
- // Index of transform node in which this clip should be interpreted.
- // Cannot be WebDisplayItemTransformTree::kInvalidIndex.
- size_t transformNodeIndex;
-
- // Rectangular clip in the space of the transform node.
- WebFloatRect clipRect;
- };
-
- WebDisplayItemClipTree();
-#if INSIDE_BLINK
- WebDisplayItemClipTree(const WTF::PassOwnPtr<DisplayItemClipTree>&);
-#endif
-
- ~WebDisplayItemClipTree();
-
- // Returns the number of nodes in the clip tree.
- size_t nodeCount() const;
-
- // Returns a node in the clip tree by its index (from 0 to nodeCount() - 1).
- const ClipNode& nodeAt(size_t index) const;
-
-private:
- WebPrivateOwnPtr<const DisplayItemClipTree> m_private;
-};
-
-} // namespace blink
-
-#endif // WebDisplayItemClipTree_h
diff --git a/third_party/WebKit/public/platform/WebDisplayItemTransformTree.h b/third_party/WebKit/public/platform/WebDisplayItemTransformTree.h
deleted file mode 100644
index 179659fa..0000000
--- a/third_party/WebKit/public/platform/WebDisplayItemTransformTree.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef WebDisplayItemTransformTree_h
-#define WebDisplayItemTransformTree_h
-
-#include "public/platform/WebCommon.h"
-#include "public/platform/WebFloatSize.h"
-#include "public/platform/WebPrivateOwnPtr.h"
-#include "third_party/skia/include/core/SkPoint3.h"
-#include "third_party/skia/include/utils/SkMatrix44.h"
-
-namespace blink {
-
-class DisplayItemTransformTree;
-
-// Represents the hierarchy of transforms which apply to ranges of a display
-// item list and may be of interest to the compositor.
-//
-// It consists of a tree of "transform nodes", stored in a flattened
-// representation in which their order is not guaranteed. Each node has a
-// parent, relative to whom its transform should be interpreted (i.e. the
-// total transform at a node is the product of its transform and its parent's
-// total transform).
-class BLINK_PLATFORM_EXPORT WebDisplayItemTransformTree {
-public:
- enum : size_t { kInvalidIndex = static_cast<size_t>(-1) };
-
- struct TransformNode {
- TransformNode(size_t parent, const SkMatrix44& matrix44, const SkPoint3& origin)
- : parentNodeIndex(parent)
- , matrix(matrix44)
- , transformOrigin(origin)
- {
- }
-
- bool isRoot() const { return parentNodeIndex == kInvalidIndex; }
-
- // Index of parent in m_nodes (kInvalidIndex for root).
- size_t parentNodeIndex;
-
- // Transformation matrix of this node, relative to its parent.
- SkMatrix44 matrix;
-
- // Origin of the transform given by |matrix|.
- SkPoint3 transformOrigin;
- };
-
- WebDisplayItemTransformTree();
-#if INSIDE_BLINK
- WebDisplayItemTransformTree(const WTF::PassOwnPtr<DisplayItemTransformTree>&);
-#endif
-
- ~WebDisplayItemTransformTree();
-
- // Returns the number of nodes in the transform tree.
- size_t nodeCount() const;
-
- // Returns a node in the transform tree by its index (from 0 to nodeCount() - 1).
- const TransformNode& nodeAt(size_t index) const;
-
-private:
- WebPrivateOwnPtr<const DisplayItemTransformTree> m_private;
-};
-
-} // namespace blink
-
-#endif // WebDisplayItemTransformTree_h