Changeset 139248 in webkit


Ignore:
Timestamp:
Jan 9, 2013 3:13:47 PM (11 years ago)
Author:
mvujovic@adobe.com
Message:

[CSS Shaders] Detached identifier after mesh box type is not applied
https://bugs.webkit.org/show_bug.cgi?id=105321

Reviewed by Dean Jackson.

Source/WebCore:

Before this patch, if a "detached" identifier followed a mesh box type identifier, the
detached identifier was not applied. In other words, the mesh would still be attached.

For example:
-webkit-filter: custom(url(...) mix(url(...) normal source-atop), 1 1 border-box detached);

Although the mesh box type is being removed from the Filter Effects spec, for now, we
continue to accept the mesh box type in parsing because of existing content. Eventually,
custom filters will transition to an at-rule syntax, once it is defined.

Test: css3/filters/custom/custom-filter-detached-mesh-with-mesh-box-type.html

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseCustomFilter):

In CSSParser, do not add the mesh box type identifier to the list that will be passed to
StyleResolver. StyleResolver is expecting a "detached" identifier in that position and
does not interpret mesh box types.

LayoutTests:

Add a test to verify that a "detached" identifier after a mesh box type identifier is
actually applied.

For example:
-webkit-filter: custom(url(...) mix(url(...) normal source-atop), 1 1 border-box detached);

Update parsing tests and expectations to expect that the mesh box type is not returned in
the cssText.

  • css3/filters/custom/custom-filter-detached-mesh-with-mesh-box-type-expected.html: Added.
  • css3/filters/custom/custom-filter-detached-mesh-with-mesh-box-type.html: Added.
  • css3/filters/custom/custom-filter-property-parsing-expected.txt:
  • css3/filters/script-tests/custom-filter-property-parsing.js:
  • css3/filters/resources/a-triangle-coord-defined.vs: Added.
  • platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt:
