WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-71443-20120816153934.patch (text/plain), 25.96 KB, created by
Michelangelo De Simone
on 2012-08-16 15:40:09 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Michelangelo De Simone
Created:
2012-08-16 15:40:09 PDT
Size:
25.96 KB
patch
obsolete
>Subversion Revision: 125685 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 70251aba1d511da41f918eae29e7919f618eed68..648dd2ec4de44f7ab885bd1c2bbbdd2c94c0770b 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,23 @@ >+2012-08-16 Michelangelo De Simone <michelangelo@webkit.org> >+ >+ [Part 3] Parse the custom() function in -webkit-filter: parse the 3d-transforms parameters >+ https://bugs.webkit.org/show_bug.cgi?id=71443 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ custom() now correctly parses the 3d-tranforms parameters. In order to do that the parseTransform() method >+ has been refactored and split to reuse already present code. >+ >+ * css/CSSParser.cpp: >+ (WebCore::parseTranslateTransformValue): Renamed from parseTransformValue() >+ (WebCore::CSSParser::parseValue): Reference updated from parseTransformValue() to parseTranslateTransformValue() >+ (WebCore::CSSParser::parseTransform): This method has been split in two to reuse already present code >+ (WebCore): >+ (WebCore::CSSParser::parseTransformValue): New method to parse single transform values >+ (WebCore::CSSParser::parseCustomFilter): Updated to parse the transform parameters >+ (WebCore::CSSParser::parseCustomFilterTransform): New method to parse custom() transforms >+ * css/CSSParser.h: >+ > 2012-08-15 Joanmarie Diggs <jdiggs@igalia.com> > > [Gtk] atk_text_get_text_at_offset() fails to provide the correct line for paragraphs in list items whose text wraps >diff --git a/Source/WebCore/css/CSSParser.cpp b/Source/WebCore/css/CSSParser.cpp >index 7e4b277135ba3813a287b06240ba82e2073a6835..7b1e4712347e12e8ede2ec51440d96b326cc595f 100644 >--- a/Source/WebCore/css/CSSParser.cpp >+++ b/Source/WebCore/css/CSSParser.cpp >@@ -1041,7 +1041,7 @@ static bool parseTransformArguments(WebKitCSSTransformValue* transformValue, Cha > return true; > } > >-static bool parseTransformValue(StylePropertySet* properties, CSSPropertyID propertyID, const String& string, bool important) >+static bool parseTranslateTransformValue(StylePropertySet* properties, CSSPropertyID propertyID, const String& string, bool important) > { > if (propertyID != CSSPropertyWebkitTransform) > return false; >@@ -1126,7 +1126,7 @@ bool CSSParser::parseValue(StylePropertySet* declaration, CSSPropertyID property > return true; > if (parseKeywordValue(declaration, propertyID, string, important, contextStyleSheet->parserContext())) > return true; >- if (parseTransformValue(declaration, propertyID, string, important)) >+ if (parseTranslateTransformValue(declaration, propertyID, string, important)) > return true; > > CSSParserContext context(cssParserMode); >@@ -2320,9 +2320,9 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important) > if (id == CSSValueNone) > validPrimitive = true; > else { >- PassRefPtr<CSSValue> val = parseTransform(); >- if (val) { >- addProperty(propId, val, important); >+ RefPtr<CSSValue> transformValue = parseTransform(); >+ if (transformValue) { >+ addProperty(propId, transformValue.release(), important); > return true; > } > return false; >@@ -7271,70 +7271,82 @@ PassRefPtr<CSSValueList> CSSParser::parseTransform() > if (!m_valueList) > return 0; > >- // The transform is a list of functional primitives that specify transform operations. >- // We collect a list of WebKitCSSTransformValues, where each value specifies a single operation. > RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); > for (CSSParserValue* value = m_valueList->current(); value; value = m_valueList->next()) { >- if (value->unit != CSSParserValue::Function || !value->function) >+ RefPtr<CSSValue> parsedTransformValue = parseTransformValue(value); >+ if (!parsedTransformValue) > return 0; > >- // Every primitive requires at least one argument. >- CSSParserValueList* args = value->function->args.get(); >- if (!args) >- return 0; >+ list->append(parsedTransformValue.release()); >+ } > >- // See if the specified primitive is one we understand. >- TransformOperationInfo info(value->function->name); >- if (info.unknown()) >- return 0; >+ return list.release(); >+} >+ > >- if (!info.hasCorrectArgCount(args->size())) >- return 0; >+PassRefPtr<CSSValue> CSSParser::parseTransformValue(CSSParserValue *value) >+{ >+ if (value->unit != CSSParserValue::Function || !value->function) >+ return 0; >+ >+ // Every primitive requires at least one argument. >+ CSSParserValueList* args = value->function->args.get(); >+ if (!args) >+ return 0; > >- // Create the new WebKitCSSTransformValue for this operation and add it to our list. >- RefPtr<WebKitCSSTransformValue> transformValue = WebKitCSSTransformValue::create(info.type()); >- list->append(transformValue); >+ // See if the specified primitive is one we understand. >+ TransformOperationInfo info(value->function->name); >+ if (info.unknown()) >+ return 0; > >- // Snag our values. >- CSSParserValue* a = args->current(); >- unsigned argNumber = 0; >- while (a) { >- CSSParser::Units unit = info.unit(); >+ if (!info.hasCorrectArgCount(args->size())) >+ return 0; > >- if (info.type() == WebKitCSSTransformValue::Rotate3DTransformOperation && argNumber == 3) { >- // 4th param of rotate3d() is an angle rather than a bare number, validate it as such >- if (!validUnit(a, FAngle, CSSStrictMode)) >- return 0; >- } else if (info.type() == WebKitCSSTransformValue::Translate3DTransformOperation && argNumber == 2) { >- // 3rd param of translate3d() cannot be a percentage >- if (!validUnit(a, FLength, CSSStrictMode)) >- return 0; >- } else if (info.type() == WebKitCSSTransformValue::TranslateZTransformOperation && argNumber == 0) { >- // 1st param of translateZ() cannot be a percentage >- if (!validUnit(a, FLength, CSSStrictMode)) >- return 0; >- } else if (info.type() == WebKitCSSTransformValue::PerspectiveTransformOperation && argNumber == 0) { >- // 1st param of perspective() must be a non-negative number (deprecated) or length. >- if (!validUnit(a, FNumber | FLength | FNonNeg, CSSStrictMode)) >- return 0; >- } else if (!validUnit(a, unit, CSSStrictMode)) >- return 0; >+ // The transform is a list of functional primitives that specify transform operations. >+ // We collect a list of WebKitCSSTransformValues, where each value specifies a single operation. > >- // Add the value to the current transform operation. >- transformValue->append(createPrimitiveNumericValue(a)); >+ // Create the new WebKitCSSTransformValue for this operation and add it to our list. >+ RefPtr<WebKitCSSTransformValue> transformValue = WebKitCSSTransformValue::create(info.type()); > >- a = args->next(); >- if (!a) >- break; >- if (a->unit != CSSParserValue::Operator || a->iValue != ',') >+ // Snag our values. >+ CSSParserValue* a = args->current(); >+ unsigned argNumber = 0; >+ while (a) { >+ CSSParser::Units unit = info.unit(); >+ >+ if (info.type() == WebKitCSSTransformValue::Rotate3DTransformOperation && argNumber == 3) { >+ // 4th param of rotate3d() is an angle rather than a bare number, validate it as such >+ if (!validUnit(a, FAngle, CSSStrictMode)) > return 0; >- a = args->next(); >+ } else if (info.type() == WebKitCSSTransformValue::Translate3DTransformOperation && argNumber == 2) { >+ // 3rd param of translate3d() cannot be a percentage >+ if (!validUnit(a, FLength, CSSStrictMode)) >+ return 0; >+ } else if (info.type() == WebKitCSSTransformValue::TranslateZTransformOperation && !argNumber) { >+ // 1st param of translateZ() cannot be a percentage >+ if (!validUnit(a, FLength, CSSStrictMode)) >+ return 0; >+ } else if (info.type() == WebKitCSSTransformValue::PerspectiveTransformOperation && !argNumber) { >+ // 1st param of perspective() must be a non-negative number (deprecated) or length. >+ if (!validUnit(a, FNumber | FLength | FNonNeg, CSSStrictMode)) >+ return 0; >+ } else if (!validUnit(a, unit, CSSStrictMode)) >+ return 0; > >- argNumber++; >- } >+ // Add the value to the current transform operation. >+ transformValue->append(createPrimitiveNumericValue(a)); >+ >+ a = args->next(); >+ if (!a) >+ break; >+ if (a->unit != CSSParserValue::Operator || a->iValue != ',') >+ return 0; >+ a = args->next(); >+ >+ argNumber++; > } > >- return list.release(); >+ return transformValue.release(); > } > > bool CSSParser::isBlendMode(int ident) >@@ -7556,26 +7568,36 @@ PassRefPtr<WebKitCSSFilterValue> CSSParser::parseCustomFilter(CSSParserValue* va > if (!(arg = argsList->current())) > return 0; > >- // TODO: Implement other parameters types parsing. >- // textures: https://bugs.webkit.org/show_bug.cgi?id=71442 >- // 3d-transforms: https://bugs.webkit.org/show_bug.cgi?id=71443 >- // mat2, mat3, mat4: https://bugs.webkit.org/show_bug.cgi?id=71444 >- RefPtr<CSSValueList> paramValueList = CSSValueList::createSpaceSeparated(); >- while ((arg = argsList->current())) { >- // If we hit a comma it means we finished this parameter's values. >- if (isComma(arg)) >- break; >- if (!validUnit(arg, FNumber, CSSStrictMode)) >+ RefPtr<CSSValue> parameterValue; >+ >+ if (arg->unit == CSSParserValue::Function && arg->function) >+ // TODO: Implement other parameters types parsing. >+ // textures: https://bugs.webkit.org/show_bug.cgi?id=71442 >+ // mat2, mat3, mat4: https://bugs.webkit.org/show_bug.cgi?id=71444 >+ // array: https://bugs.webkit.org/show_bug.cgi?id=94226 >+ // 3d-transform shall be the last to be checked >+ parameterValue = parseCustomFilterTransform(argsList); >+ else { >+ RefPtr<CSSValueList> paramValueList = CSSValueList::createSpaceSeparated(); >+ while ((arg = argsList->current())) { >+ // If we hit a comma it means we finished this parameter's values. >+ if (isComma(arg)) >+ break; >+ if (!validUnit(arg, FNumber, CSSStrictMode)) >+ return 0; >+ paramValueList->append(cssValuePool().createValue(arg->fValue, CSSPrimitiveValue::CSS_NUMBER)); >+ argsList->next(); >+ } >+ if (!paramValueList->length() || paramValueList->length() > 4) > return 0; >- paramValueList->append(cssValuePool().createValue(arg->fValue, CSSPrimitiveValue::CSS_NUMBER)); >- argsList->next(); >+ parameterValue = paramValueList.release(); > } >- if (!paramValueList->length() || paramValueList->length() > 4) >+ >+ if (!parameterValue || !acceptCommaOperator(argsList)) > return 0; >- parameter->append(paramValueList.release()); >+ >+ parameter->append(parameterValue.release()); > paramList->append(parameter.release()); >- if (!acceptCommaOperator(argsList)) >- return 0; > } > > if (paramList->length()) >@@ -7583,6 +7605,27 @@ PassRefPtr<WebKitCSSFilterValue> CSSParser::parseCustomFilter(CSSParserValue* va > > return filterValue; > } >+ >+PassRefPtr<CSSValueList> CSSParser::parseCustomFilterTransform(CSSParserValueList* valueList) >+{ >+ if (!valueList) >+ return 0; >+ >+ // CSS Shaders' custom() transforms are space separated and comma terminated. >+ RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); >+ for (CSSParserValue* value = valueList->current(); value; value = valueList->next()) { >+ if (isComma(value)) >+ break; >+ >+ RefPtr<CSSValue> parsedTransformValue = parseTransformValue(value); >+ if (!parsedTransformValue) >+ return 0; >+ >+ list->append(parsedTransformValue.release()); >+ } >+ >+ return list.release(); >+} > #endif > > PassRefPtr<WebKitCSSFilterValue> CSSParser::parseBuiltinFilterArguments(CSSParserValueList* args, WebKitCSSFilterValue::FilterOperationType filterType) >diff --git a/Source/WebCore/css/CSSParser.h b/Source/WebCore/css/CSSParser.h >index 7af9d24d7580ac03717f5dae244d4db3b5268abf..aec1f66354a505f811cd535fd46b5e575f9d4f28 100644 >--- a/Source/WebCore/css/CSSParser.h >+++ b/Source/WebCore/css/CSSParser.h >@@ -219,6 +219,7 @@ public: > #if ENABLE(CSS_SHADERS) > PassRefPtr<WebKitCSSMixFunctionValue> parseMixFunction(CSSParserValue*); > PassRefPtr<WebKitCSSFilterValue> parseCustomFilter(CSSParserValue*); >+ PassRefPtr<CSSValueList> parseCustomFilterTransform(CSSParserValueList*); > #endif > #endif > >@@ -226,6 +227,7 @@ public: > static bool isCompositeOperator(int ident); > > PassRefPtr<CSSValueList> parseTransform(); >+ PassRefPtr<CSSValue> parseTransformValue(CSSParserValue*); > bool parseTransformOrigin(CSSPropertyID propId, CSSPropertyID& propId1, CSSPropertyID& propId2, CSSPropertyID& propId3, RefPtr<CSSValue>&, RefPtr<CSSValue>&, RefPtr<CSSValue>&); > bool parsePerspectiveOrigin(CSSPropertyID propId, CSSPropertyID& propId1, CSSPropertyID& propId2, RefPtr<CSSValue>&, RefPtr<CSSValue>&); > >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 4e1a3035319ce476cfc8406ee5708e4e7f9b2045..14461c011eeaf7cce614282722bf250b1ecaeb7d 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,18 @@ >+2012-08-16 Michelangelo De Simone <michelangelo@webkit.org> >+ >+ [Part 3] Parse the custom() function in -webkit-filter: parse the 3d-transforms parameters >+ https://bugs.webkit.org/show_bug.cgi?id=71443 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ New round of tests for custom() to assess the correct parsing of the 3d-transform parameters. >+ >+ * css3/filters/custom/custom-filter-property-parsing-expected.txt: >+ * css3/filters/custom/custom-filter-property-parsing-invalid-expected.txt: >+ * css3/filters/script-tests/custom-filter-property-parsing-invalid.js: >+ * css3/filters/script-tests/custom-filter-property-parsing.js: >+ * platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt: >+ > 2012-08-15 Arpita Bahuguna <arpitabahuguna@gmail.com> > > There is additional space not belonged to a table between the table cells >diff --git a/LayoutTests/css3/filters/custom/custom-filter-property-parsing-expected.txt b/LayoutTests/css3/filters/custom/custom-filter-property-parsing-expected.txt >index 21a187d503705601ac2e9ef6f8ee1a2e39849338..f3bfaf1efab27d50cd08906ef025bedb2af354bb 100644 >--- a/LayoutTests/css3/filters/custom/custom-filter-property-parsing-expected.txt >+++ b/LayoutTests/css3/filters/custom/custom-filter-property-parsing-expected.txt >@@ -513,6 +513,28 @@ PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor' > PASS filterRule.length is 1 > PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM > PASS removeBaseURL(subRule.cssText) is 'custom(url(vertex.shader))' >+ >+Custom with one transform : custom(none url(fragment.shader), oneTransform rotate(0deg)) >+PASS cssRule.type is 1 >+PASS declaration.length is 1 >+PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), oneTransform rotate(0deg))' >+PASS jsWrapperClass(filterRule) is 'CSSValueList' >+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype' >+PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor' >+PASS filterRule.length is 1 >+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM >+PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), oneTransform rotate(0deg))' >+ >+Custom with multiple transforms : custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px)) >+PASS cssRule.type is 1 >+PASS declaration.length is 1 >+PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px))' >+PASS jsWrapperClass(filterRule) is 'CSSValueList' >+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype' >+PASS jsWrapperClass(filterRule.constructor) is 'CSSValueListConstructor' >+PASS filterRule.length is 1 >+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM >+PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px))' > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/css3/filters/custom/custom-filter-property-parsing-invalid-expected.txt b/LayoutTests/css3/filters/custom/custom-filter-property-parsing-invalid-expected.txt >index 19a8c7dd6d58d2972f6360cf3b7b84118fc0a4b7..de0ac7c9118dc3ab714d26d79a2c58bd04aa10e7 100644 >--- a/LayoutTests/css3/filters/custom/custom-filter-property-parsing-invalid-expected.txt >+++ b/LayoutTests/css3/filters/custom/custom-filter-property-parsing-invalid-expected.txt >@@ -213,6 +213,71 @@ No parameter value 2 : custom(url(shader), p1, p2, p3) > PASS cssRule.type is 1 > PASS declaration.length is 0 > PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+One invalid transform : custom(none url(shader), someId invalid_rotate(0deg)) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Multiple invalid transforms : custom(none url(shader), someId invalid_rotate(0deg) invalid_perspective(0)) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Invalid transform between valid ones : custom(none url(shader), someId rotate(0deg) invalid_rotate(0deg) perspective(0)) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Valid transform between invalid ones : custom(none url(shader), someId invalid_rotate(0deg) perspective(0) another_invalid(0)) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Valid transform without leading comma : custom(none url(shader) someId perspective(0)) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Valid transform with trailing comma : custom(none url(shader), someId perspective(0),) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Valid transform with trailing comma and without leading comma : custom(none url(shader) someId perspective(0),) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Invalid transform with trailing comma : custom(none url(shader), someId invalid_rotate(0deg),) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Invalid transform without leading comma : custom(none url(shader) someId invalid_rotate(0deg)) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Empty transform (only the id) : custom(none url(shader), someId) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Empty transform (without the id) : custom(none url(shader),) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Empty transform (two empty commas) : custom(none url(shader),,) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null >+ >+Valid transform with invalid characters : custom(none url(shader),someId rotate(0deg) *.-,) >+PASS cssRule.type is 1 >+PASS declaration.length is 0 >+PASS declaration.getPropertyValue('-webkit-filter') is null > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing-invalid.js b/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing-invalid.js >index 7439bca75951851a1d35c5404a4d179a687aa7aa..d49be6980c0dfeaa389503aeeb0650f60318e02b 100644 >--- a/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing-invalid.js >+++ b/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing-invalid.js >@@ -75,3 +75,16 @@ testInvalidFilterRule("Invalid parameter types", "custom(url(shader), p1 1.0 2.0 > testInvalidFilterRule("No parameter value 1", "custom(url(shader), p1)"); > testInvalidFilterRule("No parameter value 2", "custom(url(shader), p1, p2, p3)"); > >+testInvalidFilterRule("One invalid transform", "custom(none url(shader), someId invalid_rotate(0deg))"); >+testInvalidFilterRule("Multiple invalid transforms", "custom(none url(shader), someId invalid_rotate(0deg) invalid_perspective(0))"); >+testInvalidFilterRule("Invalid transform between valid ones", "custom(none url(shader), someId rotate(0deg) invalid_rotate(0deg) perspective(0))"); >+testInvalidFilterRule("Valid transform between invalid ones", "custom(none url(shader), someId invalid_rotate(0deg) perspective(0) another_invalid(0))"); >+testInvalidFilterRule("Valid transform without leading comma", "custom(none url(shader) someId perspective(0))"); >+testInvalidFilterRule("Valid transform with trailing comma", "custom(none url(shader), someId perspective(0),)"); >+testInvalidFilterRule("Valid transform with trailing comma and without leading comma", "custom(none url(shader) someId perspective(0),)"); >+testInvalidFilterRule("Invalid transform with trailing comma", "custom(none url(shader), someId invalid_rotate(0deg),)"); >+testInvalidFilterRule("Invalid transform without leading comma", "custom(none url(shader) someId invalid_rotate(0deg))"); >+testInvalidFilterRule("Empty transform (only the id)", "custom(none url(shader), someId)"); >+testInvalidFilterRule("Empty transform (without the id)", "custom(none url(shader),)"); >+testInvalidFilterRule("Empty transform (two empty commas)", "custom(none url(shader),,)"); >+testInvalidFilterRule("Valid transform with invalid characters", "custom(none url(shader),someId rotate(0deg) *.-,)"); >diff --git a/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing.js b/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing.js >index 3ef76fbab92ba7497a56f60d4ee1fb482fca1a27..ffbe57d652b391865c33b96dcb287fe98c673571 100644 >--- a/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing.js >+++ b/LayoutTests/css3/filters/script-tests/custom-filter-property-parsing.js >@@ -155,3 +155,11 @@ testFilterRule("Multiple with fragment shader", > > testFilterRule("Custom in CAPS", > "CUSTOM(url(vertex.shader))", "custom(url(vertex.shader))"); >+ >+testFilterRule("Custom with one transform", >+ "custom(none url(fragment.shader), oneTransform rotate(0deg))", >+ "custom(none url(fragment.shader), oneTransform rotate(0deg))"); >+ >+testFilterRule("Custom with multiple transforms", >+ "custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px))", >+ "custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px))"); >diff --git a/LayoutTests/platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt b/LayoutTests/platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt >index f64dc7cb18d6b897b1b6a62203477c14757fe1a0..52267b7c31448b39e20df319e1c96441245f6d20 100644 >--- a/LayoutTests/platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt >+++ b/LayoutTests/platform/chromium/css3/filters/custom/custom-filter-property-parsing-expected.txt >@@ -513,6 +513,28 @@ FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. W > PASS filterRule.length is 1 > PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM > PASS removeBaseURL(subRule.cssText) is 'custom(url(vertex.shader))' >+ >+Custom with one transform : custom(none url(fragment.shader), oneTransform rotate(0deg)) >+PASS cssRule.type is 1 >+PASS declaration.length is 1 >+PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), oneTransform rotate(0deg))' >+PASS jsWrapperClass(filterRule) is 'CSSValueList' >+FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object. >+FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function. >+PASS filterRule.length is 1 >+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM >+PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), oneTransform rotate(0deg))' >+ >+Custom with multiple transforms : custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px)) >+PASS cssRule.type is 1 >+PASS declaration.length is 1 >+PASS removeBaseURL(declaration.getPropertyValue('-webkit-filter')) is 'custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px))' >+PASS jsWrapperClass(filterRule) is 'CSSValueList' >+FAIL jsWrapperClass(filterRule.__proto__) should be CSSValueListPrototype. Was Object. >+FAIL jsWrapperClass(filterRule.constructor) should be CSSValueListConstructor. Was Function. >+PASS filterRule.length is 1 >+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CUSTOM >+PASS removeBaseURL(subRule.cssText) is 'custom(none url(fragment.shader), multipleTransform rotate(0deg) perspective(0) scale(0, 0) translate(0px, 0px))' > PASS successfullyParsed is true > > TEST COMPLETE
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 71443
:
158647
|
158653
|
158672
|
158680
|
158909
|
158924
|
159022