Calling createPattern with a broken image must throw an invalidstate error
authorcabanier@adobe.com <cabanier@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 May 2014 08:33:47 +0000 (08:33 +0000)
committercabanier@adobe.com <cabanier@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 May 2014 08:33:47 +0000 (08:33 +0000)
https://bugs.webkit.org/show_bug.cgi?id=132407

Reviewed by Dirk Schulze.

Source/WebCore:
Per the WebIDL spec, passing non-finite parameter to a method that
takes doubles, should generate a type error.

Tests:
* canvas/philip/tests/2d.imageData.create2.nonfinite.html:
* fast/canvas/canvas-2d-imageData-create-nonfinite.html:

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::createImageData):

LayoutTests:
* canvas/philip/tests/2d.imageData.create2.nonfinite.html:
* fast/canvas/canvas-2d-imageData-create-nonfinite-expected.txt:
* fast/canvas/resources/canvas-2d-imageData-create-nonfinite.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@168092 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/canvas/philip/tests/2d.imageData.create2.nonfinite.html
LayoutTests/fast/canvas/canvas-2d-imageData-create-nonfinite-expected.txt
LayoutTests/fast/canvas/resources/canvas-2d-imageData-create-nonfinite.js
Source/WebCore/ChangeLog
Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp

index 3b43013..3f7679f 100644 (file)
@@ -1,3 +1,14 @@
+2014-05-01  Rik Cabanier  <cabanier@adobe.com>
+
+        Calling createPattern with a broken image must throw an invalidstate error
+        https://bugs.webkit.org/show_bug.cgi?id=132407
+
+        Reviewed by Dirk Schulze.
+
+        * canvas/philip/tests/2d.imageData.create2.nonfinite.html:
+        * fast/canvas/canvas-2d-imageData-create-nonfinite-expected.txt:
+        * fast/canvas/resources/canvas-2d-imageData-create-nonfinite.js:
+
 2014-05-01  Andreas Kling  <akling@apple.com>
 
         Skip fast/multicol/fixed-stack.html
index d57b41e..fc695ed 100644 (file)
@@ -14,25 +14,25 @@ _addTest(function(canvas, ctx) {
 
 try { var _thrown = false;
   ctx.createImageData(Infinity, 10);
-} 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(Infinity, 10)"); }
+} 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 NOT_SUPPORTED_ERR: ctx.createImageData(Infinity, 10)"); }
 try { var _thrown = false;
   ctx.createImageData(-Infinity, 10);
-} 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(-Infinity, 10)"); }
+} 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 NOT_SUPPORTED_ERR: ctx.createImageData(-Infinity, 10)"); }
 try { var _thrown = false;
   ctx.createImageData(NaN, 10);
-} 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(NaN, 10)"); }
+} 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 NOT_SUPPORTED_ERR: ctx.createImageData(NaN, 10)"); }
 try { var _thrown = false;
   ctx.createImageData(10, Infinity);
-} 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(10, Infinity)"); }
+} 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 NOT_SUPPORTED_ERR: ctx.createImageData(10, Infinity)"); }
 try { var _thrown = false;
   ctx.createImageData(10, -Infinity);
-} 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(10, -Infinity)"); }
+} 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 NOT_SUPPORTED_ERR: ctx.createImageData(10, -Infinity)"); }
 try { var _thrown = false;
   ctx.createImageData(10, NaN);
-} 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(10, NaN)"); }
+} 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 NOT_SUPPORTED_ERR: ctx.createImageData(10, NaN)"); }
 try { var _thrown = false;
   ctx.createImageData(Infinity, Infinity);
-} 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(Infinity, Infinity)"); }
+} 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 NOT_SUPPORTED_ERR: ctx.createImageData(Infinity, Infinity)"); }
 
 
 });
