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. | 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. |
4 * All rights reserved. | 4 * All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 class FontDescription; | 44 class FontDescription; |
45 | 45 |
46 class CORE_EXPORT StyleResolverState { | 46 class CORE_EXPORT StyleResolverState { |
47 STACK_ALLOCATED(); | 47 STACK_ALLOCATED(); |
48 WTF_MAKE_NONCOPYABLE(StyleResolverState); | 48 WTF_MAKE_NONCOPYABLE(StyleResolverState); |
49 | 49 |
50 public: | 50 public: |
51 StyleResolverState(Document&, | 51 StyleResolverState(Document&, |
52 const ElementResolveContext&, | 52 const ElementResolveContext&, |
53 const ComputedStyle* parentStyle); | 53 const ComputedStyle* parentStyle, |
54 StyleResolverState(Document&, Element*, const ComputedStyle* parentStyle = 0); | 54 const ComputedStyle* layoutParentStyle); |
| 55 StyleResolverState(Document&, |
| 56 Element*, |
| 57 const ComputedStyle* parentStyle = nullptr, |
| 58 const ComputedStyle* layoutParentStyle = nullptr); |
55 ~StyleResolverState(); | 59 ~StyleResolverState(); |
56 | 60 |
57 // In FontFaceSet and CanvasRenderingContext2D, we don't have an element to | 61 // In FontFaceSet and CanvasRenderingContext2D, we don't have an element to |
58 // grab the document from. This is why we have to store the document | 62 // grab the document from. This is why we have to store the document |
59 // separately. | 63 // separately. |
60 Document& document() const { return *m_document; } | 64 Document& document() const { return *m_document; } |
61 // These are all just pass-through methods to ElementResolveContext. | 65 // These are all just pass-through methods to ElementResolveContext. |
62 Element* element() const { return m_elementContext.element(); } | 66 Element* element() const { return m_elementContext.element(); } |
63 const ContainerNode* parentNode() const { | 67 const ContainerNode* parentNode() const { |
64 return m_elementContext.parentNode(); | 68 return m_elementContext.parentNode(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 void setIsAnimatingCustomProperties(bool value) { | 117 void setIsAnimatingCustomProperties(bool value) { |
114 m_isAnimatingCustomProperties = value; | 118 m_isAnimatingCustomProperties = value; |
115 } | 119 } |
116 | 120 |
117 void setParentStyle(PassRefPtr<ComputedStyle> parentStyle) { | 121 void setParentStyle(PassRefPtr<ComputedStyle> parentStyle) { |
118 m_parentStyle = parentStyle; | 122 m_parentStyle = parentStyle; |
119 } | 123 } |
120 const ComputedStyle* parentStyle() const { return m_parentStyle.get(); } | 124 const ComputedStyle* parentStyle() const { return m_parentStyle.get(); } |
121 ComputedStyle* parentStyle() { return m_parentStyle.get(); } | 125 ComputedStyle* parentStyle() { return m_parentStyle.get(); } |
122 | 126 |
| 127 void setLayoutParentStyle(PassRefPtr<ComputedStyle> parentStyle) { |
| 128 m_layoutParentStyle = parentStyle; |
| 129 } |
| 130 const ComputedStyle* layoutParentStyle() const { |
| 131 return m_layoutParentStyle.get(); |
| 132 } |
| 133 |
123 // FIXME: These are effectively side-channel "out parameters" for the various | 134 // FIXME: These are effectively side-channel "out parameters" for the various |
124 // map functions. When we map from CSS to style objects we use this state | 135 // map functions. When we map from CSS to style objects we use this state |
125 // object to track various meta-data about that mapping (e.g. if it's | 136 // object to track various meta-data about that mapping (e.g. if it's |
126 // cache-able). We need to move this data off of StyleResolverState and | 137 // cache-able). We need to move this data off of StyleResolverState and |
127 // closer to the objects it applies to. Possibly separating (immutable) inputs | 138 // closer to the objects it applies to. Possibly separating (immutable) inputs |
128 // from (mutable) outputs. | 139 // from (mutable) outputs. |
129 void setApplyPropertyToRegularStyle(bool isApply) { | 140 void setApplyPropertyToRegularStyle(bool isApply) { |
130 m_applyPropertyToRegularStyle = isApply; | 141 m_applyPropertyToRegularStyle = isApply; |
131 } | 142 } |
132 void setApplyPropertyToVisitedLinkStyle(bool isApply) { | 143 void setApplyPropertyToVisitedLinkStyle(bool isApply) { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 Member<Document> m_document; | 220 Member<Document> m_document; |
210 | 221 |
211 // m_style is the primary output for each element's style resolve. | 222 // m_style is the primary output for each element's style resolve. |
212 RefPtr<ComputedStyle> m_style; | 223 RefPtr<ComputedStyle> m_style; |
213 | 224 |
214 CSSToLengthConversionData m_cssToLengthConversionData; | 225 CSSToLengthConversionData m_cssToLengthConversionData; |
215 | 226 |
216 // m_parentStyle is not always just ElementResolveContext::parentStyle, | 227 // m_parentStyle is not always just ElementResolveContext::parentStyle, |
217 // so we keep it separate. | 228 // so we keep it separate. |
218 RefPtr<ComputedStyle> m_parentStyle; | 229 RefPtr<ComputedStyle> m_parentStyle; |
| 230 // This will almost-always be the same that m_parentStyle, except in the |
| 231 // presence of display: contents. This is the style against which we have to |
| 232 // do adjustment. |
| 233 RefPtr<const ComputedStyle> m_layoutParentStyle; |
219 | 234 |
220 CSSAnimationUpdate m_animationUpdate; | 235 CSSAnimationUpdate m_animationUpdate; |
221 bool m_isAnimationInterpolationMapReady; | 236 bool m_isAnimationInterpolationMapReady; |
222 bool m_isAnimatingCustomProperties; | 237 bool m_isAnimatingCustomProperties; |
223 | 238 |
224 bool m_applyPropertyToRegularStyle; | 239 bool m_applyPropertyToRegularStyle; |
225 bool m_applyPropertyToVisitedLinkStyle; | 240 bool m_applyPropertyToVisitedLinkStyle; |
226 bool m_hasDirAutoAttribute; | 241 bool m_hasDirAutoAttribute; |
227 | 242 |
228 FontBuilder m_fontBuilder; | 243 FontBuilder m_fontBuilder; |
229 | 244 |
230 std::unique_ptr<CachedUAStyle> m_cachedUAStyle; | 245 std::unique_ptr<CachedUAStyle> m_cachedUAStyle; |
231 | 246 |
232 ElementStyleResources m_elementStyleResources; | 247 ElementStyleResources m_elementStyleResources; |
233 | 248 |
234 HeapHashMap<String, Member<StylePropertySet>> | 249 HeapHashMap<String, Member<StylePropertySet>> |
235 m_customPropertySetsForApplyAtRule; | 250 m_customPropertySetsForApplyAtRule; |
236 | 251 |
237 mutable HeapHashMap< | 252 mutable HeapHashMap< |
238 Member<const CSSPendingSubstitutionValue>, | 253 Member<const CSSPendingSubstitutionValue>, |
239 Member<HeapHashMap<CSSPropertyID, Member<const CSSValue>>>> | 254 Member<HeapHashMap<CSSPropertyID, Member<const CSSValue>>>> |
240 m_parsedPropertiesForPendingSubstitutionCache; | 255 m_parsedPropertiesForPendingSubstitutionCache; |
241 }; | 256 }; |
242 | 257 |
243 } // namespace blink | 258 } // namespace blink |
244 | 259 |
245 #endif // StyleResolverState_h | 260 #endif // StyleResolverState_h |
OLD | NEW |