Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: Source/core/dom/StyleEngine.cpp

Issue 211073002: [Oilpan]: Move CSSFontSelectorClient to the oilpan heap using transition types. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Adding StyleEngine.cpp change (forgot to upload diff again with WTF change) Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 // Cleanup is performed eagerly when the StyleEngine is removed from the 83 // Cleanup is performed eagerly when the StyleEngine is removed from the
84 // document. The StyleEngine is unreachable after this, since only the 84 // document. The StyleEngine is unreachable after this, since only the
85 // document has a reference to it. 85 // document has a reference to it.
86 for (unsigned i = 0; i < m_injectedAuthorStyleSheets.size(); ++i) 86 for (unsigned i = 0; i < m_injectedAuthorStyleSheets.size(); ++i)
87 m_injectedAuthorStyleSheets[i]->clearOwnerNode(); 87 m_injectedAuthorStyleSheets[i]->clearOwnerNode();
88 for (unsigned i = 0; i < m_authorStyleSheets.size(); ++i) 88 for (unsigned i = 0; i < m_authorStyleSheets.size(); ++i)
89 m_authorStyleSheets[i]->clearOwnerNode(); 89 m_authorStyleSheets[i]->clearOwnerNode();
90 90
91 if (m_fontSelector) { 91 if (m_fontSelector) {
92 m_fontSelector->clearDocument(); 92 m_fontSelector->clearDocument();
93 #if !ENABLE(OILPAN)
93 if (m_resolver) 94 if (m_resolver)
94 m_fontSelector->unregisterForInvalidationCallbacks(m_resolver.get()) ; 95 m_fontSelector->unregisterForInvalidationCallbacks(m_resolver.get()) ;
96 #endif
95 } 97 }
96 98
97 // Decrement reference counts for things we could be keeping alive. 99 // Decrement reference counts for things we could be keeping alive.
98 m_fontSelector.clear(); 100 m_fontSelector.clear();
99 m_resolver.clear(); 101 m_resolver.clear();
100 m_styleSheetCollectionMap.clear(); 102 m_styleSheetCollectionMap.clear();
101 } 103 }
102 104
103 inline Document* StyleEngine::master() 105 inline Document* StyleEngine::master()
104 { 106 {
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 442
441 void StyleEngine::createResolver() 443 void StyleEngine::createResolver()
442 { 444 {
443 // It is a programming error to attempt to resolve style on a Document 445 // It is a programming error to attempt to resolve style on a Document
444 // which is not in a frame. Code which hits this should have checked 446 // which is not in a frame. Code which hits this should have checked
445 // Document::isActive() before calling into code which could get here. 447 // Document::isActive() before calling into code which could get here.
446 448
447 ASSERT(m_document.frame()); 449 ASSERT(m_document.frame());
448 ASSERT(m_fontSelector); 450 ASSERT(m_fontSelector);
449 451
450 m_resolver = adoptPtr(new StyleResolver(m_document)); 452 m_resolver = adoptPtrWillBeNoop(new StyleResolver(m_document));
451 appendActiveAuthorStyleSheets(); 453 appendActiveAuthorStyleSheets();
452 m_fontSelector->registerForInvalidationCallbacks(m_resolver.get()); 454 m_fontSelector->registerForInvalidationCallbacks(m_resolver.get());
453 combineCSSFeatureFlags(m_resolver->ensureUpdatedRuleFeatureSet()); 455 combineCSSFeatureFlags(m_resolver->ensureUpdatedRuleFeatureSet());
454 } 456 }
455 457
456 void StyleEngine::clearResolver() 458 void StyleEngine::clearResolver()
457 { 459 {
458 ASSERT(!m_document.inStyleRecalc()); 460 ASSERT(!m_document.inStyleRecalc());
459 ASSERT(isMaster() || !m_resolver); 461 ASSERT(isMaster() || !m_resolver);
460 ASSERT(m_fontSelector || !m_resolver); 462 ASSERT(m_fontSelector || !m_resolver);
461 if (m_resolver) { 463 if (m_resolver) {
462 m_document.updateStyleInvalidationIfNeeded(); 464 m_document.updateStyleInvalidationIfNeeded();
465 #if !ENABLE(OILPAN)
463 m_fontSelector->unregisterForInvalidationCallbacks(m_resolver.get()); 466 m_fontSelector->unregisterForInvalidationCallbacks(m_resolver.get());
467 #endif
464 } 468 }
465 m_resolver.clear(); 469 m_resolver.clear();
466 } 470 }
467 471
468 void StyleEngine::clearMasterResolver() 472 void StyleEngine::clearMasterResolver()
469 { 473 {
470 if (Document* master = this->master()) 474 if (Document* master = this->master())
471 master->styleEngine()->clearResolver(); 475 master->styleEngine()->clearResolver();
472 } 476 }
473 477
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 582
579 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const String& text, TextPosition startPosition, bool createdByParser) 583 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const String& text, TextPosition startPosition, bool createdByParser)
580 { 584 {
581 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr; 585 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr;
582 586
583 e->document().styleEngine()->addPendingSheet(); 587 e->document().styleEngine()->addPendingSheet();
584 588
585 if (!e->document().inQuirksMode()) { 589 if (!e->document().inQuirksMode()) {
586 AtomicString textContent(text); 590 AtomicString textContent(text);
587 591
588 HashMap<AtomicString, StyleSheetContents*>::AddResult result = m_textToS heetCache.add(textContent, 0); 592 WillBeHeapHashMap<AtomicString, RawPtrWillBeMember<StyleSheetContents> > ::AddResult result = m_textToSheetCache.add(textContent, nullptr);
589 if (result.isNewEntry || !result.storedValue->value) { 593 if (result.isNewEntry || !result.storedValue->value) {
590 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created ByParser); 594 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created ByParser);
591 if (result.isNewEntry && isCacheableForStyleElement(*styleSheet->con tents())) { 595 if (result.isNewEntry && isCacheableForStyleElement(*styleSheet->con tents())) {
592 result.storedValue->value = styleSheet->contents(); 596 result.storedValue->value = styleSheet->contents();
593 m_sheetToTextCache.add(styleSheet->contents(), textContent); 597 m_sheetToTextCache.add(styleSheet->contents(), textContent);
594 } 598 }
595 } else { 599 } else {
596 StyleSheetContents* contents = result.storedValue->value; 600 StyleSheetContents* contents = result.storedValue->value;
597 ASSERT(contents); 601 ASSERT(contents);
598 ASSERT(isCacheableForStyleElement(*contents)); 602 ASSERT(isCacheableForStyleElement(*contents));
(...skipping 13 matching lines...) Expand all
612 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::parseSheet(Element* e, const String& text, TextPosition startPosition, bool createdByParser) 616 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::parseSheet(Element* e, const String& text, TextPosition startPosition, bool createdByParser)
613 { 617 {
614 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr; 618 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet = nullptr;
615 styleSheet = CSSStyleSheet::createInline(e, KURL(), startPosition, e->docume nt().inputEncoding()); 619 styleSheet = CSSStyleSheet::createInline(e, KURL(), startPosition, e->docume nt().inputEncoding());
616 styleSheet->contents()->parseStringAtPosition(text, startPosition, createdBy Parser); 620 styleSheet->contents()->parseStringAtPosition(text, startPosition, createdBy Parser);
617 return styleSheet; 621 return styleSheet;
618 } 622 }
619 623
620 void StyleEngine::removeSheet(StyleSheetContents* contents) 624 void StyleEngine::removeSheet(StyleSheetContents* contents)
621 { 625 {
622 HashMap<StyleSheetContents*, AtomicString>::iterator it = m_sheetToTextCache .find(contents); 626 WillBeHeapHashMap<RawPtrWillBeMember<StyleSheetContents>, AtomicString>::ite rator it = m_sheetToTextCache.find(contents);
623 if (it == m_sheetToTextCache.end()) 627 if (it == m_sheetToTextCache.end())
624 return; 628 return;
625 629
626 m_textToSheetCache.remove(it->value); 630 m_textToSheetCache.remove(it->value);
627 m_sheetToTextCache.remove(contents); 631 m_sheetToTextCache.remove(contents);
628 } 632 }
629 633
630 void StyleEngine::trace(Visitor* visitor) 634 void StyleEngine::trace(Visitor* visitor)
631 { 635 {
632 visitor->trace(m_injectedAuthorStyleSheets); 636 visitor->trace(m_injectedAuthorStyleSheets);
633 visitor->trace(m_authorStyleSheets); 637 visitor->trace(m_authorStyleSheets);
634 visitor->trace(m_documentStyleSheetCollection); 638 visitor->trace(m_documentStyleSheetCollection);
635 visitor->trace(m_styleSheetCollectionMap); 639 visitor->trace(m_styleSheetCollectionMap);
640 visitor->trace(m_resolver);
641 visitor->trace(m_textToSheetCache);
642 visitor->trace(m_sheetToTextCache);
636 } 643 }
637 644
638 } 645 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698