| Differences between
and this patch
- a/Source/WebCore/ChangeLog +23 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2013-02-28  Michelangelo De Simone  <michelangelo@webkit.org>
2
3
        [CSS Shaders] Implement hue and saturation non-separable blend modes
4
        https://bugs.webkit.org/show_bug.cgi?id=109464
5
6
        Added the following GLSL helper functions to the CustomFilterValidatedProgram:
7
8
            - css_Sat(C): returns the saturation for the color C
9
            - css_SetSat(C, s): sets the saturation s on the color C
10
            - css_SetSatHelper(Cmin, Cmid, Cmax, s): helper function for css_SetSat
11
12
        The above functions are being used for the "hue" and "saturation" non-separable
13
        blend modes, the relevant spec for such modes is at URL:
14
        https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blendingnonseparable
15
16
        Reviewed by NOBODY (OOPS!).
17
18
        Tests: css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html
19
               css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html
20
21
        * platform/graphics/filters/CustomFilterValidatedProgram.cpp:
22
        (WebCore::CustomFilterValidatedProgram::blendFunctionString):
23
1
2013-03-01  Victor Carbune  <vcarbune@chromium.org>
24
2013-03-01  Victor Carbune  <vcarbune@chromium.org>
2
25
3
        Support padding, margin and border for internal UA cue styling
26
        Support padding, margin and border for internal UA cue styling
- a/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp -2 / +54 lines
Lines 292-297 String CustomFilterValidatedProgram::blendFunctionString(BlendMode blendMode) a/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp_sec1
292
    const char* blendColorExpression = "vec3(css_BlendComponent(Cb.r, Cs.r), css_BlendComponent(Cb.g, Cs.g), css_BlendComponent(Cb.b, Cs.b))";
292
    const char* blendColorExpression = "vec3(css_BlendComponent(Cb.r, Cs.r), css_BlendComponent(Cb.g, Cs.g), css_BlendComponent(Cb.b, Cs.b))";
293
    const char* blendComponentExpression = "Co = 0.0;";
293
    const char* blendComponentExpression = "Co = 0.0;";
294
    bool needsLuminosityHelperFunctions = false;
294
    bool needsLuminosityHelperFunctions = false;
295
    bool needsSaturationHelperFunctions = false;
295
    String blendFunctionString;
296
    String blendFunctionString;
296
    switch (blendMode) {
297
    switch (blendMode) {
297
    case BlendModeNormal:
298
    case BlendModeNormal:
Lines 416-424 String CustomFilterValidatedProgram::blendFunctionString(BlendMode blendMode) a/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp_sec2
416
        blendColorExpression = "css_SetLum(Cb, css_Lum(Cs))";
417
        blendColorExpression = "css_SetLum(Cb, css_Lum(Cs))";
417
        break;
418
        break;
418
    case BlendModeHue:
419
    case BlendModeHue:
420
        needsLuminosityHelperFunctions = true;
421
        needsSaturationHelperFunctions = true;
422
        blendColorExpression = "css_SetLum(css_SetSat(Cs, css_Sat(Cb)), css_Lum(Cb))";
423
        break;
419
    case BlendModeSaturation:
424
    case BlendModeSaturation:
420
        notImplemented();
425
        needsLuminosityHelperFunctions = true;
421
        return String();
426
        needsSaturationHelperFunctions = true;
427
        blendColorExpression = "css_SetLum(css_SetSat(Cb, css_Sat(Cs)), css_Lum(Cb))";
428
        break;
429
    default:
430
        ASSERT_NOT_REACHED();
422
    }
431
    }
423
432
424
    if (needsLuminosityHelperFunctions) {
433
    if (needsLuminosityHelperFunctions) {
Lines 446-451 String CustomFilterValidatedProgram::blendFunctionString(BlendMode blendMode) a/Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp_sec3
446
        ));
455
        ));
447
    }
456
    }
