Chromium Code Reviews| Index: Source/core/dom/StyleEngine.cpp |
| diff --git a/Source/core/dom/StyleEngine.cpp b/Source/core/dom/StyleEngine.cpp |
| index 2de67f7ad04984c5061f54ba1091979247803928..5404ff653d1f098d5ea130e509afcf96c8180237 100644 |
| --- a/Source/core/dom/StyleEngine.cpp |
| +++ b/Source/core/dom/StyleEngine.cpp |
| @@ -101,6 +101,10 @@ StyleEngine::StyleEngine(Document& document) |
| StyleEngine::~StyleEngine() |
| { |
| +} |
| + |
| +void StyleEngine::detachFromDocument() |
| +{ |
| for (unsigned i = 0; i < m_injectedAuthorStyleSheets.size(); ++i) |
| m_injectedAuthorStyleSheets[i]->clearOwnerNode(); |
| for (unsigned i = 0; i < m_authorStyleSheets.size(); ++i) |
| @@ -111,6 +115,9 @@ StyleEngine::~StyleEngine() |
| if (m_resolver) |
| m_fontSelector->unregisterForInvalidationCallbacks(m_resolver.get()); |
| } |
| + m_fontSelector.clear(); |
| + m_resolver.clear(); |
| + m_styleSheetCollectionMap.clear(); |
|
haraken
2014/03/12 11:08:21
Don't you need to clear m_document, m_dirtyTreeSco
Erik Corry
2014/03/12 11:48:57
I'm clearing the RefPtrs and the OwnPtrs so that t
|
| } |
| inline Document* StyleEngine::master() |
| @@ -172,7 +179,7 @@ TreeScopeStyleSheetCollection* StyleEngine::styleSheetCollectionFor(TreeScope& t |
| return it->value.get(); |
| } |
| -const Vector<RefPtr<StyleSheet> >& StyleEngine::styleSheetsForStyleSheetList(TreeScope& treeScope) |
| +const WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >& StyleEngine::styleSheetsForStyleSheetList(TreeScope& treeScope) |
| { |
| if (treeScope == m_document) |
| return m_documentStyleSheetCollection.styleSheetsForStyleSheetList(); |
| @@ -180,7 +187,7 @@ const Vector<RefPtr<StyleSheet> >& StyleEngine::styleSheetsForStyleSheetList(Tre |
| return ensureStyleSheetCollectionFor(treeScope)->styleSheetsForStyleSheetList(); |
| } |
| -const Vector<RefPtr<CSSStyleSheet> >& StyleEngine::activeAuthorStyleSheets() const |
| +const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& StyleEngine::activeAuthorStyleSheets() const |
| { |
| return m_documentStyleSheetCollection.activeAuthorStyleSheets(); |
| } |
| @@ -200,7 +207,7 @@ void StyleEngine::resetCSSFeatureFlags(const RuleFeatureSet& features) |
| m_maxDirectAdjacentSelectors = features.maxDirectAdjacentSelectors(); |
| } |
| -const Vector<RefPtr<CSSStyleSheet> >& StyleEngine::injectedAuthorStyleSheets() const |
| +const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& StyleEngine::injectedAuthorStyleSheets() const |
| { |
| updateInjectedStyleSheetCache(); |
| return m_injectedAuthorStyleSheets; |
| @@ -224,7 +231,7 @@ void StyleEngine::updateInjectedStyleSheetCache() const |
| continue; |
| if (!URLPatternMatcher::matchesPatterns(m_document.url(), entry->whitelist())) |
| continue; |
| - RefPtr<CSSStyleSheet> groupSheet = CSSStyleSheet::createInline(const_cast<Document*>(&m_document), KURL()); |
| + RefPtrWillBeRawPtr<CSSStyleSheet> groupSheet = CSSStyleSheet::createInline(const_cast<Document*>(&m_document), KURL()); |
| m_injectedAuthorStyleSheets.append(groupSheet); |
| groupSheet->contents()->parseString(entry->source()); |
| } |
| @@ -366,7 +373,7 @@ void StyleEngine::clearMediaQueryRuleSetStyleSheets() |
| void StyleEngine::updateStyleSheetsInImport(DocumentStyleSheetCollector& parentCollector) |
| { |
| ASSERT(!isMaster()); |
| - Vector<RefPtr<StyleSheet> > sheetsForList; |
| + WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > sheetsForList; |
| ImportedDocumentStyleSheetCollector subcollector(parentCollector, sheetsForList); |
| m_documentStyleSheetCollection.collectStyleSheets(this, subcollector); |
| m_documentStyleSheetCollection.swapSheetsForSheetList(sheetsForList); |
| @@ -411,12 +418,12 @@ bool StyleEngine::updateActiveStyleSheets(StyleResolverUpdateMode updateMode) |
| return requiresFullStyleRecalc; |
| } |
| -const Vector<RefPtr<StyleSheet> > StyleEngine::activeStyleSheetsForInspector() const |
| +const WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > StyleEngine::activeStyleSheetsForInspector() const |
| { |
| if (m_activeTreeScopes.isEmpty()) |
| return m_documentStyleSheetCollection.styleSheetsForStyleSheetList(); |
| - Vector<RefPtr<StyleSheet> > activeStyleSheets; |
| + WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > activeStyleSheets; |
| activeStyleSheets.appendVector(m_documentStyleSheetCollection.styleSheetsForStyleSheetList()); |
| @@ -628,4 +635,10 @@ void StyleEngine::removeSheet(StyleSheetContents* contents) |
| sheetToTextCache().remove(contents); |
| } |
| +void StyleEngine::trace(Visitor* visitor) |
| +{ |
| + m_injectedAuthorStyleSheets.trace(visitor); |
|
haraken
2014/03/12 11:08:21
visitor->trace(m_injectedAuthorStyleSheets)
Erik Corry
2014/03/12 11:48:57
Done.
|
| + m_authorStyleSheets.trace(visitor); |
|
haraken
2014/03/12 11:08:21
visitor->trace(m_authorStyleSheets);
Erik Corry
2014/03/12 11:48:57
Done.
|
| +} |
| + |
| } |