OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r
ights reserved. |
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 m_universalRules.append(ruleData); | 223 m_universalRules.append(ruleData); |
224 } | 224 } |
225 } | 225 } |
226 | 226 |
227 void RuleSet::addPageRule(StyleRulePage* rule) | 227 void RuleSet::addPageRule(StyleRulePage* rule) |
228 { | 228 { |
229 ensurePendingRules(); // So that m_pageRules.shrinkToFit() gets called. | 229 ensurePendingRules(); // So that m_pageRules.shrinkToFit() gets called. |
230 m_pageRules.append(rule); | 230 m_pageRules.append(rule); |
231 } | 231 } |
232 | 232 |
233 void RuleSet::addViewportRule(StyleRuleViewport* rule) | |
234 { | |
235 ensurePendingRules(); // So that m_viewportRules.shrinkToFit() gets called. | |
236 m_viewportRules.append(rule); | |
237 } | |
238 | |
239 void RuleSet::addFontFaceRule(StyleRuleFontFace* rule) | 233 void RuleSet::addFontFaceRule(StyleRuleFontFace* rule) |
240 { | 234 { |
241 ensurePendingRules(); // So that m_fontFaceRules.shrinkToFit() gets called. | 235 ensurePendingRules(); // So that m_fontFaceRules.shrinkToFit() gets called. |
242 m_fontFaceRules.append(rule); | 236 m_fontFaceRules.append(rule); |
243 } | 237 } |
244 | 238 |
245 void RuleSet::addKeyframesRule(StyleRuleKeyframes* rule) | 239 void RuleSet::addKeyframesRule(StyleRuleKeyframes* rule) |
246 { | 240 { |
247 ensurePendingRules(); // So that m_keyframesRules.shrinkToFit() gets called. | 241 ensurePendingRules(); // So that m_keyframesRules.shrinkToFit() gets called. |
248 m_keyframesRules.append(rule); | 242 m_keyframesRules.append(rule); |
(...skipping 16 matching lines...) Expand all Loading... |
265 } else if (selectorList.selectorHasSlottedPseudo(selectorIndex))
{ | 259 } else if (selectorList.selectorHasSlottedPseudo(selectorIndex))
{ |
266 m_slottedPseudoElementRules.append(MinimalRuleData(styleRule
, selectorIndex, addRuleFlags)); | 260 m_slottedPseudoElementRules.append(MinimalRuleData(styleRule
, selectorIndex, addRuleFlags)); |
267 } else { | 261 } else { |
268 addRule(styleRule, selectorIndex, addRuleFlags); | 262 addRule(styleRule, selectorIndex, addRuleFlags); |
269 } | 263 } |
270 } | 264 } |
271 } else if (rule->isPageRule()) { | 265 } else if (rule->isPageRule()) { |
272 addPageRule(toStyleRulePage(rule)); | 266 addPageRule(toStyleRulePage(rule)); |
273 } else if (rule->isMediaRule()) { | 267 } else if (rule->isMediaRule()) { |
274 StyleRuleMedia* mediaRule = toStyleRuleMedia(rule); | 268 StyleRuleMedia* mediaRule = toStyleRuleMedia(rule); |
275 if ((!mediaRule->mediaQueries() || medium.eval(mediaRule->mediaQueri
es(), &m_viewportDependentMediaQueryResults, &m_deviceDependentMediaQueryResults
))) | 269 if ((!mediaRule->mediaQueries() || medium.eval(mediaRule->mediaQueri
es(), &m_features.viewportDependentMediaQueryResults, &m_features.deviceDependen
tMediaQueryResults))) |
276 addChildRules(mediaRule->childRules(), medium, addRuleFlags); | 270 addChildRules(mediaRule->childRules(), medium, addRuleFlags); |
277 } else if (rule->isFontFaceRule()) { | 271 } else if (rule->isFontFaceRule()) { |
278 addFontFaceRule(toStyleRuleFontFace(rule)); | 272 addFontFaceRule(toStyleRuleFontFace(rule)); |
279 } else if (rule->isKeyframesRule()) { | 273 } else if (rule->isKeyframesRule()) { |
280 addKeyframesRule(toStyleRuleKeyframes(rule)); | 274 addKeyframesRule(toStyleRuleKeyframes(rule)); |
281 } else if (rule->isViewportRule()) { | |
282 addViewportRule(toStyleRuleViewport(rule)); | |
283 } else if (rule->isSupportsRule() && toStyleRuleSupports(rule)->conditio
nIsSupported()) { | 275 } else if (rule->isSupportsRule() && toStyleRuleSupports(rule)->conditio
nIsSupported()) { |
284 addChildRules(toStyleRuleSupports(rule)->childRules(), medium, addRu
leFlags); | 276 addChildRules(toStyleRuleSupports(rule)->childRules(), medium, addRu
leFlags); |
285 } | 277 } |
286 } | 278 } |
287 } | 279 } |
288 | 280 |
289 void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvalu
ator& medium, AddRuleFlags addRuleFlags) | 281 void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvalu
ator& medium, AddRuleFlags addRuleFlags) |
290 { | 282 { |
291 TRACE_EVENT0("blink", "RuleSet::addRulesFromSheet"); | 283 TRACE_EVENT0("blink", "RuleSet::addRulesFromSheet"); |
292 | 284 |
293 ASSERT(sheet); | 285 ASSERT(sheet); |
294 | 286 |
295 const HeapVector<Member<StyleRuleImport>>& importRules = sheet->importRules(
); | 287 const HeapVector<Member<StyleRuleImport>>& importRules = sheet->importRules(
); |
296 for (unsigned i = 0; i < importRules.size(); ++i) { | 288 for (unsigned i = 0; i < importRules.size(); ++i) { |
297 StyleRuleImport* importRule = importRules[i].get(); | 289 StyleRuleImport* importRule = importRules[i].get(); |
298 if (importRule->styleSheet() && (!importRule->mediaQueries() || medium.e
val(importRule->mediaQueries(), &m_viewportDependentMediaQueryResults, &m_device
DependentMediaQueryResults))) | 290 if (importRule->styleSheet() && (!importRule->mediaQueries() || medium.e
val(importRule->mediaQueries(), &m_features.viewportDependentMediaQueryResults,
&m_features.deviceDependentMediaQueryResults))) |
299 addRulesFromSheet(importRule->styleSheet(), medium, addRuleFlags); | 291 addRulesFromSheet(importRule->styleSheet(), medium, addRuleFlags); |
300 } | 292 } |
301 | 293 |
302 addChildRules(sheet->childRules(), medium, addRuleFlags); | 294 addChildRules(sheet->childRules(), medium, addRuleFlags); |
303 } | 295 } |
304 | 296 |
305 void RuleSet::addStyleRule(StyleRule* rule, AddRuleFlags addRuleFlags) | 297 void RuleSet::addStyleRule(StyleRule* rule, AddRuleFlags addRuleFlags) |
306 { | 298 { |
307 for (size_t selectorIndex = 0; selectorIndex != kNotFound; selectorIndex = r
ule->selectorList().indexOfNextSelectorAfter(selectorIndex)) | 299 for (size_t selectorIndex = 0; selectorIndex != kNotFound; selectorIndex = r
ule->selectorList().indexOfNextSelectorAfter(selectorIndex)) |
308 addRule(rule, selectorIndex, addRuleFlags); | 300 addRule(rule, selectorIndex, addRuleFlags); |
(...skipping 23 matching lines...) Expand all Loading... |
332 compactPendingRules(pendingRules->idRules, m_idRules); | 324 compactPendingRules(pendingRules->idRules, m_idRules); |
333 compactPendingRules(pendingRules->classRules, m_classRules); | 325 compactPendingRules(pendingRules->classRules, m_classRules); |
334 compactPendingRules(pendingRules->tagRules, m_tagRules); | 326 compactPendingRules(pendingRules->tagRules, m_tagRules); |
335 compactPendingRules(pendingRules->shadowPseudoElementRules, m_shadowPseudoEl
ementRules); | 327 compactPendingRules(pendingRules->shadowPseudoElementRules, m_shadowPseudoEl
ementRules); |
336 m_linkPseudoClassRules.shrinkToFit(); | 328 m_linkPseudoClassRules.shrinkToFit(); |
337 m_cuePseudoRules.shrinkToFit(); | 329 m_cuePseudoRules.shrinkToFit(); |
338 m_focusPseudoClassRules.shrinkToFit(); | 330 m_focusPseudoClassRules.shrinkToFit(); |
339 m_universalRules.shrinkToFit(); | 331 m_universalRules.shrinkToFit(); |
340 m_shadowHostRules.shrinkToFit(); | 332 m_shadowHostRules.shrinkToFit(); |
341 m_pageRules.shrinkToFit(); | 333 m_pageRules.shrinkToFit(); |
342 m_viewportRules.shrinkToFit(); | |
343 m_fontFaceRules.shrinkToFit(); | 334 m_fontFaceRules.shrinkToFit(); |
344 m_keyframesRules.shrinkToFit(); | 335 m_keyframesRules.shrinkToFit(); |
345 m_deepCombinatorOrShadowPseudoRules.shrinkToFit(); | 336 m_deepCombinatorOrShadowPseudoRules.shrinkToFit(); |
346 m_contentPseudoElementRules.shrinkToFit(); | 337 m_contentPseudoElementRules.shrinkToFit(); |
347 m_slottedPseudoElementRules.shrinkToFit(); | 338 m_slottedPseudoElementRules.shrinkToFit(); |
348 } | 339 } |
349 | 340 |
| 341 RuleSet* RuleSet::emptyRuleSet() |
| 342 { |
| 343 DEFINE_STATIC_LOCAL(Persistent<RuleSet>, s_emptyRuleSet, ()); |
| 344 if (!s_emptyRuleSet) |
| 345 s_emptyRuleSet = RuleSet::create(); |
| 346 return s_emptyRuleSet; |
| 347 } |
| 348 |
350 DEFINE_TRACE(MinimalRuleData) | 349 DEFINE_TRACE(MinimalRuleData) |
351 { | 350 { |
352 visitor->trace(m_rule); | 351 visitor->trace(m_rule); |
353 } | 352 } |
354 | 353 |
355 DEFINE_TRACE(RuleData) | 354 DEFINE_TRACE(RuleData) |
356 { | 355 { |
357 visitor->trace(m_rule); | 356 visitor->trace(m_rule); |
358 } | 357 } |
359 | 358 |
(...skipping 11 matching lines...) Expand all Loading... |
371 visitor->trace(m_classRules); | 370 visitor->trace(m_classRules); |
372 visitor->trace(m_tagRules); | 371 visitor->trace(m_tagRules); |
373 visitor->trace(m_shadowPseudoElementRules); | 372 visitor->trace(m_shadowPseudoElementRules); |
374 visitor->trace(m_linkPseudoClassRules); | 373 visitor->trace(m_linkPseudoClassRules); |
375 visitor->trace(m_cuePseudoRules); | 374 visitor->trace(m_cuePseudoRules); |
376 visitor->trace(m_focusPseudoClassRules); | 375 visitor->trace(m_focusPseudoClassRules); |
377 visitor->trace(m_universalRules); | 376 visitor->trace(m_universalRules); |
378 visitor->trace(m_shadowHostRules); | 377 visitor->trace(m_shadowHostRules); |
379 visitor->trace(m_features); | 378 visitor->trace(m_features); |
380 visitor->trace(m_pageRules); | 379 visitor->trace(m_pageRules); |
381 visitor->trace(m_viewportRules); | |
382 visitor->trace(m_fontFaceRules); | 380 visitor->trace(m_fontFaceRules); |
383 visitor->trace(m_keyframesRules); | 381 visitor->trace(m_keyframesRules); |
384 visitor->trace(m_deepCombinatorOrShadowPseudoRules); | 382 visitor->trace(m_deepCombinatorOrShadowPseudoRules); |
385 visitor->trace(m_contentPseudoElementRules); | 383 visitor->trace(m_contentPseudoElementRules); |
386 visitor->trace(m_slottedPseudoElementRules); | 384 visitor->trace(m_slottedPseudoElementRules); |
387 visitor->trace(m_viewportDependentMediaQueryResults); | |
388 visitor->trace(m_deviceDependentMediaQueryResults); | |
389 visitor->trace(m_pendingRules); | 385 visitor->trace(m_pendingRules); |
390 #ifndef NDEBUG | 386 #ifndef NDEBUG |
391 visitor->trace(m_allRules); | 387 visitor->trace(m_allRules); |
392 #endif | 388 #endif |
393 } | 389 } |
394 | 390 |
395 #ifndef NDEBUG | 391 #ifndef NDEBUG |
396 void RuleSet::show() const | 392 void RuleSet::show() const |
397 { | 393 { |
398 for (const auto& rule: m_allRules) | 394 for (const auto& rule: m_allRules) |
399 rule.selector().show(); | 395 rule.selector().show(); |
400 } | 396 } |
401 #endif | 397 #endif |
402 | 398 |
403 } // namespace blink | 399 } // namespace blink |
OLD | NEW |