Changeset 64156 in webkit


Ignore:
Timestamp:
Jul 27, 2010 2:11:35 PM (14 years ago)
Author:
andreas.kling@nokia.com
Message:

2010-07-23 Helder Correia <heldercorreia@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@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:
Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r64146 r64156  
     12010-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
    1152010-07-27  Gavin Barraclough  <barraclough@apple.com>
    216
  • trunk/JavaScriptCore/runtime/JSByteArray.h

    r53170 r64156  
    4646        {
    4747            ASSERT(canAccessIndex(i));
    48             if (value & ~0xFF) {
    49                 if (value < 0)
    50                     value = 0;
    51                 else
    52                     value = 255;
    53             }
    5448            m_storage->data()[i] = static_cast<unsigned char>(value);
    5549        }
    56        
     50
    5751        void setIndex(unsigned i, double value)
    5852        {
    5953            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));
    6558        }
    66        
     59
    6760        void setIndex(ExecState* exec, unsigned i, JSValue value)
    6861        {
     
    7669        JSByteArray(ExecState* exec, NonNullPassRefPtr<Structure>, WTF::ByteArray* storage, const JSC::ClassInfo* = &s_defaultInfo);
    7770        static PassRefPtr<Structure> createStructure(JSValue prototype);
    78        
     71
    7972        virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);
    8073        virtual bool getOwnPropertySlot(JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
     
    8780        virtual const ClassInfo* classInfo() const { return m_classInfo; }
    8881        static const ClassInfo s_defaultInfo;
    89        
     82
    9083        size_t length() const { return m_storage->length(); }
    9184
     
    10194    private:
    10295        enum VPtrStealingHackType { VPtrStealingHack };
    103         JSByteArray(VPtrStealingHackType) 
     96        JSByteArray(VPtrStealingHackType)
    10497            : JSObject(createStructure(jsNull()))
    10598            , m_classInfo(0)
     
    110103        const ClassInfo* m_classInfo;
    111104    };
    112    
     105
    113106    JSByteArray* asByteArray(JSValue value);
    114107    inline JSByteArray* asByteArray(JSValue value)
  • trunk/LayoutTests/ChangeLog

    r64149 r64156  
     12010-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
    1192010-07-27  Chris Fleizach  <cfleizach@apple.com>
    220
  • trunk/LayoutTests/canvas/philip/tests/2d.imageData.object.round-expected.txt

    r60162 r64156  
    55Actual output:
    66Passed
    7 
    8 
    9 
    10 
    11 
    12 
    13 
  • trunk/LayoutTests/canvas/philip/tests/2d.imageData.object.round.html

    r59954 r64156  
    3636_assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1");
    3737imgdata.data[0] = 1.5;
    38 _assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");
     38_assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1");
    3939imgdata.data[0] = 1.501;
    40 _assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");
     40_assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1");
    4141imgdata.data[0] = 2.5;
    4242_assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2");
    4343imgdata.data[0] = 3.5;
    44 _assertSame(imgdata.data[0], 4, "imgdata.data[\""+(0)+"\"]", "4");
     44_assertSame(imgdata.data[0], 3, "imgdata.data[\""+(0)+"\"]", "3");
    4545imgdata.data[0] = 252.5;
    4646_assertSame(imgdata.data[0], 252, "imgdata.data[\""+(0)+"\"]", "252");
  • trunk/LayoutTests/canvas/philip/tests/2d.imageData.object.wrap-expected.txt

    r60162 r64156  
    55Actual output:
    66Passed
    7 
    8 
    9 
    10 
  • trunk/LayoutTests/fast/canvas/canvas-ImageData-behaviour-expected.txt

    r30635 r64156  
    2727PASS imageData.data[0] = false, imageData.data[0] is 0
    2828PASS imageData.data[0] = "garbage", imageData.data[0] is 0
    29 PASS imageData.data[0] = -1, imageData.data[0] is 0
     29PASS imageData.data[0] = -1, imageData.data[0] is 255
    3030PASS imageData.data[0] = "0", imageData.data[0] is 0
    3131PASS imageData.data[0] = "1", imageData.data[0] is 1
    3232PASS imageData.data[0] = "2", imageData.data[0] is 2
    33 PASS imageData.data[0] = Infinity, imageData.data[0] is 255
     33PASS imageData.data[0] = Infinity, imageData.data[0] is 0
    3434PASS imageData.data[0] = -Infinity, imageData.data[0] is 0
    35 PASS imageData.data[0] = -5, imageData.data[0] is 0
     35PASS imageData.data[0] = -5, imageData.data[0] is 251
    3636PASS imageData.data[0] = -0.5, imageData.data[0] is 0
    3737PASS imageData.data[0] = 0, imageData.data[0] is 0
    38 PASS imageData.data[0] = 0.5, imageData.data[0] is 1
     38PASS imageData.data[0] = 0.5, imageData.data[0] is 0
    3939PASS imageData.data[0] = 5, imageData.data[0] is 5
     40PASS imageData.data[0] = 2147483647, imageData.data[0] is 255
     41PASS imageData.data[0] = 2147483648, imageData.data[0] is 0
     42PASS imageData.data[0] = 2147483649, imageData.data[0] is 1
     43PASS imageData.data[0] = -1099511627773.5, imageData.data[0] is 3
     44PASS imageData.data[0] = 9007199254740990, imageData.data[0] is 254
    4045PASS imageData.data[0] = 5.4, imageData.data[0] is 5
    4146PASS imageData.data[0] = 255, imageData.data[0] is 255
    42 PASS imageData.data[0] = 256, imageData.data[0] is 255
     47PASS imageData.data[0] = 256, imageData.data[0] is 0
    4348PASS imageData.data[0] = null, imageData.data[0] is 0
    4449PASS imageData.data[0] = undefined, imageData.data[0] is 0
  • trunk/LayoutTests/fast/canvas/canvas-ImageData-behaviour.js

    r30506 r64156  
    1212                  "\"0\"", "\"1\"", "\"2\"", Infinity, -Infinity,
    1313                  -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,
    1415                  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];
     16var 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];
    1921for (var i = 0; i < testValues.length; i++) {
    2022    shouldBe("imageData.data[0] = "+testValues[i]+", imageData.data[0]", ""+testResults[i]);
  • trunk/LayoutTests/platform/mac/Skipped

    r64110 r64156  
    203203canvas/philip/tests/2d.imageData.get.source.outside.html
    204204canvas/philip/tests/2d.imageData.get.type.html
    205 canvas/philip/tests/2d.imageData.object.round.html
    206 canvas/philip/tests/2d.imageData.object.wrap.html
    207205canvas/philip/tests/2d.line.cap.closed.html
    208206canvas/philip/tests/2d.line.join.parallel.html
  • trunk/LayoutTests/platform/qt/Skipped

    r64143 r64156  
    52715271canvas/philip/tests/2d.imageData.get.source.negative.html
    52725272canvas/philip/tests/2d.imageData.get.type.html
    5273 canvas/philip/tests/2d.imageData.object.round.html
    5274 canvas/philip/tests/2d.imageData.object.wrap.html
    52755273canvas/philip/tests/2d.imageData.put.unchanged.html
    52765274canvas/philip/tests/2d.line.cap.open.html
Note: See TracChangeset for help on using the changeset viewer.