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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 bool ruleSetsCustomProperty = false; | 110 bool ruleSetsCustomProperty = false; |
111 if (!state.style()->variables()) | 111 if (!state.style()->variables()) |
112 return false; | 112 return false; |
113 for (const auto& matchedProperties : range) { | 113 for (const auto& matchedProperties : range) { |
114 const StylePropertySet& properties = *matchedProperties.properties; | 114 const StylePropertySet& properties = *matchedProperties.properties; |
115 unsigned propertyCount = properties.propertyCount(); | 115 unsigned propertyCount = properties.propertyCount(); |
116 for (unsigned i = 0; i < propertyCount; ++i) { | 116 for (unsigned i = 0; i < propertyCount; ++i) { |
117 StylePropertySet::PropertyReference current = properties.propertyAt(
i); | 117 StylePropertySet::PropertyReference current = properties.propertyAt(
i); |
118 if (current.id() != CSSPropertyApplyAtRule) | 118 if (current.id() != CSSPropertyApplyAtRule) |
119 continue; | 119 continue; |
120 AtomicString name(toCSSCustomIdentValue(current.value())->value()); | 120 AtomicString name(toCSSCustomIdentValue(current.value()).value()); |
121 CSSVariableData* variableData = state.style()->variables()->getVaria
ble(name); | 121 CSSVariableData* variableData = state.style()->variables()->getVaria
ble(name); |
122 if (!variableData) | 122 if (!variableData) |
123 continue; | 123 continue; |
124 StylePropertySet* customPropertySet = variableData->propertySet(); | 124 StylePropertySet* customPropertySet = variableData->propertySet(); |
125 if (!customPropertySet) | 125 if (!customPropertySet) |
126 continue; | 126 continue; |
127 if (customPropertySet->findPropertyIndex(CSSPropertyVariable) != -1) | 127 if (customPropertySet->findPropertyIndex(CSSPropertyVariable) != -1) |
128 ruleSetsCustomProperty = true; | 128 ruleSetsCustomProperty = true; |
129 state.setCustomPropertySetForApplyAtRule(name, customPropertySet); | 129 state.setCustomPropertySetForApplyAtRule(name, customPropertySet); |
130 } | 130 } |
(...skipping 1257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1388 if (propertyWhitelistType == PropertyWhitelistCue) | 1388 if (propertyWhitelistType == PropertyWhitelistCue) |
1389 return isValidCueStyleProperty(property) && !shouldIgnoreTextTrackAuthor
Style(document); | 1389 return isValidCueStyleProperty(property) && !shouldIgnoreTextTrackAuthor
Style(document); |
1390 | 1390 |
1391 ASSERT_NOT_REACHED(); | 1391 ASSERT_NOT_REACHED(); |
1392 return true; | 1392 return true; |
1393 } | 1393 } |
1394 | 1394 |
1395 // This method expands the 'all' shorthand property to longhand properties | 1395 // This method expands the 'all' shorthand property to longhand properties |
1396 // and applies the expanded longhand properties. | 1396 // and applies the expanded longhand properties. |
1397 template <CSSPropertyPriority priority> | 1397 template <CSSPropertyPriority priority> |
1398 void StyleResolver::applyAllProperty(StyleResolverState& state, const CSSValue*
allValue, bool inheritedOnly, PropertyWhitelistType propertyWhitelistType) | 1398 void StyleResolver::applyAllProperty(StyleResolverState& state, const CSSValue&
allValue, bool inheritedOnly, PropertyWhitelistType propertyWhitelistType) |
1399 { | 1399 { |
1400 // The 'all' property doesn't apply to variables: | 1400 // The 'all' property doesn't apply to variables: |
1401 // https://drafts.csswg.org/css-variables/#defining-variables | 1401 // https://drafts.csswg.org/css-variables/#defining-variables |
1402 if (priority == ResolveVariables) | 1402 if (priority == ResolveVariables) |
1403 return; | 1403 return; |
1404 | 1404 |
1405 unsigned startCSSProperty = CSSPropertyPriorityData<priority>::first(); | 1405 unsigned startCSSProperty = CSSPropertyPriorityData<priority>::first(); |
1406 unsigned endCSSProperty = CSSPropertyPriorityData<priority>::last(); | 1406 unsigned endCSSProperty = CSSPropertyPriorityData<priority>::last(); |
1407 | 1407 |
1408 for (unsigned i = startCSSProperty; i <= endCSSProperty; ++i) { | 1408 for (unsigned i = startCSSProperty; i <= endCSSProperty; ++i) { |
(...skipping 13 matching lines...) Expand all Loading... |
1422 continue; | 1422 continue; |
1423 | 1423 |
1424 if (!isPropertyInWhitelist(propertyWhitelistType, propertyId, document()
)) | 1424 if (!isPropertyInWhitelist(propertyWhitelistType, propertyId, document()
)) |
1425 continue; | 1425 continue; |
1426 | 1426 |
1427 // When hitting matched properties' cache, only inherited properties wil
l be | 1427 // When hitting matched properties' cache, only inherited properties wil
l be |
1428 // applied. | 1428 // applied. |
1429 if (inheritedOnly && !CSSPropertyMetadata::isInheritedProperty(propertyI
d)) | 1429 if (inheritedOnly && !CSSPropertyMetadata::isInheritedProperty(propertyI
d)) |
1430 continue; | 1430 continue; |
1431 | 1431 |
1432 StyleBuilder::applyProperty(propertyId, state, *allValue); | 1432 StyleBuilder::applyProperty(propertyId, state, allValue); |
1433 } | 1433 } |
1434 } | 1434 } |
1435 | 1435 |
1436 template <CSSPropertyPriority priority> | 1436 template <CSSPropertyPriority priority> |
1437 void StyleResolver::applyPropertiesForApplyAtRule(StyleResolverState& state, con
st CSSValue* value, bool isImportant, bool inheritedOnly, PropertyWhitelistType
propertyWhitelistType) | 1437 void StyleResolver::applyPropertiesForApplyAtRule(StyleResolverState& state, con
st CSSValue& value, bool isImportant, bool inheritedOnly, PropertyWhitelistType
propertyWhitelistType) |
1438 { | 1438 { |
1439 if (!state.style()->variables()) | 1439 if (!state.style()->variables()) |
1440 return; | 1440 return; |
1441 const String& name = toCSSCustomIdentValue(value)->value(); | 1441 const String& name = toCSSCustomIdentValue(value).value(); |
1442 const StylePropertySet* propertySet = state.customPropertySetForApplyAtRule(
name); | 1442 const StylePropertySet* propertySet = state.customPropertySetForApplyAtRule(
name); |
1443 if (propertySet) | 1443 if (propertySet) |
1444 applyProperties<priority>(state, propertySet, isImportant, inheritedOnly
, propertyWhitelistType); | 1444 applyProperties<priority>(state, propertySet, isImportant, inheritedOnly
, propertyWhitelistType); |
1445 } | 1445 } |
1446 | 1446 |
1447 template <CSSPropertyPriority priority> | 1447 template <CSSPropertyPriority priority> |
1448 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) |
1449 { | 1449 { |
1450 unsigned propertyCount = properties->propertyCount(); | 1450 unsigned propertyCount = properties->propertyCount(); |
1451 for (unsigned i = 0; i < propertyCount; ++i) { | 1451 for (unsigned i = 0; i < propertyCount; ++i) { |
(...skipping 13 matching lines...) Expand all Loading... |
1465 continue; | 1465 continue; |
1466 } | 1466 } |
1467 | 1467 |
1468 if (!isPropertyInWhitelist(propertyWhitelistType, property, document())) | 1468 if (!isPropertyInWhitelist(propertyWhitelistType, property, document())) |
1469 continue; | 1469 continue; |
1470 | 1470 |
1471 if (inheritedOnly && !current.isInherited()) { | 1471 if (inheritedOnly && !current.isInherited()) { |
1472 // If the property value is explicitly inherited, we need to apply f
urther non-inherited properties | 1472 // If the property value is explicitly inherited, we need to apply f
urther non-inherited properties |
1473 // as they might override the value inherited here. For this reason
we don't allow declarations with | 1473 // as they might override the value inherited here. For this reason
we don't allow declarations with |
1474 // explicitly inherited properties to be cached. | 1474 // explicitly inherited properties to be cached. |
1475 ASSERT(!current.value()->isInheritedValue()); | 1475 DCHECK(!current.value().isInheritedValue()); |
1476 continue; | 1476 continue; |
1477 } | 1477 } |
1478 | 1478 |
1479 if (!CSSPropertyPriorityData<priority>::propertyHasPriority(property)) | 1479 if (!CSSPropertyPriorityData<priority>::propertyHasPriority(property)) |
1480 continue; | 1480 continue; |
1481 | 1481 |
1482 StyleBuilder::applyProperty(current.id(), state, *current.value()); | 1482 StyleBuilder::applyProperty(current.id(), state, current.value()); |
1483 } | 1483 } |
1484 } | 1484 } |
1485 | 1485 |
1486 template <CSSPropertyPriority priority> | 1486 template <CSSPropertyPriority priority> |
1487 void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
hedPropertiesRange& range, bool isImportant, bool inheritedOnly) | 1487 void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
hedPropertiesRange& range, bool isImportant, bool inheritedOnly) |
1488 { | 1488 { |
1489 if (range.isEmpty()) | 1489 if (range.isEmpty()) |
1490 return; | 1490 return; |
1491 | 1491 |
1492 if (state.style()->insideLink() != NotInsideLink) { | 1492 if (state.style()->insideLink() != NotInsideLink) { |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1746 visitor->trace(m_siblingRuleSet); | 1746 visitor->trace(m_siblingRuleSet); |
1747 visitor->trace(m_uncommonAttributeRuleSet); | 1747 visitor->trace(m_uncommonAttributeRuleSet); |
1748 visitor->trace(m_watchedSelectorsRules); | 1748 visitor->trace(m_watchedSelectorsRules); |
1749 visitor->trace(m_treeBoundaryCrossingScopes); | 1749 visitor->trace(m_treeBoundaryCrossingScopes); |
1750 visitor->trace(m_styleSharingLists); | 1750 visitor->trace(m_styleSharingLists); |
1751 visitor->trace(m_pendingStyleSheets); | 1751 visitor->trace(m_pendingStyleSheets); |
1752 visitor->trace(m_document); | 1752 visitor->trace(m_document); |
1753 } | 1753 } |
1754 | 1754 |
1755 } // namespace blink | 1755 } // namespace blink |
OLD | NEW |