Title: [227050] trunk
Revision
227050
Author
[email protected]
Date
2018-01-17 00:59:01 -0800 (Wed, 17 Jan 2018)

Log Message

CanvasImageData: createImageData() parameter should not be nullable
https://bugs.webkit.org/show_bug.cgi?id=181670

Reviewed by Sam Weinig.

Source/WebCore:

createImageData() method on the CanvasImageData interface should not
treat the ImageData parameter as nullable, but should instead reject any
null values with a TypeError, as demanded by the specification.

No new tests -- current tests covering createImageData(null) are updated
to properly cover new behavior of throwing a TypeError exception.

* html/canvas/CanvasImageData.idl:
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::createImageData const):
* html/canvas/CanvasRenderingContext2DBase.h:

LayoutTests:

Update createImageData(null) tests that should now throw a TypeError.

* canvas/philip/tests/2d.imageData.create1.zero.html:
* fast/canvas/canvas-createImageData-expected.txt:
* fast/canvas/canvas-createImageData.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (227049 => 227050)


--- trunk/LayoutTests/ChangeLog	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/LayoutTests/ChangeLog	2018-01-17 08:59:01 UTC (rev 227050)
@@ -1,3 +1,16 @@
+2018-01-17  Zan Dobersek  <[email protected]>
+
+        CanvasImageData: createImageData() parameter should not be nullable
+        https://bugs.webkit.org/show_bug.cgi?id=181670
+
+        Reviewed by Sam Weinig.
+
+        Update createImageData(null) tests that should now throw a TypeError.
+
+        * canvas/philip/tests/2d.imageData.create1.zero.html:
+        * fast/canvas/canvas-createImageData-expected.txt:
+        * fast/canvas/canvas-createImageData.html:
+
 2018-01-16  Simon Fraser  <[email protected]>
 
         Can't scroll iframe after toggling it to display:none and back

Modified: trunk/LayoutTests/canvas/philip/tests/2d.imageData.create1.zero.html (227049 => 227050)


--- trunk/LayoutTests/canvas/philip/tests/2d.imageData.create1.zero.html	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/LayoutTests/canvas/philip/tests/2d.imageData.create1.zero.html	2018-01-17 08:59:01 UTC (rev 227050)
@@ -14,7 +14,7 @@
 
 try { var _thrown = false;
   ctx.createImageData(null);
-} catch (e) { if (e.code != DOMException.NOT_SUPPORTED_ERR) _fail("Failed assertion: expected exception of type NOT_SUPPORTED_ERR, got: "+e.message); _thrown = true; } finally { _assert(_thrown, "should throw exception of type NOT_SUPPORTED_ERR: ctx.createImageData(null)"); }
+} catch (e) { if (e.code != DOMException.TYPE_ERR) _fail("Failed assertion: expected exception of type TYPE_ERR, got: "+e.message); _thrown = true; } finally { _assert(_thrown, "should throw exception of type TYPE_ERR: ctx.createImageData(null)"); }
 
 
 });

Modified: trunk/LayoutTests/fast/canvas/canvas-createImageData-expected.txt (227049 => 227050)


--- trunk/LayoutTests/fast/canvas/canvas-createImageData-expected.txt	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/LayoutTests/fast/canvas/canvas-createImageData-expected.txt	2018-01-17 08:59:01 UTC (rev 227050)
@@ -3,7 +3,7 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ctx.createImageData(null) threw exception NotSupportedError: The operation is not supported..
+PASS ctx.createImageData(null) threw exception TypeError: Argument 1 ('imagedata') to CanvasRenderingContext2D.createImageData must be an instance of ImageData.
 PASS imageData.width is 100
 PASS imageData.height is 50
 PASS imageData.data[32] is 255

Modified: trunk/LayoutTests/fast/canvas/canvas-createImageData.html (227049 => 227050)


