[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da

simon.fraser at apple.com simon.fraser at apple.com
Wed Dec 22 18:46:47 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 99ff95d94c768eb645a2ec3cb57be0e96a69295f
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Dec 17 21:22:47 2010 +0000

    2010-12-17  Simon Fraser  <simon.fraser at apple.com>
    
            Reviewed by Chris Marrin.
    
            Interrupted accelerated animation can break later transitions
            <rdar://problem/8767714>
            https://bugs.webkit.org/show_bug.cgi?id=51264
    
            If we're still waiting for the 'animationDidStart' callback when renderers
            get destroyed, then the m_waitingForStartTimeResponse flag could be left
            set to 'true', which causes later transitions to never start.
    
            Fix by clearing the m_waitingForStartTimeResponse flag when the m_startTimeResponseWaiters
            becomes empty.
    
            Test: transitions/interrupted-accelerated-transition.html
    
            * page/animation/AnimationController.cpp:
            (WebCore::AnimationControllerPrivate::removeFromStartTimeResponseWaitList):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74287 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index dafc157..7264e32 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,17 @@
+2010-12-17  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by Chris Marrin.
+
+        Interrupted accelerated animation can break later transitions
+        https://bugs.webkit.org/show_bug.cgi?id=51264
+        
+        Testcase that starts an accelerated transition, then navigates to a new
+        page that tries to run an opacity transition.
+
+        * transitions/interrupted-accelerated-transition-expected.txt: Added.
+        * transitions/interrupted-accelerated-transition.html: Added.
+        * transitions/resources/interrupted-accelerated-transition-final.html: Added.
+
 2010-12-17  Dan Bernstein  <mitz at apple.com>
 
         Reviewed by Dave Hyatt.
diff --git a/LayoutTests/transitions/interrupted-accelerated-transition-expected.txt b/LayoutTests/transitions/interrupted-accelerated-transition-expected.txt
new file mode 100644
index 0000000..ff638d1
--- /dev/null
+++ b/LayoutTests/transitions/interrupted-accelerated-transition-expected.txt
@@ -0,0 +1,3 @@
+main frame - has 1 onunload handler(s)
+PASS - "opacity" property for "box" element at 0.5s saw something close to: 0.5
+
diff --git a/LayoutTests/transitions/interrupted-accelerated-transition.html b/LayoutTests/transitions/interrupted-accelerated-transition.html
new file mode 100644
index 0000000..cd766cd
--- /dev/null
+++ b/LayoutTests/transitions/interrupted-accelerated-transition.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+    <style type="text/css" media="screen">
+        #box {
+            display: inline-block;
+            width: 100px;
+            height: 100px;
+            margin: 10px;
+            background-color: blue;
+            -webkit-transition: -webkit-transform 10s;
+        }
+        
+        #box.rotated {
+            -webkit-transform: rotate(45deg);
+        }
+    </style>
+    <script type="text/javascript" charset="utf-8">
+        if (window.layoutTestController) {
+            layoutTestController.dumpAsText();
+            layoutTestController.waitUntilDone();
+        }
+        function loaded()
+        {
+            var box = document.getElementById('box');
+            box.className = 'rotated box';
+            window.location = 'resources/interrupted-accelerated-transition-final.html';
+        }
+        window.addEventListener('load', loaded, false);
+    </script>
+</head>
+<!-- The unload handler keeps this page out of the page cache. -->
+<body onunload="(void)0">
+    <div id="box"></div>
+</body>
+</html>
diff --git a/LayoutTests/transitions/resources/interrupted-accelerated-transition-final.html b/LayoutTests/transitions/resources/interrupted-accelerated-transition-final.html
new file mode 100644
index 0000000..f18faf7
--- /dev/null
+++ b/LayoutTests/transitions/resources/interrupted-accelerated-transition-final.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+    <style type="text/css" media="screen">
+        #box {
+            display: inline-block;
+            width: 100px;
+            height: 100px;
+            margin: 10px;
+            background-color: blue;
+            opacity: 0;
+            -webkit-transition: opacity 1s linear;
+        }
+        
+        #box.faded {
+            opacity: 1;
+        }
+    </style>
+
+    <script src="../transition-test-helpers.js" type="text/javascript" charset="utf-8"></script>
+    <script type="text/javascript" charset="utf-8">
+
+    const expectedValues = [
+      // [time, element-id, property, expected-value, tolerance]
+      [0.5, 'box', 'opacity', 0.5, 0.1],
+    ];
+  
+    function setupTest()
+    {
+      document.getElementById('box').className = 'faded';
+    }
+  
+    runTransitionTest(expectedValues, setupTest);
+    </script>
+</head>
+<body>
+    <div id="box"></div>
+    <div id="result"></div>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 9ff0b2b..f38d77e 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -3,6 +3,26 @@
         Reviewed by Chris Marrin.
 
         Interrupted accelerated animation can break later transitions
+        <rdar://problem/8767714>
+        https://bugs.webkit.org/show_bug.cgi?id=51264
+        
+        If we're still waiting for the 'animationDidStart' callback when renderers
+        get destroyed, then the m_waitingForStartTimeResponse flag could be left
+        set to 'true', which causes later transitions to never start.
+        
+        Fix by clearing the m_waitingForStartTimeResponse flag when the m_startTimeResponseWaiters
+        becomes empty.
+
+        Test: transitions/interrupted-accelerated-transition.html
+
+        * page/animation/AnimationController.cpp:
+        (WebCore::AnimationControllerPrivate::removeFromStartTimeResponseWaitList):
+
+2010-12-17  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by Chris Marrin.
+
+        Interrupted accelerated animation can break later transitions
         https://bugs.webkit.org/show_bug.cgi?id=51264
 
         Step 1: code cleanup.
diff --git a/WebCore/page/animation/AnimationController.cpp b/WebCore/page/animation/AnimationController.cpp
index 4680a9f..e1281dd 100644
--- a/WebCore/page/animation/AnimationController.cpp
+++ b/WebCore/page/animation/AnimationController.cpp
@@ -460,6 +460,9 @@ void AnimationControllerPrivate::removeFromStartTimeResponseWaitList(AnimationBa
         }
         prevAnimation = animation;
     }
+    
+    if (!m_startTimeResponseWaiters)
+        m_waitingForStartTimeResponse = false;
 }
 
 void AnimationControllerPrivate::startTimeResponse(double time)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list