| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. |
| 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
| 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 { | 194 { |
| 195 if (treeScope == m_document) | 195 if (treeScope == m_document) |
| 196 return documentStyleSheetCollection(); | 196 return documentStyleSheetCollection(); |
| 197 | 197 |
| 198 StyleSheetCollectionMap::iterator it = m_styleSheetCollectionMap.find(&treeS
cope); | 198 StyleSheetCollectionMap::iterator it = m_styleSheetCollectionMap.find(&treeS
cope); |
| 199 if (it == m_styleSheetCollectionMap.end()) | 199 if (it == m_styleSheetCollectionMap.end()) |
| 200 return 0; | 200 return 0; |
| 201 return it->value.get(); | 201 return it->value.get(); |
| 202 } | 202 } |
| 203 | 203 |
| 204 const WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >& StyleEngine::styleSheet
sForStyleSheetList(TreeScope& treeScope) | 204 const WillBeHeapVector<RefPtrWillBeMember<StyleSheet>>& StyleEngine::styleSheets
ForStyleSheetList(TreeScope& treeScope) |
| 205 { | 205 { |
| 206 if (treeScope == m_document) | 206 if (treeScope == m_document) |
| 207 return documentStyleSheetCollection()->styleSheetsForStyleSheetList(); | 207 return documentStyleSheetCollection()->styleSheetsForStyleSheetList(); |
| 208 | 208 |
| 209 return ensureStyleSheetCollectionFor(treeScope)->styleSheetsForStyleSheetLis
t(); | 209 return ensureStyleSheetCollectionFor(treeScope)->styleSheetsForStyleSheetLis
t(); |
| 210 } | 210 } |
| 211 | 211 |
| 212 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& StyleEngine::activeA
uthorStyleSheets() const | 212 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet>>& StyleEngine::activeAu
thorStyleSheets() const |
| 213 { | 213 { |
| 214 return documentStyleSheetCollection()->activeAuthorStyleSheets(); | 214 return documentStyleSheetCollection()->activeAuthorStyleSheets(); |
| 215 } | 215 } |
| 216 | 216 |
| 217 void StyleEngine::combineCSSFeatureFlags(const RuleFeatureSet& features) | 217 void StyleEngine::combineCSSFeatureFlags(const RuleFeatureSet& features) |
| 218 { | 218 { |
| 219 // Delay resetting the flags until after next style recalc since unapplying
the style may not work without these set (this is true at least with before/afte
r). | 219 // Delay resetting the flags until after next style recalc since unapplying
the style may not work without these set (this is true at least with before/afte
r). |
| 220 m_usesSiblingRules = m_usesSiblingRules || features.usesSiblingRules(); | 220 m_usesSiblingRules = m_usesSiblingRules || features.usesSiblingRules(); |
| 221 m_usesFirstLineRules = m_usesFirstLineRules || features.usesFirstLineRules()
; | 221 m_usesFirstLineRules = m_usesFirstLineRules || features.usesFirstLineRules()
; |
| 222 m_usesWindowInactiveSelector = m_usesWindowInactiveSelector || features.uses
WindowInactiveSelector(); | 222 m_usesWindowInactiveSelector = m_usesWindowInactiveSelector || features.uses
WindowInactiveSelector(); |
| 223 m_maxDirectAdjacentSelectors = max(m_maxDirectAdjacentSelectors, features.ma
xDirectAdjacentSelectors()); | 223 m_maxDirectAdjacentSelectors = max(m_maxDirectAdjacentSelectors, features.ma
xDirectAdjacentSelectors()); |
| 224 } | 224 } |
| 225 | 225 |
| 226 void StyleEngine::resetCSSFeatureFlags(const RuleFeatureSet& features) | 226 void StyleEngine::resetCSSFeatureFlags(const RuleFeatureSet& features) |
| 227 { | 227 { |
| 228 m_usesSiblingRules = features.usesSiblingRules(); | 228 m_usesSiblingRules = features.usesSiblingRules(); |
| 229 m_usesFirstLineRules = features.usesFirstLineRules(); | 229 m_usesFirstLineRules = features.usesFirstLineRules(); |
| 230 m_usesWindowInactiveSelector = features.usesWindowInactiveSelector(); | 230 m_usesWindowInactiveSelector = features.usesWindowInactiveSelector(); |
| 231 m_maxDirectAdjacentSelectors = features.maxDirectAdjacentSelectors(); | 231 m_maxDirectAdjacentSelectors = features.maxDirectAdjacentSelectors(); |
| 232 } | 232 } |
| 233 | 233 |
| 234 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& StyleEngine::injecte
dAuthorStyleSheets() const | 234 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet>>& StyleEngine::injected
AuthorStyleSheets() const |
| 235 { | 235 { |
| 236 updateInjectedStyleSheetCache(); | 236 updateInjectedStyleSheetCache(); |
| 237 return m_injectedAuthorStyleSheets; | 237 return m_injectedAuthorStyleSheets; |
| 238 } | 238 } |
| 239 | 239 |
| 240 void StyleEngine::updateInjectedStyleSheetCache() const | 240 void StyleEngine::updateInjectedStyleSheetCache() const |
| 241 { | 241 { |
| 242 if (m_injectedStyleSheetCacheValid) | 242 if (m_injectedStyleSheetCacheValid) |
| 243 return; | 243 return; |
| 244 m_injectedStyleSheetCacheValid = true; | 244 m_injectedStyleSheetCacheValid = true; |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 void StyleEngine::clearMediaQueryRuleSetStyleSheets() | 399 void StyleEngine::clearMediaQueryRuleSetStyleSheets() |
| 400 { | 400 { |
| 401 documentStyleSheetCollection()->clearMediaQueryRuleSetStyleSheets(); | 401 documentStyleSheetCollection()->clearMediaQueryRuleSetStyleSheets(); |
| 402 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_activeTreeScopes.beginUnorder
ed(), m_activeTreeScopes.endUnordered()); | 402 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_activeTreeScopes.beginUnorder
ed(), m_activeTreeScopes.endUnordered()); |
| 403 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_dirtyTreeScopes.begin(), m_di
rtyTreeScopes.end()); | 403 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_dirtyTreeScopes.begin(), m_di
rtyTreeScopes.end()); |
| 404 } | 404 } |
| 405 | 405 |
| 406 void StyleEngine::updateStyleSheetsInImport(DocumentStyleSheetCollector& parentC
ollector) | 406 void StyleEngine::updateStyleSheetsInImport(DocumentStyleSheetCollector& parentC
ollector) |
| 407 { | 407 { |
| 408 ASSERT(!isMaster()); | 408 ASSERT(!isMaster()); |
| 409 WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > sheetsForList; | 409 WillBeHeapVector<RefPtrWillBeMember<StyleSheet>> sheetsForList; |
| 410 ImportedDocumentStyleSheetCollector subcollector(parentCollector, sheetsForL
ist); | 410 ImportedDocumentStyleSheetCollector subcollector(parentCollector, sheetsForL
ist); |
| 411 documentStyleSheetCollection()->collectStyleSheets(*this, subcollector); | 411 documentStyleSheetCollection()->collectStyleSheets(*this, subcollector); |
| 412 documentStyleSheetCollection()->swapSheetsForSheetList(sheetsForList); | 412 documentStyleSheetCollection()->swapSheetsForSheetList(sheetsForList); |
| 413 } | 413 } |
| 414 | 414 |
| 415 void StyleEngine::updateActiveStyleSheetsInShadow(StyleResolverUpdateMode update
Mode, TreeScope* treeScope, UnorderedTreeScopeSet& treeScopesRemoved) | 415 void StyleEngine::updateActiveStyleSheetsInShadow(StyleResolverUpdateMode update
Mode, TreeScope* treeScope, UnorderedTreeScopeSet& treeScopesRemoved) |
| 416 { | 416 { |
| 417 ASSERT(treeScope != m_document); | 417 ASSERT(treeScope != m_document); |
| 418 ShadowTreeStyleSheetCollection* collection = static_cast<ShadowTreeStyleShee
tCollection*>(styleSheetCollectionFor(*treeScope)); | 418 ShadowTreeStyleSheetCollection* collection = static_cast<ShadowTreeStyleShee
tCollection*>(styleSheetCollectionFor(*treeScope)); |
| 419 ASSERT(collection); | 419 ASSERT(collection); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 m_activeTreeScopes.remove(*it); | 452 m_activeTreeScopes.remove(*it); |
| 453 } | 453 } |
| 454 | 454 |
| 455 InspectorInstrumentation::activeStyleSheetsUpdated(m_document); | 455 InspectorInstrumentation::activeStyleSheetsUpdated(m_document); |
| 456 m_usesRemUnits = documentStyleSheetCollection()->usesRemUnits(); | 456 m_usesRemUnits = documentStyleSheetCollection()->usesRemUnits(); |
| 457 | 457 |
| 458 m_dirtyTreeScopes.clear(); | 458 m_dirtyTreeScopes.clear(); |
| 459 m_documentScopeDirty = false; | 459 m_documentScopeDirty = false; |
| 460 } | 460 } |
| 461 | 461 |
| 462 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > StyleEngine::activeSt
yleSheetsForInspector() const | 462 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet>> StyleEngine::activeSty
leSheetsForInspector() const |
| 463 { | 463 { |
| 464 if (m_activeTreeScopes.isEmpty()) | 464 if (m_activeTreeScopes.isEmpty()) |
| 465 return documentStyleSheetCollection()->activeAuthorStyleSheets(); | 465 return documentStyleSheetCollection()->activeAuthorStyleSheets(); |
| 466 | 466 |
| 467 WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > activeStyleSheets; | 467 WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet>> activeStyleSheets; |
| 468 | 468 |
| 469 activeStyleSheets.appendVector(documentStyleSheetCollection()->activeAuthorS
tyleSheets()); | 469 activeStyleSheets.appendVector(documentStyleSheetCollection()->activeAuthorS
tyleSheets()); |
| 470 for (unsigned i = 0; i < m_activeTreeScopes.size(); ++i) { | 470 for (unsigned i = 0; i < m_activeTreeScopes.size(); ++i) { |
| 471 TreeScope* treeScope = const_cast<TreeScope*>(m_activeTreeScopes[i]); | 471 TreeScope* treeScope = const_cast<TreeScope*>(m_activeTreeScopes[i]); |
| 472 if (TreeScopeStyleSheetCollection* collection = m_styleSheetCollectionMa
p.get(treeScope)) | 472 if (TreeScopeStyleSheetCollection* collection = m_styleSheetCollectionMa
p.get(treeScope)) |
| 473 activeStyleSheets.appendVector(collection->activeAuthorStyleSheets()
); | 473 activeStyleSheets.appendVector(collection->activeAuthorStyleSheets()
); |
| 474 } | 474 } |
| 475 | 475 |
| 476 // FIXME: Inspector needs a vector which has all active stylesheets. | 476 // FIXME: Inspector needs a vector which has all active stylesheets. |
| 477 // However, creating such a large vector might cause performance regression. | 477 // However, creating such a large vector might cause performance regression. |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 603 ASSERT(document().isActive()); | 603 ASSERT(document().isActive()); |
| 604 | 604 |
| 605 if (!m_fontSelector) | 605 if (!m_fontSelector) |
| 606 return; | 606 return; |
| 607 | 607 |
| 608 m_fontSelector->updateGenericFontFamilySettings(*m_document); | 608 m_fontSelector->updateGenericFontFamilySettings(*m_document); |
| 609 if (m_resolver) | 609 if (m_resolver) |
| 610 m_resolver->invalidateMatchedPropertiesCache(); | 610 m_resolver->invalidateMatchedPropertiesCache(); |
| 611 } | 611 } |
| 612 | 612 |
| 613 void StyleEngine::removeFontFaceRules(const WillBeHeapVector<RawPtrWillBeMember<
const StyleRuleFontFace> >& fontFaceRules) | 613 void StyleEngine::removeFontFaceRules(const WillBeHeapVector<RawPtrWillBeMember<
const StyleRuleFontFace>>& fontFaceRules) |
| 614 { | 614 { |
| 615 if (!m_fontSelector) | 615 if (!m_fontSelector) |
| 616 return; | 616 return; |
| 617 | 617 |
| 618 FontFaceCache* cache = m_fontSelector->fontFaceCache(); | 618 FontFaceCache* cache = m_fontSelector->fontFaceCache(); |
| 619 for (unsigned i = 0; i < fontFaceRules.size(); ++i) | 619 for (unsigned i = 0; i < fontFaceRules.size(); ++i) |
| 620 cache->remove(fontFaceRules[i]); | 620 cache->remove(fontFaceRules[i]); |
| 621 if (m_resolver) | 621 if (m_resolver) |
| 622 m_resolver->invalidateMatchedPropertiesCache(); | 622 m_resolver->invalidateMatchedPropertiesCache(); |
| 623 } | 623 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 | 656 |
| 657 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const
String& text, TextPosition startPosition, bool createdByParser) | 657 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const
String& text, TextPosition startPosition, bool createdByParser) |
| 658 { | 658 { |
| 659 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr; | 659 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr; |
| 660 | 660 |
| 661 e->document().styleEngine().addPendingSheet(); | 661 e->document().styleEngine().addPendingSheet(); |
| 662 | 662 |
| 663 if (!e->document().inQuirksMode()) { | 663 if (!e->document().inQuirksMode()) { |
| 664 AtomicString textContent(text); | 664 AtomicString textContent(text); |
| 665 | 665 |
| 666 WillBeHeapHashMap<AtomicString, RawPtrWillBeMember<StyleSheetContents> >
::AddResult result = m_textToSheetCache.add(textContent, nullptr); | 666 WillBeHeapHashMap<AtomicString, RawPtrWillBeMember<StyleSheetContents>>:
:AddResult result = m_textToSheetCache.add(textContent, nullptr); |
| 667 if (result.isNewEntry || !result.storedValue->value) { | 667 if (result.isNewEntry || !result.storedValue->value) { |
| 668 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created
ByParser); | 668 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created
ByParser); |
| 669 if (result.isNewEntry && isCacheableForStyleElement(*styleSheet->con
tents())) { | 669 if (result.isNewEntry && isCacheableForStyleElement(*styleSheet->con
tents())) { |
| 670 result.storedValue->value = styleSheet->contents(); | 670 result.storedValue->value = styleSheet->contents(); |
| 671 m_sheetToTextCache.add(styleSheet->contents(), textContent); | 671 m_sheetToTextCache.add(styleSheet->contents(), textContent); |
| 672 } | 672 } |
| 673 } else { | 673 } else { |
| 674 StyleSheetContents* contents = result.storedValue->value; | 674 StyleSheetContents* contents = result.storedValue->value; |
| 675 ASSERT(contents); | 675 ASSERT(contents); |
| 676 ASSERT(isCacheableForStyleElement(*contents)); | 676 ASSERT(isCacheableForStyleElement(*contents)); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 visitor->trace(m_dirtyTreeScopes); | 756 visitor->trace(m_dirtyTreeScopes); |
| 757 visitor->trace(m_activeTreeScopes); | 757 visitor->trace(m_activeTreeScopes); |
| 758 visitor->trace(m_fontSelector); | 758 visitor->trace(m_fontSelector); |
| 759 visitor->trace(m_textToSheetCache); | 759 visitor->trace(m_textToSheetCache); |
| 760 visitor->trace(m_sheetToTextCache); | 760 visitor->trace(m_sheetToTextCache); |
| 761 #endif | 761 #endif |
| 762 CSSFontSelectorClient::trace(visitor); | 762 CSSFontSelectorClient::trace(visitor); |
| 763 } | 763 } |
| 764 | 764 |
| 765 } | 765 } |
| OLD | NEW |