--- trunk/LayoutTests/fast/canvas/canvas-createImageData.html	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/LayoutTests/fast/canvas/canvas-createImageData.html	2018-01-17 08:59:01 UTC (rev 227050)
@@ -9,7 +9,7 @@
 
 ctx = document.createElement('canvas').getContext('2d');
 
-shouldThrowErrorName("ctx.createImageData(null)", "NotSupportedError");
+shouldThrowErrorName("ctx.createImageData(null)", "TypeError");
 
 // create a 100x50 imagedata and fill it with white pixels
 

Modified: trunk/Source/WebCore/ChangeLog (227049 => 227050)


--- trunk/Source/WebCore/ChangeLog	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/Source/WebCore/ChangeLog	2018-01-17 08:59:01 UTC (rev 227050)
@@ -1,3 +1,22 @@
+2018-01-17  Zan Dobersek  <[email protected]>
+
+        CanvasImageData: createImageData() parameter should not be nullable
+        https://bugs.webkit.org/show_bug.cgi?id=181670
+
+        Reviewed by Sam Weinig.
+
+        createImageData() method on the CanvasImageData interface should not
+        treat the ImageData parameter as nullable, but should instead reject any
+        null values with a TypeError, as demanded by the specification.
+
+        No new tests -- current tests covering createImageData(null) are updated
+        to properly cover new behavior of throwing a TypeError exception.
+
+        * html/canvas/CanvasImageData.idl:
+        * html/canvas/CanvasRenderingContext2DBase.cpp:
+        (WebCore::CanvasRenderingContext2DBase::createImageData const):
+        * html/canvas/CanvasRenderingContext2DBase.h:
+
 2018-01-16  Fujii Hironori  <[email protected]>
 
         [CMake] Remove WebCoreDerivedSources library target

Modified: trunk/Source/WebCore/html/canvas/CanvasImageData.idl (227049 => 227050)


--- trunk/Source/WebCore/html/canvas/CanvasImageData.idl	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/Source/WebCore/html/canvas/CanvasImageData.idl	2018-01-17 08:59:01 UTC (rev 227050)
@@ -31,7 +31,7 @@
 
     // pixel manipulation
     [MayThrowException] ImageData createImageData(float sw, float sh);
-    [MayThrowException] ImageData createImageData(ImageData? imagedata); // FIXME: imagedata should not be optional
+    ImageData createImageData(ImageData imagedata);
     [MayThrowException] ImageData getImageData(float sx, float sy, float sw, float sh);
     void putImageData(ImageData imagedata, float dx, float dy);
     void putImageData(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);

Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp (227049 => 227050)


--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp	2018-01-17 08:59:01 UTC (rev 227050)
@@ -2105,12 +2105,9 @@
     return data;
 }
 
-ExceptionOr<RefPtr<ImageData>> CanvasRenderingContext2DBase::createImageData(ImageData* imageData) const
+RefPtr<ImageData> CanvasRenderingContext2DBase::createImageData(ImageData& imageData) const
 {
-    if (!imageData)
-        return Exception { NotSupportedError };
-
-    return createEmptyImageData(imageData->size());
+    return createEmptyImageData(imageData.size());
 }
 
 ExceptionOr<RefPtr<ImageData>> CanvasRenderingContext2DBase::createImageData(float sw, float sh) const

Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h (227049 => 227050)


--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h	2018-01-17 07:14:24 UTC (rev 227049)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.h	2018-01-17 08:59:01 UTC (rev 227050)
@@ -183,7 +183,7 @@
     ExceptionOr<Ref<CanvasGradient>> createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
     ExceptionOr<RefPtr<CanvasPattern>> createPattern(CanvasImageSource&&, const String& repetition);
 
-    ExceptionOr<RefPtr<ImageData>> createImageData(ImageData*) const;
+    RefPtr<ImageData> createImageData(ImageData&) const;
     ExceptionOr<RefPtr<ImageData>> createImageData(float width, float height) const;
     ExceptionOr<RefPtr<ImageData>> getImageData(float sx, float sy, float sw, float sh) const;
     void putImageData(ImageData&, float dx, float dy);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to