Skip to content
Permalink
Browse files
2011-05-31 Andreas Kling <kling@webkit.org>
        Reviewed by Antti Koivisto.

        Canvas/JSC: Auto-generate overloads for setShadow()
        https://bugs.webkit.org/show_bug.cgi?id=61786

        Move CanvasRenderingContext2D.setShadow() to auto-generated JSC bindings.

        There is a subtle difference to the previous behavior: invalid numbers of
        arguments now raise TypeError instead of SyntaxError. This is in accordance
        with Web IDL, and matches the existing V8 bindings.

        Test: fast/canvas/canvas-overloads-setShadow.html

        * bindings/js/JSCanvasRenderingContext2DCustom.cpp:
        * html/canvas/CanvasRenderingContext2D.idl:
2011-05-31  Andreas Kling  <kling@webkit.org>

        Reviewed by Antti Koivisto.

        Canvas/JSC: Auto-generate overloads for setShadow()
        https://bugs.webkit.org/show_bug.cgi?id=61786

        Add a test to verify the behavior of setShadow() when called
        with different numbers of arguments.

        * fast/canvas/canvas-overloads-setShadow-expected.txt: Added.
        * fast/canvas/canvas-overloads-setShadow.html: Added.
        * fast/canvas/script-tests/canvas-overloads-setShadow.js: Added.


Canonical link: https://commits.webkit.org/77216@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@87736 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
Andreas Kling committed May 31, 2011
1 parent 94b069b commit b2de961cbdd31bc132e6bd8b672a45f8ea7728ba
@@ -1,3 +1,17 @@
2011-05-31 Andreas Kling <kling@webkit.org>

Reviewed by Antti Koivisto.

Canvas/JSC: Auto-generate overloads for setShadow()
https://bugs.webkit.org/show_bug.cgi?id=61786

Add a test to verify the behavior of setShadow() when called
with different numbers of arguments.

* fast/canvas/canvas-overloads-setShadow-expected.txt: Added.
* fast/canvas/canvas-overloads-setShadow.html: Added.
* fast/canvas/script-tests/canvas-overloads-setShadow.js: Added.

2011-05-31 Andreas Kling <kling@webkit.org>

Reviewed by Antti Koivisto.
@@ -0,0 +1,23 @@
Test the behavior of CanvasRenderingContext2D.setShadow() when called with different numbers of arguments.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS ctx.setShadow() threw exception TypeError: Type error.
PASS ctx.setShadow(0) threw exception TypeError: Type error.
PASS ctx.setShadow(0, 0) threw exception TypeError: Type error.
PASS ctx.setShadow(0, 0, 0) is undefined
PASS ctx.setShadow(0, 0, 0, 0) is undefined
PASS ctx.setShadow(0, 0, 0, 0, 0) is undefined
PASS ctx.setShadow(0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
PASS ctx.setShadow(0, 0, 0, 0, 'red') is undefined
PASS ctx.setShadow(0, 0, 0, 0, 'red', 0) threw exception TypeError: Type error.
PASS ctx.setShadow(0, 0, 0, 0, 'red', 0, 0) is undefined
PASS ctx.setShadow(0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
PASS ctx.setShadow(0, 0, 0, 0, 0, 0, 0) is undefined
PASS ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0) is undefined
PASS ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0, 0) threw exception TypeError: Type error.
PASS successfullyParsed is true

TEST COMPLETE

@@ -0,0 +1,13 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<link rel="stylesheet" href="../js/resources/js-test-style.css">
<script src="../js/resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script src="script-tests/canvas-overloads-setShadow.js"></script>
<script src="../js/resources/js-test-post.js"></script>
</body>
</html>
@@ -0,0 +1,22 @@
description("Test the behavior of CanvasRenderingContext2D.setShadow() when called with different numbers of arguments.");

var ctx = document.createElement('canvas').getContext('2d');

var TypeError = "TypeError: Type error";

shouldThrow("ctx.setShadow()", "TypeError");
shouldThrow("ctx.setShadow(0)", "TypeError");
shouldThrow("ctx.setShadow(0, 0)", "TypeError");
shouldBe("ctx.setShadow(0, 0, 0)", "undefined");
shouldBe("ctx.setShadow(0, 0, 0, 0)", "undefined");
shouldBe("ctx.setShadow(0, 0, 0, 0, 0)", "undefined");
shouldThrow("ctx.setShadow(0, 0, 0, 0, 0, 0)", "TypeError");
shouldBe("ctx.setShadow(0, 0, 0, 0, 'red')", "undefined");
shouldThrow("ctx.setShadow(0, 0, 0, 0, 'red', 0)", "TypeError");
shouldBe("ctx.setShadow(0, 0, 0, 0, 'red', 0, 0)", "undefined");
shouldThrow("ctx.setShadow(0, 0, 0, 0, 0, 0)", "TypeError");
shouldBe("ctx.setShadow(0, 0, 0, 0, 0, 0, 0)", "undefined");
shouldBe("ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0)", "undefined");
shouldThrow("ctx.setShadow(0, 0, 0, 0, 0, 0, 0, 0, 0)", "TypeError");

