summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/uievents/textInput/api.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/uievents/textInput/api.html')
-rw-r--r--testing/web-platform/tests/uievents/textInput/api.html88
1 files changed, 88 insertions, 0 deletions
diff --git a/testing/web-platform/tests/uievents/textInput/api.html b/testing/web-platform/tests/uievents/textInput/api.html
new file mode 100644
index 0000000000..a88184e500
--- /dev/null
+++ b/testing/web-platform/tests/uievents/textInput/api.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>textInput: API</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<input class=test-el>
+<textarea class=test-el></textarea>
+<div contenteditable class=test-el></div>
+<script src="support/common.js"></script>
+<script>
+test(() => {
+ assert_throws_js(TypeError, () => {
+ new TextEvent('textInput');
+ });
+}, "No constructor");
+
+test(() => {
+ const e = document.createEvent('TextEvent');
+ assert_equals(Object.getPrototypeOf(e), window.TextEvent.prototype);
+ assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(e)), window.UIEvent.prototype);
+ assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e))), window.Event.prototype);
+}, "document.CreateEvent('TextEvent') prototype chain");
+
+test(() => {
+ const e = document.createEvent('TextEvent');
+ assert_throws_js(TypeError, () => { e.initTextEvent(); });
+}, "initTextEvent() no arguments");
+
+test(() => {
+ const e = document.createEvent('TextEvent');
+ e.initTextEvent('foo');
+ assert_equals(e.type, 'foo');
+ assert_equals(e.bubbles, false);
+ assert_equals(e.cancelable, false);
+ assert_equals(e.view, null);
+ assert_equals(e.data, 'undefined');
+}, "initTextEvent('foo')");
+
+test(() => {
+ const e = document.createEvent('TextEvent');
+ e.initTextEvent('foo', true, true, window, 'bar');
+ assert_equals(e.type, 'foo');
+ assert_equals(e.bubbles, true);
+ assert_equals(e.cancelable, true);
+ assert_equals(e.view, window);
+ assert_equals(e.data, 'bar');
+}, "initTextEvent('foo', true, true, window, 'bar')");
+
+test(() => {
+ const div = document.createElement('div');
+ let textinputCount = 0;
+ let textInputCount = 0;
+ div.addEventListener('textinput', e => {
+ assert_equals(e.type, 'textinput');
+ textinputCount++;
+ });
+ div.addEventListener('textInput', e => {
+ assert_equals(e.type, 'textInput');
+ textInputCount++;
+ });
+ const textinputEvent = document.createEvent('TextEvent');
+ textinputEvent.initTextEvent('textinput');
+ div.dispatchEvent(textinputEvent);
+
+ const textInputEvent = document.createEvent('TextEvent');
+ textInputEvent.initTextEvent('textInput');
+ div.dispatchEvent(textInputEvent);
+
+ assert_equals(textinputCount, 1);
+ assert_equals(textInputCount, 1);
+}, "case sensitivity: textInput vs textinput");
+
+const els = document.querySelectorAll('.test-el');
+for (const el of els) {
+ promise_test(t => {
+ return new Promise((resolve, reject) => {
+ el.addEventListener('textInput', reject);
+ el.addEventListener('input', t.step_func(e => {
+ const actualValue = 'value' in el ? el.value : el.textContent;
+ assert_equals(actualValue, 'a');
+ resolve();
+ }));
+ el.focus();
+ document.execCommand('insertText', false, 'a');
+ });
+ }, `execCommand('insertText', false, 'a'), ${elDesc(el)}` );
+}
+</script>