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