tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

api.html (2895B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>textInput: API</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <input class=test-el>
      7 <textarea class=test-el></textarea>
      8 <div contenteditable class=test-el></div>
      9 <script src="support/common.js"></script>
     10 <script>
     11 test(() => {
     12  assert_throws_js(TypeError, () => {
     13    new TextEvent('textInput');
     14  });
     15 }, "No constructor");
     16 
     17 test(() => {
     18  const e = document.createEvent('TextEvent');
     19  assert_equals(Object.getPrototypeOf(e), window.TextEvent.prototype);
     20  assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(e)), window.UIEvent.prototype);
     21  assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(e))), window.Event.prototype);
     22 }, "document.CreateEvent('TextEvent') prototype chain");
     23 
     24 test(() => {
     25  const e = document.createEvent('TextEvent');
     26  assert_throws_js(TypeError, () => { e.initTextEvent(); });
     27 }, "initTextEvent() no arguments");
     28 
     29 test(() => {
     30  const e = document.createEvent('TextEvent');
     31  e.initTextEvent('foo');
     32  assert_equals(e.type, 'foo');
     33  assert_equals(e.bubbles, false);
     34  assert_equals(e.cancelable, false);
     35  assert_equals(e.view, null);
     36  assert_equals(e.data, 'undefined');
     37 }, "initTextEvent('foo')");
     38 
     39 test(() => {
     40  const e = document.createEvent('TextEvent');
     41  e.initTextEvent('foo', true, true, window, 'bar');
     42  assert_equals(e.type, 'foo');
     43  assert_equals(e.bubbles, true);
     44  assert_equals(e.cancelable, true);
     45  assert_equals(e.view, window);
     46  assert_equals(e.data, 'bar');
     47 }, "initTextEvent('foo', true, true, window, 'bar')");
     48 
     49 test(() => {
     50  const div = document.createElement('div');
     51  let textinputCount = 0;
     52  let textInputCount = 0;
     53  div.addEventListener('textinput', e => {
     54    assert_equals(e.type, 'textinput');
     55    textinputCount++;
     56  });
     57  div.addEventListener('textInput', e => {
     58    assert_equals(e.type, 'textInput');
     59    textInputCount++;
     60  });
     61  const textinputEvent = document.createEvent('TextEvent');
     62  textinputEvent.initTextEvent('textinput');
     63  div.dispatchEvent(textinputEvent);
     64 
     65  const textInputEvent = document.createEvent('TextEvent');
     66  textInputEvent.initTextEvent('textInput');
     67  div.dispatchEvent(textInputEvent);
     68 
     69  assert_equals(textinputCount, 1);
     70  assert_equals(textInputCount, 1);
     71 }, "case sensitivity: textInput vs textinput");
     72 
     73 const els = document.querySelectorAll('.test-el');
     74 for (const el of els) {
     75  promise_test(t => {
     76    return new Promise((resolve, reject) => {
     77      el.addEventListener('textInput', reject);
     78      el.addEventListener('input', t.step_func(e => {
     79        const actualValue = 'value' in el ? el.value : el.textContent;
     80        assert_equals(actualValue, 'a');
     81        resolve();
     82      }));
     83      el.focus();
     84      document.execCommand('insertText', false, 'a');
     85    });
     86  }, `execCommand('insertText', false, 'a'), ${elDesc(el)}` );
     87 }
     88 </script>