summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h')
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/StyleSheetCollection.h100
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;
};
}