tor-browser

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

test_pasting_in_root_element.xhtml (2807B)


      1 <!DOCTYPE HTML>
      2 <html contenteditable="" xmlns="http://www.w3.org/1999/xhtml"><head>
      3  <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1719387 -->
      4  <meta charset="utf-8"/>
      5  <title>Test to paste plaintext in the clipboard into the html element which does not have body element</title>
      6  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      8 </head><span>Text outside body</span><script><![CDATA[
      9 "use strict";
     10 
     11 SimpleTest.waitForExplicitFinish();
     12 SimpleTest.waitForFocus(async () => {
     13  info("Waiting for initializing clipboard...");
     14  await SimpleTest.promiseClipboardChange(
     15    "plain text",
     16    () => {
     17      SpecialPowers.clipboardCopyString("plain text");
     18    }
     19  );
     20 
     21  focus();
     22 
     23  function getInnerHTMLOfBody() {
     24    return document.documentElement.innerHTML.replace(/\n/g, "")
     25                                             .replace(/ xmlns="http:\/\/www.w3.org\/1999\/xhtml"/g, "")
     26                                             .replace(/<head.+[\/]head>/g, "")
     27                                             .replace(/<script.+[\/]script>/g, "");
     28  }
     29 
     30  try {
     31    getSelection().collapse(document.documentElement, 1); // collapse to before the <span> element.
     32    document.execCommand("insertText", false, "plain text");
     33    todo_is(
     34      getInnerHTMLOfBody(),
     35      "plain text<span>Text outside body</span>",  // Chrome's result: "<span>plain textText outside body</span>"
     36      "Typing text should insert the text before the <span> element"
     37    );
     38  } catch (ex) {
     39    ok(false, `Failed to typing text due to ${ex}`);
     40  } finally {
     41    SpecialPowers.doCommand(window, "cmd_undo");
     42  }
     43 
     44  try {
     45    getSelection().collapse(document.documentElement, 1); // collapse to before the <span> element.
     46    SpecialPowers.doCommand(window, "cmd_paste");
     47    is(
     48      getInnerHTMLOfBody(),
     49      "plain text<span>Text outside body</span>",  // Chrome's result: "<span>plain textText outside body</span>"
     50      "\"cmd_paste\" should insert text in the clipboard before the <span> element"
     51    );
     52  } catch (ex) {
     53    todo(false, `Failed to typing text due to ${ex}`);
     54  } finally {
     55    SpecialPowers.doCommand(window, "cmd_undo");
     56  }
     57 
     58  try {
     59    getSelection().collapse(document.documentElement, 1); // collapse to before the <span> element.
     60    SpecialPowers.doCommand(window, "cmd_pasteQuote");
     61    is(
     62      getInnerHTMLOfBody(),
     63      "<blockquote type=\"cite\">plain text</blockquote><span>Text outside body</span>",
     64      "\"cmd_pasteQuote\" should insert the text wrapping with <blockquote> element before the <span> element"
     65    );
     66  } catch (ex) {
     67    ok(false, `Failed to typing text due to ${ex}`);
     68  } finally {
     69    SpecialPowers.doCommand(window, "cmd_undo");
     70  }
     71 
     72  SimpleTest.finish();
     73 });
     74 ]]></script></html>