| Differences between
and this patch
- a/Source/WebCore/ChangeLog +21 lines
Lines 1-3 a/Source/WebCore/ChangeLog_sec1
1
2011-12-28  Julien Chaffraix  <jchaffraix@webkit.org>
2
3
        REGRESSION (r93614): Safari Reader doesn't repaint correctly when scrolling
4
        https://bugs.webkit.org/show_bug.cgi?id=67100
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Tests: fast/layers/scroll-with-transform-composited-layer-expected.html
9
               fast/layers/scroll-with-transform-composited-layer.html
10
               fast/layers/scroll-with-transform-layer-expected.html
11
               fast/layers/scroll-with-transform-layer.html
12
13
        The regression came from a previous optimization that was wrongly kept after r93614.
14
15
        * rendering/RenderLayer.cpp:
16
        (WebCore::RenderLayer::updateLayerPositionsAfterScroll):
17
        Remove the early return for transformed layer. This change worked as we used
18
        to call updateLayerPositions from scrollTo which would call updateLayerPosition on
19
        all our descendants. After r93614, this is no longer the case and we explicitely need
20
        to call updateLayerPosition on our descendants from updateLayerPositionsAfterScroll.
21
1
2011-12-21  Matt Falkenhagen  <falken@chromium.org>
22
2011-12-21  Matt Falkenhagen  <falken@chromium.org>
2
23
3
        Add all ICU languages to LocaleToScriptMappingDefault.cpp
24
        Add all ICU languages to LocaleToScriptMappingDefault.cpp
