Chromium Code Reviews| Index: LayoutTests/fast/html/eventhandler-attribute-non-callable.html |
| diff --git a/LayoutTests/fast/html/eventhandler-attribute-non-callable.html b/LayoutTests/fast/html/eventhandler-attribute-non-callable.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7753760848f0e97e0fa157b7fc34689c089c1aec |
| --- /dev/null |
| +++ b/LayoutTests/fast/html/eventhandler-attribute-non-callable.html |
| @@ -0,0 +1,50 @@ |
| +<html> |
| +<head> |
| +<link rel="help" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler"> |
| +<script src="../js/resources/js-test-pre.js"></script> |
| +</head> |
| +<body> |
| +<div id="div"></div> |
| +<script> |
| +description("This test checks that EventHandler attributes only accept JS functions as input."); |
| + |
| +var div = document.getElementById("div"); |
| +var wasCallbackCalled = false; |
|
arv (Not doing code reviews)
2013/08/08 14:41:28
A general tip for cases like this is to use a coun
|
| + |
| +function callback() { |
| + wasCallbackCalled = true; |
| +} |
| + |
| +function dispatchKeyEvent() |
| +{ |
| + var event = document.createEvent("KeyboardEvent"); |
|
arv (Not doing code reviews)
2013/08/08 14:41:28
I always prefer new FooEvent since the initFooEven
|
| + event.initKeyboardEvent("keydown", true, true, null, "Enter", ""); |
| + div.dispatchEvent(event); |
| +} |
| + |
| +// Input is a JS function, this should work. |
| +shouldBeNull('div.onkeydown'); |
| +shouldNotThrow('div.onkeydown = callback'); |
| +shouldBe('div.onkeydown', 'callback'); |
| +dispatchKeyEvent(); |
| +shouldBeTrue('wasCallbackCalled'); |
| + |
| +// Non callable input should be treated as null. |
| +var o = {}; |
| +Object.defineProperty(o, 'handleEvent', callback); |
|
arv (Not doing code reviews)
2013/08/08 14:41:28
This is incorrect usage of the defineProperty API.
|
| +shouldNotBe('div.onkeydown', 'null'); |
| +shouldNotThrow('div.onkeydown = o'); |
| +shouldBeNull('div.onkeydown'); |
| +wasCallbackCalled = false; |
| +dispatchKeyEvent(); |
| +shouldBeFalse('wasCallbackCalled'); |
| + |
| +// Test null assignment. |
| +shouldNotThrow('div.onkeydown = callback'); |
| +shouldBe('div.onkeydown', 'callback'); |
| +shouldNotThrow('div.onkeydown = null'); |
| +shouldBeNull('div.onkeydown'); |
| +</script> |
| +<script src="../js/resources/js-test-post.js"></script> |
| +</body> |
| +</html> |