diff options
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.cc | 71 |
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> |