| Index: Source/core/css/resolver/ScopedStyleTree.h
|
| diff --git a/Source/core/css/resolver/ScopedStyleTree.h b/Source/core/css/resolver/ScopedStyleTree.h
|
| index 3cd27e854d05302c7502dcc79e03da9344d0cd48..2944ec6ab118dd14414dee326e14daaa8f321317 100644
|
| --- a/Source/core/css/resolver/ScopedStyleTree.h
|
| +++ b/Source/core/css/resolver/ScopedStyleTree.h
|
| @@ -35,7 +35,8 @@
|
| namespace blink {
|
|
|
| class ScopedStyleTree {
|
| - WTF_MAKE_NONCOPYABLE(ScopedStyleTree); WTF_MAKE_FAST_ALLOCATED;
|
| + WTF_MAKE_NONCOPYABLE(ScopedStyleTree);
|
| + DISALLOW_ALLOCATION();
|
| public:
|
| ScopedStyleTree();
|
| ~ScopedStyleTree();
|
| @@ -47,9 +48,9 @@ public:
|
| // for fast-path.
|
| bool hasOnlyScopedResolverForDocument() const { return m_authorStyles.size() == 1; }
|
|
|
| - void resolveScopedStyles(const Element*, Vector<ScopedStyleResolver*, 8>&);
|
| - void collectScopedResolversForHostedShadowTrees(const Element*, Vector<ScopedStyleResolver*, 8>&);
|
| - void resolveScopedKeyframesRules(const Element*, Vector<ScopedStyleResolver*, 8>&);
|
| + void resolveScopedStyles(const Element*, WillBeHeapVector<RawPtrWillBeMember<ScopedStyleResolver>, 8>&);
|
| + void collectScopedResolversForHostedShadowTrees(const Element*, WillBeHeapVector<RawPtrWillBeMember<ScopedStyleResolver>, 8>&);
|
| + void resolveScopedKeyframesRules(const Element*, WillBeHeapVector<RawPtrWillBeMember<ScopedStyleResolver>, 8>&);
|
| ScopedStyleResolver* scopedResolverFor(const Element*);
|
|
|
| void remove(const ContainerNode* scopingNode);
|
| @@ -59,28 +60,37 @@ public:
|
|
|
| void collectFeaturesTo(RuleFeatureSet& features);
|
|
|
| + void trace(Visitor*);
|
| +
|
| private:
|
| bool cacheIsValid(const ContainerNode* parent) const { return parent && parent == m_cache.nodeForScopedStyles; }
|
| void resolveStyleCache(const ContainerNode* scopingNode);
|
| ScopedStyleResolver* enclosingScopedStyleResolverFor(const ContainerNode* scopingNode);
|
|
|
| -private:
|
| - HashMap<const ContainerNode*, ScopedStyleResolver*> m_authorStyles;
|
| + WillBeHeapHashMap<RawPtrWillBeMember<const ContainerNode>, RawPtrWillBeMember<ScopedStyleResolver> > m_authorStyles;
|
|
|
| - struct ScopedStyleCache {
|
| - ScopedStyleResolver* scopedResolver;
|
| - const ContainerNode* nodeForScopedStyles;
|
| + class ScopedStyleCache {
|
| + DISALLOW_ALLOCATION();
|
| + public:
|
| + RawPtrWillBeMember<ScopedStyleResolver> scopedResolver;
|
| + RawPtrWillBeMember<const ContainerNode> nodeForScopedStyles;
|
|
|
| ScopedStyleCache()
|
| - : scopedResolver(0)
|
| - , nodeForScopedStyles(0)
|
| + : scopedResolver(nullptr)
|
| + , nodeForScopedStyles(nullptr)
|
| {
|
| }
|
|
|
| void clear()
|
| {
|
| - scopedResolver = 0;
|
| - nodeForScopedStyles = 0;
|
| + scopedResolver = nullptr;
|
| + nodeForScopedStyles = nullptr;
|
| + }
|
| +
|
| + void trace(Visitor* visitor)
|
| + {
|
| + visitor->trace(scopedResolver);
|
| + visitor->trace(nodeForScopedStyles);
|
| }
|
| };
|
| ScopedStyleCache m_cache;
|
|
|