- 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);