Changeset 64156 in webkit
- Timestamp:
- Jul 27, 2010 2:11:35 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r64146 r64156 1 2010-07-23 Helder Correia <heldercorreia@codeaurora.org> 2 3 Reviewed by Darin Adler. 4 5 Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are 6 failing. For canvas image data manipulation, the values passed should 7 be truncated and wrapped. Also fix the canvas-ImageData-behaviour test 8 to expect wrapping rather than clamping, and add some new checkings. 9 https://bugs.webkit.org/show_bug.cgi?id=40272 10 11 * runtime/JSByteArray.h: 12 (JSC::JSByteArray::setIndex): 13 (JSC::JSByteArray::JSByteArray): 14 1 15 2010-07-27 Gavin Barraclough <barraclough@apple.com> 2 16 -
trunk/JavaScriptCore/runtime/JSByteArray.h
r53170 r64156 46 46 { 47 47 ASSERT(canAccessIndex(i)); 48 if (value & ~0xFF) {49 if (value < 0)50 value = 0;51 else52 value = 255;53 }54 48 m_storage->data()[i] = static_cast<unsigned char>(value); 55 49 } 56 50 57 51 void setIndex(unsigned i, double value) 58 52 { 59 53 ASSERT(canAccessIndex(i)); 60 if (!(value > 0)) // Clamp NaN to 0 61 value = 0; 62 else if (value > 255) 63 value = 255; 64 m_storage->data()[i] = static_cast<unsigned char>(value + 0.5); 54 // The largest integer value that a double can represent without loss of precision 55 // is 2^53. long long is the smallest integral type that gives correct results 56 // when casting numbers larger than 2^31 from a value of type double. 57 m_storage->data()[i] = static_cast<unsigned char>(static_cast<long long>(value)); 65 58 } 66 59 67 60 void setIndex(ExecState* exec, unsigned i, JSValue value) 68 61 { … … 76 69 JSByteArray(ExecState* exec, NonNullPassRefPtr<Structure>, WTF::ByteArray* storage, const JSC::ClassInfo* = &s_defaultInfo); 77 70 static PassRefPtr<Structure> createStructure(JSValue prototype); 78 71 79 72 virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); 80 73 virtual bool getOwnPropertySlot(JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&); … … 87 80 virtual const ClassInfo* classInfo() const { return m_classInfo; } 88 81 static const ClassInfo s_defaultInfo; 89 82 90 83 size_t length() const { return m_storage->length(); } 91 84 … … 101 94 private: 102 95 enum VPtrStealingHackType { VPtrStealingHack }; 103 JSByteArray(VPtrStealingHackType) 96 JSByteArray(VPtrStealingHackType) 104 97 : JSObject(createStructure(jsNull())) 105 98 , m_classInfo(0) … … 110 103 const ClassInfo* m_classInfo; 111 104 }; 112 105 113 106 JSByteArray* asByteArray(JSValue value); 114 107 inline JSByteArray* asByteArray(JSValue value) -
trunk/LayoutTests/ChangeLog
r64149 r64156 1 2010-07-23 Helder Correia <heldercorreia@codeaurora.org> 2 3 Reviewed by Darin Adler. 4 5 Canvas tests 2d.imageData.object.round and 2d.imageData.object.wrap are 6 failing. For canvas image data manipulation, the values passed should 7 be truncated and wrapped. Also fix the canvas-ImageData-behaviour test 8 to expect wrapping rather than clamping, and add some new checkings. 9 https://bugs.webkit.org/show_bug.cgi?id=40272 10 11 * canvas/philip/tests/2d.imageData.object.round-expected.txt: 12 * canvas/philip/tests/2d.imageData.object.round.html: 13 * canvas/philip/tests/2d.imageData.object.wrap-expected.txt: 14 * fast/canvas/canvas-ImageData-behaviour-expected.txt: 15 * fast/canvas/canvas-ImageData-behaviour.js: 16 * platform/mac/Skipped: 17 * platform/qt/Skipped: 18 1 19 2010-07-27 Chris Fleizach <cfleizach@apple.com> 2 20 -
trunk/LayoutTests/canvas/philip/tests/2d.imageData.object.round-expected.txt
r60162 r64156 5 5 Actual output: 6 6 Passed 7 8 9 10 11 12 13 -
trunk/LayoutTests/canvas/philip/tests/2d.imageData.object.round.html
r59954 r64156 36 36 _assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1"); 37 37 imgdata.data[0] = 1.5; 38 _assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");38 _assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1"); 39 39 imgdata.data[0] = 1.501; 40 _assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");40 _assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1"); 41 41 imgdata.data[0] = 2.5; 42 42 _assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2"); 43 43 imgdata.data[0] = 3.5; 44 _assertSame(imgdata.data[0], 4, "imgdata.data[\""+(0)+"\"]", "4");44 _assertSame(imgdata.data[0], 3, "imgdata.data[\""+(0)+"\"]", "3"); 45 45 imgdata.data[0] = 252.5; 46 46 _assertSame(imgdata.data[0], 252, "imgdata.data[\""+(0)+"\"]", "252"); -
trunk/LayoutTests/canvas/philip/tests/2d.imageData.object.wrap-expected.txt
r60162 r64156 5 5 Actual output: 6 6 Passed 7 8 9 10 -
trunk/LayoutTests/fast/canvas/canvas-ImageData-behaviour-expected.txt
r30635 r64156 27 27 PASS imageData.data[0] = false, imageData.data[0] is 0 28 28 PASS imageData.data[0] = "garbage", imageData.data[0] is 0 29 PASS imageData.data[0] = -1, imageData.data[0] is 029 PASS imageData.data[0] = -1, imageData.data[0] is 255 30 30 PASS imageData.data[0] = "0", imageData.data[0] is 0 31 31 PASS imageData.data[0] = "1", imageData.data[0] is 1 32 32 PASS imageData.data[0] = "2", imageData.data[0] is 2 33 PASS imageData.data[0] = Infinity, imageData.data[0] is 25533 PASS imageData.data[0] = Infinity, imageData.data[0] is 0 34 34 PASS imageData.data[0] = -Infinity, imageData.data[0] is 0 35 PASS imageData.data[0] = -5, imageData.data[0] is 035 PASS imageData.data[0] = -5, imageData.data[0] is 251 36 36 PASS imageData.data[0] = -0.5, imageData.data[0] is 0 37 37 PASS imageData.data[0] = 0, imageData.data[0] is 0 38 PASS imageData.data[0] = 0.5, imageData.data[0] is 138 PASS imageData.data[0] = 0.5, imageData.data[0] is 0 39 39 PASS imageData.data[0] = 5, imageData.data[0] is 5 40 PASS imageData.data[0] = 2147483647, imageData.data[0] is 255 41 PASS imageData.data[0] = 2147483648, imageData.data[0] is 0 42 PASS imageData.data[0] = 2147483649, imageData.data[0] is 1 43 PASS imageData.data[0] = -1099511627773.5, imageData.data[0] is 3 44 PASS imageData.data[0] = 9007199254740990, imageData.data[0] is 254 40 45 PASS imageData.data[0] = 5.4, imageData.data[0] is 5 41 46 PASS imageData.data[0] = 255, imageData.data[0] is 255 42 PASS imageData.data[0] = 256, imageData.data[0] is 25547 PASS imageData.data[0] = 256, imageData.data[0] is 0 43 48 PASS imageData.data[0] = null, imageData.data[0] is 0 44 49 PASS imageData.data[0] = undefined, imageData.data[0] is 0 -
trunk/LayoutTests/fast/canvas/canvas-ImageData-behaviour.js
r30506 r64156 12 12 "\"0\"", "\"1\"", "\"2\"", Infinity, -Infinity, 13 13 -5, -0.5, 0, 0.5, 5, 14 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, 14 15 5.4, 255, 256, null, undefined]; 15 var testResults = [0, 1, 0, 0, 0, 16 0, 1, 2, 255, 0, 17 0, 0, 0, 1, 5, 18 5, 255, 255, 0, 0]; 16 var testResults = [0, 1, 0, 0, 255, 17 0, 1, 2, 0, 0, 18 251, 0, 0, 0, 5, 19 255, 0, 1, 3, 254, 20 5, 255, 0, 0, 0]; 19 21 for (var i = 0; i < testValues.length; i++) { 20 22 shouldBe("imageData.data[0] = "+testValues[i]+", imageData.data[0]", ""+testResults[i]); -
trunk/LayoutTests/platform/mac/Skipped
r64110 r64156 203 203 canvas/philip/tests/2d.imageData.get.source.outside.html 204 204 canvas/philip/tests/2d.imageData.get.type.html 205 canvas/philip/tests/2d.imageData.object.round.html206 canvas/philip/tests/2d.imageData.object.wrap.html207 205 canvas/philip/tests/2d.line.cap.closed.html 208 206 canvas/philip/tests/2d.line.join.parallel.html -
trunk/LayoutTests/platform/qt/Skipped
r64143 r64156 5271 5271 canvas/philip/tests/2d.imageData.get.source.negative.html 5272 5272 canvas/philip/tests/2d.imageData.get.type.html 5273 canvas/philip/tests/2d.imageData.object.round.html5274 canvas/philip/tests/2d.imageData.object.wrap.html5275 5273 canvas/philip/tests/2d.imageData.put.unchanged.html 5276 5274 canvas/philip/tests/2d.line.cap.open.html
Note: See TracChangeset
for help on using the changeset viewer.