зеркало из https://github.com/mozilla/pjs.git
Bug 613794. Throw a reasonable exception when passed bogus imagedata. r=vlad
This commit is contained in:
Родитель
317d1a6915
Коммит
312e1f3596
|
@ -349,9 +349,12 @@ nsIDOMCanvasRenderingContext2D_PutImageData(JSContext *cx, uintN argc, jsval *vp
|
|||
hasDirtyRect = PR_TRUE;
|
||||
}
|
||||
|
||||
if (!JS_GetProperty(cx, dataObject, "data", tv.jsval_addr()) ||
|
||||
JSVAL_IS_PRIMITIVE(tv.jsval_value()))
|
||||
if (!JS_GetProperty(cx, dataObject, "data", tv.jsval_addr()))
|
||||
return JS_FALSE;
|
||||
|
||||
if (JSVAL_IS_PRIMITIVE(tv.jsval_value()))
|
||||
return xpc_qsThrow(cx, NS_ERROR_DOM_TYPE_MISMATCH_ERR);
|
||||
|
||||
darray = JSVAL_TO_OBJECT(tv.jsval_value());
|
||||
|
||||
js::AutoValueRooter tsrc_tvr(cx);
|
||||
|
|
|
@ -81,6 +81,7 @@ _TEST_FILES_0 = \
|
|||
test_2d.composite.uncovered.image.source-out.html \
|
||||
test_mozGetAsFile.html \
|
||||
test_canvas_strokeStyle_getter.html \
|
||||
test_bug613794.html \
|
||||
$(NULL)
|
||||
|
||||
ifneq (1_Linux,$(MOZ_SUITE)_$(OS_ARCH))
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=613794
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 613794</title>
|
||||
<script type="application/javascript" src="/MochiKit/packed.js"></script>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=613794">Mozilla Bug 613794</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 613794 **/
|
||||
|
||||
var c = document.createElement("canvas");
|
||||
c.width = c.height = 1;
|
||||
|
||||
c = c.getContext("2d");
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
var threw = true;
|
||||
try {
|
||||
c.putImageData({ width: 1, height: 1, data: [ 0, 0, 0, 0] }, 0, 0);
|
||||
threw = false;
|
||||
} catch(e) {
|
||||
threw = true;
|
||||
}
|
||||
|
||||
is(threw, false, "Should be able to pass in custom imagedata objects with array data");
|
||||
|
||||
threw = false;
|
||||
try {
|
||||
c.putImageData({ width: 1, height: 1, data: null }, 0, 0);
|
||||
threw = false;
|
||||
} catch(e) {
|
||||
threw = e.code;
|
||||
}
|
||||
|
||||
is(threw, DOMException.TYPE_MISMATCH_ERR,
|
||||
"Should throw type error when data is not an array");
|
||||
SimpleTest.finish();
|
||||
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче