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

andreas.kling at nokia.com andreas.kling at nokia.com
Wed Dec 22 11:30:46 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 03a4d0189de7426a48b97b85de509c5bb71f00e2
Author: andreas.kling at nokia.com <andreas.kling at nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Jul 27 21:11:35 2010 +0000

    2010-07-23  Helder Correia  <heldercorreia at codeaurora.org>
    
            Reviewed by Darin Adler.
    
            Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are
            failing. For canvas image data manipulation, the values passed should
            be truncated and wrapped. Also fix the canvas-ImageData-behaviour test
            to expect wrapping rather than clamping, and add some new checkings.
            https://bugs.webkit.org/show_bug.cgi?id=40272
    
            * runtime/JSByteArray.h:
            (JSC::JSByteArray::setIndex):
            (JSC::JSByteArray::JSByteArray):
    2010-07-23  Helder Correia  <heldercorreia at codeaurora.org>
    
            Reviewed by Darin Adler.
    
            Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are
            failing. For canvas image data manipulation, the values passed should
            be truncated and wrapped. Also fix the canvas-ImageData-behaviour test
            to expect wrapping rather than clamping, and add some new checkings.
            https://bugs.webkit.org/show_bug.cgi?id=40272
    
            * canvas/philip/tests/2d.imageData.object.round-expected.txt:
            * canvas/philip/tests/2d.imageData.object.round.html:
            * canvas/philip/tests/2d.imageData.object.wrap-expected.txt:
            * fast/canvas/canvas-ImageData-behaviour-expected.txt:
            * fast/canvas/canvas-ImageData-behaviour.js:
            * platform/mac/Skipped:
            * platform/qt/Skipped:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64156 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index a9bf93b..b740b4c 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,17 @@
+2010-07-23  Helder Correia  <heldercorreia at codeaurora.org>
+
+        Reviewed by Darin Adler.
+
+        Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are
+        failing. For canvas image data manipulation, the values passed should
+        be truncated and wrapped. Also fix the canvas-ImageData-behaviour test
+        to expect wrapping rather than clamping, and add some new checkings.
+        https://bugs.webkit.org/show_bug.cgi?id=40272
+
+        * runtime/JSByteArray.h:
+        (JSC::JSByteArray::setIndex):
+        (JSC::JSByteArray::JSByteArray):
+
 2010-07-27  Gavin Barraclough  <barraclough at apple.com>
 
         Reviewed by Oliver Hunt.