448
457
458
    if (needsSaturationHelperFunctions) {
459
        blendFunctionString.append(SHADER(
460
            mediump float css_Sat(mediump vec3 C)
461
            {
462
                mediump float cMin = min(min(C.r, C.g), C.b);
463
                mediump float cMax = max(max(C.r, C.g), C.b);
464
                return cMax - cMin;
465
            }
466
            void css_SetSatHelper(inout mediump float cMin, inout mediump float cMid, inout mediump float cMax, mediump float s)
467
            {
468
                if (cMax > cMin) {
469
                    cMid = (((cMid - cMin) * s) / (cMax - cMin));
470
                    cMax = s;
471
                } else
472
                    cMid = cMax = 0.0;
473
                cMin = 0.0;
474
            }
475
            mediump vec3 css_SetSat(mediump vec3 C, mediump float s)
476
            {
477
                if (C.r <= C.g) {
478
                    if (C.g <= C.b)
479
                        css_SetSatHelper(C.r, C.g, C.b, s);
480
                    else {
481
                        if (C.r <= C.b)
482
                            css_SetSatHelper(C.r, C.b, C.g, s);
483
                        else
484
                            css_SetSatHelper(C.b, C.r, C.g, s);
485
                    }
486
                } else {
487
                    if (C.r <= C.b)
488
                        css_SetSatHelper(C.g, C.r, C.b, s);
489
                    else {
490
                        if (C.g <= C.b)
491
                            css_SetSatHelper(C.g, C.b, C.r, s);
492
                        else
493
                            css_SetSatHelper(C.b, C.g, C.r, s);
494
                    }
495
                }
496
                return C;
497
            }
498
        ));
499
    }
500
449
    blendFunctionString.append(String::format(SHADER(
501
    blendFunctionString.append(String::format(SHADER(
450
        mediump float css_BlendComponent(mediump float Cb, mediump float Cs)
502
        mediump float css_BlendComponent(mediump float Cb, mediump float Cs)
451
        {
503
        {
- a/LayoutTests/ChangeLog +16 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2013-02-28  Michelangelo De Simone  <michelangelo@webkit.org>
2
3
        [CSS Shaders] Implement hue and saturation non-separable blend modes
4
        https://bugs.webkit.org/show_bug.cgi?id=109464
5
6
        Added relevant tests for the "hue" and "saturation" non-separable blend modes.
7
        These tests are currently skipped on Mac due to a slight color difference; please see relevant bug: http://webkit.org/b/107487.
8
9
        Reviewed by NOBODY (OOPS!).
10
11
        * css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html: Added.
12
        * css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html: Added.
13
        * css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html: Added.
14
        * css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html: Added.
15
        * platform/mac/TestExpectations:
16
1
2013-03-01  Roger Fong  <roger_fong@apple.com>
17
2013-03-01  Roger Fong  <roger_fong@apple.com>
2
18
3
		Unreviewed gardening of AppleWin port.
19
		Unreviewed gardening of AppleWin port.
- a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html +36 lines
Line 0 a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue-expected.html_sec1
1
<!DOCTYPE HTML>
2
<html lang="en">
3
<head>
4
    <title>Test that blends the source and the backdrop with the hue blend mode.</title>
5
    <style type="text/css">
6
        /* These are exactly the color values we expect. Some platforms may have slight different
7
           color result. */
8
        #solid-solid {
9
            background-color: rgb(108, 157, 255);
10
            width: 100px;
11
            height: 100px;
12
        }
13
        #alpha-solid {
14
            background-color: rgb(167, 192, 242);
15
            width: 100px;
16
            height: 100px;
17
        }
18
        #solid-alpha {
19
            background-color: rgb(169, 142, 166);
20
            width: 100px;
21
            height: 100px;
22
        }
23
        #alpha-alpha {
24
            background-color: rgb(205, 192, 204);
25
            width: 100px;
26
            height: 100px;
27
        }
28
    </style>
29
</head>
30
<body>
31
    <div id="solid-solid"></div>
32
    <div id="alpha-solid"></div>
33
    <div id="solid-alpha"></div>
34
    <div id="alpha-alpha"></div>
35
</body>
36
</html>
- a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html +151 lines
Line 0 a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html_sec1
1
<!DOCTYPE HTML>
2
<html lang="en">
3
<head>
4
    <title>Test that blends the source and the backdrop with the hue blend mode.</title>
5
    <script>
6
        if (window.testRunner) {
7
            window.testRunner.overridePreference("WebKitCSSCustomFilterEnabled", "1");
8
            window.testRunner.overridePreference("WebKitWebGLEnabled", "1");
9
        }
10
    </script>
11
    <style type="text/css">
12
        #solid-solid {
13
            background-color: rgb(90%, 50%, 30%);
14
            width: 100px;
15
            height: 100px;
16
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 1.0);
17
        }
18
        #alpha-solid {
19
            background-color: rgba(90%, 50%, 30%, 0.5);
20
            width: 100px;
21
            height: 100px;
22
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 1.0);
23
        }
