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

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

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

Powered by Google App Engine
This is Rietveld 408576698