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.
|
+} |
+ |
} |