Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Unified Diff: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp

Issue 2334403002: Construct cc scroll tree from blink [spv2] (Closed)
Patch Set: Better comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
index f07624d36fb5ea2df0db0caa3f408626678b0833..173214502218aa206f2dff84094a5cac6d2c659e 100644
--- a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
@@ -12,10 +12,12 @@
#include "cc/trees/clip_node.h"
#include "cc/trees/effect_node.h"
#include "cc/trees/layer_tree_host.h"
+#include "cc/trees/scroll_node.h"
#include "cc/trees/transform_node.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/graphics/paint/EffectPaintPropertyNode.h"
#include "platform/graphics/paint/PaintArtifact.h"
+#include "platform/graphics/paint/ScrollPaintPropertyNode.h"
#include "platform/testing/PictureMatchers.h"
#include "platform/testing/TestPaintArtifact.h"
#include "platform/testing/WebLayerTreeViewImplForTesting.h"
@@ -537,5 +539,80 @@ TEST_F(PaintArtifactCompositorTestWithPropertyTrees, EffectTreeConversion)
EXPECT_EQ(convertedEffect3.id, contentLayerAt(2)->effect_tree_index());
}
+TEST_F(PaintArtifactCompositorTestWithPropertyTrees, OneScrollNode)
+{
+ RefPtr<TransformPaintPropertyNode> scrollTranslation = TransformPaintPropertyNode::create(
+ nullptr, TransformationMatrix().translate(7, 9), FloatPoint3D());
+ RefPtr<ScrollPaintPropertyNode> scroll = ScrollPaintPropertyNode::create(
+ nullptr, scrollTranslation, IntSize(11, 13), IntSize(27, 31), true, false);
+
+ TestPaintArtifact artifact;
+ artifact.chunk(scrollTranslation, nullptr, nullptr, scroll)
+ .rectDrawing(FloatRect(11, 13, 17, 19), Color::white);
+ update(artifact.build());
+
+ const cc::ScrollTree& scrollTree = propertyTrees().scroll_tree;
+ // Node #0 reserved for null; #1 for root render surface.
+ ASSERT_EQ(3u, scrollTree.size());
+ const cc::ScrollNode& scrollNode = *scrollTree.Node(2);
+ EXPECT_EQ(gfx::Size(11, 13), scrollNode.scroll_clip_layer_bounds);
+ EXPECT_EQ(gfx::Size(27, 31), scrollNode.bounds);
+ EXPECT_TRUE(scrollNode.user_scrollable_horizontal);
+ EXPECT_FALSE(scrollNode.user_scrollable_vertical);
+ EXPECT_EQ(1, scrollNode.parent_id);
+
+ const cc::TransformTree& transformTree = propertyTrees().transform_tree;
+ const cc::TransformNode& transformNode = *transformTree.Node(scrollNode.transform_id);
+ EXPECT_TRUE(transformNode.local.IsIdentity());
+
+ EXPECT_EQ(gfx::ScrollOffset(-7, -9), scrollTree.current_scroll_offset(contentLayerAt(0)->id()));
+}
+
+TEST_F(PaintArtifactCompositorTestWithPropertyTrees, NestedScrollNodes)
+{
+ RefPtr<EffectPaintPropertyNode> effect = EffectPaintPropertyNode::create(dummyRootEffect(), 0.5);
+
+ RefPtr<TransformPaintPropertyNode> scrollTranslationA = TransformPaintPropertyNode::create(
+ nullptr, TransformationMatrix().translate(11, 13), FloatPoint3D());
+ RefPtr<ScrollPaintPropertyNode> scrollA = ScrollPaintPropertyNode::create(
+ nullptr, scrollTranslationA, IntSize(2, 3), IntSize(5, 7), false, true);
+ RefPtr<TransformPaintPropertyNode> scrollTranslationB = TransformPaintPropertyNode::create(
+ scrollTranslationA, TransformationMatrix().translate(37, 41), FloatPoint3D());
+ RefPtr<ScrollPaintPropertyNode> scrollB = ScrollPaintPropertyNode::create(
+ scrollA, scrollTranslationB, IntSize(19, 23), IntSize(29, 31), true, false);
+
+ TestPaintArtifact artifact;
+ artifact.chunk(scrollTranslationA, nullptr, effect, scrollA)
+ .rectDrawing(FloatRect(7, 11, 13, 17), Color::white);
+ artifact.chunk(scrollTranslationB, nullptr, effect, scrollB)
+ .rectDrawing(FloatRect(1, 2, 3, 5), Color::white);
+ update(artifact.build());
+
+ const cc::ScrollTree& scrollTree = propertyTrees().scroll_tree;
+ // Node #0 reserved for null; #1 for root render surface.
+ ASSERT_EQ(4u, scrollTree.size());
+ const cc::ScrollNode& scrollNodeA = *scrollTree.Node(2);
+ EXPECT_EQ(gfx::Size(2, 3), scrollNodeA.scroll_clip_layer_bounds);
+ EXPECT_EQ(gfx::Size(5, 7), scrollNodeA.bounds);
+ EXPECT_FALSE(scrollNodeA.user_scrollable_horizontal);
+ EXPECT_TRUE(scrollNodeA.user_scrollable_vertical);
+ EXPECT_EQ(1, scrollNodeA.parent_id);
+ const cc::ScrollNode& scrollNodeB = *scrollTree.Node(3);
+ EXPECT_EQ(gfx::Size(19, 23), scrollNodeB.scroll_clip_layer_bounds);
+ EXPECT_EQ(gfx::Size(29, 31), scrollNodeB.bounds);
+ EXPECT_TRUE(scrollNodeB.user_scrollable_horizontal);
+ EXPECT_FALSE(scrollNodeB.user_scrollable_vertical);
+ EXPECT_EQ(scrollNodeA.id, scrollNodeB.parent_id);
+
+ const cc::TransformTree& transformTree = propertyTrees().transform_tree;
+ const cc::TransformNode& transformNodeA = *transformTree.Node(scrollNodeA.transform_id);
+ EXPECT_TRUE(transformNodeA.local.IsIdentity());
+ const cc::TransformNode& transformNodeB = *transformTree.Node(scrollNodeB.transform_id);
+ EXPECT_TRUE(transformNodeB.local.IsIdentity());
+
+ EXPECT_EQ(gfx::ScrollOffset(-11, -13), scrollTree.current_scroll_offset(contentLayerAt(0)->id()));
+ EXPECT_EQ(gfx::ScrollOffset(-37, -41), scrollTree.current_scroll_offset(contentLayerAt(1)->id()));
+}
+
} // namespace
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698