OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/css/ActiveStyleSheets.h" | 5 #include "core/css/ActiveStyleSheets.h" |
6 | 6 |
7 #include "core/css/CSSStyleSheet.h" | 7 #include "core/css/CSSStyleSheet.h" |
8 #include "core/css/MediaQueryEvaluator.h" | 8 #include "core/css/MediaQueryEvaluator.h" |
9 #include "core/css/StyleSheetContents.h" | 9 #include "core/css/StyleSheetContents.h" |
10 #include "core/css/StyleSheetList.h" | 10 #include "core/css/StyleSheetList.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 init.setMode("open"); | 50 init.setMode("open"); |
51 ShadowRoot* shadowRoot = host.attachShadow( | 51 ShadowRoot* shadowRoot = host.attachShadow( |
52 ScriptState::forMainWorld(document().frame()), init, ASSERT_NO_EXCEPTION); | 52 ScriptState::forMainWorld(document().frame()), init, ASSERT_NO_EXCEPTION); |
53 EXPECT_TRUE(shadowRoot); | 53 EXPECT_TRUE(shadowRoot); |
54 return *shadowRoot; | 54 return *shadowRoot; |
55 } | 55 } |
56 | 56 |
57 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_NoChange) { | 57 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_NoChange) { |
58 ActiveStyleSheetVector oldSheets; | 58 ActiveStyleSheetVector oldSheets; |
59 ActiveStyleSheetVector newSheets; | 59 ActiveStyleSheetVector newSheets; |
60 HeapVector<Member<RuleSet>> changedRuleSets; | 60 HeapHashSet<Member<RuleSet>> changedRuleSets; |
61 | 61 |
62 EXPECT_EQ(NoActiveSheetsChanged, | 62 EXPECT_EQ(NoActiveSheetsChanged, |
63 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 63 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
64 EXPECT_EQ(0u, changedRuleSets.size()); | 64 EXPECT_EQ(0u, changedRuleSets.size()); |
65 | 65 |
66 CSSStyleSheet* sheet1 = createSheet(); | 66 CSSStyleSheet* sheet1 = createSheet(); |
67 CSSStyleSheet* sheet2 = createSheet(); | 67 CSSStyleSheet* sheet2 = createSheet(); |
68 | 68 |
69 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 69 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
70 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 70 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
71 | 71 |
72 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 72 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
73 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 73 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
74 | 74 |
75 EXPECT_EQ(NoActiveSheetsChanged, | 75 EXPECT_EQ(NoActiveSheetsChanged, |
76 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 76 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
77 EXPECT_EQ(0u, changedRuleSets.size()); | 77 EXPECT_EQ(0u, changedRuleSets.size()); |
78 } | 78 } |
79 | 79 |
80 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AppendedToEmpty) { | 80 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AppendedToEmpty) { |
81 ActiveStyleSheetVector oldSheets; | 81 ActiveStyleSheetVector oldSheets; |
82 ActiveStyleSheetVector newSheets; | 82 ActiveStyleSheetVector newSheets; |
83 HeapVector<Member<RuleSet>> changedRuleSets; | 83 HeapHashSet<Member<RuleSet>> changedRuleSets; |
84 | 84 |
85 CSSStyleSheet* sheet1 = createSheet(); | 85 CSSStyleSheet* sheet1 = createSheet(); |
86 CSSStyleSheet* sheet2 = createSheet(); | 86 CSSStyleSheet* sheet2 = createSheet(); |
87 | 87 |
88 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 88 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
89 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 89 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
90 | 90 |
91 EXPECT_EQ(ActiveSheetsAppended, | 91 EXPECT_EQ(ActiveSheetsAppended, |
92 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 92 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
93 EXPECT_EQ(2u, changedRuleSets.size()); | 93 EXPECT_EQ(2u, changedRuleSets.size()); |
94 } | 94 } |
95 | 95 |
96 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AppendedToNonEmpty) { | 96 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AppendedToNonEmpty) { |
97 ActiveStyleSheetVector oldSheets; | 97 ActiveStyleSheetVector oldSheets; |
98 ActiveStyleSheetVector newSheets; | 98 ActiveStyleSheetVector newSheets; |
99 HeapVector<Member<RuleSet>> changedRuleSets; | 99 HeapHashSet<Member<RuleSet>> changedRuleSets; |
100 | 100 |
101 CSSStyleSheet* sheet1 = createSheet(); | 101 CSSStyleSheet* sheet1 = createSheet(); |
102 CSSStyleSheet* sheet2 = createSheet(); | 102 CSSStyleSheet* sheet2 = createSheet(); |
103 | 103 |
104 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 104 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
105 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 105 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
106 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 106 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
107 | 107 |
108 EXPECT_EQ(ActiveSheetsAppended, | 108 EXPECT_EQ(ActiveSheetsAppended, |
109 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 109 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
110 EXPECT_EQ(1u, changedRuleSets.size()); | 110 EXPECT_EQ(1u, changedRuleSets.size()); |
111 } | 111 } |
112 | 112 |
113 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_Mutated) { | 113 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_Mutated) { |
114 ActiveStyleSheetVector oldSheets; | 114 ActiveStyleSheetVector oldSheets; |
115 ActiveStyleSheetVector newSheets; | 115 ActiveStyleSheetVector newSheets; |
116 HeapVector<Member<RuleSet>> changedRuleSets; | 116 HeapHashSet<Member<RuleSet>> changedRuleSets; |
117 | 117 |
118 CSSStyleSheet* sheet1 = createSheet(); | 118 CSSStyleSheet* sheet1 = createSheet(); |
119 CSSStyleSheet* sheet2 = createSheet(); | 119 CSSStyleSheet* sheet2 = createSheet(); |
120 CSSStyleSheet* sheet3 = createSheet(); | 120 CSSStyleSheet* sheet3 = createSheet(); |
121 | 121 |
122 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 122 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
123 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 123 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
124 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 124 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
125 | 125 |
126 sheet2->contents()->clearRuleSet(); | 126 sheet2->contents()->clearRuleSet(); |
127 sheet2->contents()->ensureRuleSet(MediaQueryEvaluator(), | 127 sheet2->contents()->ensureRuleSet(MediaQueryEvaluator(), |
128 RuleHasDocumentSecurityOrigin); | 128 RuleHasDocumentSecurityOrigin); |
129 | 129 |
130 EXPECT_NE(oldSheets[1].second, &sheet2->contents()->ruleSet()); | 130 EXPECT_NE(oldSheets[1].second, &sheet2->contents()->ruleSet()); |
131 | 131 |
132 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 132 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
133 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 133 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
134 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 134 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
135 | 135 |
136 EXPECT_EQ(ActiveSheetsChanged, | 136 EXPECT_EQ(ActiveSheetsChanged, |
137 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 137 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
138 ASSERT_EQ(2u, changedRuleSets.size()); | 138 EXPECT_EQ(2u, changedRuleSets.size()); |
139 EXPECT_EQ(&sheet2->contents()->ruleSet(), changedRuleSets[0]); | 139 EXPECT_TRUE(changedRuleSets.contains(&sheet2->contents()->ruleSet())); |
140 EXPECT_EQ(oldSheets[1].second, changedRuleSets[1]); | 140 EXPECT_TRUE(changedRuleSets.contains(oldSheets[1].second)); |
141 } | 141 } |
142 | 142 |
143 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_Inserted) { | 143 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_Inserted) { |
144 ActiveStyleSheetVector oldSheets; | 144 ActiveStyleSheetVector oldSheets; |
145 ActiveStyleSheetVector newSheets; | 145 ActiveStyleSheetVector newSheets; |
146 HeapVector<Member<RuleSet>> changedRuleSets; | 146 HeapHashSet<Member<RuleSet>> changedRuleSets; |
147 | 147 |
148 CSSStyleSheet* sheet1 = createSheet(); | 148 CSSStyleSheet* sheet1 = createSheet(); |
149 CSSStyleSheet* sheet2 = createSheet(); | 149 CSSStyleSheet* sheet2 = createSheet(); |
150 CSSStyleSheet* sheet3 = createSheet(); | 150 CSSStyleSheet* sheet3 = createSheet(); |
151 | 151 |
152 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 152 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
153 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 153 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
154 | 154 |
155 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 155 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
156 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 156 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
157 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 157 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
158 | 158 |
159 EXPECT_EQ(ActiveSheetsChanged, | 159 EXPECT_EQ(ActiveSheetsChanged, |
160 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 160 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
161 ASSERT_EQ(1u, changedRuleSets.size()); | 161 EXPECT_EQ(1u, changedRuleSets.size()); |
162 EXPECT_EQ(&sheet2->contents()->ruleSet(), changedRuleSets[0]); | 162 EXPECT_TRUE(changedRuleSets.contains(&sheet2->contents()->ruleSet())); |
163 } | 163 } |
164 | 164 |
165 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_Removed) { | 165 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_Removed) { |
166 ActiveStyleSheetVector oldSheets; | 166 ActiveStyleSheetVector oldSheets; |
167 ActiveStyleSheetVector newSheets; | 167 ActiveStyleSheetVector newSheets; |
168 HeapVector<Member<RuleSet>> changedRuleSets; | 168 HeapHashSet<Member<RuleSet>> changedRuleSets; |
169 | 169 |
170 CSSStyleSheet* sheet1 = createSheet(); | 170 CSSStyleSheet* sheet1 = createSheet(); |
171 CSSStyleSheet* sheet2 = createSheet(); | 171 CSSStyleSheet* sheet2 = createSheet(); |
172 CSSStyleSheet* sheet3 = createSheet(); | 172 CSSStyleSheet* sheet3 = createSheet(); |
173 | 173 |
174 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 174 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
175 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 175 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
176 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 176 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
177 | 177 |
178 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 178 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
179 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 179 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
180 | 180 |
181 EXPECT_EQ(ActiveSheetsChanged, | 181 EXPECT_EQ(ActiveSheetsChanged, |
182 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 182 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
183 ASSERT_EQ(1u, changedRuleSets.size()); | 183 EXPECT_EQ(1u, changedRuleSets.size()); |
184 EXPECT_EQ(&sheet2->contents()->ruleSet(), changedRuleSets[0]); | 184 EXPECT_TRUE(changedRuleSets.contains(&sheet2->contents()->ruleSet())); |
185 } | 185 } |
186 | 186 |
187 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_RemovedAll) { | 187 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_RemovedAll) { |
188 ActiveStyleSheetVector oldSheets; | 188 ActiveStyleSheetVector oldSheets; |
189 ActiveStyleSheetVector newSheets; | 189 ActiveStyleSheetVector newSheets; |
190 HeapVector<Member<RuleSet>> changedRuleSets; | 190 HeapHashSet<Member<RuleSet>> changedRuleSets; |
191 | 191 |
192 CSSStyleSheet* sheet1 = createSheet(); | 192 CSSStyleSheet* sheet1 = createSheet(); |
193 CSSStyleSheet* sheet2 = createSheet(); | 193 CSSStyleSheet* sheet2 = createSheet(); |
194 CSSStyleSheet* sheet3 = createSheet(); | 194 CSSStyleSheet* sheet3 = createSheet(); |
195 | 195 |
196 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 196 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
197 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 197 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
198 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 198 oldSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
199 | 199 |
200 EXPECT_EQ(ActiveSheetsChanged, | 200 EXPECT_EQ(ActiveSheetsChanged, |
201 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 201 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
202 EXPECT_EQ(3u, changedRuleSets.size()); | 202 EXPECT_EQ(3u, changedRuleSets.size()); |
203 } | 203 } |
204 | 204 |
205 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_InsertedAndRemoved) { | 205 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_InsertedAndRemoved) { |
206 ActiveStyleSheetVector oldSheets; | 206 ActiveStyleSheetVector oldSheets; |
207 ActiveStyleSheetVector newSheets; | 207 ActiveStyleSheetVector newSheets; |
208 HeapVector<Member<RuleSet>> changedRuleSets; | 208 HeapHashSet<Member<RuleSet>> changedRuleSets; |
209 | 209 |
210 CSSStyleSheet* sheet1 = createSheet(); | 210 CSSStyleSheet* sheet1 = createSheet(); |
211 CSSStyleSheet* sheet2 = createSheet(); | 211 CSSStyleSheet* sheet2 = createSheet(); |
212 CSSStyleSheet* sheet3 = createSheet(); | 212 CSSStyleSheet* sheet3 = createSheet(); |
213 | 213 |
214 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 214 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
215 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 215 oldSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
216 | 216 |
217 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); | 217 newSheets.append(std::make_pair(sheet2, &sheet2->contents()->ruleSet())); |
218 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 218 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
219 | 219 |
220 EXPECT_EQ(ActiveSheetsChanged, | 220 EXPECT_EQ(ActiveSheetsChanged, |
221 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 221 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
222 ASSERT_EQ(2u, changedRuleSets.size()); | 222 EXPECT_EQ(2u, changedRuleSets.size()); |
223 EXPECT_EQ(&sheet1->contents()->ruleSet(), changedRuleSets[0]); | 223 EXPECT_TRUE(changedRuleSets.contains(&sheet1->contents()->ruleSet())); |
224 EXPECT_EQ(&sheet3->contents()->ruleSet(), changedRuleSets[1]); | 224 EXPECT_TRUE(changedRuleSets.contains(&sheet3->contents()->ruleSet())); |
225 } | 225 } |
226 | 226 |
227 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AddNullRuleSet) { | 227 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AddNullRuleSet) { |
228 ActiveStyleSheetVector oldSheets; | 228 ActiveStyleSheetVector oldSheets; |
229 ActiveStyleSheetVector newSheets; | 229 ActiveStyleSheetVector newSheets; |
230 HeapVector<Member<RuleSet>> changedRuleSets; | 230 HeapHashSet<Member<RuleSet>> changedRuleSets; |
231 | 231 |
232 CSSStyleSheet* sheet1 = createSheet(); | 232 CSSStyleSheet* sheet1 = createSheet(); |
233 CSSStyleSheet* sheet2 = createSheet(); | 233 CSSStyleSheet* sheet2 = createSheet(); |
234 | 234 |
235 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 235 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
236 | 236 |
237 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 237 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
238 newSheets.append(std::make_pair(sheet2, nullptr)); | 238 newSheets.append(std::make_pair(sheet2, nullptr)); |
239 | 239 |
240 EXPECT_EQ(NoActiveSheetsChanged, | 240 EXPECT_EQ(NoActiveSheetsChanged, |
241 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 241 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
242 EXPECT_EQ(0u, changedRuleSets.size()); | 242 EXPECT_EQ(0u, changedRuleSets.size()); |
243 } | 243 } |
244 | 244 |
245 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_RemoveNullRuleSet) { | 245 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_RemoveNullRuleSet) { |
246 ActiveStyleSheetVector oldSheets; | 246 ActiveStyleSheetVector oldSheets; |
247 ActiveStyleSheetVector newSheets; | 247 ActiveStyleSheetVector newSheets; |
248 HeapVector<Member<RuleSet>> changedRuleSets; | 248 HeapHashSet<Member<RuleSet>> changedRuleSets; |
249 | 249 |
250 CSSStyleSheet* sheet1 = createSheet(); | 250 CSSStyleSheet* sheet1 = createSheet(); |
251 CSSStyleSheet* sheet2 = createSheet(); | 251 CSSStyleSheet* sheet2 = createSheet(); |
252 | 252 |
253 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 253 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
254 oldSheets.append(std::make_pair(sheet2, nullptr)); | 254 oldSheets.append(std::make_pair(sheet2, nullptr)); |
255 | 255 |
256 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 256 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
257 | 257 |
258 EXPECT_EQ(NoActiveSheetsChanged, | 258 EXPECT_EQ(NoActiveSheetsChanged, |
259 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 259 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
260 EXPECT_EQ(0u, changedRuleSets.size()); | 260 EXPECT_EQ(0u, changedRuleSets.size()); |
261 } | 261 } |
262 | 262 |
263 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AddRemoveNullRuleSet) { | 263 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_AddRemoveNullRuleSet) { |
264 ActiveStyleSheetVector oldSheets; | 264 ActiveStyleSheetVector oldSheets; |
265 ActiveStyleSheetVector newSheets; | 265 ActiveStyleSheetVector newSheets; |
266 HeapVector<Member<RuleSet>> changedRuleSets; | 266 HeapHashSet<Member<RuleSet>> changedRuleSets; |
267 | 267 |
268 CSSStyleSheet* sheet1 = createSheet(); | 268 CSSStyleSheet* sheet1 = createSheet(); |
269 CSSStyleSheet* sheet2 = createSheet(); | 269 CSSStyleSheet* sheet2 = createSheet(); |
270 CSSStyleSheet* sheet3 = createSheet(); | 270 CSSStyleSheet* sheet3 = createSheet(); |
271 | 271 |
272 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 272 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
273 oldSheets.append(std::make_pair(sheet2, nullptr)); | 273 oldSheets.append(std::make_pair(sheet2, nullptr)); |
274 | 274 |
275 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 275 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
276 newSheets.append(std::make_pair(sheet3, nullptr)); | 276 newSheets.append(std::make_pair(sheet3, nullptr)); |
277 | 277 |
278 EXPECT_EQ(NoActiveSheetsChanged, | 278 EXPECT_EQ(NoActiveSheetsChanged, |
279 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 279 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
280 EXPECT_EQ(0u, changedRuleSets.size()); | 280 EXPECT_EQ(0u, changedRuleSets.size()); |
281 } | 281 } |
282 | 282 |
283 TEST_F(ActiveStyleSheetsTest, | 283 TEST_F(ActiveStyleSheetsTest, |
284 CompareActiveStyleSheets_RemoveNullRuleSetAndAppend) { | 284 CompareActiveStyleSheets_RemoveNullRuleSetAndAppend) { |
285 ActiveStyleSheetVector oldSheets; | 285 ActiveStyleSheetVector oldSheets; |
286 ActiveStyleSheetVector newSheets; | 286 ActiveStyleSheetVector newSheets; |
287 HeapVector<Member<RuleSet>> changedRuleSets; | 287 HeapHashSet<Member<RuleSet>> changedRuleSets; |
288 | 288 |
289 CSSStyleSheet* sheet1 = createSheet(); | 289 CSSStyleSheet* sheet1 = createSheet(); |
290 CSSStyleSheet* sheet2 = createSheet(); | 290 CSSStyleSheet* sheet2 = createSheet(); |
291 CSSStyleSheet* sheet3 = createSheet(); | 291 CSSStyleSheet* sheet3 = createSheet(); |
292 | 292 |
293 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 293 oldSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
294 oldSheets.append(std::make_pair(sheet2, nullptr)); | 294 oldSheets.append(std::make_pair(sheet2, nullptr)); |
295 | 295 |
296 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); | 296 newSheets.append(std::make_pair(sheet1, &sheet1->contents()->ruleSet())); |
297 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); | 297 newSheets.append(std::make_pair(sheet3, &sheet3->contents()->ruleSet())); |
298 | 298 |
299 EXPECT_EQ(ActiveSheetsChanged, | 299 EXPECT_EQ(ActiveSheetsChanged, |
300 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); | 300 compareActiveStyleSheets(oldSheets, newSheets, changedRuleSets)); |
301 ASSERT_EQ(1u, changedRuleSets.size()); | 301 EXPECT_EQ(1u, changedRuleSets.size()); |
302 EXPECT_EQ(&sheet3->contents()->ruleSet(), changedRuleSets[0]); | 302 EXPECT_TRUE(changedRuleSets.contains(&sheet3->contents()->ruleSet())); |
303 } | 303 } |
304 | 304 |
305 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_ReorderedImportSheets) { | 305 TEST_F(ActiveStyleSheetsTest, CompareActiveStyleSheets_ReorderedImportSheets) { |
306 ActiveStyleSheetVector oldSheets; | 306 ActiveStyleSheetVector oldSheets; |
307 ActiveStyleSheetVector newSheets; | 307 ActiveStyleSheetVector newSheets; |
308 HeapVector<Member<RuleSet>> changedRuleSets; | 308 HeapHashSet<Member<RuleSet>> changedRuleSets; |
309 | 309 |
310 CSSStyleSheet* sheet1 = createSheet(); | 310 CSSStyleSheet* sheet1 = createSheet(); |
311 CSSStyleSheet* sheet2 = createSheet(); | 311 CSSStyleSheet* sheet2 = createSheet(); |
312 | 312 |
313 // It is possible to have CSSStyleSheet pointers re-orderered for html imports | 313 // It is possible to have CSSStyleSheet pointers re-orderered for html imports |
314 // because their documents, and hence their stylesheets are persisted on | 314 // because their documents, and hence their stylesheets are persisted on |
315 // remove / insert. This test is here to show that the active sheet comparison | 315 // remove / insert. This test is here to show that the active sheet comparison |
316 // is not able to see that anything changed. | 316 // is not able to see that anything changed. |
317 // | 317 // |
318 // Imports are handled by forcing re-append and recalc of the document scope | 318 // Imports are handled by forcing re-append and recalc of the document scope |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 ActiveStyleSheetVector oldStyleSheets; | 454 ActiveStyleSheetVector oldStyleSheets; |
455 oldStyleSheets.append( | 455 oldStyleSheets.append( |
456 std::make_pair(cssSheet, &cssSheet->contents()->ruleSet())); | 456 std::make_pair(cssSheet, &cssSheet->contents()->ruleSet())); |
457 styleEngine().applyRuleSetChanges(shadowRoot, oldStyleSheets, | 457 styleEngine().applyRuleSetChanges(shadowRoot, oldStyleSheets, |
458 ActiveStyleSheetVector()); | 458 ActiveStyleSheetVector()); |
459 | 459 |
460 EXPECT_TRUE(styleEngine().treeBoundaryCrossingScopes().isEmpty()); | 460 EXPECT_TRUE(styleEngine().treeBoundaryCrossingScopes().isEmpty()); |
461 } | 461 } |
462 | 462 |
463 } // namespace blink | 463 } // namespace blink |
OLD | NEW |