Location:
trunk
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r139245 r139248  
     12013-01-09  Max Vujovic  <mvujovic@adobe.com>
     2
     3        [CSS Shaders] Detached identifier after mesh box type is not applied
     4        https://bugs.webkit.org/show_bug.cgi?id=105321
     5
     6        Reviewed by Dean Jackson.
     7
     8        Add a test to verify that a "detached" identifier after a mesh box type identifier is
     9        actually applied.
     10
     11        For example:
     12        -webkit-filter: custom(url(...) mix(url(...) normal source-atop), 1 1 border-box detached);
     13
     14        Update parsing tests and expectations to expect that the mesh box type is not returned in
     15        the cssText.
     16
     17        * css3/filters/custom/custom-filter-detached-mesh-with-mesh-box-type-expected.html: Added.
     18        * css3/filters/custom/custom-filter-detached-mesh-with-mesh-box-type.html: Added.
     19        * css3/filters/custom/custom-filter-property-parsing-expected.txt:
     20        * css3/filters/script-tests/custom-filter-property-parsing.js:
     21        * css3/filters/resources/a-triangle-coord-defined.vs: Added.
     22        * platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt:
     23
    1242013-01-09  Ojan Vafai  <ojan@chromium.org>
    225
  • trunk/LayoutTests/css3/filters/custom/custom-filter-property-parsing-expected.txt

    r137754 r139248  
    606606PASS cssRule.type is 1
    607607PASS declaration.length is 1
    608 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1 content-box)'
    609 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    610 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
    611 PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
    612 PASS filterRule.length is 1
    613 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    614 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1 content-box)'
     608PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1)'
     609PASS jsWrapperClass(filterRule) is 'CSSValueList'
     610PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
     611PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
     612PASS filterRule.length is 1
     613PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     614PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1)'
    615615
    616616Legacy - Custom with mesh box sizes and border-box : custom(none url(fragment.shader), 1 1 border-box)
    617617PASS cssRule.type is 1
    618618PASS declaration.length is 1
    619 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1 border-box)'
    620 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    621 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
    622 PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
    623 PASS filterRule.length is 1
    624 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    625 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1 border-box)'
     619PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1)'
     620PASS jsWrapperClass(filterRule) is 'CSSValueList'
     621PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
     622PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
     623PASS filterRule.length is 1
     624PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     625PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1)'
    626626
    627627Legacy - Custom with mesh box sizes and padding-box : custom(none url(fragment.shader), 1 1 padding-box)
    628628PASS cssRule.type is 1
    629629PASS declaration.length is 1
    630 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1 padding-box)'
    631 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    632 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
    633 PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
    634 PASS filterRule.length is 1
    635 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    636 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1 padding-box)'
     630PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1)'
     631PASS jsWrapperClass(filterRule) is 'CSSValueList'
     632PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
     633PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
     634PASS filterRule.length is 1
     635PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     636PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1)'
    637637
    638638Legacy - Custom with partial mesh box size and padding-box : custom(none url(fragment.shader), 10 padding-box)
    639639PASS cssRule.type is 1
    640640PASS declaration.length is 1
    641 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 padding-box)'
    642 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    643 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
    644 PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
    645 PASS filterRule.length is 1
    646 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    647 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 padding-box)'
     641PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10)'
     642PASS jsWrapperClass(filterRule) is 'CSSValueList'
     643PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
     644PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
     645PASS filterRule.length is 1
     646PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     647PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10)'
    648648
    649649Legacy - Custom with padding-box and detached : custom(none url(fragment.shader), padding-box detached)
    650650PASS cssRule.type is 1
    651651PASS declaration.length is 1
    652 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), padding-box detached)'
    653 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    654 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
    655 PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
    656 PASS filterRule.length is 1
    657 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    658 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), padding-box detached)'
     652PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), detached)'
     653PASS jsWrapperClass(filterRule) is 'CSSValueList'
     654PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
     655PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
     656PASS filterRule.length is 1
     657PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     658PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), detached)'
    659659
    660660Legacy - Custom with both mesh-sizes and padding-box : custom(none url(fragment.shader), 10 20 padding-box)
    661661PASS cssRule.type is 1
    662662PASS declaration.length is 1
    663 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20 padding-box)'
    664 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    665 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
    666 PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
    667 PASS filterRule.length is 1
    668 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    669 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20 padding-box)'
     663PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20)'
     664PASS jsWrapperClass(filterRule) is 'CSSValueList'
     665PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
     666PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
     667PASS filterRule.length is 1
     668PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     669PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20)'
    670670
    671671Legacy - Custom with mesh-sizes, padding-box and detached : custom(none url(fragment.shader), 10 20 padding-box detached)
    672672PASS cssRule.type is 1
    673673PASS declaration.length is 1
    674 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20 padding-box detached)'
    675 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    676 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
    677 PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
    678 PASS filterRule.length is 1
    679 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    680 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20 padding-box detached)'
     674PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20 detached)'
     675PASS jsWrapperClass(filterRule) is 'CSSValueList'
     676PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
     677PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor'
     678PASS filterRule.length is 1
     679PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     680PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20 detached)'
    681681PASS successfullyParsed is true
    682682
  • trunk/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing.js

    r137754 r139248  
    190190            "custom(none url(fragment.shader), t4 array(1, -2.2, 3.14, 0.4, 5), t5 array(1, 2, 3))");
    191191
    192 // TODO: The following tests are due to be removed along with the mesh box types parsing code.
    193 // See: https://bugs.webkit.org/show_bug.cgi?id=103778
     192// FIXME: The following tests will be removed along with the mesh box types parsing code.
     193// https://bugs.webkit.org/show_bug.cgi?id=103778
    194194testFilterRule("Legacy - Custom with mesh box sizes and content-box",
    195195            "custom(none url(fragment.shader), 1 1 content-box)",
    196             "custom(none url(fragment.shader), 1 1 content-box)");
     196            "custom(none url(fragment.shader), 1 1)");
    197197
    198198testFilterRule("Legacy - Custom with mesh box sizes and border-box",
    199199            "custom(none url(fragment.shader), 1 1 border-box)",
    200             "custom(none url(fragment.shader), 1 1 border-box)");
     200            "custom(none url(fragment.shader), 1 1)");
    201201
    202202testFilterRule("Legacy - Custom with mesh box sizes and padding-box",
    203203            "custom(none url(fragment.shader), 1 1 padding-box)",
    204             "custom(none url(fragment.shader), 1 1 padding-box)");
     204            "custom(none url(fragment.shader), 1 1)");
    205205
    206206testFilterRule("Legacy - Custom with partial mesh box size and padding-box",
    207207            "custom(none url(fragment.shader), 10 padding-box)",
    208             "custom(none url(fragment.shader), 10 padding-box)");
     208            "custom(none url(fragment.shader), 10)");
    209209
    210210testFilterRule("Legacy - Custom with padding-box and detached",
    211211            "custom(none url(fragment.shader), padding-box detached)",
    212             "custom(none url(fragment.shader), padding-box detached)");
     212            "custom(none url(fragment.shader), detached)");
    213213
    214214testFilterRule("Legacy - Custom with both mesh-sizes and padding-box",
    215215            "custom(none url(fragment.shader), 10 20 padding-box)",
    216             "custom(none url(fragment.shader), 10 20 padding-box)");
     216            "custom(none url(fragment.shader), 10 20)");
    217217
    218218testFilterRule("Legacy - Custom with mesh-sizes, padding-box and detached",
    219219            "custom(none url(fragment.shader), 10 20 padding-box detached)",
    220             "custom(none url(fragment.shader), 10 20 padding-box detached)");
     220            "custom(none url(fragment.shader), 10 20 detached)");
  • trunk/LayoutTests/platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt

    r137754 r139248  
    606606PASS cssRule.type is 1
    607607PASS declaration.length is 1
    608 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1 content-box)'
    609 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    610 FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
    611 FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
    612 PASS filterRule.length is 1
    613 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    614 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1 content-box)'
     608PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1)'
     609PASS jsWrapperClass(filterRule) is 'CSSValueList'
     610FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
     611FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
     612PASS filterRule.length is 1
     613PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     614PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1)'
    615615
    616616Legacy - Custom with mesh box sizes and border-box : custom(none url(fragment.shader), 1 1 border-box)
    617617PASS cssRule.type is 1
    618618PASS declaration.length is 1
    619 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1 border-box)'
    620 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    621 FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
    622 FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
    623 PASS filterRule.length is 1
    624 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    625 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1 border-box)'
     619PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1)'
     620PASS jsWrapperClass(filterRule) is 'CSSValueList'
     621FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
     622FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
     623PASS filterRule.length is 1
     624PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     625PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1)'
    626626
    627627Legacy - Custom with mesh box sizes and padding-box : custom(none url(fragment.shader), 1 1 padding-box)
    628628PASS cssRule.type is 1
    629629PASS declaration.length is 1
    630 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1 padding-box)'
    631 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    632 FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
    633 FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
    634 PASS filterRule.length is 1
    635 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    636 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1 padding-box)'
     630PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 1 1)'
     631PASS jsWrapperClass(filterRule) is 'CSSValueList'
     632FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
     633FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
     634PASS filterRule.length is 1
     635PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     636PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 1 1)'
    637637
    638638Legacy - Custom with partial mesh box size and padding-box : custom(none url(fragment.shader), 10 padding-box)
    639639PASS cssRule.type is 1
    640640PASS declaration.length is 1
    641 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 padding-box)'
    642 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    643 FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
    644 FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
    645 PASS filterRule.length is 1
    646 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    647 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 padding-box)'
     641PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10)'
     642PASS jsWrapperClass(filterRule) is 'CSSValueList'
     643FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
     644FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
     645PASS filterRule.length is 1
     646PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     647PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10)'
    648648
    649649Legacy - Custom with padding-box and detached : custom(none url(fragment.shader), padding-box detached)
    650650PASS cssRule.type is 1
    651651PASS declaration.length is 1
    652 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), padding-box detached)'
    653 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    654 FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
    655 FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
    656 PASS filterRule.length is 1
    657 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    658 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), padding-box detached)'
     652PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), detached)'
     653PASS jsWrapperClass(filterRule) is 'CSSValueList'
     654FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
     655FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
     656PASS filterRule.length is 1
     657PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     658PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), detached)'
    659659
    660660Legacy - Custom with both mesh-sizes and padding-box : custom(none url(fragment.shader), 10 20 padding-box)
    661661PASS cssRule.type is 1
    662662PASS declaration.length is 1
    663 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20 padding-box)'
    664 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    665 FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
    666 FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
    667 PASS filterRule.length is 1
    668 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    669 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20 padding-box)'
     663PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20)'
     664PASS jsWrapperClass(filterRule) is 'CSSValueList'
     665FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
     666FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
     667PASS filterRule.length is 1
     668PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     669PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20)'
    670670
    671671Legacy - Custom with mesh-sizes, padding-box and detached : custom(none url(fragment.shader), 10 20 padding-box detached)
    672672PASS cssRule.type is 1
    673673PASS declaration.length is 1
    674 PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20 padding-box detached)'
    675 PASS jsWrapperClass(filterRule) is 'CSSValueList'
    676 FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
    677 FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
    678 PASS filterRule.length is 1
    679 PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
    680 PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20 padding-box detached)'
     674PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), 10 20 detached)'
     675PASS jsWrapperClass(filterRule) is 'CSSValueList'
     676FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object.
     677FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function.
     678PASS filterRule.length is 1
     679PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM
     680PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), 10 20 detached)'
    681681PASS successfullyParsed is true
    682682
  • trunk/Source/WebCore/ChangeLog

    r139239 r139248  
     12013-01-09  Max Vujovic  <mvujovic@adobe.com>
     2
     3        [CSS Shaders] Detached identifier after mesh box type is not applied
     4        https://bugs.webkit.org/show_bug.cgi?id=105321
     5
     6        Reviewed by Dean Jackson.
     7
     8        Before this patch, if a "detached" identifier followed a mesh box type identifier, the
     9        detached identifier was not applied. In other words, the mesh would still be attached.
     10
     11        For example:
     12        -webkit-filter: custom(url(...) mix(url(...) normal source-atop), 1 1 border-box detached);
     13
     14        Although the mesh box type is being removed from the Filter Effects spec, for now, we
     15        continue to accept the mesh box type in parsing because of existing content. Eventually,
     16        custom filters will transition to an at-rule syntax, once it is defined.
     17
     18        Test: css3/filters/custom/custom-filter-detached-mesh-with-mesh-box-type.html
     19
     20        * css/CSSParser.cpp:
     21        (WebCore::CSSParser::parseCustomFilter):
     22            In CSSParser, do not add the mesh box type identifier to the list that will be passed to
     23            StyleResolver. StyleResolver is expecting a "detached" identifier in that position and
     24            does not interpret mesh box types.
     25
    1262013-01-09  Dan Winship  <danw@gnome.org>
    227
  • trunk/Source/WebCore/css/CSSParser.cpp

    r139106 r139248  
    81378137        return 0;
    81388138   
    8139     // TODO: This is legacy code and shall be removed.
    8140     // See https://bugs.webkit.org/show_bug.cgi?id=103778
     8139    // FIXME: For legacy content, we accept the mesh box types. We don't do anything else with them.
     8140    // Eventually, we'll remove them completely.
     8141    // https://bugs.webkit.org/show_bug.cgi?id=103778
    81418142    if ((arg = argsList->current()) && (arg->id == CSSValueBorderBox || arg->id == CSSValuePaddingBox
    8142         || arg->id == CSSValueContentBox || arg->id == CSSValueFilterBox)) {
    8143         meshSizeList->append(cssValuePool().createIdentifierValue(arg->id));
     8143        || arg->id == CSSValueContentBox || arg->id == CSSValueFilterBox))
    81448144        argsList->next();
    8145     }
    81468145   
    81478146    if ((arg = argsList->current()) && arg->id == CSSValueDetached) {
Note: See TracChangeset for help on using the changeset viewer.