[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:08:05 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit bf1fd74c8f110a4c28c2052f28cd6e8c11511ecb
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Dec 7 22:03:11 2010 +0000

    2010-12-07  Simon Fraser  <simon.fraser at apple.com>
    
            Reviewed by Dan Bernstein.
    
            -webkit-transition Fails on Multiple text-shadow Shadows
            https://bugs.webkit.org/show_bug.cgi?id=42281
    
            When transitioning multiple shadows, the blend function for
            ShadowData dropped all but the first and last shadow because
            of a failure to append to the end of the list. Fixed.
    
            Test: transitions/multiple-text-shadow-transition.html
    
            * page/animation/AnimationBase.cpp:
            (WebCore::PropertyWrapperShadow::blend):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@73462 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index f302367..196e88b 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,5 +1,16 @@
 2010-12-07  Simon Fraser  <simon.fraser at apple.com>
 
+        Reviewed by Dan Bernstein.
+
+        -webkit-transition Fails on Multiple text-shadow Shadows
+        https://bugs.webkit.org/show_bug.cgi?id=42281
+        
+        Testcase that transitions multiple shadows.
+
+        * transitions/multiple-text-shadow-transition.html: Added.
+
+2010-12-07  Simon Fraser  <simon.fraser at apple.com>
+
         Reviewed by Beth Dakin.
 
         CSS animation doesn't work for border-radius
diff --git a/LayoutTests/transitions/multiple-text-shadow-transition-expected.txt b/LayoutTests/transitions/multiple-text-shadow-transition-expected.txt
new file mode 100644
index 0000000..b69c063
--- /dev/null
+++ b/LayoutTests/transitions/multiple-text-shadow-transition-expected.txt
@@ -0,0 +1,2 @@
+Shadowed text
+PASS: saw 5 shadows during the transition
diff --git a/LayoutTests/transitions/multiple-text-shadow-transition.html b/LayoutTests/transitions/multiple-text-shadow-transition.html
new file mode 100644
index 0000000..cdef98d
--- /dev/null
+++ b/LayoutTests/transitions/multiple-text-shadow-transition.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <style type="text/css" media="screen">
+    #container {
+      width: 400px;
+      height: 100px;
+      margin: 10px;
+      -webkit-transition-property: text-shadow;
+      -webkit-transition-duration: 1s;
+      -webkit-transition-timing-function: linear;
+    }
+    
+    #container {
+        text-shadow:    yellow 0px 10px 10px,
+                        yellow 0px 20px 10px,
+                        yellow 0px 30px 10px,
+                        yellow 0px 40px 10px,
+                        yellow 0px 50px 10px;
+    }
+
+    #container.final {
+        text-shadow:    green 0px 10px 2px,
+                        green 0px 20px 2px,
+                        green 0px 30px 2px,
+                        green 0px 40px 2px,
+                        green 0px 50px 2px;
+    }
+
+  </style>
+  <script type="text/javascript" charset="utf-8">
+
+    if (window.layoutTestController) {
+        layoutTestController.dumpAsText();
+        layoutTestController.waitUntilDone();
+    }
+    
+    function setupTest()
+    {
+      document.getElementById('container').className = 'final';
+      window.setTimeout(checkShadow, 0);
+    }
+    
+    function checkShadow()
+    {
+        var container = document.getElementById('container');
+        var shadow = window.getComputedStyle(container).getPropertyCSSValue('text-shadow');
+        
+        var result = document.getElementById('result');
+        if (shadow.length == 5)
+            result.innerHTML = 'PASS: saw 5 shadows during the transition';
+        else
+            result.innerHTML = 'FAIL: saw ' + shadow.length + ' shadows during the transition';
+        
+        if (window.layoutTestController)
+            layoutTestController.notifyDone();
+    }
+    
+    window.addEventListener('load', setupTest, false);
+  </script>
+</head>
+<body>
+  <div id="container">
+      Shadowed text
+  </div>
+  <div id="result"></div>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 451eece..88b3ada 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,5 +1,21 @@
 2010-12-07  Simon Fraser  <simon.fraser at apple.com>
 
+        Reviewed by Dan Bernstein.
+
+        -webkit-transition Fails on Multiple text-shadow Shadows
+        https://bugs.webkit.org/show_bug.cgi?id=42281
+        
+        When transitioning multiple shadows, the blend function for
+        ShadowData dropped all but the first and last shadow because
+        of a failure to append to the end of the list. Fixed.
+
+        Test: transitions/multiple-text-shadow-transition.html
+
+        * page/animation/AnimationBase.cpp:
+        (WebCore::PropertyWrapperShadow::blend):
+
+2010-12-07  Simon Fraser  <simon.fraser at apple.com>
+
         Reviewed by Beth Dakin.
 
         CSS animation doesn't work for border-radius
diff --git a/WebCore/page/animation/AnimationBase.cpp b/WebCore/page/animation/AnimationBase.cpp
index 2d09206..913fe9f 100644
--- a/WebCore/page/animation/AnimationBase.cpp
+++ b/WebCore/page/animation/AnimationBase.cpp
@@ -357,15 +357,19 @@ public:
         ShadowData defaultShadowData(0, 0, 0, 0, Normal, Color::transparent);
 
         ShadowData* newShadowData = 0;
+        ShadowData* lastShadow = 0;
         
         while (shadowA || shadowB) {
             const ShadowData* srcShadow = shadowA ? shadowA : &defaultShadowData;
             const ShadowData* dstShadow = shadowB ? shadowB : &defaultShadowData;
             
-            if (!newShadowData)
-                newShadowData = blendFunc(anim, srcShadow, dstShadow, progress);
+            ShadowData* blendedShadow = blendFunc(anim, srcShadow, dstShadow, progress);
+            if (!lastShadow)
+                newShadowData = blendedShadow;
             else
-                newShadowData->setNext(blendFunc(anim, srcShadow, dstShadow, progress));
+                lastShadow->setNext(blendedShadow);
+
+            lastShadow = blendedShadow;
 
             shadowA = shadowA ? shadowA->next() : 0;
             shadowB = shadowB ? shadowB->next() : 0;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list