diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h | 100 |
1 files changed, 19 insertions, 81 deletions
diff --git a/chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h b/chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h index 9c9023355ab..0f23d61d4ab 100644 --- a/chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h +++ b/chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h @@ -28,104 +28,42 @@ #ifndef StyleSheetCollection_h #define StyleSheetCollection_h -#include "core/dom/Document.h" -#include "core/dom/DocumentOrderedList.h" -#include "core/dom/StyleSheetScopingNodeList.h" -#include "core/dom/TreeScope.h" +#include "platform/heap/Handle.h" #include "wtf/FastAllocBase.h" -#include "wtf/HashMap.h" -#include "wtf/ListHashSet.h" #include "wtf/RefPtr.h" #include "wtf/Vector.h" -#include "wtf/text/WTFString.h" namespace WebCore { -class ContainerNode; class CSSStyleSheet; -class StyleEngine; -class Node; class StyleSheet; -class StyleSheetContents; -class StyleSheetList; -// FIXME: Should be in separate file and be renamed like: -// - StyleSheetCollectionBase -> StyleSheetCollection -// - StyleSheetCollection -> ScopeStyleSheetCollection -// -class StyleSheetCollectionBase { - WTF_MAKE_NONCOPYABLE(StyleSheetCollectionBase); WTF_MAKE_FAST_ALLOCATED; +class StyleSheetCollection : public NoBaseWillBeGarbageCollectedFinalized<StyleSheetCollection> { + WTF_MAKE_NONCOPYABLE(StyleSheetCollection); + WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; public: - StyleSheetCollectionBase(); - ~StyleSheetCollectionBase(); + friend class ActiveDocumentStyleSheetCollector; + friend class ImportedDocumentStyleSheetCollector; - Vector<RefPtr<CSSStyleSheet> >& activeAuthorStyleSheets() { return m_activeAuthorStyleSheets; } - Vector<RefPtr<StyleSheet> >& styleSheetsForStyleSheetList() { return m_styleSheetsForStyleSheetList; } - const Vector<RefPtr<CSSStyleSheet> >& activeAuthorStyleSheets() const { return m_activeAuthorStyleSheets; } - const Vector<RefPtr<StyleSheet> >& styleSheetsForStyleSheetList() const { return m_styleSheetsForStyleSheetList; } + StyleSheetCollection(); + virtual ~StyleSheetCollection(); - void swap(StyleSheetCollectionBase&); - void appendActiveStyleSheets(const Vector<RefPtr<CSSStyleSheet> >&); + WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& activeAuthorStyleSheets() { return m_activeAuthorStyleSheets; } + WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >& styleSheetsForStyleSheetList() { return m_styleSheetsForStyleSheetList; } + const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >& activeAuthorStyleSheets() const { return m_activeAuthorStyleSheets; } + const WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >& styleSheetsForStyleSheetList() const { return m_styleSheetsForStyleSheetList; } + + void swap(StyleSheetCollection&); + void swapSheetsForSheetList(WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >&); + void appendActiveStyleSheets(const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >&); void appendActiveStyleSheet(CSSStyleSheet*); void appendSheetForList(StyleSheet*); -protected: - Vector<RefPtr<StyleSheet> > m_styleSheetsForStyleSheetList; - Vector<RefPtr<CSSStyleSheet> > m_activeAuthorStyleSheets; -}; - - -class StyleSheetCollection : public StyleSheetCollectionBase { -public: - void addStyleSheetCandidateNode(Node*, bool createdByParser); - void removeStyleSheetCandidateNode(Node*, ContainerNode* scopingNode); - bool hasStyleSheetCandidateNodes() const { return !m_styleSheetCandidateNodes.isEmpty(); } - - - bool usesRemUnits() const { return m_usesRemUnits; } - - DocumentOrderedList& styleSheetCandidateNodes() { return m_styleSheetCandidateNodes; } - DocumentOrderedList* scopingNodesForStyleScoped() { return m_scopingNodesForStyleScoped.scopingNodes(); } - ListHashSet<Node*, 4>* scopingNodesRemoved() { return m_scopingNodesForStyleScoped.scopingNodesRemoved(); } - - void clearMediaQueryRuleSetStyleSheets(); + virtual void trace(Visitor*); protected: - explicit StyleSheetCollection(TreeScope&); - - Document* document() { return m_treeScope.documentScope(); } - - enum StyleResolverUpdateType { - Reconstruct, - Reset, - Additive, - ResetStyleResolverAndFontSelector - }; - - struct StyleSheetChange { - StyleResolverUpdateType styleResolverUpdateType; - bool requiresFullStyleRecalc; - - StyleSheetChange() - : styleResolverUpdateType(Reconstruct) - , requiresFullStyleRecalc(true) { } - }; - - void analyzeStyleSheetChange(StyleResolverUpdateMode, const StyleSheetCollectionBase&, StyleSheetChange&); - void resetAllRuleSetsInTreeScope(StyleResolver*); - void updateUsesRemUnits(); - -private: - static StyleResolverUpdateType compareStyleSheets(const Vector<RefPtr<CSSStyleSheet> >& oldStyleSheets, const Vector<RefPtr<CSSStyleSheet> >& newStylesheets, Vector<StyleSheetContents*>& addedSheets); - bool activeLoadingStyleSheetLoaded(const Vector<RefPtr<CSSStyleSheet> >& newStyleSheets); - -protected: - TreeScope& m_treeScope; - bool m_hadActiveLoadingStylesheet; - bool m_usesRemUnits; - - DocumentOrderedList m_styleSheetCandidateNodes; - StyleSheetScopingNodeList m_scopingNodesForStyleScoped; + WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > m_styleSheetsForStyleSheetList; + WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > m_activeAuthorStyleSheets; }; } |