diff --git a/JavaScriptCore/runtime/JSByteArray.h b/JavaScriptCore/runtime/JSByteArray.h
index 5b7adcf..e9a6c64 100644
--- a/JavaScriptCore/runtime/JSByteArray.h
+++ b/JavaScriptCore/runtime/JSByteArray.h
@@ -45,25 +45,18 @@ namespace JSC {
         void setIndex(unsigned i, int value)
         {
             ASSERT(canAccessIndex(i));
-            if (value & ~0xFF) {
-                if (value < 0)
-                    value = 0;
-                else
-                    value = 255;
-            }
             m_storage->data()[i] = static_cast<unsigned char>(value);
         }
-        
+
         void setIndex(unsigned i, double value)
         {
             ASSERT(canAccessIndex(i));
-            if (!(value > 0)) // Clamp NaN to 0
-                value = 0;
-            else if (value > 255)
-                value = 255;
-            m_storage->data()[i] = static_cast<unsigned char>(value + 0.5);
+            // The largest integer value that a double can represent without loss of precision
+            // is 2^53.  long long is the smallest integral type that gives correct results
+            // when casting numbers larger than 2^31 from a value of type double.
+            m_storage->data()[i] = static_cast<unsigned char>(static_cast<long long>(value));
         }
-        
+
         void setIndex(ExecState* exec, unsigned i, JSValue value)
         {
             double byteValue = value.toNumber(exec);
@@ -75,7 +68,7 @@ namespace JSC {
 
         JSByteArray(ExecState* exec, NonNullPassRefPtr<Structure>, WTF::ByteArray* storage, const JSC::ClassInfo* = &s_defaultInfo);
         static PassRefPtr<Structure> createStructure(JSValue prototype);
-        
+
         virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);
         virtual bool getOwnPropertySlot(JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
         virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&);
@@ -86,7 +79,7 @@ namespace JSC {
 
         virtual const ClassInfo* classInfo() const { return m_classInfo; }
         static const ClassInfo s_defaultInfo;
-        
+
         size_t length() const { return m_storage->length(); }
 
         WTF::ByteArray* storage() const { return m_storage.get(); }
@@ -100,7 +93,7 @@ namespace JSC {
 
     private:
         enum VPtrStealingHackType { VPtrStealingHack };
-        JSByteArray(VPtrStealingHackType) 
+        JSByteArray(VPtrStealingHackType)
             : JSObject(createStructure(jsNull()))
             , m_classInfo(0)
         {
@@ -109,7 +102,7 @@ namespace JSC {
         RefPtr<WTF::ByteArray> m_storage;
         const ClassInfo* m_classInfo;
     };
-    
+
     JSByteArray* asByteArray(JSValue value);
     inline JSByteArray* asByteArray(JSValue value)
     {
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 19b3928..625ad7d 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,21 @@
+2010-07-23  Helder Correia  <heldercorreia at codeaurora.org>
+
+        Reviewed by Darin Adler.
+
+        Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are
+        failing. For canvas image data manipulation, the values passed should
+        be truncated and wrapped. Also fix the canvas-ImageData-behaviour test
+        to expect wrapping rather than clamping, and add some new checkings.
+        https://bugs.webkit.org/show_bug.cgi?id=40272
+
+        * canvas/philip/tests/2d.imageData.object.round-expected.txt:
+        * canvas/philip/tests/2d.imageData.object.round.html:
+        * canvas/philip/tests/2d.imageData.object.wrap-expected.txt:
+        * fast/canvas/canvas-ImageData-behaviour-expected.txt:
+        * fast/canvas/canvas-ImageData-behaviour.js:
+        * platform/mac/Skipped:
+        * platform/qt/Skipped:
+
 2010-07-27  Chris Fleizach  <cfleizach at apple.com>
 
         Reviewed by David Kilzer.
diff --git a/LayoutTests/canvas/philip/tests/2d.imageData.object.round-expected.txt b/LayoutTests/canvas/philip/tests/2d.imageData.object.round-expected.txt
index 80198ac..8276591 100644
--- a/LayoutTests/canvas/philip/tests/2d.imageData.object.round-expected.txt
+++ b/LayoutTests/canvas/philip/tests/2d.imageData.object.round-expected.txt
@@ -4,10 +4,3 @@ ImageData.data rounds numbers with round-to-zero
 References: 2d.pixelarray.modify
 Actual output:
 Passed
-
-
-
-
-
-
-
diff --git a/LayoutTests/canvas/philip/tests/2d.imageData.object.round.html b/LayoutTests/canvas/philip/tests/2d.imageData.object.round.html
index 5317574..8524c6f 100644
--- a/LayoutTests/canvas/philip/tests/2d.imageData.object.round.html
+++ b/LayoutTests/canvas/philip/tests/2d.imageData.object.round.html
@@ -35,13 +35,13 @@ _assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0");
 imgdata.data[0] = 1.499;
 _assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1");
 imgdata.data[0] = 1.5;
-_assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");
+_assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1");
 imgdata.data[0] = 1.501;
-_assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");
+_assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1");
 imgdata.data[0] = 2.5;
 _assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");
 imgdata.data[0] = 3.5;
-_assertSame(imgdata.data[0], 4, "imgdata.data[\""+(0)+"\"]", "4");
+_assertSame(imgdata.data[0], 3, "imgdata.data[\""+(0)+"\"]", "3");
 imgdata.data[0] = 252.5;
 _assertSame(imgdata.data[0], 252, "imgdata.data[\""+(0)+"\"]", "252");
 imgdata.data[0] = 253.5;
diff --git a/LayoutTests/canvas/philip/tests/2d.imageData.object.wrap-expected.txt b/LayoutTests/canvas/philip/tests/2d.imageData.object.wrap-expected.txt
index 0d433f5..b009a9c 100644
--- a/LayoutTests/canvas/philip/tests/2d.imageData.object.wrap-expected.txt
+++ b/LayoutTests/canvas/philip/tests/2d.imageData.object.wrap-expected.txt
@@ -4,7 +4,3 @@ ImageData.data wraps numbers modulo 256
 References: 2d.pixelarray.modify
 Actual output:
 Passed
-
-
-
-
diff --git a/LayoutTests/fast/canvas/canvas-ImageData-behaviour-expected.txt b/LayoutTests/fast/canvas/canvas-ImageData-behaviour-expected.txt
index 90ea45a..8def5aa 100644
--- a/LayoutTests/fast/canvas/canvas-ImageData-behaviour-expected.txt
+++ b/LayoutTests/fast/canvas/canvas-ImageData-behaviour-expected.txt
@@ -26,20 +26,25 @@ PASS imageData.data[0] = NaN, imageData.data[0] is 0
 PASS imageData.data[0] = true, imageData.data[0] is 1
 PASS imageData.data[0] = false, imageData.data[0] is 0
 PASS imageData.data[0] = "garbage", imageData.data[0] is 0
-PASS imageData.data[0] = -1, imageData.data[0] is 0
+PASS imageData.data[0] = -1, imageData.data[0] is 255
 PASS imageData.data[0] = "0", imageData.data[0] is 0
 PASS imageData.data[0] = "1", imageData.data[0] is 1
 PASS imageData.data[0] = "2", imageData.data[0] is 2
-PASS imageData.data[0] = Infinity, imageData.data[0] is 255
+PASS imageData.data[0] = Infinity, imageData.data[0] is 0
 PASS imageData.data[0] = -Infinity, imageData.data[0] is 0
-PASS imageData.data[0] = -5, imageData.data[0] is 0
+PASS imageData.data[0] = -5, imageData.data[0] is 251
 PASS imageData.data[0] = -0.5, imageData.data[0] is 0
 PASS imageData.data[0] = 0, imageData.data[0] is 0
-PASS imageData.data[0] = 0.5, imageData.data[0] is 1
+PASS imageData.data[0] = 0.5, imageData.data[0] is 0
 PASS imageData.data[0] = 5, imageData.data[0] is 5
+PASS imageData.data[0] = 2147483647, imageData.data[0] is 255
+PASS imageData.data[0] = 2147483648, imageData.data[0] is 0
+PASS imageData.data[0] = 2147483649, imageData.data[0] is 1
+PASS imageData.data[0] = -1099511627773.5, imageData.data[0] is 3
+PASS imageData.data[0] = 9007199254740990, imageData.data[0] is 254
 PASS imageData.data[0] = 5.4, imageData.data[0] is 5
 PASS imageData.data[0] = 255, imageData.data[0] is 255
-PASS imageData.data[0] = 256, imageData.data[0] is 255
+PASS imageData.data[0] = 256, imageData.data[0] is 0
 PASS imageData.data[0] = null, imageData.data[0] is 0
 PASS imageData.data[0] = undefined, imageData.data[0] is 0
 PASS imageData.data['foo']='garbage',imageData.data['foo'] is 'garbage'
diff --git a/LayoutTests/fast/canvas/canvas-ImageData-behaviour.js b/LayoutTests/fast/canvas/canvas-ImageData-behaviour.js
index d5b9161..a6771e0 100644
--- a/LayoutTests/fast/canvas/canvas-ImageData-behaviour.js
+++ b/LayoutTests/fast/canvas/canvas-ImageData-behaviour.js
@@ -11,11 +11,13 @@ for (var i = 0; i < imageData.data.length; i++)
 var testValues = [NaN, true, false, "\"garbage\"", "-1",
                   "\"0\"", "\"1\"", "\"2\"", Infinity, -Infinity,
                   -5, -0.5, 0, 0.5, 5,
+                  Math.pow(2, 31) - 1, Math.pow(2, 31), Math.pow(2, 31) + 1, -Math.pow(2, 40) + 2.5, Math.pow(2, 53) - 1.5,
                   5.4, 255, 256, null, undefined];
-var testResults = [0, 1, 0, 0, 0,
-                   0, 1, 2, 255, 0,
-                   0, 0, 0, 1, 5,
-                   5, 255, 255, 0, 0];
+var testResults = [0, 1, 0, 0, 255,
+                   0, 1, 2, 0, 0,
+                   251, 0, 0, 0, 5,
+                   255, 0, 1, 3, 254,
+                   5, 255, 0, 0, 0];
 for (var i = 0; i < testValues.length; i++) {
     shouldBe("imageData.data[0] = "+testValues[i]+", imageData.data[0]", ""+testResults[i]);
 }
diff --git a/LayoutTests/platform/mac/Skipped b/LayoutTests/platform/mac/Skipped
index 1b582f6..1044fbc 100644
--- a/LayoutTests/platform/mac/Skipped
+++ b/LayoutTests/platform/mac/Skipped
@@ -202,8 +202,6 @@ canvas/philip/tests/2d.imageData.create2.type.html
 canvas/philip/tests/2d.imageData.get.source.negative.html
 canvas/philip/tests/2d.imageData.get.source.outside.html
 canvas/philip/tests/2d.imageData.get.type.html
-canvas/philip/tests/2d.imageData.object.round.html
-canvas/philip/tests/2d.imageData.object.wrap.html
 canvas/philip/tests/2d.line.cap.closed.html
 canvas/philip/tests/2d.line.join.parallel.html
 canvas/philip/tests/2d.line.miter.lineedge.html
diff --git a/LayoutTests/platform/qt/Skipped b/LayoutTests/platform/qt/Skipped
index dec527d..b3effbe 100644
--- a/LayoutTests/platform/qt/Skipped
+++ b/LayoutTests/platform/qt/Skipped
@@ -5270,8 +5270,6 @@ canvas/philip/tests/2d.imageData.create1.type.html
 canvas/philip/tests/2d.imageData.create2.type.html
 canvas/philip/tests/2d.imageData.get.source.negative.html
 canvas/philip/tests/2d.imageData.get.type.html
-canvas/philip/tests/2d.imageData.object.round.html
-canvas/philip/tests/2d.imageData.object.wrap.html
 canvas/philip/tests/2d.imageData.put.unchanged.html
 canvas/philip/tests/2d.line.cap.open.html
 canvas/philip/tests/2d.line.join.open.html

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list