summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc71
1 files changed, 49 insertions, 22 deletions
diff --git a/chromium/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc b/chromium/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc
index 67da1f6ba88..0379506f503 100644
--- a/chromium/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc
+++ b/chromium/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc
@@ -6,6 +6,7 @@
#include "base/test/scoped_feature_list.h"
#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/renderer/core/css/resolver/style_resolver.h"
#include "third_party/blink/renderer/core/frame/local_frame_view.h"
#include "third_party/blink/renderer/core/html/html_frame_owner_element.h"
#include "third_party/blink/renderer/core/layout/layout_block.h"
@@ -140,27 +141,31 @@ TEST_F(CompositingReasonFinderTest, OnlyScrollingStickyPositionPromoted) {
auto& sticky_scrolling =
*To<LayoutBoxModelObject>(GetLayoutObjectByElementId("sticky-scrolling"));
- EXPECT_TRUE(
- CompositingReasonFinder::RequiresCompositingForScrollDependentPosition(
- *sticky_scrolling.Layer()));
+ EXPECT_EQ(
+ CompositingReasonFinder::CompositingReasonsForScrollDependentPosition(
+ *sticky_scrolling.Layer()),
+ CompositingReason::kStickyPosition);
auto& sticky_no_scrolling = *To<LayoutBoxModelObject>(
GetLayoutObjectByElementId("sticky-no-scrolling"));
- EXPECT_FALSE(
- CompositingReasonFinder::RequiresCompositingForScrollDependentPosition(
- *sticky_no_scrolling.Layer()));
+ EXPECT_EQ(
+ CompositingReasonFinder::CompositingReasonsForScrollDependentPosition(
+ *sticky_no_scrolling.Layer()),
+ CompositingReason::kNone);
auto& overflow_hidden_scrolling = *To<LayoutBoxModelObject>(
GetLayoutObjectByElementId("overflow-hidden-scrolling"));
- EXPECT_TRUE(
- CompositingReasonFinder::RequiresCompositingForScrollDependentPosition(
- *overflow_hidden_scrolling.Layer()));
+ EXPECT_EQ(
+ CompositingReasonFinder::CompositingReasonsForScrollDependentPosition(
+ *overflow_hidden_scrolling.Layer()),
+ CompositingReason::kStickyPosition);
auto& overflow_hidden_no_scrolling = *To<LayoutBoxModelObject>(
GetLayoutObjectByElementId("overflow-hidden-no-scrolling"));
- EXPECT_FALSE(
- CompositingReasonFinder::RequiresCompositingForScrollDependentPosition(
- *overflow_hidden_no_scrolling.Layer()));
+ EXPECT_EQ(
+ CompositingReasonFinder::CompositingReasonsForScrollDependentPosition(
+ *overflow_hidden_no_scrolling.Layer()),
+ CompositingReason::kNone);
if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) {
EXPECT_EQ(kPaintsIntoOwnBacking,
@@ -252,27 +257,31 @@ TEST_F(CompositingReasonFinderTest, PromoteCrossOriginIframe) {
<!DOCTYPE html>
<iframe id=iframe></iframe>
)HTML");
- UpdateAllLifecyclePhasesForTest();
HTMLFrameOwnerElement* iframe =
To<HTMLFrameOwnerElement>(GetDocument().getElementById("iframe"));
ASSERT_TRUE(iframe);
+ iframe->contentDocument()->OverrideIsInitialEmptyDocument();
+ To<LocalFrame>(iframe->ContentFrame())->View()->BeginLifecycleUpdates();
ASSERT_FALSE(iframe->ContentFrame()->IsCrossOriginToMainFrame());
+ UpdateAllLifecyclePhasesForTest();
LayoutView* iframe_layout_view =
To<LocalFrame>(iframe->ContentFrame())->ContentLayoutObject();
ASSERT_TRUE(iframe_layout_view);
PaintLayer* iframe_layer = iframe_layout_view->Layer();
ASSERT_TRUE(iframe_layer);
- EXPECT_EQ(kNotComposited, iframe_layer->DirectCompositingReasons());
+ EXPECT_EQ(CompositingReason::kNone, iframe_layer->DirectCompositingReasons());
+ EXPECT_FALSE(iframe_layer->GetScrollableArea()->NeedsCompositedScrolling());
+ EXPECT_EQ(CompositingReason::kNone,
+ CompositingReasonFinder::DirectReasonsForPaintProperties(
+ *iframe_layout_view));
SetBodyInnerHTML(R"HTML(
<!DOCTYPE html>
<iframe id=iframe sandbox></iframe>
)HTML");
iframe = To<HTMLFrameOwnerElement>(GetDocument().getElementById("iframe"));
- To<LocalFrame>(iframe->ContentFrame())
- ->GetDocument()
- ->OverrideIsInitialEmptyDocument();
+ iframe->contentDocument()->OverrideIsInitialEmptyDocument();
To<LocalFrame>(iframe->ContentFrame())->View()->BeginLifecycleUpdates();
UpdateAllLifecyclePhasesForTest();
iframe_layout_view =
@@ -282,11 +291,25 @@ TEST_F(CompositingReasonFinderTest, PromoteCrossOriginIframe) {
ASSERT_TRUE(iframe->ContentFrame()->IsCrossOriginToMainFrame());
EXPECT_EQ(CompositingReason::kIFrame,
iframe_layer->DirectCompositingReasons());
+ EXPECT_FALSE(iframe_layer->GetScrollableArea()->NeedsCompositedScrolling());
+ EXPECT_EQ(CompositingReason::kIFrame,
+ CompositingReasonFinder::DirectReasonsForPaintProperties(
+ *iframe_layout_view));
+
+ // Make the iframe contents scrollable.
+ iframe->contentDocument()->body()->setAttribute(html_names::kStyleAttr,
+ "height: 2000px");
+ UpdateAllLifecyclePhasesForTest();
+ EXPECT_TRUE(iframe_layer->GetScrollableArea()->NeedsCompositedScrolling());
+ EXPECT_EQ(CompositingReason::kIFrame | CompositingReason::kOverflowScrolling,
+ CompositingReasonFinder::DirectReasonsForPaintProperties(
+ *iframe_layout_view));
}
TEST_F(CompositingReasonFinderTest,
CompositeWithBackfaceVisibilityAncestorAndPreserve3D) {
- ScopedTransformInteropForTest enabled(true);
+ ScopedTransformInteropForTest ti_enabled(true);
+ ScopedBackfaceVisibilityInteropForTest bfi_enabled(true);
SetBodyInnerHTML(R"HTML(
<!DOCTYPE html>
@@ -307,7 +330,8 @@ TEST_F(CompositingReasonFinderTest,
TEST_F(CompositingReasonFinderTest,
CompositeWithBackfaceVisibilityAncestorAndPreserve3DWithInterveningDiv) {
- ScopedTransformInteropForTest enabled(true);
+ ScopedTransformInteropForTest ti_enabled(true);
+ ScopedBackfaceVisibilityInteropForTest bfi_enabled(true);
SetBodyInnerHTML(R"HTML(
<!DOCTYPE html>
@@ -330,7 +354,8 @@ TEST_F(CompositingReasonFinderTest,
TEST_F(CompositingReasonFinderTest,
CompositeWithBackfaceVisibilityAncestorWithInterveningStackingDiv) {
- ScopedTransformInteropForTest enabled(true);
+ ScopedTransformInteropForTest ti_enabled(true);
+ ScopedBackfaceVisibilityInteropForTest bfi_enabled(true);
SetBodyInnerHTML(R"HTML(
<!DOCTYPE html>
@@ -358,7 +383,8 @@ TEST_F(CompositingReasonFinderTest,
TEST_F(CompositingReasonFinderTest,
CompositeWithBackfaceVisibilityAncestorAndFlattening) {
- ScopedTransformInteropForTest enabled(true);
+ ScopedTransformInteropForTest ti_enabled(true);
+ ScopedBackfaceVisibilityInteropForTest bfi_enabled(true);
SetBodyInnerHTML(R"HTML(
<!DOCTYPE html>
@@ -378,7 +404,8 @@ TEST_F(CompositingReasonFinderTest,
}
TEST_F(CompositingReasonFinderTest, CompositeWithBackfaceVisibility) {
- ScopedTransformInteropForTest enabled(true);
+ ScopedTransformInteropForTest ti_enabled(true);
+ ScopedBackfaceVisibilityInteropForTest bfi_enabled(true);
SetBodyInnerHTML(R"HTML(
<!DOCTYPE html>