24
        #solid-alpha {
25
            background-color: rgb(90%, 50%, 30%);
26
            width: 100px;
27
            height: 100px;
28
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 0.5);
29
        }
30
        #alpha-alpha {
31
            background-color: rgba(90%, 50%, 30%, 0.5);
32
            width: 100px;
33
            height: 100px;
34
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') hue source-atop), mix_color 0.2 0.4 0.8 0.5);
35
        }
36
    </style>
37
</head>
38
<body>
39
<!--
40
    The following proof applies to the first case (#solid-solid) where both the backdrop and the
41
    source are solid.
42
43
    In this test the following combinations are also tested:
44
        Backdrop with 0.5 alpha blended with solid source
45
        Solid backdrop blended with source with 0.5 alpha
46
        Backdrop with 0.5 alpha blended with source with 0.5 alpha
47
    The underlying proof of the above mentioned cases is the same: the colors are premultiplied
48
    and then blended together.
49
50
    The final color of #solid-solid depends on the "hue" blend mode, which is a non-separable
51
    blend mode. This means that colors are blended together as a whole, not component by component.
52
53
    The formula for this blend mode is:
54
        Cr = B(Cb, Cs) = SetLum(SetSat(Cs, Sat(Cb)), Lum(Cb))
55
56
    With:
57
        Cr: the resulting color
58
        Cb: the backdrop color, which is #solid-solid ("original DOM element color")
59
        Cs: the source color, which is mix_color
60
        Lum(Cb): the luminosity of Cb. Luminosity for color C is generally defined by
61
           Lum(C): 0.3 * Cred + 0.59 * Cgreen + 0.11 * Cblue
62
        Sat(Cb): the saturation of Cb. Saturation for color C is generally defined by
63
           Sat(C): max(Cred, Cgreen, Cblue) - min(Cred, Cgreen, Cblue)
64
       SetSat(Cs, Sat(Cb)): the function that sets the saturation
65
       SetLum(SetSat(Cs, Sat(Cb)), Lum(Cb)): the function that sets the luminosity.
66
67
    The function that sets the luminosity l on the color C is generally defined by:
68
69
        SetLum(C, l)
70
            d = l - Lum(C)
71
            Cred = Cred + d
72
            Cgreen = Cgreen + d
73
            Cblue = Cblue + d
74
            return ClipColor(C)
75
76
    At this point the color C has to be clipped between [0..1]  by the ClipColor function, which is
77
    generally defined by:
78
79
        ClipColor(C)
80
            l = Lum(C)
81
            n = min(Cred, Cgreen, Cblue)
82
            x = max(Cred, Cgreen, Cblue)
83
            if n < 0.0
84
                Cred = l + (((Cred - l) * l) / (l - n))
85
                Cgreen = l + (((Cgreen - l) * l) / (l - n))
86
                Cblue = l + (((Cblue - l) * l) / (l - n))
87
            if x > 1.0
88
                Cred = l + (((Cred - l) * (1 - l)) / (x - l))
89
                Cgreen = l + (((Cgreen - l) * (1 - l)) / (x - l))
90
                Cblue = l + (((Cblue - l) * (1 - l)) / (x - l))
91
            return C
92
93
    The function that sets the saturation s on the color C is generally defined by:
94
95
        SetSat(C, s)
96
            if(Cmax > Cmin)
97
                Cmid = (((Cmid - Cmin) * s) / (Cmax - Cmin))
98
                Cmax = s
99
            else
100
                Cmid = Cmax = 0
101
            Cmin = 0
102
            return C
103
104
    In this test case:
105
        Lum(Cb) = 0.3 * 0.9 + 0.59 * 0.5 + 0.11 * 0.3
106
        Lum(Cb) = 0.27 + 0.295 + 0.033
107
        Lum(Cb) = 0.598
108
109
        Sat(Cb) = max(0.9, 0.5, 0.3) - min(0.9, 0.5, 0.3)
110
        Sat(Cb) = 0.9 - 0.3
111
        Sat(Cb) = 0.6
112
113
        For the sake of brevity the result of this computation is called Ct
114
        Ct = SetSat(Cs, Sat(Cb))
115
            0.8 > 0.2
116
                Cmid = (((0.4 - 0.2) * 0.6) / (0.8 - 0.2)) = (0.2 * 0.6) / 0.6 = 0.2
117
                Cmax = 0.6
118
            Cmin = 0
119
            return (0, 0.2, 0.6)
120
121
        Cr = SetLum(Ct, Lum(Cb))
122
            d = 0.598 - (0.3 * 0.0 + 0.59 * 0.2 + 0.11 * 0.6) = 0.118 + 0.066 = 0.184
123
            d = 0.598 - (0.118 + 0.066) = 0.598 - 0.184
124
            d = 0.414
125
            Cred = 0.0 + 0.414 = 0.414
126
            Green = 0.2 + 0.414 = 0.614
127
            Cblue = 0.6 + 0.414 = 1.014
128
            return ClipColor(0.414, 0.614, 1.014)
129
130
        ClipColor(0.414, 0.614, 1.014)
131
            l = 0.3 * 0.414 + 0.59 * 0.614 + 0.11 * 1.1014 = 0.1242 + 0.36226 + 0.121154 = 0.607614
132
            n = min(0.414, 0.614, 1.014) = 0.414
133
            x = max(0.414, 0.614, 1.014) = 1.014
134
            x > 1.0
135
                Cred = 0.607614 + (((0.414 - 0.607614) * (1 - 0.607614)) / (1.014 - 0.607614)) = 
136
                     = 0.607614 + ((-0.193614 * 0.392386) / 0.406386) = 0.607614 - (0.07597142 / 0.406386) = 0.607614 - 0.18694399 = 0.42067001
137
                Cgreen = 0.607614 + (((0.614 - 0.607614) * (1 - 0.607614)) / (1.014 - 0.607614)) =
138
                       = 0.607614 + ((0.003386 * 0.392386) / 0.406386 = 0.607614 + (0.00132862 / 0.406386) = 0.607614 + 0.00326935 = 0.61088335
139
                Cblue = 0.607614 + (((1.014 - 0.607614) * (1 - 0.607614)) / (1.014 - 0.607614) =
140
                      = 0.607614 + ((0.406386 * 0.392386) / 0.406386) = 0.607614 + (0.15946018 / 0.406386) = 0.607614 + 0.39238601 = 1.0
141
            return (0.42, 0.61, 1.0)
142
143
    This value is equivalent to (108, 157, 255), which is the expected color.
144
    This is the exact color value, other ports might experience slight differences.
145
-->
146
    <div id="solid-solid"></div>
147
    <div id="alpha-solid"></div>
148
    <div id="solid-alpha"></div>
149
    <div id="alpha-alpha"></div>
150
</body>
151
</html>
- a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html +36 lines
Line 0 a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation-expected.html_sec1
1
<!DOCTYPE HTML>
2
<html lang="en">
3
<head>
4
    <title>Test that blends the source and the backdrop with the saturation blend mode.</title>
5
    <style type="text/css">
6
        /* These are exactly the color values we expect. Some platforms may have slight different
7
           color result. */
8
        #solid-solid {
9
            background-color: rgb(191, 141, 115);
10
            width: 100px;
11
            height: 100px;
12
        }
13
        #alpha-solid {
14
            background-color: rgb(198, 185, 198);
15
            width: 100px;
16
            height: 100px;
17
        }
18
        #solid-alpha {
19
            background-color: rgb(230, 128, 76);
20
            width: 100px;
21
            height: 100px;
22
        }
