| 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 |