Changeset 139106 in webkit


Ignore:
Timestamp:
Jan 8, 2013 1:44:22 PM (11 years ago)
Author:
alexis@webkit.org
Message:

WebKit does not reject some cubic-bezier form values for transition-timing-function.
https://bugs.webkit.org/show_bug.cgi?id=106369

Reviewed by Dean Jackson.

Source/WebCore:

http://www.w3.org/TR/css3-transitions/#transition-timing-function-property
describes restricitions on cubic-bezier values where the x values of
the curve should be between [0, 1] and y values can exceed this range.
WebKit was not following the specification by allowing x values
exceeding the range.
The spec also says that we should reject the defintion if the condition
is not respected which is what the new code does.

Test: transitions/transitions-parsing.html

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseAnimationTimingFunction):

LayoutTests:

Extended existing tests to cover the bug. Updated an existing test
which was checking wrong values.

  • fast/css/transition-timing-function.html: Change the tested values as

they are considered wrong by the spec.

  • fast/css/transition-timing-function-expected.txt:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r139105 r139106  
     12013-01-08  Alexis Menard  <alexis@webkit.org>
     2
     3        WebKit does not reject some cubic-bezier form values for transition-timing-function.
     4        https://bugs.webkit.org/show_bug.cgi?id=106369
     5
     6        Reviewed by Dean Jackson.
     7
     8        Extended existing tests to cover the bug. Updated an existing test
     9        which was checking wrong values.
     10
     11        * fast/css/transition-timing-function.html: Change the tested values as
     12        they are considered wrong by the spec.
     13        * fast/css/transition-timing-function-expected.txt:
     14
    1152013-01-08  Dimitri Glazkov  <dglazkov@chromium.org>
    216
  • trunk/LayoutTests/fast/css/transition-timing-function-expected.txt

    r96276 r139106  
    66PASS: 'cubic-bezier(0, 0, 0, 1)' parsed and serialized successfully.
    77PASS: 'cubic-bezier(0.1, 0.52, 0.11101, 0.9)' parsed and serialized successfully.
    8 PASS: 'cubic-bezier(1.5, 55, 12.3456, 1000)' parsed and serialized successfully.
    9 PASS: 'cubic-bezier(-1.5, -55, -12.3456, -1000)' parsed and serialized successfully.
     8PASS: 'cubic-bezier(1, 55, 0.3456, 1000)' parsed and serialized successfully.
     9PASS: 'cubic-bezier(1, -55, 0.3456, -1000)' parsed and serialized successfully.
    1010
  • trunk/LayoutTests/fast/css/transition-timing-function.html

    r120683 r139106  
    2929    roundTripTransitionTimingFunctionValue("cubic-bezier(0, 0, 0, 1)");
    3030    roundTripTransitionTimingFunctionValue("cubic-bezier(0.1, 0.52, 0.11101, 0.9)");
    31     roundTripTransitionTimingFunctionValue("cubic-bezier(1.5, 55, 12.3456, 1000)");
    32     roundTripTransitionTimingFunctionValue("cubic-bezier(-1.5, -55, -12.3456, -1000)");
     31    roundTripTransitionTimingFunctionValue("cubic-bezier(1, 55, 0.3456, 1000)");
     32    roundTripTransitionTimingFunctionValue("cubic-bezier(1, -55, 0.3456, -1000)");
    3333</script>
  • trunk/LayoutTests/transitions/transitions-parsing-expected.txt

    r139070 r139106  
    159159PASS style.webkitTransitionTimingFunction is 'cubic-bezier(0.2, -2, 0.2, 0.4)'
    160160PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(0.2, -2, 0.2, 0.4)'
    161 PASS style.transitionTimingFunction is 'cubic-bezier(3, 0.1, 4, 1)'
    162 PASS computedStyle.transitionTimingFunction is 'cubic-bezier(3, 0.1, 4, 1)'
    163 PASS style.webkitTransitionTimingFunction is 'cubic-bezier(3, 0.1, 4, 1)'
    164 PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(3, 0.1, 4, 1)'
    165 PASS style.transitionTimingFunction is 'cubic-bezier(1, 0.1, 3, 1)'
    166 PASS computedStyle.transitionTimingFunction is 'cubic-bezier(1, 0.1, 3, 1)'
    167 PASS style.webkitTransitionTimingFunction is 'cubic-bezier(1, 0.1, 3, 1)'
    168 PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(1, 0.1, 3, 1)'
    169 PASS style.transitionTimingFunction is 'cubic-bezier(0.1, 0, 4, 0.4)'
    170 PASS computedStyle.transitionTimingFunction is 'cubic-bezier(0.1, 0, 4, 0.4)'
    171 PASS style.webkitTransitionTimingFunction is 'cubic-bezier(0.1, 0, 4, 0.4)'
    172 PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(0.1, 0, 4, 0.4)'
    173 PASS style.transitionTimingFunction is 'cubic-bezier(3, 0, 4, 0.4)'
    174 PASS computedStyle.transitionTimingFunction is 'cubic-bezier(3, 0, 4, 0.4)'
    175 PASS style.webkitTransitionTimingFunction is 'cubic-bezier(3, 0, 4, 0.4)'
    176 PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(3, 0, 4, 0.4)'
    177 PASS style.transitionTimingFunction is 'cubic-bezier(3, 0, 0.2, 0.4)'
    178 PASS computedStyle.transitionTimingFunction is 'cubic-bezier(3, 0, 0.2, 0.4)'
    179 PASS style.webkitTransitionTimingFunction is 'cubic-bezier(3, 0, 0.2, 0.4)'
    180 PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(3, 0, 0.2, 0.4)'
    181 PASS style.transitionTimingFunction is 'cubic-bezier(-0.2, 0, 0.2, 0.4)'
    182 PASS computedStyle.transitionTimingFunction is 'cubic-bezier(-0.2, 0, 0.2, 0.4)'
    183 PASS style.webkitTransitionTimingFunction is 'cubic-bezier(-0.2, 0, 0.2, 0.4)'
    184 PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(-0.2, 0, 0.2, 0.4)'
    185 PASS style.transitionTimingFunction is 'cubic-bezier(0.2, 2, -0.2, 0.4)'
    186 PASS computedStyle.transitionTimingFunction is 'cubic-bezier(0.2, 2, -0.2, 0.4)'
    187 PASS style.webkitTransitionTimingFunction is 'cubic-bezier(0.2, 2, -0.2, 0.4)'
    188 PASS computedStyle.webkitTransitionTimingFunction is 'cubic-bezier(0.2, 2, -0.2, 0.4)'
    189161PASS style.transitionTimingFunction is 'step-start'
    190162PASS computedStyle.transitionTimingFunction is 'steps(1, start)'
     
    252224PASS style.webkitTransitionTimingFunction is ''
    253225PASS computedStyle.webkitTransitionTimingFunction is 'ease'
     226PASS style.transitionTimingFunction is ''
     227PASS computedStyle.transitionTimingFunction is 'ease'
     228PASS style.webkitTransitionTimingFunction is ''
     229PASS computedStyle.webkitTransitionTimingFunction is 'ease'
     230PASS style.transitionTimingFunction is ''
     231PASS computedStyle.transitionTimingFunction is 'ease'
     232PASS style.webkitTransitionTimingFunction is ''
     233PASS computedStyle.webkitTransitionTimingFunction is 'ease'
     234PASS style.transitionTimingFunction is ''
     235PASS computedStyle.transitionTimingFunction is 'ease'
     236PASS style.webkitTransitionTimingFunction is ''
     237PASS computedStyle.webkitTransitionTimingFunction is 'ease'
     238PASS style.transitionTimingFunction is ''
     239PASS computedStyle.transitionTimingFunction is 'ease'
     240PASS style.webkitTransitionTimingFunction is ''
     241PASS computedStyle.webkitTransitionTimingFunction is 'ease'
     242PASS style.transitionTimingFunction is ''
     243PASS computedStyle.transitionTimingFunction is 'ease'
     244PASS style.webkitTransitionTimingFunction is ''
     245PASS computedStyle.webkitTransitionTimingFunction is 'ease'
     246PASS style.transitionTimingFunction is ''
     247PASS computedStyle.transitionTimingFunction is 'ease'
     248PASS style.webkitTransitionTimingFunction is ''
     249PASS computedStyle.webkitTransitionTimingFunction is 'ease'
     250PASS style.transitionTimingFunction is ''
     251PASS computedStyle.transitionTimingFunction is 'ease'
     252PASS style.webkitTransitionTimingFunction is ''
     253PASS computedStyle.webkitTransitionTimingFunction is 'ease'
    254254Valid transition-delay values.
    255255PASS computedStyle.transitionDelay is '0s'
  • trunk/LayoutTests/transitions/transitions-parsing.html

    r139070 r139106  
    274274shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(0.2, -2, 0.2, 0.4)'");
    275275
    276 style.transitionTimingFunction = "cubic-bezier(3, 0.1, 4, 1)";
    277 shouldBe("style.transitionTimingFunction", "'cubic-bezier(3, 0.1, 4, 1)'");
    278 shouldBe("computedStyle.transitionTimingFunction", "'cubic-bezier(3, 0.1, 4, 1)'");
    279 shouldBe("style.webkitTransitionTimingFunction", "'cubic-bezier(3, 0.1, 4, 1)'");
    280 shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(3, 0.1, 4, 1)'");
    281 
    282 style.transitionTimingFunction = "cubic-bezier(1, 0.1, 3, 1)";
    283 shouldBe("style.transitionTimingFunction", "'cubic-bezier(1, 0.1, 3, 1)'");
    284 shouldBe("computedStyle.transitionTimingFunction", "'cubic-bezier(1, 0.1, 3, 1)'");
    285 shouldBe("style.webkitTransitionTimingFunction", "'cubic-bezier(1, 0.1, 3, 1)'");
    286 shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(1, 0.1, 3, 1)'");
    287 
    288 style.transitionTimingFunction = "cubic-bezier(0.1, 0, 4, 0.4)";
    289 shouldBe("style.transitionTimingFunction", "'cubic-bezier(0.1, 0, 4, 0.4)'");
    290 shouldBe("computedStyle.transitionTimingFunction", "'cubic-bezier(0.1, 0, 4, 0.4)'");
    291 shouldBe("style.webkitTransitionTimingFunction", "'cubic-bezier(0.1, 0, 4, 0.4)'");
    292 shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(0.1, 0, 4, 0.4)'");
    293 
    294 style.transitionTimingFunction = "cubic-bezier(3, 0, 4, 0.4)";
    295 shouldBe("style.transitionTimingFunction", "'cubic-bezier(3, 0, 4, 0.4)'");
    296 shouldBe("computedStyle.transitionTimingFunction", "'cubic-bezier(3, 0, 4, 0.4)'");
    297 shouldBe("style.webkitTransitionTimingFunction", "'cubic-bezier(3, 0, 4, 0.4)'");
    298 shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(3, 0, 4, 0.4)'");
    299 
    300 style.transitionTimingFunction = "cubic-bezier(3, 0, 0.2, 0.4)";
    301 shouldBe("style.transitionTimingFunction", "'cubic-bezier(3, 0, 0.2, 0.4)'");
    302 shouldBe("computedStyle.transitionTimingFunction", "'cubic-bezier(3, 0, 0.2, 0.4)'");
    303 shouldBe("style.webkitTransitionTimingFunction", "'cubic-bezier(3, 0, 0.2, 0.4)'");
    304 shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(3, 0, 0.2, 0.4)'");
    305 
    306 style.transitionTimingFunction = "cubic-bezier(-0.2, 0, 0.2, 0.4)";
    307 shouldBe("style.transitionTimingFunction", "'cubic-bezier(-0.2, 0, 0.2, 0.4)'");
    308 shouldBe("computedStyle.transitionTimingFunction", "'cubic-bezier(-0.2, 0, 0.2, 0.4)'");
    309 shouldBe("style.webkitTransitionTimingFunction", "'cubic-bezier(-0.2, 0, 0.2, 0.4)'");
    310 shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(-0.2, 0, 0.2, 0.4)'");
    311 
    312 style.transitionTimingFunction = "cubic-bezier(0.2, 2, -0.2, 0.4)";
    313 shouldBe("style.transitionTimingFunction", "'cubic-bezier(0.2, 2, -0.2, 0.4)'");
    314 shouldBe("computedStyle.transitionTimingFunction", "'cubic-bezier(0.2, 2, -0.2, 0.4)'");
    315 shouldBe("style.webkitTransitionTimingFunction", "'cubic-bezier(0.2, 2, -0.2, 0.4)'");
    316 shouldBe("computedStyle.webkitTransitionTimingFunction", "'cubic-bezier(0.2, 2, -0.2, 0.4)'");
    317 
    318276style.transitionTimingFunction = "step-start";
    319277shouldBe("style.transitionTimingFunction", "'step-start'");
     
    369327style.transitionProperty = "";
    370328style.transitionTimingFunction = "";
     329
     330style.transitionTimingFunction = "cubic-bezier(3, 0.1, 4, 1)";
     331shouldBe("style.transitionTimingFunction", "''");
     332shouldBe("computedStyle.transitionTimingFunction", "'ease'");
     333shouldBe("style.webkitTransitionTimingFunction", "''");
     334shouldBe("computedStyle.webkitTransitionTimingFunction", "'ease'");
     335
     336style.transitionTimingFunction = "cubic-bezier(1, 0.1, 3, 1)";
     337shouldBe("style.transitionTimingFunction", "''");
     338shouldBe("computedStyle.transitionTimingFunction", "'ease'");
     339shouldBe("style.webkitTransitionTimingFunction", "''");
     340shouldBe("computedStyle.webkitTransitionTimingFunction", "'ease'");
     341
     342style.transitionTimingFunction = "cubic-bezier(0.1, 0, 4, 0.4)";
     343shouldBe("style.transitionTimingFunction", "''");
     344shouldBe("computedStyle.transitionTimingFunction", "'ease'");
     345shouldBe("style.webkitTransitionTimingFunction", "''");
     346shouldBe("computedStyle.webkitTransitionTimingFunction", "'ease'");
     347
     348style.transitionTimingFunction = "cubic-bezier(3, 0, 4, 0.4)";
     349shouldBe("style.transitionTimingFunction", "''");
     350shouldBe("computedStyle.transitionTimingFunction", "'ease'");
     351shouldBe("style.webkitTransitionTimingFunction", "''");
     352shouldBe("computedStyle.webkitTransitionTimingFunction", "'ease'");
     353
     354style.transitionTimingFunction = "cubic-bezier(3, 0, 0.2, 0.4)";
     355shouldBe("style.transitionTimingFunction", "''");
     356shouldBe("computedStyle.transitionTimingFunction", "'ease'");
     357shouldBe("style.webkitTransitionTimingFunction", "''");
     358shouldBe("computedStyle.webkitTransitionTimingFunction", "'ease'");
     359
     360style.transitionTimingFunction = "cubic-bezier(-0.2, 0, 0.2, 0.4)";
     361shouldBe("style.transitionTimingFunction", "''");
     362shouldBe("computedStyle.transitionTimingFunction", "'ease'");
     363shouldBe("style.webkitTransitionTimingFunction", "''");
     364shouldBe("computedStyle.webkitTransitionTimingFunction", "'ease'");
     365
     366style.transitionTimingFunction = "cubic-bezier(0.2, 2, -0.2, 0.4)";
     367shouldBe("style.transitionTimingFunction", "''");
     368shouldBe("computedStyle.transitionTimingFunction", "'ease'");
     369shouldBe("style.webkitTransitionTimingFunction", "''");
     370shouldBe("computedStyle.webkitTransitionTimingFunction", "'ease'");
    371371
    372372style.transitionTimingFunction = "steps(5, 3)";
  • trunk/Source/WebCore/ChangeLog

    r139100 r139106  
     12013-01-08  Alexis Menard  <alexis@webkit.org>
     2
     3        WebKit does not reject some cubic-bezier form values for transition-timing-function.
     4        https://bugs.webkit.org/show_bug.cgi?id=106369
     5
     6        Reviewed by Dean Jackson.
     7
     8        http://www.w3.org/TR/css3-transitions/#transition-timing-function-property
     9        describes restricitions on cubic-bezier values where the x values of
     10        the curve should be between [0, 1] and y values can exceed this range.
     11        WebKit was not following the specification by allowing x values
     12        exceeding the range.
     13        The spec also says that we should reject the defintion if the condition
     14        is not respected which is what the new code does.
     15
     16        Test: transitions/transitions-parsing.html
     17
     18        * css/CSSParser.cpp:
     19        (WebCore::CSSParser::parseAnimationTimingFunction):
     20
    1212013-01-08  Andreas Kling  <akling@apple.com>
    222
  • trunk/Source/WebCore/css/CSSParser.cpp

    r138746 r139106  
    44074407            return 0;
    44084408
    4409         // There are two points specified.  The values must be between 0 and 1.
     4409        // There are two points specified. The x values must be between 0 and 1 but the y values can exceed this range.
    44104410        double x1, y1, x2, y2;
    44114411
    44124412        if (!parseCubicBezierTimingFunctionValue(args, x1))
     4413            return 0;
     4414        if (x1 < 0 || x1 > 1)
    44134415            return 0;
    44144416        if (!parseCubicBezierTimingFunctionValue(args, y1))
    44154417            return 0;
    44164418        if (!parseCubicBezierTimingFunctionValue(args, x2))
     4419            return 0;
     4420        if (x2 < 0 || x2 > 1)
    44174421            return 0;
    44184422        if (!parseCubicBezierTimingFunctionValue(args, y2))
Note: See TracChangeset for help on using the changeset viewer.