- a/Source/WebCore/rendering/RenderLayer.cpp -5 lines
Lines 465-475 void RenderLayer::updateLayerPositionsAfterScroll(UpdateLayerPositionsAfterScrol a/Source/WebCore/rendering/RenderLayer.cpp_sec1
465
        // FIXME: Is it worth passing the offsetFromRoot around like in updateLayerPositions?
465
        // FIXME: Is it worth passing the offsetFromRoot around like in updateLayerPositions?
466
        computeRepaintRects();
466
        computeRepaintRects();
467
        flags |= HasSeenFixedPositionedAncestor;
467
        flags |= HasSeenFixedPositionedAncestor;
468
    } else if (renderer()->hasTransform() && !renderer()->isRenderView()) {
469
        // Transforms act as fixed position containers, so nothing inside a
470
        // transformed element can be fixed relative to the viewport if the
471
        // transformed element is not fixed itself or child of a fixed element.
472
        return;
473
    } else if ((flags & HasSeenAncestorWithOverflowClip) && !m_canSkipRepaintRectsUpdateOnScroll) {
468
    } else if ((flags & HasSeenAncestorWithOverflowClip) && !m_canSkipRepaintRectsUpdateOnScroll) {
474
        // If we have seen an overflow clip, we should update our repaint rects as clippedOverflowRectForRepaint
469
        // If we have seen an overflow clip, we should update our repaint rects as clippedOverflowRectForRepaint
475
        // intersects it with our ancestor overflow clip that may have moved.
470
        // intersects it with our ancestor overflow clip that may have moved.
- a/LayoutTests/ChangeLog +15 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2011-12-28  Julien Chaffraix  <jchaffraix@webkit.org>
2
3
        REGRESSION (r93614): Safari Reader doesn't repaint correctly when scrolling
4
        https://bugs.webkit.org/show_bug.cgi?id=67100
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Added 2 ref tests for scrolling inside a transformed layers (either composited
9
        or not).
10
11
        * fast/layers/scroll-with-transform-composited-layer-expected.html: Added.
12
        * fast/layers/scroll-with-transform-composited-layer.html: Added.
13
        * fast/layers/scroll-with-transform-layer-expected.html: Added.
14
        * fast/layers/scroll-with-transform-layer.html: Added.
15
1
2011-12-21  Ilya Tikhonovsky  <loislo@chromium.org>
16
2011-12-21  Ilya Tikhonovsky  <loislo@chromium.org>
2
17
3
        Unreviewed update test expectation for svg/custom/linking-uri-01-b.svg
18
        Unreviewed update test expectation for svg/custom/linking-uri-01-b.svg
- a/LayoutTests/fast/layers/scroll-with-transform-composited-layer-expected.html +50 lines
Line 0 a/LayoutTests/fast/layers/scroll-with-transform-composited-layer-expected.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
    p { height: 300px; width: 100px; margin: 0px; }
6
    p.green { background-color: green; }
7
    div { height: 100px; width: 100px; }
8
    div.relative { position: relative }
9
    div.composited
10
    {
11
        -webkit-transform: translateZ(0);
12
        -moz-transform: translateZ(0);
13
        transform: translateZ(0);
14
    }
15
</style>
16
</head>
17
<body>
18
    <span>http://webkit.org/b/67100: REGRESSION (r93614): Safari Reader doesn't repaint correctly when scrolling</span>
19
    <span>All the boxes should only contain green content.</span>
20
    <div class="scrollMe composited" style="overflow: hidden;">
21
        <div class="relative">
22
            <p class="green"></p>
23
        </div>
24
    </div>
25
    <br>
26
    <div class="scrollMe composited" style="overflow: scroll;">
27
        <div class="relative">
28
            <p class="green"></p>
29
        </div>
30
    </div>
31
    <br>
32
    <div class="scrollMe composited" style="overflow: hidden;">
33
        <div class="relative">
34
            <p class="green"></p>
35
        </div>
36
    </div>
37
    <br>
38
    <div class="scrollMe composited" style="overflow: scroll;">
39
        <div class="relative">
40
            <p class="green"></p>
41
        </div>
42
    </div>
43
    <br>
44
    <script>
45
        var scrollMes = document.getElementsByClassName("scrollMe");
46
        for (var i = 0; i < scrollMes.length; ++i)
47
            scrollMes[i].scrollTop = 100;
48
    </script>
49
</body>
50
</html>
- a/LayoutTests/fast/layers/scroll-with-transform-composited-layer.html +67 lines
Line 0 a/LayoutTests/fast/layers/scroll-with-transform-composited-layer.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
    p { height: 100px; width: 100px; margin: 0px; }
6
    p.red { background-color: red; }
7
    p.green { background-color: green; }
8
    div { height: 100px; width: 100px; }
9
    div.relative { position: relative }
10
    div.composited
11
    {
12
        -webkit-transform: translateZ(0);
13
        -moz-transform: translateZ(0);
14
        transform: translateZ(0);
15
    }
16
    div.translated
17
    {
18
        -webkit-transform: translate(0);
19
        -moz-transform: translate(0);
20
        transform: translate(0);
21
    }
22
</style>
23
</head>
24
<body>
25
    <span>http://webkit.org/b/67100: REGRESSION (r93614): Safari Reader doesn't repaint correctly when scrolling</span>
26
    <span>All the boxes should only contain green content.</span>
27
    <!-- Use a translation. -->
28
    <div class="scrollMe composited" style="overflow: hidden;">
29
        <div class="relative">
30
            <p class="red"></p>
31
            <p class="green"></p>
32
            <p class="red"></p>
33
        </div>
34
    </div>
35
    <br>
36
    <div class="scrollMe composited" style="overflow: scroll;">
37
        <div class="relative">
38
            <p class="red"></p>
39
            <p class="green"></p>
40
            <p class="red"></p>
41
        </div>
42
    </div>
43
    <br>
44
    <!-- Nest composited and non-composited. -->
45
    <div class="scrollMe composited" style="overflow: hidden;">
46
        <div class="relative translated">
47
            <p class="red"></p>
48
            <p class="green"></p>
49
            <p class="red"></p>
50
        </div>
51
    </div>
52
    <br>
53
    <div class="scrollMe translated" style="overflow: scroll;">
54
        <div class="relative composited">
55
            <p class="red"></p>
56
            <p class="green"></p>
57
            <p class="red"></p>
58
        </div>
59
    </div>
60
    <br>
61
    <script>
62
        var scrollMes = document.getElementsByClassName("scrollMe");
63
        for (var i = 0; i < scrollMes.length; ++i)
64
            scrollMes[i].scrollTop = 100;
65
    </script>
66
</body>
67
</html>
- a/LayoutTests/fast/layers/scroll-with-transform-layer-expected.html +44 lines
Line 0 a/LayoutTests/fast/layers/scroll-with-transform-layer-expected.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
    p { height: 300px; width: 100px; margin: 0px; }
6
    p.green { background-color: green; }
7
    div { height: 100px; width: 100px; }
8
    div.relative { position: relative }
9
</style>
10
</head>
11
<body>
12
    <span>http://webkit.org/b/67100: REGRESSION (r93614): Safari Reader doesn't repaint correctly when scrolling</span>
13
    <span>All the boxes should only contain green content.</span>
14
    <div class="scrollMe" style="overflow: hidden;">
15
        <div class="relative">
16
            <p class="green"></p>
17
        </div>
18
    </div>
19
    <br>
20
    <div class="scrollMe" style="overflow: scroll;">
21
        <div class="relative">
22
            <p class="green"></p>
23
        </div>
24
    </div>
25
    <br>
26
    <div class="scrollMe" style="overflow: hidden;">
27
        <div class="relative">
28
            <p class="green"></p>
29
        </div>
30
    </div>
31
    <br>
32
    <div class="scrollMe" style="overflow: scroll;">
33
        <div class="relative">
34
            <p class="green"></p>
35
        </div>
36
    </div>
37
    <br>
38
    <script>
39
        var scrollMes = document.getElementsByClassName("scrollMe");
40
        for (var i = 0; i < scrollMes.length; ++i)
41
            scrollMes[i].scrollTop = 100;
42
    </script>
43
</body>
44
</html>
- a/LayoutTests/fast/layers/scroll-with-transform-layer.html +67 lines
Line 0 a/LayoutTests/fast/layers/scroll-with-transform-layer.html_sec1
1
<!DOCTYPE html>
2
<html>
3
<head>
4
<style>
5
    p { height: 100px; width: 100px; margin: 0px; }
6
    p.red { background-color: red; }
7
    p.green { background-color: green; }
8
    div { height: 100px; width: 100px; }
9
    div.relative { position: relative }
10
    div.rotated
11
    {
12
        -webkit-transform: rotate(360deg);
13
        -moz-transform: rotate(360deg);
14
        transform: rotate(360deg);
15
    }
16
    div.translated
17
    {
18
        -webkit-transform: translate(0);
19
        -moz-transform: translate(0);
20
        transform: translate(0);
21
    }
22
</style>
23
</head>
24
<body>
25
    <span>http://webkit.org/b/67100: REGRESSION (r93614): Safari Reader doesn't repaint correctly when scrolling</span>
26
    <span>All the boxes should only contain green content.</span>
27
    <!-- Use a translation. -->
28
    <div class="scrollMe translated" style="overflow: hidden;">
29
        <div class="relative">
30
            <p class="red"></p>
31
            <p class="green"></p>
32
            <p class="red"></p>
33
        </div>
34
    </div>
35
    <br>
36
    <div class="scrollMe translated" style="overflow: scroll;">
37
        <div class="relative">
38
            <p class="red"></p>
39
            <p class="green"></p>
40
            <p class="red"></p>
41
        </div>
42
    </div>
43
    <br>
44
    <!-- Use a rotation. -->
45
    <div class="scrollMe rotated" style="overflow: hidden;">
46
        <div class="relative">
47
            <p class="red"></p>
48
            <p class="green"></p>
49
            <p class="red"></p>
50
        </div>
51
    </div>
52
    <br>
53
    <div class="scrollMe rotated" style="overflow: scroll;">
54
        <div class="relative">
55
            <p class="red"></p>
56
            <p class="green"></p>
57
            <p class="red"></p>
58
        </div>
59
    </div>
60
    <br>
61
    <script>
62
        var scrollMes = document.getElementsByClassName("scrollMe");
63
        for (var i = 0; i < scrollMes.length; ++i)
64
            scrollMes[i].scrollTop = 100;
65
    </script>
66
</body>
67
</html>

Return to Bug 67100