| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 
| 3  * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
      All rights reserved. | 3  * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
      All rights reserved. | 
| 4  * Copyright (C) 2012 Google Inc. All rights reserved. | 4  * Copyright (C) 2012 Google Inc. All rights reserved. | 
| 5  * | 5  * | 
| 6  * Redistribution and use in source and binary forms, with or without | 6  * Redistribution and use in source and binary forms, with or without | 
| 7  * modification, are permitted provided that the following conditions | 7  * modification, are permitted provided that the following conditions | 
| 8  * are met: | 8  * are met: | 
| 9  * 1.  Redistributions of source code must retain the above copyright | 9  * 1.  Redistributions of source code must retain the above copyright | 
| 10  *     notice, this list of conditions and the following disclaimer. | 10  *     notice, this list of conditions and the following disclaimer. | 
| 11  * 2.  Redistributions in binary form must reproduce the above copyright | 11  * 2.  Redistributions in binary form must reproduce the above copyright | 
| 12  *     notice, this list of conditions and the following disclaimer in the | 12  *     notice, this list of conditions and the following disclaimer in the | 
| 13  *     documentation and/or other materials provided with the distribution. | 13  *     documentation and/or other materials provided with the distribution. | 
| 14  * | 14  * | 
| 15  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
     Y | 15  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
     Y | 
| 16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 
| 17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 
| 18  * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
     Y | 18  * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
     Y | 
| 19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 
| 20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 
| 21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
     N | 21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
     N | 