index 7622c0e..86bdc75 100644 (file)
@@ -3,13 +3,13 @@ Test the argument bounds of canvas createImageData.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS ctx.createImageData(Infinity, Infinity) threw exception Error: NotSupportedError: DOM Exception 9.
-PASS ctx.createImageData(Infinity, 10) threw exception Error: NotSupportedError: DOM Exception 9.
-PASS ctx.createImageData(-Infinity, 10) threw exception Error: NotSupportedError: DOM Exception 9.
-PASS ctx.createImageData(10, Infinity) threw exception Error: NotSupportedError: DOM Exception 9.
-PASS ctx.createImageData(10, -Infinity) threw exception Error: NotSupportedError: DOM Exception 9.
-PASS ctx.createImageData(NaN, 10) threw exception Error: NotSupportedError: DOM Exception 9.
-PASS ctx.createImageData(10, NaN) threw exception Error: NotSupportedError: DOM Exception 9.
+PASS ctx.createImageData(Infinity, Infinity) threw exception TypeError: Type error.
+PASS ctx.createImageData(Infinity, 10) threw exception TypeError: Type error.
+PASS ctx.createImageData(-Infinity, 10) threw exception TypeError: Type error.
+PASS ctx.createImageData(10, Infinity) threw exception TypeError: Type error.
+PASS ctx.createImageData(10, -Infinity) threw exception TypeError: Type error.
+PASS ctx.createImageData(NaN, 10) threw exception TypeError: Type error.
+PASS ctx.createImageData(10, NaN) threw exception TypeError: Type error.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index f29b8f3..cfc537d 100644 (file)
@@ -3,10 +3,10 @@ description("Test the argument bounds of canvas createImageData.");
 var canvas = document.getElementById('canvas');
 var ctx = canvas.getContext('2d');
 
-shouldThrow("ctx.createImageData(Infinity, Infinity)", '"Error: NotSupportedError: DOM Exception 9"');
-shouldThrow("ctx.createImageData(Infinity, 10)", '"Error: NotSupportedError: DOM Exception 9"');
-shouldThrow("ctx.createImageData(-Infinity, 10)", '"Error: NotSupportedError: DOM Exception 9"');
-shouldThrow("ctx.createImageData(10, Infinity)", '"Error: NotSupportedError: DOM Exception 9"');
-shouldThrow("ctx.createImageData(10, -Infinity)", '"Error: NotSupportedError: DOM Exception 9"');
-shouldThrow("ctx.createImageData(NaN, 10)", '"Error: NotSupportedError: DOM Exception 9"');
-shouldThrow("ctx.createImageData(10, NaN)", '"Error: NotSupportedError: DOM Exception 9"');
+shouldThrow("ctx.createImageData(Infinity, Infinity)", '"TypeError: Type error"');
+shouldThrow("ctx.createImageData(Infinity, 10)", '"TypeError: Type error"');
+shouldThrow("ctx.createImageData(-Infinity, 10)", '"TypeError: Type error"');
+shouldThrow("ctx.createImageData(10, Infinity)", '"TypeError: Type error"');
+shouldThrow("ctx.createImageData(10, -Infinity)", '"TypeError: Type error"');
+shouldThrow("ctx.createImageData(NaN, 10)", '"TypeError: Type error"');
+shouldThrow("ctx.createImageData(10, NaN)", '"TypeError: Type error"');
index c1a5bec..95b96c0 100644 (file)
@@ -1,3 +1,20 @@
+2014-05-01  Rik Cabanier  <cabanier@adobe.com>
+
+        Calling createPattern with a broken image must throw an invalidstate error
+        https://bugs.webkit.org/show_bug.cgi?id=132407
+
+        Reviewed by Dirk Schulze.
+
+        Per the WebIDL spec, passing non-finite parameter to a method that
+        takes doubles, should generate a type error.
+
+        Tests:
+        * canvas/philip/tests/2d.imageData.create2.nonfinite.html:
+        * fast/canvas/canvas-2d-imageData-create-nonfinite.html:
+
+        * html/canvas/CanvasRenderingContext2D.cpp:
+        (WebCore::CanvasRenderingContext2D::createImageData):
+
 2014-04-30  David Hyatt  <hyatt@apple.com>
 
         REGRESSION (r168046): [New Multicolumn] LeftToRight-rl.html (and all the other reversed/block-axis pagination tests) fail
index fabcb62..28129f7 100755 (executable)
@@ -1862,7 +1862,7 @@ PassRefPtr<ImageData> CanvasRenderingContext2D::createImageData(float sw, float
         return 0;
     }
     if (!std::isfinite(sw) || !std::isfinite(sh)) {
-        ec = NOT_SUPPORTED_ERR;
+        ec = TypeError;
         return 0;
     }