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. |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 | 96 |
97 addKeyframeRules(ruleSet); | 97 addKeyframeRules(ruleSet); |
98 addFontFaceRules(ruleSet); | 98 addFontFaceRules(ruleSet); |
99 addTreeBoundaryCrossingRules(ruleSet, &cssSheet, index); | 99 addTreeBoundaryCrossingRules(ruleSet, &cssSheet, index); |
100 treeScope().document().styleResolver()->addViewportDependentMediaQueries( | 100 treeScope().document().styleResolver()->addViewportDependentMediaQueries( |
101 ruleSet.viewportDependentMediaQueryResults()); | 101 ruleSet.viewportDependentMediaQueryResults()); |
102 treeScope().document().styleResolver()->addDeviceDependentMediaQueries( | 102 treeScope().document().styleResolver()->addDeviceDependentMediaQueries( |
103 ruleSet.deviceDependentMediaQueryResults()); | 103 ruleSet.deviceDependentMediaQueryResults()); |
104 } | 104 } |
105 | 105 |
| 106 void ScopedStyleResolver::appendActiveStyleSheets( |
| 107 unsigned index, |
| 108 const ActiveStyleSheetVector& activeSheets) { |
| 109 for (auto activeIterator = activeSheets.begin() + index; |
| 110 activeIterator != activeSheets.end(); activeIterator++) { |
| 111 CSSStyleSheet* sheet = activeIterator->first; |
| 112 if (!activeIterator->second) |
| 113 continue; |
| 114 const RuleSet& ruleSet = *activeIterator->second; |
| 115 m_authorStyleSheets.append(sheet); |
| 116 addKeyframeRules(ruleSet); |
| 117 addFontFaceRules(ruleSet); |
| 118 addTreeBoundaryCrossingRules(ruleSet, sheet, index++); |
| 119 } |
| 120 } |
| 121 |
106 void ScopedStyleResolver::collectFeaturesTo( | 122 void ScopedStyleResolver::collectFeaturesTo( |
107 RuleFeatureSet& features, | 123 RuleFeatureSet& features, |
108 HeapHashSet<Member<const StyleSheetContents>>& | 124 HeapHashSet<Member<const StyleSheetContents>>& |
109 visitedSharedStyleSheetContents) const { | 125 visitedSharedStyleSheetContents) const { |
110 for (size_t i = 0; i < m_authorStyleSheets.size(); ++i) { | 126 for (size_t i = 0; i < m_authorStyleSheets.size(); ++i) { |
111 ASSERT(m_authorStyleSheets[i]->ownerNode()); | 127 ASSERT(m_authorStyleSheets[i]->ownerNode()); |
112 StyleSheetContents* contents = m_authorStyleSheets[i]->contents(); | 128 StyleSheetContents* contents = m_authorStyleSheets[i]->contents(); |
113 if (contents->hasOneClient() || | 129 if (contents->hasOneClient() || |
114 visitedSharedStyleSheetContents.add(contents).isNewEntry) | 130 visitedSharedStyleSheetContents.add(contents).isNewEntry) |
115 features.add(contents->ruleSet().features()); | 131 features.add(contents->ruleSet().features()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 KeyframesRuleMap::iterator it = m_keyframesRuleMap.find(s.impl()); | 164 KeyframesRuleMap::iterator it = m_keyframesRuleMap.find(s.impl()); |
149 if (it == m_keyframesRuleMap.end()) | 165 if (it == m_keyframesRuleMap.end()) |
150 m_keyframesRuleMap.set(s.impl(), rule); | 166 m_keyframesRuleMap.set(s.impl(), rule); |
151 else if (it->value->isVendorPrefixed()) | 167 else if (it->value->isVendorPrefixed()) |
152 m_keyframesRuleMap.set(s.impl(), rule); | 168 m_keyframesRuleMap.set(s.impl(), rule); |
153 } else { | 169 } else { |
154 m_keyframesRuleMap.set(s.impl(), rule); | 170 m_keyframesRuleMap.set(s.impl(), rule); |
155 } | 171 } |
156 } | 172 } |
157 | 173 |
158 static Node& invalidationRootFor(const TreeScope& treeScope) { | 174 ContainerNode& ScopedStyleResolver::invalidationRootForTreeScope( |
| 175 const TreeScope& treeScope) { |
159 if (treeScope.rootNode() == treeScope.document()) | 176 if (treeScope.rootNode() == treeScope.document()) |
160 return treeScope.document(); | 177 return treeScope.document(); |
161 return toShadowRoot(treeScope.rootNode()).host(); | 178 return toShadowRoot(treeScope.rootNode()).host(); |
162 } | 179 } |
163 | 180 |
164 void ScopedStyleResolver::keyframesRulesAdded(const TreeScope& treeScope) { | 181 void ScopedStyleResolver::keyframesRulesAdded(const TreeScope& treeScope) { |
165 // Called when @keyframes rules are about to be added/removed from a | 182 // Called when @keyframes rules are about to be added/removed from a |
166 // TreeScope. @keyframes rules may apply to animations on elements in the | 183 // TreeScope. @keyframes rules may apply to animations on elements in the |
167 // same TreeScope as the stylesheet, or the host element in the parent | 184 // same TreeScope as the stylesheet, or the host element in the parent |
168 // TreeScope if the TreeScope is a shadow tree. | 185 // TreeScope if the TreeScope is a shadow tree. |
(...skipping 12 matching lines...) Expand all Loading... |
181 if (parentResolver && parentResolver->m_hasUnresolvedKeyframesRule) { | 198 if (parentResolver && parentResolver->m_hasUnresolvedKeyframesRule) { |
182 parentResolver->m_hasUnresolvedKeyframesRule = false; | 199 parentResolver->m_hasUnresolvedKeyframesRule = false; |
183 hadUnresolvedKeyframes = true; | 200 hadUnresolvedKeyframes = true; |
184 } | 201 } |
185 | 202 |
186 if (hadUnresolvedKeyframes) { | 203 if (hadUnresolvedKeyframes) { |
187 // If an animation ended up not being started because no @keyframes | 204 // If an animation ended up not being started because no @keyframes |
188 // rules were found for the animation-name, we need to recalculate style | 205 // rules were found for the animation-name, we need to recalculate style |
189 // for the elements in the scope, including its shadow host if | 206 // for the elements in the scope, including its shadow host if |
190 // applicable. | 207 // applicable. |
191 invalidationRootFor(treeScope).setNeedsStyleRecalc( | 208 invalidationRootForTreeScope(treeScope).setNeedsStyleRecalc( |
192 SubtreeStyleChange, StyleChangeReasonForTracing::create( | 209 SubtreeStyleChange, StyleChangeReasonForTracing::create( |
193 StyleChangeReason::StyleSheetChange)); | 210 StyleChangeReason::StyleSheetChange)); |
194 return; | 211 return; |
195 } | 212 } |
196 | 213 |
197 // If we have animations running, added/removed @keyframes may affect these. | 214 // If we have animations running, added/removed @keyframes may affect these. |
198 treeScope.document().timeline().invalidateKeyframeEffects(treeScope); | 215 treeScope.document().timeline().invalidateKeyframeEffects(treeScope); |
199 } | 216 } |
200 | 217 |
201 void ScopedStyleResolver::collectMatchingAuthorRules( | 218 void ScopedStyleResolver::collectMatchingAuthorRules( |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 m_treeBoundaryCrossingRuleSet->append( | 312 m_treeBoundaryCrossingRuleSet->append( |
296 RuleSubSet::create(parentStyleSheet, sheetIndex, ruleSetForScope)); | 313 RuleSubSet::create(parentStyleSheet, sheetIndex, ruleSetForScope)); |
297 } | 314 } |
298 | 315 |
299 DEFINE_TRACE(ScopedStyleResolver::RuleSubSet) { | 316 DEFINE_TRACE(ScopedStyleResolver::RuleSubSet) { |
300 visitor->trace(m_parentStyleSheet); | 317 visitor->trace(m_parentStyleSheet); |
301 visitor->trace(m_ruleSet); | 318 visitor->trace(m_ruleSet); |
302 } | 319 } |
303 | 320 |
304 } // namespace blink | 321 } // namespace blink |
OLD | NEW |