23
        #alpha-alpha {
24
            background-color: rgb(220, 189, 182);
25
            width: 100px;
26
            height: 100px;
27
        }
28
    </style>
29
</head>
30
<body>
31
    <div id="solid-solid"></div>
32
    <div id="alpha-solid"></div>
33
    <div id="solid-alpha"></div>
34
    <div id="alpha-alpha"></div>
35
</body>
36
</html>
- a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html +137 lines
Line 0 a/LayoutTests/css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html_sec1
1
<!DOCTYPE HTML>
2
<html lang="en">
3
<head>
4
    <title>Test that blends the source and the backdrop with the saturation blend mode.</title>
5
    <script>
6
        if (window.testRunner) {
7
            window.testRunner.overridePreference("WebKitCSSCustomFilterEnabled", "1");
8
            window.testRunner.overridePreference("WebKitWebGLEnabled", "1");
9
        }
10
    </script>
11
    <style type="text/css">
12
        #solid-solid {
13
            background-color: rgb(90%, 50%, 30%);
14
            width: 100px;
15
            height: 100px;
16
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.1 0.2 0.4 1.0);
17
        }
18
        #alpha-solid {
19
            background-color: rgba(90%, 50%, 30%, 0.5);
20
            width: 100px;
21
            height: 100px;
