// TODO(wangxianzhu): Create a version for slimming paint v2 when it supports interest rect TEST_F(TableCellPainterTest, TableCellBackgroundInterestRect) { setBodyInnerHTML( "<style>" " td { width: 200px; height: 200px; border: none; }" " tr { background-color: blue; }" " table { border: none; border-spacing: 0; border-collapse: collapse; }" "</style>" "<table>" " <tr><td id='cell1'></td></tr>" " <tr><td id='cell2'></td></tr>" "</table>"); LayoutView& layoutView = *document().layoutView(); PaintLayer& rootLayer = *layoutView.layer(); LayoutObject& cell1 = *document().getElementById("cell1")->layoutObject(); LayoutObject& cell2 = *document().getElementById("cell2")->layoutObject(); GraphicsContext context(&rootDisplayItemList()); PaintLayerPaintingInfo paintingInfo(&rootLayer, LayoutRect(0, 0, 200, 200), GlobalPaintNormalPhase, LayoutSize()); PaintLayerPainter(rootLayer).paintLayerContents(&context, paintingInfo, PaintLayerPaintingCompositingAllPhases); rootDisplayItemList().commitNewDisplayItems(); EXPECT_DISPLAY_LIST(rootDisplayItemList().displayItems(), 2, TestDisplayItem(layoutView, DisplayItem::BoxDecorationBackground), TestDisplayItem(cell1, DisplayItem::TableCellBackgroundFromRow)); PaintLayerPaintingInfo paintingInfo1(&rootLayer, LayoutRect(0, 300, 200, 200), GlobalPaintNormalPhase, LayoutSize()); PaintLayerPainter(rootLayer).paintLayerContents(&context, paintingInfo1, PaintLayerPaintingCompositingAllPhases); rootDisplayItemList().commitNewDisplayItems(); EXPECT_DISPLAY_LIST(rootDisplayItemList().displayItems(), 2, TestDisplayItem(layoutView, DisplayItem::BoxDecorationBackground), TestDisplayItem(cell2, DisplayItem::TableCellBackgroundFromRow)); }
TEST_F(LayoutObjectDrawingRecorderTest, Rect) { GraphicsContext context(&rootDisplayItemList()); FloatRect bound = layoutView().viewRect(); drawRect(context, layoutView(), PaintPhaseForeground, bound); rootDisplayItemList().commitNewDisplayItems(); EXPECT_EQ((size_t)1, rootDisplayItemList().displayItems().size()); EXPECT_TRUE(rootDisplayItemList().displayItems()[0]->isDrawing()); }
TEST_F(LayoutObjectDrawingRecorderTest, Cached) { GraphicsContext context(&rootDisplayItemList()); FloatRect bound = layoutView().viewRect(); drawNothing(context, layoutView(), PaintPhaseBlockBackground, bound); drawRect(context, layoutView(), PaintPhaseForeground, bound); rootDisplayItemList().commitNewDisplayItems(); EXPECT_EQ((size_t)2, rootDisplayItemList().displayItems().size()); EXPECT_TRUE(rootDisplayItemList().displayItems()[0]->isDrawing()); EXPECT_TRUE(rootDisplayItemList().displayItems()[1]->isDrawing()); drawNothing(context, layoutView(), PaintPhaseBlockBackground, bound); drawRect(context, layoutView(), PaintPhaseForeground, bound); EXPECT_EQ((size_t)2, newdisplayItemsBeforeUpdate().size()); EXPECT_TRUE(newdisplayItemsBeforeUpdate()[0]->isCached()); EXPECT_TRUE(newdisplayItemsBeforeUpdate()[1]->isCached()); rootDisplayItemList().commitNewDisplayItems(); EXPECT_EQ((size_t)2, rootDisplayItemList().displayItems().size()); EXPECT_TRUE(rootDisplayItemList().displayItems()[0]->isDrawing()); EXPECT_TRUE(rootDisplayItemList().displayItems()[1]->isDrawing()); }
TEST_F(LayoutObjectDrawingRecorderTest, Nothing) { GraphicsContext context(&rootDisplayItemList()); FloatRect bound = layoutView().viewRect(); EXPECT_EQ((size_t)0, rootDisplayItemList().displayItems().size()); drawNothing(context, layoutView(), PaintPhaseForeground, bound); rootDisplayItemList().commitNewDisplayItems(); EXPECT_EQ((size_t)1, rootDisplayItemList().displayItems().size()); ASSERT_TRUE(rootDisplayItemList().displayItems()[0]->isDrawing()); EXPECT_FALSE(static_cast<DrawingDisplayItem*>(rootDisplayItemList().displayItems()[0].get())->picture()); }
const DisplayItems& newDisplayItemsBeforeUpdate() { return rootDisplayItemList().m_newDisplayItems; }
const Vector<OwnPtr<DisplayItem>>& newdisplayItemsBeforeUpdate() { return rootDisplayItemList().m_newDisplayItems; }