| 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 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 documentStyleSheetCollection()->clearMediaQueryRuleSetStyleSheets(); | 400 documentStyleSheetCollection()->clearMediaQueryRuleSetStyleSheets(); |
| 401 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_activeTreeScopes.beginUnorder
ed(), m_activeTreeScopes.endUnordered()); | 401 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_activeTreeScopes.beginUnorder
ed(), m_activeTreeScopes.endUnordered()); |
| 402 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_dirtyTreeScopes.begin(), m_di
rtyTreeScopes.end()); | 402 clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_dirtyTreeScopes.begin(), m_di
rtyTreeScopes.end()); |
| 403 } | 403 } |
| 404 | 404 |
| 405 void StyleEngine::updateStyleSheetsInImport(DocumentStyleSheetCollector& parentC
ollector) | 405 void StyleEngine::updateStyleSheetsInImport(DocumentStyleSheetCollector& parentC
ollector) |
| 406 { | 406 { |
| 407 ASSERT(!isMaster()); | 407 ASSERT(!isMaster()); |
| 408 WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > sheetsForList; | 408 WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > sheetsForList; |
| 409 ImportedDocumentStyleSheetCollector subcollector(parentCollector, sheetsForL
ist); | 409 ImportedDocumentStyleSheetCollector subcollector(parentCollector, sheetsForL
ist); |
| 410 documentStyleSheetCollection()->collectStyleSheets(this, subcollector); | 410 documentStyleSheetCollection()->collectStyleSheets(*this, subcollector); |
| 411 documentStyleSheetCollection()->swapSheetsForSheetList(sheetsForList); | 411 documentStyleSheetCollection()->swapSheetsForSheetList(sheetsForList); |
| 412 } | 412 } |
| 413 | 413 |
| 414 void StyleEngine::updateActiveStyleSheetsInShadow(StyleResolverUpdateMode update
Mode, TreeScope* treeScope, UnorderedTreeScopeSet& treeScopesRemoved) | 414 void StyleEngine::updateActiveStyleSheetsInShadow(StyleResolverUpdateMode update
Mode, TreeScope* treeScope, UnorderedTreeScopeSet& treeScopesRemoved) |
| 415 { | 415 { |
| 416 ASSERT(treeScope != m_document); | 416 ASSERT(treeScope != m_document); |
| 417 ShadowTreeStyleSheetCollection* collection = static_cast<ShadowTreeStyleShee
tCollection*>(styleSheetCollectionFor(*treeScope)); | 417 ShadowTreeStyleSheetCollection* collection = static_cast<ShadowTreeStyleShee
tCollection*>(styleSheetCollectionFor(*treeScope)); |
| 418 ASSERT(collection); | 418 ASSERT(collection); |
| 419 collection->updateActiveStyleSheets(this, updateMode); | 419 collection->updateActiveStyleSheets(*this, updateMode); |
| 420 if (!collection->hasStyleSheetCandidateNodes()) { | 420 if (!collection->hasStyleSheetCandidateNodes()) { |
| 421 treeScopesRemoved.add(treeScope); | 421 treeScopesRemoved.add(treeScope); |
| 422 // When removing TreeScope from ActiveTreeScopes, | 422 // When removing TreeScope from ActiveTreeScopes, |
| 423 // its resolver should be destroyed by invoking resetAuthorStyle. | 423 // its resolver should be destroyed by invoking resetAuthorStyle. |
| 424 ASSERT(!treeScope->scopedStyleResolver()); | 424 ASSERT(!treeScope->scopedStyleResolver()); |
| 425 } | 425 } |
| 426 } | 426 } |
| 427 | 427 |
| 428 void StyleEngine::updateActiveStyleSheets(StyleResolverUpdateMode updateMode) | 428 void StyleEngine::updateActiveStyleSheets(StyleResolverUpdateMode updateMode) |
| 429 { | 429 { |
| 430 ASSERT(isMaster()); | 430 ASSERT(isMaster()); |
| 431 ASSERT(!document().inStyleRecalc()); | 431 ASSERT(!document().inStyleRecalc()); |
| 432 | 432 |
| 433 if (!document().isActive()) | 433 if (!document().isActive()) |
| 434 return; | 434 return; |
| 435 | 435 |
| 436 if (shouldUpdateDocumentStyleSheetCollection(updateMode)) | 436 if (shouldUpdateDocumentStyleSheetCollection(updateMode)) |
| 437 documentStyleSheetCollection()->updateActiveStyleSheets(this, updateMode
); | 437 documentStyleSheetCollection()->updateActiveStyleSheets(*this, updateMod
e); |
| 438 | 438 |
| 439 if (shouldUpdateShadowTreeStyleSheetCollection(updateMode)) { | 439 if (shouldUpdateShadowTreeStyleSheetCollection(updateMode)) { |
| 440 UnorderedTreeScopeSet treeScopesRemoved; | 440 UnorderedTreeScopeSet treeScopesRemoved; |
| 441 | 441 |
| 442 if (updateMode == FullStyleUpdate) { | 442 if (updateMode == FullStyleUpdate) { |
| 443 for (unsigned i = 0; i < m_activeTreeScopes.size(); ++i) | 443 for (unsigned i = 0; i < m_activeTreeScopes.size(); ++i) |
| 444 updateActiveStyleSheetsInShadow(updateMode, m_activeTreeScopes[i
], treeScopesRemoved); | 444 updateActiveStyleSheetsInShadow(updateMode, m_activeTreeScopes[i
], treeScopesRemoved); |
| 445 } else { | 445 } else { |
| 446 for (UnorderedTreeScopeSet::iterator it = m_dirtyTreeScopes.begin();
it != m_dirtyTreeScopes.end(); ++it) { | 446 for (UnorderedTreeScopeSet::iterator it = m_dirtyTreeScopes.begin();
it != m_dirtyTreeScopes.end(); ++it) { |
| 447 updateActiveStyleSheetsInShadow(updateMode, *it, treeScopesRemov
ed); | 447 updateActiveStyleSheetsInShadow(updateMode, *it, treeScopesRemov
ed); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 (*it)->clearScopedStyleResolver(); | 538 (*it)->clearScopedStyleResolver(); |
| 539 | 539 |
| 540 if (m_resolver) | 540 if (m_resolver) |
| 541 document().updateStyleInvalidationIfNeeded(); | 541 document().updateStyleInvalidationIfNeeded(); |
| 542 m_resolver.clear(); | 542 m_resolver.clear(); |
| 543 } | 543 } |
| 544 | 544 |
| 545 void StyleEngine::clearMasterResolver() | 545 void StyleEngine::clearMasterResolver() |
| 546 { | 546 { |
| 547 if (Document* master = this->master()) | 547 if (Document* master = this->master()) |
| 548 master->styleEngine()->clearResolver(); | 548 master->styleEngine().clearResolver(); |
| 549 } | 549 } |
| 550 | 550 |
| 551 unsigned StyleEngine::resolverAccessCount() const | 551 unsigned StyleEngine::resolverAccessCount() const |
| 552 { | 552 { |
| 553 return m_resolver ? m_resolver->accessCount() : 0; | 553 return m_resolver ? m_resolver->accessCount() : 0; |
| 554 } | 554 } |
| 555 | 555 |
| 556 void StyleEngine::didDetach() | 556 void StyleEngine::didDetach() |
| 557 { | 557 { |
| 558 clearResolver(); | 558 clearResolver(); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 return; | 623 return; |
| 624 } | 624 } |
| 625 | 625 |
| 626 m_dirtyTreeScopes.add(&scope); | 626 m_dirtyTreeScopes.add(&scope); |
| 627 } | 627 } |
| 628 | 628 |
| 629 void StyleEngine::markDocumentDirty() | 629 void StyleEngine::markDocumentDirty() |
| 630 { | 630 { |
| 631 m_documentScopeDirty = true; | 631 m_documentScopeDirty = true; |
| 632 if (document().importLoader()) | 632 if (document().importLoader()) |
| 633 document().importsController()->master()->styleEngine()->markDocumentDir
ty(); | 633 document().importsController()->master()->styleEngine().markDocumentDirt
y(); |
| 634 } | 634 } |
| 635 | 635 |
| 636 static bool isCacheableForStyleElement(const StyleSheetContents& contents) | 636 static bool isCacheableForStyleElement(const StyleSheetContents& contents) |
| 637 { | 637 { |
| 638 // FIXME: Support copying import rules. | 638 // FIXME: Support copying import rules. |
| 639 if (!contents.importRules().isEmpty()) | 639 if (!contents.importRules().isEmpty()) |
| 640 return false; | 640 return false; |
| 641 // Until import rules are supported in cached sheets it's not possible for l
oading to fail. | 641 // Until import rules are supported in cached sheets it's not possible for l
oading to fail. |
| 642 ASSERT(!contents.didLoadErrorOccur()); | 642 ASSERT(!contents.didLoadErrorOccur()); |
| 643 // It is not the original sheet anymore. | 643 // It is not the original sheet anymore. |
| 644 if (contents.isMutable()) | 644 if (contents.isMutable()) |
| 645 return false; | 645 return false; |
| 646 if (!contents.hasSyntacticallyValidCSSHeader()) | 646 if (!contents.hasSyntacticallyValidCSSHeader()) |
| 647 return false; | 647 return false; |
| 648 return true; | 648 return true; |
| 649 } | 649 } |
| 650 | 650 |
| 651 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const
String& text, TextPosition startPosition, bool createdByParser) | 651 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const
String& text, TextPosition startPosition, bool createdByParser) |
| 652 { | 652 { |
| 653 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr; | 653 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr; |
| 654 | 654 |
| 655 e->document().styleEngine()->addPendingSheet(); | 655 e->document().styleEngine().addPendingSheet(); |
| 656 | 656 |
| 657 if (!e->document().inQuirksMode()) { | 657 if (!e->document().inQuirksMode()) { |
| 658 AtomicString textContent(text); | 658 AtomicString textContent(text); |
| 659 | 659 |
| 660 WillBeHeapHashMap<AtomicString, RawPtrWillBeMember<StyleSheetContents> >
::AddResult result = m_textToSheetCache.add(textContent, nullptr); | 660 WillBeHeapHashMap<AtomicString, RawPtrWillBeMember<StyleSheetContents> >
::AddResult result = m_textToSheetCache.add(textContent, nullptr); |
| 661 if (result.isNewEntry || !result.storedValue->value) { | 661 if (result.isNewEntry || !result.storedValue->value) { |
| 662 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created
ByParser); | 662 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created
ByParser); |
| 663 if (result.isNewEntry && isCacheableForStyleElement(*styleSheet->con
tents())) { | 663 if (result.isNewEntry && isCacheableForStyleElement(*styleSheet->con
tents())) { |
| 664 result.storedValue->value = styleSheet->contents(); | 664 result.storedValue->value = styleSheet->contents(); |
| 665 m_sheetToTextCache.add(styleSheet->contents(), textContent); | 665 m_sheetToTextCache.add(styleSheet->contents(), textContent); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 750 visitor->trace(m_dirtyTreeScopes); | 750 visitor->trace(m_dirtyTreeScopes); |
| 751 visitor->trace(m_activeTreeScopes); | 751 visitor->trace(m_activeTreeScopes); |
| 752 visitor->trace(m_fontSelector); | 752 visitor->trace(m_fontSelector); |
| 753 visitor->trace(m_textToSheetCache); | 753 visitor->trace(m_textToSheetCache); |
| 754 visitor->trace(m_sheetToTextCache); | 754 visitor->trace(m_sheetToTextCache); |
| 755 #endif | 755 #endif |
| 756 CSSFontSelectorClient::trace(visitor); | 756 CSSFontSelectorClient::trace(visitor); |
| 757 } | 757 } |
| 758 | 758 |
| 759 } | 759 } |
| OLD | NEW |