diff options
Diffstat (limited to 'dom/events/test/test_dom_before_after_keyboard_event.html')
-rw-r--r-- | dom/events/test/test_dom_before_after_keyboard_event.html | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/dom/events/test/test_dom_before_after_keyboard_event.html b/dom/events/test/test_dom_before_after_keyboard_event.html new file mode 100644 index 000000000..533a7e73a --- /dev/null +++ b/dom/events/test/test_dom_before_after_keyboard_event.html @@ -0,0 +1,136 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test for Bug 989198</title> + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script> + <script type="text/javascript" src="/tests/SimpleTest/NativeKeyCodes.js"></script> + <script type="text/javascript" src="bug989198_helper.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body onload="runTests();"> +<a target="_blank" + href="https://bugzilla.mozilla.org/show_bug.cgi?id=989198">Mozilla Bug 989198</a> +<p id="display"></p> +<pre id="test"> +<script type="application/javascript"> + +SimpleTest.waitForExplicitFinish(); + +function cleanupTest() +{ + teardownHandlers(window, embedderHandler); + runTests(); +} + +function testEventOrderAndAttr() +{ + const kTests = [ + { + description: "Testing the order of the events", + expectedEvents: [ [ kParent | kBeforeEvent | kKeyDownEvent, + kChild | kKeyDownEvent, + kParent | kAfterEvent | kKeyDownEvent ], + [ kParent | kBeforeEvent | kKeyUpEvent, + kChild | kKeyUpEvent, + kParent | kAfterEvent | kKeyUpEvent ] ], + resultEvents: [], + classifiedEvents: [ [], [] ], + doPreventDefaultAt: kUnknownEvent + }, + { + description: "Testing the order of the events, calling preventDefault() at \"mozbrowserbeforekeydown\" event", + expectedEvents: [ [ kParent | kBeforeEvent | kKeyDownEvent, + kParent | kAfterEvent | kKeyDownEvent ], + [ kParent | kBeforeEvent | kKeyUpEvent, + kChild | kKeyUpEvent, + kParent | kAfterEvent | kKeyUpEvent ] ], + resultEvents: [], + classifiedEvents: [ [], [] ], + doPreventDefaultAt: kParent | kBeforeEvent | kKeyDownEvent + }, + { + description: "Testing the order of the events, calling preventDefault() at \"mozbrowserbeforekeyup\" event", + expectedEvents: [ [ kParent | kBeforeEvent | kKeyDownEvent, + kChild | kKeyDownEvent, + kParent | kAfterEvent | kKeyDownEvent ], + [ kParent | kBeforeEvent | kKeyUpEvent, + kParent | kAfterEvent | kKeyUpEvent ] ], + resultEvents: [], + classifiedEvents: [ [], [] ], + doPreventDefaultAt: kParent | kBeforeEvent | kKeyUpEvent + }, + { + description: "Testing the order of the events, calling preventDefault() at \"keydown\" event", + expectedEvents: [ [ kParent | kBeforeEvent | kKeyDownEvent, + kChild | kKeyDownEvent, + kParent | kAfterEvent | kKeyDownEvent ], + [ kParent | kBeforeEvent | kKeyUpEvent, + kChild | kKeyUpEvent, + kParent | kAfterEvent | kKeyUpEvent ] ], + resultEvents: [], + classifiedEvents: [ [], [] ], + doPreventDefaultAt: kChild | kKeyDownEvent + }, + { + description: "Testing the order of the events, calling preventDefault() at \"keyup\" event", + expectedEvents: [ [ kParent | kBeforeEvent | kKeyDownEvent, + kChild | kKeyDownEvent, + kParent | kAfterEvent | kKeyDownEvent ], + [ kParent | kBeforeEvent | kKeyUpEvent, + kChild | kKeyUpEvent, + kParent | kAfterEvent | kKeyUpEvent ] ], + resultEvents: [], + classifiedEvents: [ [], [] ], + doPreventDefaultAt: kChild | kKeyUpEvent + } + ]; + + for (var k = 0; k < kTests.length; k++ ) { + gCurrentTest = kTests[k]; + synthesizeKey('a', {}, document.getElementById("embedded").contentWindow); + classifyEvents(kTests[k]); + verifyResults(kTests[k]); + } + + runTests(); +} + +var tests = [ + function addPermissions() { + SpecialPowers.pushPermissions( + [{ type: "before-after-keyboard-event", allow: true, context: document }, + { type: "browser", allow: true, context: document }], + runTests); + }, + function addPreferences() { + SpecialPowers.pushPrefEnv( + { "set": [["dom.beforeAfterKeyboardEvent.enabled", true], + ["dom.mozBrowserFramesEnabled", true], + ["network.disable.ipc.security", true], + ["dom.ipc.tabs.disabled", false]] }, + runTests); + }, + + // Tests for in-process iframe, i.e. <iframe mozbrowser>. + function () { + prepareTest(false); + }, + testEventOrderAndAttr, + cleanupTest, +]; + +function runTests() +{ + if (!tests.length) { + SimpleTest.finish(); + return; + } + + var test = tests.shift(); + test(); +} + +</script> +</body> +</html> |