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()); }
LayerFixedPositionRecorder::LayerFixedPositionRecorder(GraphicsContext& graphicsContext, const LayoutBoxModelObject& layoutObject) : m_graphicsContext(graphicsContext) , m_layoutObject(layoutObject) , m_isFixedPosition(layoutObject.style()->position() == FixedPosition) , m_isFixedPositionContainer(layoutObject.canContainFixedPositionObjects()) { if (!RuntimeEnabledFeatures::slimmingPaintCompositorLayerizationEnabled()) return; if (m_graphicsContext.displayItemList()->displayItemConstructionIsDisabled()) return; if (m_isFixedPosition) m_graphicsContext.displayItemList()->createAndAppend<BeginFixedPositionDisplayItem>(m_layoutObject); // TODO(trchen): Adding a pair of display items on every transformed // element can be expensive. Investigate whether we can optimize out some // of them if applicable. if (m_isFixedPositionContainer) m_graphicsContext.displayItemList()->createAndAppend<BeginFixedPositionContainerDisplayItem>(m_layoutObject); }