var successfullyParsed = true;
@@ -1,3 +1,21 @@
2011-05-31 Andreas Kling <kling@webkit.org>

Reviewed by Antti Koivisto.

Canvas/JSC: Auto-generate overloads for setShadow()
https://bugs.webkit.org/show_bug.cgi?id=61786

Move CanvasRenderingContext2D.setShadow() to auto-generated JSC bindings.

There is a subtle difference to the previous behavior: invalid numbers of
arguments now raise TypeError instead of SyntaxError. This is in accordance
with Web IDL, and matches the existing V8 bindings.

Test: fast/canvas/canvas-overloads-setShadow.html

* bindings/js/JSCanvasRenderingContext2DCustom.cpp:
* html/canvas/CanvasRenderingContext2D.idl:

2011-05-31 Andreas Kling <kling@webkit.org>

Reviewed by Antti Koivisto.
@@ -95,52 +95,6 @@ void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValue value)
context->setFillStyle(toHTMLCanvasStyle(exec, value));
}

JSValue JSCanvasRenderingContext2D::setShadow(ExecState* exec)
{
CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(impl());

switch (exec->argumentCount()) {
case 3:
context->setShadow(exec->argument(0).toFloat(exec), exec->argument(1).toFloat(exec),
exec->argument(2).toFloat(exec));
break;
case 4:
if (exec->argument(3).isString())
context->setShadow(exec->argument(0).toFloat(exec), exec->argument(1).toFloat(exec),
exec->argument(2).toFloat(exec), ustringToString(asString(exec->argument(3))->value(exec)));
else
context->setShadow(exec->argument(0).toFloat(exec), exec->argument(1).toFloat(exec),
exec->argument(2).toFloat(exec), exec->argument(3).toFloat(exec));
break;
case 5:
if (exec->argument(3).isString())
context->setShadow(exec->argument(0).toFloat(exec), exec->argument(1).toFloat(exec),
exec->argument(2).toFloat(exec), ustringToString(asString(exec->argument(3))->value(exec)),
exec->argument(4).toFloat(exec));
else
context->setShadow(exec->argument(0).toFloat(exec), exec->argument(1).toFloat(exec),
exec->argument(2).toFloat(exec), exec->argument(3).toFloat(exec),
exec->argument(4).toFloat(exec));
break;
case 7:
context->setShadow(exec->argument(0).toFloat(exec), exec->argument(1).toFloat(exec),
exec->argument(2).toFloat(exec), exec->argument(3).toFloat(exec),
exec->argument(4).toFloat(exec), exec->argument(5).toFloat(exec),
exec->argument(6).toFloat(exec));
break;
case 8:
context->setShadow(exec->argument(0).toFloat(exec), exec->argument(1).toFloat(exec),
exec->argument(2).toFloat(exec), exec->argument(3).toFloat(exec),
exec->argument(4).toFloat(exec), exec->argument(5).toFloat(exec),
exec->argument(6).toFloat(exec), exec->argument(7).toFloat(exec));
break;
default:
return throwSyntaxError(exec);
}

return jsUndefined();
}

JSValue JSCanvasRenderingContext2D::createPattern(ExecState* exec)
{
CanvasRenderingContext2D* context = static_cast<CanvasRenderingContext2D*>(impl());
@@ -140,13 +140,12 @@ module html {
in [Optional] float dx, in [Optional] float dy, in [Optional] float dw, in [Optional] float dh,
in [Optional] DOMString compositeOperation);

#if defined(V8_BINDING) && V8_BINDING

void setShadow(in float width, in float height, in float blur, in [Optional] DOMString color, in [Optional] float alpha);
void setShadow(in float width, in float height, in float blur, in float grayLevel, in [Optional] float alpha);
void setShadow(in float width, in float height, in float blur, in float r, in float g, in float b, in float a);
void setShadow(in float width, in float height, in float blur, in float c, in float m, in float y, in float k, in float a);

#if defined(V8_BINDING) && V8_BINDING
CanvasPattern createPattern(in HTMLCanvasElement canvas, in [ConvertNullToNullString] DOMString repetitionType)
raises (DOMException);
CanvasPattern createPattern(in HTMLImageElement image, in [ConvertNullToNullString] DOMString repetitionType)
@@ -159,7 +158,6 @@ module html {
raises (DOMException);
#else
// FIXME: Remove 'else' once JSC supports overloads too.
[Custom] void setShadow(/* 3 */);
[Custom] void createPattern(/* 2 */);
[Custom] void putImageData(/* in ImageData imagedata, in float dx, in float dy [, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight] */);
[Custom] ImageData createImageData(/* 3 */);

0 comments on commit b2de961

Please sign in to comment.