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

Unified Diff: third_party/WebKit/Source/core/layout/PaintContainmentTest.cpp

Issue 1490063002: Implement Paint Containment (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix merge Created 5 years 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/core/layout/PaintContainmentTest.cpp
diff --git a/third_party/WebKit/Source/core/layout/PaintContainmentTest.cpp b/third_party/WebKit/Source/core/layout/PaintContainmentTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..36547ba9e70a050a00a4b00c51c7f799ae3f150d
--- /dev/null
+++ b/third_party/WebKit/Source/core/layout/PaintContainmentTest.cpp
@@ -0,0 +1,55 @@
+// Copyright 2014 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/LayoutBlock.h"
+#include "core/layout/LayoutInline.h"
+#include "core/layout/LayoutTestHelper.h"
+#include "core/paint/PaintLayer.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace blink {
+
+class PaintContainmentTest : public RenderingTest {
+};
+
+static void checkIsClippingStackingContextAndContainer(LayoutBoxModelObject& obj)
+{
+ EXPECT_TRUE(obj.canContainFixedPositionObjects());
+ EXPECT_TRUE(obj.hasClipRelatedProperty());
+ EXPECT_TRUE(obj.style()->containsPaint());
+
+ // TODO(leviw): Ideally, we wouldn't require a paint layer to handle the clipping
+ // and stacking performed by paint containment.
+ ASSERT(obj.layer());
+ PaintLayer* layer = obj.layer();
+ EXPECT_TRUE(layer->stackingNode() && layer->stackingNode()->isStackingContext());
+}
+
+TEST_F(PaintContainmentTest, BlockPaintContainment)
+{
+ setBodyInnerHTML("<div id='div' style='contain: paint'></div>");
+ Element* div = document().getElementById(AtomicString("div"));
+ ASSERT(div);
+ LayoutObject* obj = div->layoutObject();
+ ASSERT(obj && obj->isLayoutBlock());
+ LayoutBlock& block = toLayoutBlock(*obj);
+ EXPECT_TRUE(block.createsNewFormattingContext());
+ EXPECT_FALSE(block.canBeScrolledAndHasScrollableArea());
+ checkIsClippingStackingContextAndContainer(block);
+}
+
+TEST_F(PaintContainmentTest, InlinePaintContainment)
+{
+ setBodyInnerHTML("<div><span id='test' style='contain: paint'>Foo</span></div>");
+ Element* span = document().getElementById(AtomicString("test"));
+ ASSERT(span);
+ LayoutObject* obj = span->layoutObject();
+ ASSERT(obj && obj->isInline());
+ LayoutInline& layoutInline = toLayoutInline(*obj);
+ checkIsClippingStackingContextAndContainer(layoutInline);
+}
+
+}

Powered by Google App Engine
This is Rietveld 408576698