tor-browser

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

test_textarea_value_not_include_cr.html (3492B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4  <title>Test for HTMLTextAreaElement.value not returning value including CR</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script src="/tests/SimpleTest/EventUtils.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      8 </head>
      9 <body>
     10 <p id="display"></p>
     11 <div id="content" style="display: none;">
     12 
     13 </div>
     14 
     15 <textarea></textarea>
     16 
     17 <script>
     18 SimpleTest.waitForExplicitFinish();
     19 SimpleTest.waitForFocus(async () => {
     20  /**
     21   * This test should check only the cases with emulating complicated
     22   * key events and using XPCOM methods.  If you need to add simple textcases,
     23   * use testing/web-platform/tests/html/semantics/forms/the-textarea-element/value-defaultValue-textContent.html
     24   * instead
     25   */
     26  let textarea = document.querySelector("textarea");
     27  textarea.focus();
     28  // This shouldn't occur because widget handles control characters if they
     29  // receive native key event, but for backward compatibility as XUL platform,
     30  // let's check this.
     31  synthesizeKey("\r");
     32  is(textarea.value, "\n", "Inputting \\r from keyboard event should be converted to \\n");
     33 
     34  textarea.value = "";
     35  await new Promise((resolve, reject) => {
     36    SimpleTest.waitForClipboard(
     37      "ab\ncd\nef",
     38      () => { SpecialPowers.clipboardCopyString("ab\r\ncd\ref"); },
     39      resolve,
     40      () => {
     41        ok(false, "Clipboard copy failed");
     42        reject();
     43      }
     44    );
     45  });
     46  synthesizeKey("v", {accelKey: true});
     47  is(textarea.value, "ab\ncd\nef", "Pasting \\r from clipboard should be converted to \\n");
     48 
     49  textarea.value = "";
     50  SpecialPowers.wrap(textarea).editor.insertText("ab\r\ncd\ref");
     51  is(textarea.value, "ab\ncd\nef", "Inserting \\r with nsIEditor.insertText() should be converted to \\n");
     52 
     53  textarea.value = "";
     54  synthesizeCompositionChange(
     55    { "composition":
     56      { "string": "ab\r\ncd\ref",
     57        "clauses":
     58        [
     59          { "length": 9, "attr": COMPOSITION_ATTR_RAW_CLAUSE }
     60        ]
     61      },
     62      "caret": { "start": 9, "length": 0 },
     63    });
     64  is(textarea.value, "ab\ncd\nef", "Inserting \\r with composition should be converted to \\n");
     65 
     66  synthesizeComposition({type: "compositioncommitasis"});
     67  is(textarea.value, "ab\ncd\nef", "Inserting \\r with committing composition should be converted to \\n");
     68 
     69  // We don't need to test spellchecker features on Android because of unsupported.
     70  if (!navigator.appVersion.includes("Android")) {
     71    ok(true, "Waiting to run spellchecker...");
     72    let inlineSpellchecker = SpecialPowers.wrap(textarea).editor.getInlineSpellChecker(true);
     73    textarea.value = "abx ";
     74    await new Promise(resolve => {
     75      const { onSpellCheck } = SpecialPowers.ChromeUtils.importESModule(
     76        "resource://testing-common/AsyncSpellCheckTestHelper.sys.mjs"
     77      );
     78      onSpellCheck(textarea, () => {
     79        SimpleTest.executeSoon(resolve);
     80      });
     81    });
     82    let anonymousDivElement = SpecialPowers.wrap(textarea).editor.rootElement;
     83    let misspelledWord = inlineSpellchecker.getMisspelledWord(anonymousDivElement.firstChild, 0);
     84    is(misspelledWord.startOffset, 0, "Misspelled word start should be 0");
     85    is(misspelledWord.endOffset, 3, "Misspelled word end should be 3");
     86    inlineSpellchecker.replaceWord(anonymousDivElement.firstChild, 0, "ab\r\ncd\ref");
     87    is(textarea.value, "ab\ncd\nef ", "Inserting \\r from spellchecker should be converted to \\n");
     88  }
     89 
     90  SimpleTest.finish();
     91 });
     92 </script>
     93 </pre>
     94 </body>
     95 </html>