22
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.2 0.4 0.8 1.0);
23
        }
24
        #solid-alpha {
25
            background-color: rgb(90%, 50%, 30%);
26
            width: 100px;
27
            height: 100px;
28
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.2 0.4 0.8 0.5);
29
        }
30
        #alpha-alpha {
31
            background-color: rgba(90%, 50%, 30%, 0.5);
32
            width: 100px;
33
            height: 100px;
34
            -webkit-filter: custom(none mix(url('../resources/mix-color.fs') saturation source-atop), mix_color 0.2 0.4 0.8 0.5);
35
        }
36
    </style>
37
</head>
38
<body>
39
<!--
40
    The following proof applies to the first case (#solid-solid) where both the backdrop and the
41
    source are solid.
42
43
    In this test the following combinations are also tested:
44
        Backdrop with 0.5 alpha blended with solid source
45
        Solid backdrop blended with source with 0.5 alpha
46
        Backdrop with 0.5 alpha blended with source with 0.5 alpha
47
    The underlying proof of the above mentioned cases is the same: the colors are premultiplied
48
    and then blended together.
49
50
    The final color of #solid-solid depends on the "saturation" blend mode, which is a non-separable
51
    blend mode. This means that colors are blended together as a whole, not component by component.
52
53
    The formula for this blend mode is:
54
        Cr = B(Cb, Cs) = SetLum(SetSat(Cb, Sat(Cs)), Lum(Cb))
55
56
    With:
57
        Cr: the resulting color
58
        Cb: the backdrop color, which is #solid-solid ("original DOM element color")
59
        Cs: the source color, which is mix_color
60
        Sat(Cb): the saturation of Cb. Saturation for color C is generally defined by
61
           Sat(C): max(Cred, Cgreen, Cblue) - min(Cred, Cgreen, Cblue)
62
        Lum(Cs): the luminosity of Cs. Luminosity for color C is generally defined by
63
           Lum(C): 0.3 * Cred + 0.59 * Cgreen + 0.11 * Cblue
64
        SetSat(Cb, Sat(Cs)): the function that sets the saturation
65
        SetLum(SetSat(Cb, Sat(Cs)), Lum(Cb)): the function that sets the luminosity.
66
67
    The function that sets the luminosity l on the color C is generally defined by:
68
69
        SetLum(C, l)
70
            d = l - Lum(C)
71
            Cred = Cred + d
72
            Cgreen = Cgreen + d
73
            Cblue = Cblue + d
74
            return ClipColor(C)
75
76
    At this point the color C has to be clipped between [0..1]  by the ClipColor function, which is
77
    generally defined by:
78
79
        ClipColor(C)
80
            l = Lum(C)
81
            n = min(Cred, Cgreen, Cblue)
82
            x = max(Cred, Cgreen, Cblue)
83
            if n < 0.0
84
                Cred = l + (((Cred - l) * l) / (l - n))
85
                Cgreen = l + (((Cgreen - l) * l) / (l - n))
86
                Cblue = l + (((Cblue - l) * l) / (l - n))
87
            if x > 1.0
88
                Cred = l + (((Cred - l) * (1 - l)) / (x - l))
89
                Cgreen = l + (((Cgreen - l) * (1 - l)) / (x - l))
90
                Cblue = l + (((Cblue - l) * (1 - l)) / (x - l))
91
            return C
92
93
    The function that sets the saturation s on the color C is generally defined by:
94
95
        SetSat(C, s)
96
            if(Cmax > Cmin)
97
                Cmid = (((Cmid - Cmin) * s) / (Cmax - Cmin))
98
                Cmax = s
99
            else
100
                Cmid = Cmax = 0
101
            Cmin = 0
102
            return C
103
104
    In this test case:
105
        Lum(Cb) = 0.3 * 0.9 + 0.59 * 0.5 + 0.11 * 0.3
106
        Lum(Cb) = 0.27 + 0.295 + 0.033
107
        Lum(Cb) = 0.598
108
109
        Sat(Cs) = max(0.1, 0.2, 0.4) - min(0.1, 0.2, 0.4)
110
        Sat(Cs) = 0.4 - 0.1
111
        Sat(Cs) = 0.3
112
113
        For the sake of brevity the result of this computation is called Ct
114
        Ct = SetSat(Cb, Sat(Cs))
115
            0.9 > 0.3
116
                Cmid = (((0.5 - 0.3) * 0.3) / (0.9 - 0.3) = 0.2 * 0.3 / 0.6 = 0.06 / 0.6 = 0.10
117
                Cmax = 0.3
118
            Cmin = 0
119
            return (0.3, 0.10, 0.0)
120
121
    Cr = SetLum(Ct, 0.598)
122
        d = 0.598 - (0.3 * 0.3 + 0.59 * 0.10 + 0.11 * 0.0) = 0.598 - (0.09 + 0.059) = 0.598 - 0.149
123
        d = 0.449
124
        Cred = 0.3 + 0.449 = 0.749
125
        Cgreen = 0.10 + 0.449 = 0.549
126
        Cblue = 0.0 + 0.449 = 0.449
127
        return (0.749, 0.549, 0.449)
128
129
    This value is equivalent to (191, 140, 115), which is the expected color.
130
    This is the exact color value, other ports might experience slight differences.
131
-->
132
    <div id="solid-solid"></div>
133
    <div id="alpha-solid"></div>
134
    <div id="solid-alpha"></div>
135
    <div id="alpha-alpha"></div>
136
</body>
137
</html>
- a/LayoutTests/platform/mac/TestExpectations -1 / +3 lines
Lines 953-963 fast/canvas/canvas-quadratic-same-endpoint.html a/LayoutTests/platform/mac/TestExpectations_sec1
953
css3/filters/composited-during-transition-layertree.html
953
css3/filters/composited-during-transition-layertree.html
954
954
955
# --- Custom Filters ---
955
# --- Custom Filters ---
956
# The following 3 tests are currently skipped on Mac for slight color differences,
956
# The following 5 tests are currently skipped on Mac for slight color differences,
957
# please see the relevant bug: http://webkit.org/b/107487
957
# please see the relevant bug: http://webkit.org/b/107487
958
webkit.org/b/107487 css3/filters/custom/custom-filter-blend-fractional-destination-alpha.html [ Skip ]
958
webkit.org/b/107487 css3/filters/custom/custom-filter-blend-fractional-destination-alpha.html [ Skip ]
959
webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-color.html [ Skip ]
959
webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-color.html [ Skip ]
960
webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-luminosity.html [ Skip ]
960
webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-luminosity.html [ Skip ]
961
webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-hue.html [ Skip ]
962
webkit.org/b/107487 css3/filters/custom/custom-filter-nonseparable-blend-mode-saturation.html [ Skip ]
961
963
962
# --- Text ---
964
# --- Text ---
963
fast/forms/text-control-intrinsic-widths.html
965
fast/forms/text-control-intrinsic-widths.html

Return to Bug 109464