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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp

Issue 2804883006: Revert of Remove begin/end subseq. display items, and store on PaintController instead. (Closed)
Patch Set: Created 3 years, 8 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/paint/PaintControllerPaintTest.h" 5 #include "core/paint/PaintControllerPaintTest.h"
6 6
7 #include "core/editing/FrameCaret.h" 7 #include "core/editing/FrameCaret.h"
8 #include "core/editing/FrameSelection.h" 8 #include "core/editing/FrameSelection.h"
9 #include "core/layout/LayoutText.h" 9 #include "core/layout/LayoutText.h"
10 #include "core/layout/line/InlineTextBox.h" 10 #include "core/layout/line/InlineTextBox.h"
(...skipping 18 matching lines...) Expand all
29 FullDocumentPaintingWithCaret) { 29 FullDocumentPaintingWithCaret) {
30 setBodyInnerHTML( 30 setBodyInnerHTML(
31 "<div id='div' contentEditable='true' style='outline:none'>XYZ</div>"); 31 "<div id='div' contentEditable='true' style='outline:none'>XYZ</div>");
32 document().page()->focusController().setActive(true); 32 document().page()->focusController().setActive(true);
33 document().page()->focusController().setFocused(true); 33 document().page()->focusController().setFocused(true);
34 Element& div = *toElement(document().body()->firstChild()); 34 Element& div = *toElement(document().body()->firstChild());
35 InlineTextBox& textInlineBox = 35 InlineTextBox& textInlineBox =
36 *toLayoutText(div.firstChild()->layoutObject())->firstTextBox(); 36 *toLayoutText(div.firstChild()->layoutObject())->firstTextBox();
37 37
38 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 38 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
39 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 2, 39 EXPECT_DISPLAY_LIST(
40 TestDisplayItem(layoutView(), documentBackgroundType), 40 rootPaintController().getDisplayItemList(), 4,
41 TestDisplayItem(textInlineBox, foregroundType)); 41 TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
42 TestDisplayItem(layoutView(), documentBackgroundType),
43 TestDisplayItem(textInlineBox, foregroundType),
44 TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence));
42 } else { 45 } else {
43 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 2, 46 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 2,
44 TestDisplayItem(layoutView(), documentBackgroundType), 47 TestDisplayItem(layoutView(), documentBackgroundType),
45 TestDisplayItem(textInlineBox, foregroundType)); 48 TestDisplayItem(textInlineBox, foregroundType));
46 } 49 }
47 50
48 div.focus(); 51 div.focus();
49 document().view()->updateAllLifecyclePhases(); 52 document().view()->updateAllLifecyclePhases();
50 53
51 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 54 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
52 EXPECT_DISPLAY_LIST( 55 EXPECT_DISPLAY_LIST(
53 rootPaintController().getDisplayItemList(), 3, 56 rootPaintController().getDisplayItemList(), 5,
57 TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
54 TestDisplayItem(layoutView(), documentBackgroundType), 58 TestDisplayItem(layoutView(), documentBackgroundType),
55 TestDisplayItem(textInlineBox, foregroundType), 59 TestDisplayItem(textInlineBox, foregroundType),
56 TestDisplayItem( 60 TestDisplayItem(
57 document().frame()->selection().caretDisplayItemClientForTesting(), 61 document().frame()->selection().caretDisplayItemClientForTesting(),
58 DisplayItem::kCaret)); // New! 62 DisplayItem::kCaret), // New!
63 TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence));
59 } else { 64 } else {
60 EXPECT_DISPLAY_LIST( 65 EXPECT_DISPLAY_LIST(
61 rootPaintController().getDisplayItemList(), 3, 66 rootPaintController().getDisplayItemList(), 3,
62 TestDisplayItem(layoutView(), documentBackgroundType), 67 TestDisplayItem(layoutView(), documentBackgroundType),
63 TestDisplayItem(textInlineBox, foregroundType), 68 TestDisplayItem(textInlineBox, foregroundType),
64 TestDisplayItem( 69 TestDisplayItem(
65 document().frame()->selection().caretDisplayItemClientForTesting(), 70 document().frame()->selection().caretDisplayItemClientForTesting(),
66 DisplayItem::kCaret)); // New! 71 DisplayItem::kCaret)); // New!
67 } 72 }
68 } 73 }
69 74
70 TEST_P(PaintControllerPaintTestForSlimmingPaintV1AndV2, InlineRelayout) { 75 TEST_P(PaintControllerPaintTestForSlimmingPaintV1AndV2, InlineRelayout) {
71 setBodyInnerHTML( 76 setBodyInnerHTML(
72 "<div id='div' style='width:100px; height: 200px'>AAAAAAAAAA " 77 "<div id='div' style='width:100px; height: 200px'>AAAAAAAAAA "
73 "BBBBBBBBBB</div>"); 78 "BBBBBBBBBB</div>");
74 Element& div = *toElement(document().body()->firstChild()); 79 Element& div = *toElement(document().body()->firstChild());
75 LayoutBlock& divBlock = 80 LayoutBlock& divBlock =
76 *toLayoutBlock(document().body()->firstChild()->layoutObject()); 81 *toLayoutBlock(document().body()->firstChild()->layoutObject());
77 LayoutText& text = *toLayoutText(divBlock.firstChild()); 82 LayoutText& text = *toLayoutText(divBlock.firstChild());
78 InlineTextBox& firstTextBox = *text.firstTextBox(); 83 InlineTextBox& firstTextBox = *text.firstTextBox();
79 84
80 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 85 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
81 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 2, 86 EXPECT_DISPLAY_LIST(
82 TestDisplayItem(layoutView(), documentBackgroundType), 87 rootPaintController().getDisplayItemList(), 4,
83 TestDisplayItem(firstTextBox, foregroundType)); 88 TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
89 TestDisplayItem(layoutView(), documentBackgroundType),
90 TestDisplayItem(firstTextBox, foregroundType),
91 TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence));
84 } else { 92 } else {
85 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 2, 93 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 2,
86 TestDisplayItem(layoutView(), documentBackgroundType), 94 TestDisplayItem(layoutView(), documentBackgroundType),
87 TestDisplayItem(firstTextBox, foregroundType)); 95 TestDisplayItem(firstTextBox, foregroundType));
88 } 96 }
89 97
90 div.setAttribute(HTMLNames::styleAttr, "width: 10px; height: 200px"); 98 div.setAttribute(HTMLNames::styleAttr, "width: 10px; height: 200px");
91 document().view()->updateAllLifecyclePhases(); 99 document().view()->updateAllLifecyclePhases();
92 100
93 LayoutText& newText = *toLayoutText(divBlock.firstChild()); 101 LayoutText& newText = *toLayoutText(divBlock.firstChild());
94 InlineTextBox& newFirstTextBox = *newText.firstTextBox(); 102 InlineTextBox& newFirstTextBox = *newText.firstTextBox();
95 InlineTextBox& secondTextBox = *newText.firstTextBox()->nextTextBox(); 103 InlineTextBox& secondTextBox = *newText.firstTextBox()->nextTextBox();
96 104
97 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 105 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
98 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 3, 106 EXPECT_DISPLAY_LIST(
99 TestDisplayItem(layoutView(), documentBackgroundType), 107 rootPaintController().getDisplayItemList(), 5,
100 TestDisplayItem(newFirstTextBox, foregroundType), 108 TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
101 TestDisplayItem(secondTextBox, foregroundType)); 109 TestDisplayItem(layoutView(), documentBackgroundType),
110 TestDisplayItem(newFirstTextBox, foregroundType),
111 TestDisplayItem(secondTextBox, foregroundType),
112 TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence));
102 } else { 113 } else {
103 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 3, 114 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 3,
104 TestDisplayItem(layoutView(), documentBackgroundType), 115 TestDisplayItem(layoutView(), documentBackgroundType),
105 TestDisplayItem(newFirstTextBox, foregroundType), 116 TestDisplayItem(newFirstTextBox, foregroundType),
106 TestDisplayItem(secondTextBox, foregroundType)); 117 TestDisplayItem(secondTextBox, foregroundType));
107 } 118 }
108 } 119 }
109 120
110 TEST_P(PaintControllerPaintTestForSlimmingPaintV2, ChunkIdClientCacheFlag) { 121 TEST_P(PaintControllerPaintTestForSlimmingPaintV2, ChunkIdClientCacheFlag) {
111 setBodyInnerHTML( 122 setBodyInnerHTML(
112 "<div id='div' style='width: 200px; height: 200px; opacity: 0.5'>" 123 "<div id='div' style='width: 200px; height: 200px; opacity: 0.5'>"
113 " <div style='width: 100px; height: 100px; background-color: " 124 " <div style='width: 100px; height: 100px; background-color: "
114 "blue'></div>" 125 "blue'></div>"
115 " <div style='width: 100px; height: 100px; background-color: " 126 " <div style='width: 100px; height: 100px; background-color: "
116 "blue'></div>" 127 "blue'></div>"
117 "</div>"); 128 "</div>");
129 PaintLayer& htmlLayer =
130 *toLayoutBoxModelObject(document().documentElement()->layoutObject())
131 ->layer();
118 LayoutBlock& div = *toLayoutBlock(getLayoutObjectByElementId("div")); 132 LayoutBlock& div = *toLayoutBlock(getLayoutObjectByElementId("div"));
119 LayoutObject& subDiv = *div.firstChild(); 133 LayoutObject& subDiv = *div.firstChild();
120 LayoutObject& subDiv2 = *subDiv.nextSibling(); 134 LayoutObject& subDiv2 = *subDiv.nextSibling();
121 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 3, 135 EXPECT_DISPLAY_LIST(
122 TestDisplayItem(layoutView(), documentBackgroundType), 136 rootPaintController().getDisplayItemList(), 7,
123 TestDisplayItem(subDiv, backgroundType), 137 TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
124 TestDisplayItem(subDiv2, backgroundType)); 138 TestDisplayItem(layoutView(), documentBackgroundType),
139 TestDisplayItem(htmlLayer, DisplayItem::kSubsequence),
140 TestDisplayItem(subDiv, backgroundType),
141 TestDisplayItem(subDiv2, backgroundType),
142 TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence),
143 TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence));
125 144
126 // Verify that the background does not scroll. 145 // Verify that the background does not scroll.
127 const PaintChunk& backgroundChunk = rootPaintController().paintChunks()[0]; 146 const PaintChunk& backgroundChunk = rootPaintController().paintChunks()[0];
128 EXPECT_FALSE(backgroundChunk.properties.propertyTreeState.transform() 147 EXPECT_FALSE(backgroundChunk.properties.propertyTreeState.transform()
129 ->isScrollTranslation()); 148 ->isScrollTranslation());
130 149
131 const EffectPaintPropertyNode* effectNode = div.paintProperties()->effect(); 150 const EffectPaintPropertyNode* effectNode = div.paintProperties()->effect();
132 EXPECT_EQ(0.5f, effectNode->opacity()); 151 EXPECT_EQ(0.5f, effectNode->opacity());
133 152
134 const PaintChunk& chunk = rootPaintController().paintChunks()[1]; 153 const PaintChunk& chunk = rootPaintController().paintChunks()[1];
135 EXPECT_EQ(*div.layer(), chunk.id->client); 154 EXPECT_EQ(*div.layer(), chunk.id->client);
136 EXPECT_EQ(effectNode, chunk.properties.propertyTreeState.effect()); 155 EXPECT_EQ(effectNode, chunk.properties.propertyTreeState.effect());
137 156
138 EXPECT_FALSE(div.layer()->isJustCreated()); 157 EXPECT_FALSE(div.layer()->isJustCreated());
139 // Client used by only paint chunks and non-cachaeable display items but not 158 // Client used by only paint chunks and non-cachaeable display items but not
140 // by any cacheable display items won't be marked as validly cached. 159 // by any cacheable display items won't be marked as validly cached.
141 EXPECT_FALSE(rootPaintController().clientCacheIsValid(*div.layer())); 160 EXPECT_FALSE(rootPaintController().clientCacheIsValid(*div.layer()));
142 EXPECT_FALSE(rootPaintController().clientCacheIsValid(div)); 161 EXPECT_FALSE(rootPaintController().clientCacheIsValid(div));
143 EXPECT_TRUE(rootPaintController().clientCacheIsValid(subDiv)); 162 EXPECT_TRUE(rootPaintController().clientCacheIsValid(subDiv));
144 } 163 }
145 164
146 TEST_P(PaintControllerPaintTestForSlimmingPaintV2, CompositingNoFold) { 165 TEST_P(PaintControllerPaintTestForSlimmingPaintV2, CompositingNoFold) {
147 setBodyInnerHTML( 166 setBodyInnerHTML(
148 "<div id='div' style='width: 200px; height: 200px; opacity: 0.5'>" 167 "<div id='div' style='width: 200px; height: 200px; opacity: 0.5'>"
149 " <div style='width: 100px; height: 100px; background-color: " 168 " <div style='width: 100px; height: 100px; background-color: "
150 "blue'></div>" 169 "blue'></div>"
151 "</div>"); 170 "</div>");
171 PaintLayer& htmlLayer =
172 *toLayoutBoxModelObject(document().documentElement()->layoutObject())
173 ->layer();
152 LayoutBlock& div = *toLayoutBlock(getLayoutObjectByElementId("div")); 174 LayoutBlock& div = *toLayoutBlock(getLayoutObjectByElementId("div"));
153 LayoutObject& subDiv = *div.firstChild(); 175 LayoutObject& subDiv = *div.firstChild();
154 176
155 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 2, 177 EXPECT_DISPLAY_LIST(
156 TestDisplayItem(layoutView(), documentBackgroundType), 178 rootPaintController().getDisplayItemList(), 6,
157 TestDisplayItem(subDiv, backgroundType)); 179 TestDisplayItem(*layoutView().layer(), DisplayItem::kSubsequence),
180 TestDisplayItem(layoutView(), documentBackgroundType),
181 TestDisplayItem(htmlLayer, DisplayItem::kSubsequence),
182 TestDisplayItem(subDiv, backgroundType),
183 TestDisplayItem(htmlLayer, DisplayItem::kEndSubsequence),
184 TestDisplayItem(*layoutView().layer(), DisplayItem::kEndSubsequence));
158 } 185 }
159 186
160 } // namespace blink 187 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698