| 22  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| 23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 
| 24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 25  */ | 25  */ | 
| 26 | 26 | 
| 27 #ifndef ScopedStyleResolver_h | 27 #ifndef ScopedStyleResolver_h | 
| 28 #define ScopedStyleResolver_h | 28 #define ScopedStyleResolver_h | 
| 29 | 29 | 
|  | 30 #include "core/css/ActiveStyleSheets.h" | 
| 30 #include "core/css/ElementRuleCollector.h" | 31 #include "core/css/ElementRuleCollector.h" | 
| 31 #include "core/css/RuleSet.h" | 32 #include "core/css/RuleSet.h" | 
| 32 #include "core/dom/TreeScope.h" | 33 #include "core/dom/TreeScope.h" | 
| 33 #include "wtf/HashMap.h" | 34 #include "wtf/HashMap.h" | 
| 34 #include "wtf/HashSet.h" | 35 #include "wtf/HashSet.h" | 
| 35 #include "wtf/OwnPtr.h" | 36 #include "wtf/OwnPtr.h" | 
| 36 #include "wtf/PassOwnPtr.h" | 37 #include "wtf/PassOwnPtr.h" | 
| 37 | 38 | 
| 38 namespace blink { | 39 namespace blink { | 
| 39 | 40 | 
| 40 class PageRuleCollector; | 41 class PageRuleCollector; | 
| 41 class StyleSheetContents; | 42 class StyleSheetContents; | 
| 42 class ViewportStyleResolver; |  | 
| 43 | 43 | 
| 44 // This class selects a ComputedStyle for a given element based on a collection 
     of stylesheets. | 44 // This class selects a ComputedStyle for a given element based on a collection 
     of stylesheets. | 
| 45 class ScopedStyleResolver final : public GarbageCollected<ScopedStyleResolver> { | 45 class ScopedStyleResolver final : public GarbageCollected<ScopedStyleResolver> { | 
| 46     WTF_MAKE_NONCOPYABLE(ScopedStyleResolver); | 46     WTF_MAKE_NONCOPYABLE(ScopedStyleResolver); | 
| 47 public: | 47 public: | 
| 48     static ScopedStyleResolver* create(TreeScope& scope) | 48     static ScopedStyleResolver* create(TreeScope& scope) | 
| 49     { | 49     { | 
| 50         return new ScopedStyleResolver(scope); | 50         return new ScopedStyleResolver(scope); | 
| 51     } | 51     } | 
| 52 | 52 | 
| 53     const TreeScope& treeScope() const { return *m_scope; } | 53     const TreeScope& treeScope() const { return *m_scope; } | 
| 54     ScopedStyleResolver* parent() const; | 54     ScopedStyleResolver* parent() const; | 
| 55 | 55 | 
| 56     StyleRuleKeyframes* keyframeStylesForAnimation(const StringImpl* animationNa
     me); | 56     StyleRuleKeyframes* keyframeStylesForAnimation(const StringImpl* animationNa
     me); | 
| 57 | 57 | 
| 58     void appendCSSStyleSheet(CSSStyleSheet&, const MediaQueryEvaluator&); | 58     void appendActiveStyleSheets(unsigned index, const ActiveStyleSheetVector&); | 
| 59     void collectMatchingAuthorRules(ElementRuleCollector&, CascadeOrder = ignore
     CascadeOrder); | 59     void collectMatchingAuthorRules(ElementRuleCollector&, CascadeOrder = ignore
     CascadeOrder); | 
| 60     void collectMatchingShadowHostRules(ElementRuleCollector&, CascadeOrder = ig
     noreCascadeOrder); | 60     void collectMatchingShadowHostRules(ElementRuleCollector&, CascadeOrder = ig
     noreCascadeOrder); | 
| 61     void collectMatchingTreeBoundaryCrossingRules(ElementRuleCollector&, Cascade
     Order = ignoreCascadeOrder); | 61     void collectMatchingTreeBoundaryCrossingRules(ElementRuleCollector&, Cascade
     Order = ignoreCascadeOrder); | 
| 62     void matchPageRules(PageRuleCollector&); | 62     void matchPageRules(PageRuleCollector&); | 
| 63     void collectFeaturesTo(RuleFeatureSet&, HeapHashSet<Member<const StyleSheetC
     ontents>>& visitedSharedStyleSheetContents) const; | 63     void collectFeaturesTo(RuleFeatureSet&, HeapHashSet<Member<const StyleSheetC
     ontents>>& visitedSharedStyleSheetContents) const; | 
| 64     void resetAuthorStyle(); | 64     void resetAuthorStyle(); | 
| 65     void collectViewportRulesTo(ViewportStyleResolver*) const; |  | 
| 66     bool hasDeepOrShadowSelector() const { return m_hasDeepOrShadowSelector; } | 65     bool hasDeepOrShadowSelector() const { return m_hasDeepOrShadowSelector; } | 
| 67 | 66 | 
| 68     DECLARE_TRACE(); | 67     DECLARE_TRACE(); | 
| 69 | 68 | 
| 70 private: | 69 private: | 
| 71     explicit ScopedStyleResolver(TreeScope& scope) | 70     explicit ScopedStyleResolver(TreeScope& scope) | 
| 72         : m_scope(scope) | 71         : m_scope(scope) | 
| 73     { | 72     { | 
| 74     } | 73     } | 
| 75 | 74 | 
| 76     void addTreeBoundaryCrossingRules(const RuleSet&, CSSStyleSheet*, unsigned s
     heetIndex); | 75     void addTreeBoundaryCrossingRules(const RuleSet&, CSSStyleSheet*, unsigned s
     heetIndex); | 
| 77     void addKeyframeRules(const RuleSet&); | 76     void addKeyframeRules(const RuleSet&); | 
| 78     void addFontFaceRules(const RuleSet&); | 77     void addFontFaceRules(const RuleSet&); | 
| 79     void addKeyframeStyle(StyleRuleKeyframes*); | 78     void addKeyframeStyle(StyleRuleKeyframes*); | 
| 80 | 79 | 
| 81     Member<TreeScope> m_scope; | 80     Member<TreeScope> m_scope; | 
| 82 | 81 | 
| 83     HeapVector<Member<CSSStyleSheet>> m_authorStyleSheets; | 82     HeapVector<Member<CSSStyleSheet>> m_authorStyleSheets; | 
|  | 83     MediaQueryResultList m_viewportDependentMediaQueryResults; | 
|  | 84     MediaQueryResultList m_deviceDependentMediaQueryResults; | 
| 84 | 85 | 
| 85     using KeyframesRuleMap = HeapHashMap<const StringImpl*, Member<StyleRuleKeyf
     rames>>; | 86     using KeyframesRuleMap = HeapHashMap<const StringImpl*, Member<StyleRuleKeyf
     rames>>; | 
| 86     KeyframesRuleMap m_keyframesRuleMap; | 87     KeyframesRuleMap m_keyframesRuleMap; | 
| 87 | 88 | 
| 88     class RuleSubSet final : public GarbageCollected<RuleSubSet> { | 89     class RuleSubSet final : public GarbageCollected<RuleSubSet> { | 
| 89     public: | 90     public: | 
| 90         static RuleSubSet* create(CSSStyleSheet* sheet, unsigned index, RuleSet*
      rules) | 91         static RuleSubSet* create(CSSStyleSheet* sheet, unsigned index, RuleSet*
      rules) | 
| 91         { | 92         { | 
| 92             return new RuleSubSet(sheet, index, rules); | 93             return new RuleSubSet(sheet, index, rules); | 
| 93         } | 94         } | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 108     }; | 109     }; | 
| 109     using CSSStyleSheetRuleSubSet = HeapVector<Member<RuleSubSet>>; | 110     using CSSStyleSheetRuleSubSet = HeapVector<Member<RuleSubSet>>; | 
| 110 | 111 | 
| 111     Member<CSSStyleSheetRuleSubSet> m_treeBoundaryCrossingRuleSet; | 112     Member<CSSStyleSheetRuleSubSet> m_treeBoundaryCrossingRuleSet; | 
| 112     bool m_hasDeepOrShadowSelector = false; | 113     bool m_hasDeepOrShadowSelector = false; | 
| 113 }; | 114 }; | 
| 114 | 115 | 
| 115 } // namespace blink | 116 } // namespace blink | 
| 116 | 117 | 
| 117 #endif // ScopedStyleResolver_h | 118 #endif // ScopedStyleResolver_h | 
| OLD | NEW | 
|---|