Changeset 200769 in webkit
- Timestamp:
- May 12, 2016, 5:47:21 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 12 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/animations/fill-mode-forwards-zero-duration.html (modified) (1 diff)
-
LayoutTests/animations/play-state-start-paused.html (modified) (2 diffs)
-
LayoutTests/animations/unprefixed-properties-expected.txt (modified) (22 diffs)
-
LayoutTests/animations/unprefixed-properties.html (modified) (1 diff)
-
LayoutTests/fast/css/prefixed-unprefixed-variant-style-declaration-expected.txt (added)
-
LayoutTests/fast/css/prefixed-unprefixed-variant-style-declaration.html (added)
-
LayoutTests/fast/css/shorthand-omitted-initial-value-overrides-shorthand-expected.txt (added)
-
LayoutTests/fast/css/shorthand-omitted-initial-value-overrides-shorthand.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/css/CSSParser.cpp (modified) (3 diffs)
-
Source/WebCore/css/CSSParser.h (modified) (1 diff)
-
Source/WebCore/css/CSSPropertyNames.in (modified) (1 diff)
-
Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp (modified) (3 diffs)
-
Source/WebCore/css/StyleProperties.cpp (modified) (6 diffs)
-
Source/WebCore/css/StyleProperties.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r200755 r200769 1 2016-05-12 Antoine Quint <graouts@apple.com> 2 3 Correctly handle prefixed and unprefixed variants in CSSStyleDeclaration 4 https://bugs.webkit.org/show_bug.cgi?id=157569 5 <rdar://problem/26223115> 6 7 Reviewed by Dean Jackson. 8 9 * animations/fill-mode-forwards-zero-duration.html: 10 * animations/play-state-start-paused.html: 11 These two tests incorrectly expected a shorthand property not to reset 12 longhand properties that it covers to their initial values even if left 13 out of the shorthand. 14 15 * animations/unprefixed-properties-expected.txt: 16 * animations/unprefixed-properties.html: 17 This test incorrectly expected that setting an unprefixed property only would 18 lead to reading the prefixed property through the CSSOM return the empty string, 19 rather than the value set on the unprefixed property. 20 21 * fast/css/prefixed-unprefixed-variant-style-declaration-expected.txt: Added. 22 * fast/css/prefixed-unprefixed-variant-style-declaration.html: Added. 23 New test checking that setting one of two of a property's unprefixed and prefixed 24 variants correctly allows to read the style through the CSS OM for both variants, 25 while only serializing the property that was set through cssText. 26 27 * fast/css/shorthand-omitted-initial-value-overrides-shorthand-expected.txt: Added. 28 * fast/css/shorthand-omitted-initial-value-overrides-shorthand.html: Added. 29 New test checking that setting a longhand property and then the shorthand for that 30 longhand correctly resets the initial values, even if they were omitted in the shorthand. 31 1 32 2016-05-12 Manuel Rego Casasnovas <rego@igalia.com> 2 33 -
trunk/LayoutTests/animations/fill-mode-forwards-zero-duration.html
r191540 r200769 10 10 width: 100px; 11 11 background-color: blue; 12 animation-fill-mode: forwards; 13 animation: anim1 0 2s linear; 12 animation: anim1 0 2s linear forwards; 14 13 } 15 14 @keyframes anim1 { -
trunk/LayoutTests/animations/play-state-start-paused.html
r200042 r200769 14 14 height: 100px; 15 15 background-color: green; 16 animation-delay: -0.5s;17 animation-play-state: paused;18 16 } 19 17 … … 24 22 25 23 .mover { 26 animation: move 1s linear ;24 animation: move 1s linear -0.5s paused; 27 25 } 28 26 29 27 .slider { 30 animation: slide 1s linear ;28 animation: slide 1s linear -0.5s paused; 31 29 } 32 30 -
trunk/LayoutTests/animations/unprefixed-properties-expected.txt
r187813 r200769 7 7 Parsing - Basic animation-name : waldo 8 8 PASS cssRule.type is 1 9 PASS declaration.length is 29 PASS declaration.length is 1 10 10 PASS declaration.getPropertyValue('animation-name') is 'waldo' 11 11 PASS declaration.getPropertyValue('-webkit-animation-name') is 'waldo' … … 13 13 Parsing - Multiple animation-names : waldo, wally 14 14 PASS cssRule.type is 1 15 PASS declaration.length is 215 PASS declaration.length is 1 16 16 PASS declaration.getPropertyValue('animation-name') is 'waldo, wally' 17 17 PASS declaration.getPropertyValue('-webkit-animation-name') is 'waldo, wally' … … 21 21 Parsing - Basic animation-duration : 5s 22 22 PASS cssRule.type is 1 23 PASS declaration.length is 223 PASS declaration.length is 1 24 24 PASS declaration.getPropertyValue('animation-duration') is '5s' 25 25 PASS declaration.getPropertyValue('-webkit-animation-duration') is '5s' … … 27 27 Parsing - Multiple animation-durations : 10s, 20ms 28 28 PASS cssRule.type is 1 29 PASS declaration.length is 229 PASS declaration.length is 1 30 30 PASS declaration.getPropertyValue('animation-duration') is '10s, 20ms' 31 31 PASS declaration.getPropertyValue('-webkit-animation-duration') is '10s, 20ms' … … 35 35 Parsing - Basic animation-delay : 5s 36 36 PASS cssRule.type is 1 37 PASS declaration.length is 237 PASS declaration.length is 1 38 38 PASS declaration.getPropertyValue('animation-delay') is '5s' 39 39 PASS declaration.getPropertyValue('-webkit-animation-delay') is '5s' … … 41 41 Parsing - Multiple animation-delays : 10s, 20ms 42 42 PASS cssRule.type is 1 43 PASS declaration.length is 243 PASS declaration.length is 1 44 44 PASS declaration.getPropertyValue('animation-delay') is '10s, 20ms' 45 45 PASS declaration.getPropertyValue('-webkit-animation-delay') is '10s, 20ms' … … 49 49 Parsing - Basic animation-timing-function : ease-in-out 50 50 PASS cssRule.type is 1 51 PASS declaration.length is 251 PASS declaration.length is 1 52 52 PASS declaration.getPropertyValue('animation-timing-function') is 'ease-in-out' 53 53 PASS declaration.getPropertyValue('-webkit-animation-timing-function') is 'ease-in-out' … … 55 55 Parsing - animation-timing-function with bezier : cubic-bezier(0.2, 0.3, 0.4, 0.5) 56 56 PASS cssRule.type is 1 57 PASS declaration.length is 257 PASS declaration.length is 1 58 58 PASS declaration.getPropertyValue('animation-timing-function') is 'cubic-bezier(0.2, 0.3, 0.4, 0.5)' 59 59 PASS declaration.getPropertyValue('-webkit-animation-timing-function') is 'cubic-bezier(0.2, 0.3, 0.4, 0.5)' … … 61 61 Parsing - Multiple animation-timing-functions : ease-in, ease-out 62 62 PASS cssRule.type is 1 63 PASS declaration.length is 263 PASS declaration.length is 1 64 64 PASS declaration.getPropertyValue('animation-timing-function') is 'ease-in, ease-out' 65 65 PASS declaration.getPropertyValue('-webkit-animation-timing-function') is 'ease-in, ease-out' … … 69 69 Parsing - Basic animation-iteration-count : 4 70 70 PASS cssRule.type is 1 71 PASS declaration.length is 271 PASS declaration.length is 1 72 72 PASS declaration.getPropertyValue('animation-iteration-count') is '4' 73 73 PASS declaration.getPropertyValue('-webkit-animation-iteration-count') is '4' … … 75 75 Parsing - animation-iteration-count with keyword : infinite 76 76 PASS cssRule.type is 1 77 PASS declaration.length is 277 PASS declaration.length is 1 78 78 PASS declaration.getPropertyValue('animation-iteration-count') is 'infinite' 79 79 PASS declaration.getPropertyValue('-webkit-animation-iteration-count') is 'infinite' … … 81 81 Parsing - Multiple animation-iteration-counts : 2, infinite, 4 82 82 PASS cssRule.type is 1 83 PASS declaration.length is 283 PASS declaration.length is 1 84 84 PASS declaration.getPropertyValue('animation-iteration-count') is '2, infinite, 4' 85 85 PASS declaration.getPropertyValue('-webkit-animation-iteration-count') is '2, infinite, 4' … … 90 90 Parsing - Normal animation-direction : normal 91 91 PASS cssRule.type is 1 92 PASS declaration.length is 292 PASS declaration.length is 1 93 93 PASS declaration.getPropertyValue('animation-direction') is 'normal' 94 94 PASS declaration.getPropertyValue('-webkit-animation-direction') is 'normal' … … 96 96 Parsing - Alternate animation-direction : alternate 97 97 PASS cssRule.type is 1 98 PASS declaration.length is 298 PASS declaration.length is 1 99 99 PASS declaration.getPropertyValue('animation-direction') is 'alternate' 100 100 PASS declaration.getPropertyValue('-webkit-animation-direction') is 'alternate' … … 102 102 Parsing - Reverse animation-direction : reverse 103 103 PASS cssRule.type is 1 104 PASS declaration.length is 2104 PASS declaration.length is 1 105 105 PASS declaration.getPropertyValue('animation-direction') is 'reverse' 106 106 PASS declaration.getPropertyValue('-webkit-animation-direction') is 'reverse' … … 108 108 Parsing - Alternate Reverse animation-direction : alternate-reverse 109 109 PASS cssRule.type is 1 110 PASS declaration.length is 2110 PASS declaration.length is 1 111 111 PASS declaration.getPropertyValue('animation-direction') is 'alternate-reverse' 112 112 PASS declaration.getPropertyValue('-webkit-animation-direction') is 'alternate-reverse' … … 114 114 Parsing - Multiple animation-directions : alternate, alternate, normal 115 115 PASS cssRule.type is 1 116 PASS declaration.length is 2116 PASS declaration.length is 1 117 117 PASS declaration.getPropertyValue('animation-direction') is 'alternate, alternate, normal' 118 118 PASS declaration.getPropertyValue('-webkit-animation-direction') is 'alternate, alternate, normal' … … 123 123 Parsing - None animation-fill-mode : none 124 124 PASS cssRule.type is 1 125 PASS declaration.length is 2125 PASS declaration.length is 1 126 126 PASS declaration.getPropertyValue('animation-fill-mode') is 'none' 127 127 PASS declaration.getPropertyValue('-webkit-animation-fill-mode') is 'none' … … 129 129 Parsing - Forwards animation-fill-mode : forwards 130 130 PASS cssRule.type is 1 131 PASS declaration.length is 2131 PASS declaration.length is 1 132 132 PASS declaration.getPropertyValue('animation-fill-mode') is 'forwards' 133 133 PASS declaration.getPropertyValue('-webkit-animation-fill-mode') is 'forwards' … … 135 135 Parsing - Backwards animation-fill-mode : backwards 136 136 PASS cssRule.type is 1 137 PASS declaration.length is 2137 PASS declaration.length is 1 138 138 PASS declaration.getPropertyValue('animation-fill-mode') is 'backwards' 139 139 PASS declaration.getPropertyValue('-webkit-animation-fill-mode') is 'backwards' … … 141 141 Parsing - Both animation-fill-mode : both 142 142 PASS cssRule.type is 1 143 PASS declaration.length is 2143 PASS declaration.length is 1 144 144 PASS declaration.getPropertyValue('animation-fill-mode') is 'both' 145 145 PASS declaration.getPropertyValue('-webkit-animation-fill-mode') is 'both' … … 147 147 Parsing - Multiple animation-fill-modes : none, forwards, backwards, both 148 148 PASS cssRule.type is 1 149 PASS declaration.length is 2149 PASS declaration.length is 1 150 150 PASS declaration.getPropertyValue('animation-fill-mode') is 'none, forwards, backwards, both' 151 151 PASS declaration.getPropertyValue('-webkit-animation-fill-mode') is 'none, forwards, backwards, both' -
trunk/LayoutTests/animations/unprefixed-properties.html
r187813 r200769 28 28 29 29 declaration = cssRule.style; 30 shouldBe("declaration.length", " 2"); // We set both the prefixed and unprefixed version.30 shouldBe("declaration.length", "1"); 31 31 shouldBe("declaration.getPropertyValue('" + property + "')", "'" + value + "'"); 32 32 shouldBe("declaration.getPropertyValue('-webkit-" + property + "')", "'" + value + "'"); -
trunk/Source/WebCore/ChangeLog
r200768 r200769 1 2016-05-12 Antoine Quint <graouts@apple.com> 2 3 Correctly handle prefixed and unprefixed variants in CSSStyleDeclaration 4 https://bugs.webkit.org/show_bug.cgi?id=157569 5 <rdar://problem/26223115> 6 7 Reviewed by Dean Jackson. 8 9 Tests: fast/css/prefixed-unprefixed-variant-style-declaration.html 10 fast/css/shorthand-omitted-initial-value-overrides-shorthand.html 11 12 We essentially revert the code added with https://bugs.webkit.org/show_bug.cgi?id=110011 13 which duplicated properties that had a prefixed or unprefixed variant. What we do now is 14 to return the value of the prefixed or unprefixed variant through a CSSStyleDeclaration, 15 but only return the properties specified by the author when reading from the `cssText` property. 16 17 * css/CSSParser.cpp: 18 (WebCore::CSSParser::parseValue): 19 (WebCore::CSSParser::parseTransitionShorthand): 20 (WebCore::CSSParser::addPropertyWithPrefixingVariant): Deleted. 21 * css/CSSParser.h: 22 Remove all code adding duplicated properties for the prefixed or unprefixed 23 variant of properties that exist in both forms. 24 25 * css/CSSPropertyNames.in: 26 Treat transition properties as we do animation properties. 27 28 * css/PropertySetCSSStyleDeclaration.cpp: 29 (WebCore::PropertySetCSSStyleDeclaration::getPropertyCSSValue): 30 (WebCore::PropertySetCSSStyleDeclaration::getPropertyValue): 31 Make these two methods call into the matching getXXXInternal() variant instead 32 of going through the property set directly so that they would correctly pick up 33 on the prefixed or unprefixed variant should there be one when the specified property 34 is not specified directly. 35 36 (WebCore::PropertySetCSSStyleDeclaration::getPropertyCSSValueInternal): 37 (WebCore::PropertySetCSSStyleDeclaration::getPropertyValueInternal): 38 We used to simply return the value for the given property from the property set, which 39 we still do but now also check if there is prefixed or unprefixed variant for the provided 40 property in case it was absent. 41 42 * css/StyleProperties.cpp: 43 (WebCore::MutableStyleProperties::removeShorthandProperty): 44 Remove all code adding duplicated properties for the prefixed or unprefixed 45 variant of properties that exist in both forms. 46 47 (WebCore::StyleProperties::asText): 48 Drive-by fix to also handle the animation-play-state and -webkit-animation-play-state properties 49 when serializing to the shorthand. 50 51 (WebCore::MutableStyleProperties::removeProperty): Deleted. 52 (WebCore::MutableStyleProperties::removePrefixedOrUnprefixedProperty): Deleted. 53 (WebCore::MutableStyleProperties::setProperty): Deleted. 54 (WebCore::getIndexInShorthandVectorForPrefixingVariant): Deleted. 55 (WebCore::MutableStyleProperties::appendPrefixingVariantProperty): Deleted. 56 (WebCore::MutableStyleProperties::setPrefixingVariantProperty): Deleted. 57 * css/StyleProperties.h: 58 Remove all code adding duplicated properties for the prefixed or unprefixed 59 variant of properties that exist in both forms. 60 1 61 2016-05-12 Commit Queue <commit-queue@webkit.org> 2 62 -
trunk/Source/WebCore/css/CSSParser.cpp
r200755 r200769 1638 1638 } 1639 1639 1640 void CSSParser::addPropertyWithPrefixingVariant(CSSPropertyID propId, PassRefPtr<CSSValue> value, bool important, bool implicit)1641 {1642 RefPtr<CSSValue> val = value.get();1643 addProperty(propId, value, important, implicit);1644 1645 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(propId);1646 if (prefixingVariant == propId)1647 return;1648 1649 if (m_currentShorthand) {1650 // We can't use ShorthandScope here as we can already be inside one (e.g we are parsing CSSTransition).1651 m_currentShorthand = prefixingVariantForPropertyId(m_currentShorthand);1652 addProperty(prefixingVariant, val.release(), important, implicit);1653 m_currentShorthand = prefixingVariantForPropertyId(m_currentShorthand);1654 } else1655 addProperty(prefixingVariant, val.release(), important, implicit);1656 }1657 1658 1640 void CSSParser::addProperty(CSSPropertyID propId, PassRefPtr<CSSValue> value, bool important, bool implicit) 1659 1641 { … … 2767 2749 AnimationParseContext context; 2768 2750 if (parseAnimationProperty(propId, val, context)) { 2769 addProperty WithPrefixingVariant(propId, val.release(), important);2751 addProperty(propId, val.release(), important); 2770 2752 return true; 2771 2753 } … … 3996 3978 // Now add all of the properties we found. 3997 3979 for (i = 0; i < numProperties; ++i) 3998 addProperty WithPrefixingVariant(shorthand.properties()[i], values[i].release(), important);3980 addProperty(shorthand.properties()[i], values[i].release(), important); 3999 3981 4000 3982 return true; -
trunk/Source/WebCore/css/CSSParser.h
r200626 r200769 133 133 std::unique_ptr<MediaQuery> parseMediaQuery(const String&); 134 134 135 void addPropertyWithPrefixingVariant(CSSPropertyID, PassRefPtr<CSSValue>, bool important, bool implicit = false);136 135 void addProperty(CSSPropertyID, PassRefPtr<CSSValue>, bool important, bool implicit = false); 137 136 void rollbackLastProperties(int num); -
trunk/Source/WebCore/css/CSSPropertyNames.in
r200510 r200769 349 349 top [Initial=initialOffset, Converter=LengthOrAuto] 350 350 transition [Longhands=transition-property|transition-duration|transition-timing-function|transition-delay] 351 transition-delay [ SkipBuilder]352 transition-duration [ SkipBuilder]353 transition-property [ SkipBuilder]354 transition-timing-function [ SkipBuilder]351 transition-delay [AnimationProperty, NameForMethods=Delay] 352 transition-duration [AnimationProperty, NameForMethods=Duration] 353 transition-property [AnimationProperty, NameForMethods=Property] 354 transition-timing-function [AnimationProperty, NameForMethods=TimingFunction] 355 355 356 356 unicode-bidi -
trunk/Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp
r200358 r200769 172 172 if (!propertyID) 173 173 return nullptr; 174 return cloneAndCacheForCSSOM( m_propertySet->getPropertyCSSValue(propertyID).get());174 return cloneAndCacheForCSSOM(getPropertyCSSValueInternal(propertyID).get()); 175 175 } 176 176 … … 183 183 if (!propertyID) 184 184 return String(); 185 return m_propertySet->getPropertyValue(propertyID);185 return getPropertyValueInternal(propertyID); 186 186 } 187 187 … … 265 265 RefPtr<CSSValue> PropertySetCSSStyleDeclaration::getPropertyCSSValueInternal(CSSPropertyID propertyID) 266 266 { 267 return m_propertySet->getPropertyCSSValue(propertyID); 267 RefPtr<CSSValue> value = m_propertySet->getPropertyCSSValue(propertyID); 268 if (value) 269 return value; 270 271 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(propertyID); 272 if (prefixingVariant != propertyID) 273 return m_propertySet->getPropertyCSSValue(prefixingVariant); 274 275 return nullptr; 268 276 } 269 277 270 278 String PropertySetCSSStyleDeclaration::getPropertyValueInternal(CSSPropertyID propertyID) 271 { 272 return m_propertySet->getPropertyValue(propertyID); 279 { 280 String value = m_propertySet->getPropertyValue(propertyID); 281 if (!value.isEmpty()) 282 return value; 283 284 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(propertyID); 285 if (prefixingVariant != propertyID) 286 return m_propertySet->getPropertyValue(prefixingVariant); 287 288 return String(); 273 289 } 274 290 -
trunk/Source/WebCore/css/StyleProperties.cpp
r200510 r200769 639 639 if (!shorthand.length()) 640 640 return false; 641 642 bool ret = removePropertiesInSet(shorthand.properties(), shorthand.length()); 643 644 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(propertyID); 645 if (prefixingVariant == propertyID) 646 return ret; 647 648 StylePropertyShorthand shorthandPrefixingVariant = shorthandForProperty(prefixingVariant); 649 return removePropertiesInSet(shorthandPrefixingVariant.properties(), shorthandPrefixingVariant.length()); 641 return removePropertiesInSet(shorthand.properties(), shorthand.length()); 650 642 } 651 643 … … 673 665 m_propertyVector.remove(foundPropertyIndex); 674 666 675 removePrefixedOrUnprefixedProperty(propertyID);676 677 667 return true; 678 668 } … … 695 685 696 686 return true; 697 }698 699 void MutableStyleProperties::removePrefixedOrUnprefixedProperty(CSSPropertyID propertyID)700 {701 int foundPropertyIndex = findPropertyIndex(prefixingVariantForPropertyId(propertyID));702 if (foundPropertyIndex == -1)703 return;704 m_propertyVector.remove(foundPropertyIndex);705 687 } 706 688 … … 802 784 803 785 *toReplace = property; 804 setPrefixingVariantProperty(property);805 786 return true; 806 787 } 807 788 } 808 789 809 return appendPrefixingVariantProperty(property);810 }811 812 static unsigned getIndexInShorthandVectorForPrefixingVariant(const CSSProperty& property, CSSPropertyID prefixingVariant)813 {814 if (!property.isSetFromShorthand())815 return 0;816 817 CSSPropertyID prefixedShorthand = prefixingVariantForPropertyId(property.shorthandID());818 return indexOfShorthandForLonghand(prefixedShorthand, matchingShorthandsForLonghand(prefixingVariant));819 }820 821 bool MutableStyleProperties::appendPrefixingVariantProperty(const CSSProperty& property)822 {823 790 m_propertyVector.append(property); 824 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(property.id());825 if (prefixingVariant == property.id())826 return true;827 828 m_propertyVector.append(CSSProperty(prefixingVariant, property.value(), property.isImportant(), property.isSetFromShorthand(), getIndexInShorthandVectorForPrefixingVariant(property, prefixingVariant), property.metadata().m_implicit));829 791 return true; 830 }831 832 void MutableStyleProperties::setPrefixingVariantProperty(const CSSProperty& property)833 {834 CSSPropertyID prefixingVariant = prefixingVariantForPropertyId(property.id());835 CSSProperty* toReplace = findCSSPropertyWithID(prefixingVariant);836 if (toReplace && prefixingVariant != property.id())837 *toReplace = CSSProperty(prefixingVariant, property.value(), property.isImportant(), property.isSetFromShorthand(), getIndexInShorthandVectorForPrefixingVariant(property, prefixingVariant), property.metadata().m_implicit);838 792 } 839 793 … … 926 880 case CSSPropertyAnimationDirection: 927 881 case CSSPropertyAnimationFillMode: 882 case CSSPropertyAnimationPlayState: 928 883 shorthandPropertyID = CSSPropertyAnimation; 929 884 break; … … 1025 980 case CSSPropertyWebkitAnimationDirection: 1026 981 case CSSPropertyWebkitAnimationFillMode: 982 case CSSPropertyWebkitAnimationPlayState: 1027 983 shorthandPropertyID = CSSPropertyWebkitAnimation; 1028 984 break; -
trunk/Source/WebCore/css/StyleProperties.h
r198284 r200769 212 212 bool setProperty(CSSPropertyID, CSSValueID identifier, bool important = false); 213 213 bool setProperty(CSSPropertyID, CSSPropertyID identifier, bool important = false); 214 bool appendPrefixingVariantProperty(const CSSProperty&);215 void setPrefixingVariantProperty(const CSSProperty&);216 214 bool setProperty(const CSSProperty&, CSSProperty* slot = nullptr); 217 215 218 216 bool removeProperty(CSSPropertyID, String* returnText = nullptr); 219 void removePrefixedOrUnprefixedProperty(CSSPropertyID);220 217 void removeBlockProperties(); 221 218 bool removePropertiesInSet(const CSSPropertyID* set, unsigned length);
Note:
See TracChangeset
for help on using the changeset viewer.