OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
All rights reserved. |
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 #include "core/dom/shadow/ShadowRoot.h" | 79 #include "core/dom/shadow/ShadowRoot.h" |
80 #include "core/frame/FrameView.h" | 80 #include "core/frame/FrameView.h" |
81 #include "core/frame/LocalFrame.h" | 81 #include "core/frame/LocalFrame.h" |
82 #include "core/frame/Settings.h" | 82 #include "core/frame/Settings.h" |
83 #include "core/frame/UseCounter.h" | 83 #include "core/frame/UseCounter.h" |
84 #include "core/html/HTMLIFrameElement.h" | 84 #include "core/html/HTMLIFrameElement.h" |
85 #include "core/html/HTMLSlotElement.h" | 85 #include "core/html/HTMLSlotElement.h" |
86 #include "core/inspector/InspectorInstrumentation.h" | 86 #include "core/inspector/InspectorInstrumentation.h" |
87 #include "core/layout/GeneratedChildren.h" | 87 #include "core/layout/GeneratedChildren.h" |
88 #include "core/layout/api/LayoutViewItem.h" | 88 #include "core/layout/api/LayoutViewItem.h" |
89 #include "core/style/StyleVariableData.h" | 89 #include "core/style/StyleInheritedVariables.h" |
90 #include "core/svg/SVGDocumentExtensions.h" | 90 #include "core/svg/SVGDocumentExtensions.h" |
91 #include "core/svg/SVGElement.h" | 91 #include "core/svg/SVGElement.h" |
92 #include "platform/RuntimeEnabledFeatures.h" | 92 #include "platform/RuntimeEnabledFeatures.h" |
93 #include "wtf/StdLibExtras.h" | 93 #include "wtf/StdLibExtras.h" |
94 | 94 |
95 namespace { | 95 namespace { |
96 | 96 |
97 using namespace blink; | 97 using namespace blink; |
98 | 98 |
99 void setAnimationUpdateIfNeeded(StyleResolverState& state, Element& element) | 99 void setAnimationUpdateIfNeeded(StyleResolverState& state, Element& element) |
100 { | 100 { |
101 // If any changes to CSS Animations were detected, stash the update away for
application after the | 101 // If any changes to CSS Animations were detected, stash the update away for
application after the |
102 // layout object is updated if we're in the appropriate scope. | 102 // layout object is updated if we're in the appropriate scope. |
103 if (!state.animationUpdate().isEmpty()) | 103 if (!state.animationUpdate().isEmpty()) |
104 element.ensureElementAnimations().cssAnimations().setPendingUpdate(state
.animationUpdate()); | 104 element.ensureElementAnimations().cssAnimations().setPendingUpdate(state
.animationUpdate()); |
105 } | 105 } |
106 | 106 |
107 // Returns whether any @apply rule sets a custom property | 107 // Returns whether any @apply rule sets a custom property |
108 bool cacheCustomPropertiesForApplyAtRules(StyleResolverState& state, const Match
edPropertiesRange& range) | 108 bool cacheCustomPropertiesForApplyAtRules(StyleResolverState& state, const Match
edPropertiesRange& range) |
109 { | 109 { |
110 bool ruleSetsCustomProperty = false; | 110 bool ruleSetsCustomProperty = false; |
111 if (!state.style()->variables()) | 111 // TODO(timloh): @apply should also work with properties registered as non-i
nherited. |
| 112 if (!state.style()->inheritedVariables()) |
112 return false; | 113 return false; |
113 for (const auto& matchedProperties : range) { | 114 for (const auto& matchedProperties : range) { |
114 const StylePropertySet& properties = *matchedProperties.properties; | 115 const StylePropertySet& properties = *matchedProperties.properties; |
115 unsigned propertyCount = properties.propertyCount(); | 116 unsigned propertyCount = properties.propertyCount(); |
116 for (unsigned i = 0; i < propertyCount; ++i) { | 117 for (unsigned i = 0; i < propertyCount; ++i) { |
117 StylePropertySet::PropertyReference current = properties.propertyAt(
i); | 118 StylePropertySet::PropertyReference current = properties.propertyAt(
i); |
118 if (current.id() != CSSPropertyApplyAtRule) | 119 if (current.id() != CSSPropertyApplyAtRule) |
119 continue; | 120 continue; |
120 AtomicString name(toCSSCustomIdentValue(current.value()).value()); | 121 AtomicString name(toCSSCustomIdentValue(current.value()).value()); |
121 CSSVariableData* variableData = state.style()->variables()->getVaria
ble(name); | 122 CSSVariableData* variableData = state.style()->inheritedVariables()-
>getVariable(name); |
122 if (!variableData) | 123 if (!variableData) |
123 continue; | 124 continue; |
124 StylePropertySet* customPropertySet = variableData->propertySet(); | 125 StylePropertySet* customPropertySet = variableData->propertySet(); |
125 if (!customPropertySet) | 126 if (!customPropertySet) |
126 continue; | 127 continue; |
127 if (customPropertySet->findPropertyIndex(CSSPropertyVariable) != -1) | 128 if (customPropertySet->findPropertyIndex(CSSPropertyVariable) != -1) |
128 ruleSetsCustomProperty = true; | 129 ruleSetsCustomProperty = true; |
129 state.setCustomPropertySetForApplyAtRule(name, customPropertySet); | 130 state.setCustomPropertySetForApplyAtRule(name, customPropertySet); |
130 } | 131 } |
131 } | 132 } |
(...skipping 1295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1427 continue; | 1428 continue; |
1428 | 1429 |
1429 StyleBuilder::applyProperty(propertyId, state, allValue); | 1430 StyleBuilder::applyProperty(propertyId, state, allValue); |
1430 } | 1431 } |
1431 } | 1432 } |
1432 | 1433 |
1433 template <CSSPropertyPriority priority> | 1434 template <CSSPropertyPriority priority> |
1434 void StyleResolver::applyPropertiesForApplyAtRule(StyleResolverState& state, con
st CSSValue& value, bool isImportant, PropertyWhitelistType propertyWhitelistTyp
e) | 1435 void StyleResolver::applyPropertiesForApplyAtRule(StyleResolverState& state, con
st CSSValue& value, bool isImportant, PropertyWhitelistType propertyWhitelistTyp
e) |
1435 { | 1436 { |
1436 state.style()->setHasVariableReferenceFromNonInheritedProperty(); | 1437 state.style()->setHasVariableReferenceFromNonInheritedProperty(); |
1437 if (!state.style()->variables()) | 1438 if (!state.style()->inheritedVariables()) |
1438 return; | 1439 return; |
1439 const String& name = toCSSCustomIdentValue(value).value(); | 1440 const String& name = toCSSCustomIdentValue(value).value(); |
1440 const StylePropertySet* propertySet = state.customPropertySetForApplyAtRule(
name); | 1441 const StylePropertySet* propertySet = state.customPropertySetForApplyAtRule(
name); |
1441 bool inheritedOnly = false; | 1442 bool inheritedOnly = false; |
1442 if (propertySet) | 1443 if (propertySet) |
1443 applyProperties<priority>(state, propertySet, isImportant, inheritedOnly
, propertyWhitelistType); | 1444 applyProperties<priority>(state, propertySet, isImportant, inheritedOnly
, propertyWhitelistType); |
1444 } | 1445 } |
1445 | 1446 |
1446 template <CSSPropertyPriority priority> | 1447 template <CSSPropertyPriority priority> |
1447 void StyleResolver::applyProperties(StyleResolverState& state, const StyleProper
tySet* properties, bool isImportant, bool inheritedOnly, PropertyWhitelistType p
ropertyWhitelistType) | 1448 void StyleResolver::applyProperties(StyleResolverState& state, const StyleProper
tySet* properties, bool isImportant, bool inheritedOnly, PropertyWhitelistType p
ropertyWhitelistType) |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1744 visitor->trace(m_siblingRuleSet); | 1745 visitor->trace(m_siblingRuleSet); |
1745 visitor->trace(m_uncommonAttributeRuleSet); | 1746 visitor->trace(m_uncommonAttributeRuleSet); |
1746 visitor->trace(m_watchedSelectorsRules); | 1747 visitor->trace(m_watchedSelectorsRules); |
1747 visitor->trace(m_treeBoundaryCrossingScopes); | 1748 visitor->trace(m_treeBoundaryCrossingScopes); |
1748 visitor->trace(m_styleSharingLists); | 1749 visitor->trace(m_styleSharingLists); |
1749 visitor->trace(m_pendingStyleSheets); | 1750 visitor->trace(m_pendingStyleSheets); |
1750 visitor->trace(m_document); | 1751 visitor->trace(m_document); |
1751 } | 1752 } |
1752 | 1753 |
1753 } // namespace blink | 1754 } // namespace blink |
OLD | NEW |