tor-browser

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

browser_editor_basic.js (2664B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 async function test() {
      7  waitForExplicitFinish();
      8  const { ed, win } = await setup();
      9  // appendTo
     10  const cmFrame = win.document.querySelector("iframe");
     11  const cmStyle = cmFrame.contentDocument.getElementById("cmBaseStyle");
     12  ok(~cmStyle.innerHTML.indexOf(".CodeMirror"), "correct iframe is there");
     13 
     14  // getOption/setOption
     15  ok(ed.getOption("styleActiveLine"), "getOption works");
     16  ed.setOption("styleActiveLine", false);
     17  ok(!ed.getOption("styleActiveLine"), "setOption works");
     18 
     19  // Language modes
     20  is(ed.getMode(), Editor.modes.text, "getMode");
     21  ed.setMode(Editor.modes.javascript);
     22  is(ed.getMode(), Editor.modes.javascript, "setMode");
     23 
     24  // Content
     25  is(ed.getText(), "Hello.", "getText");
     26  ed.setText("Hi.\nHow are you?");
     27  is(ed.getText(), "Hi.\nHow are you?", "setText");
     28  is(ed.getText(1), "How are you?", "getText(num)");
     29  is(ed.getText(5), "", "getText(num) when num is out of scope");
     30 
     31  ed.replaceText("YOU", { line: 1, ch: 8 }, { line: 1, ch: 11 });
     32  is(ed.getText(1), "How are YOU?", "replaceText(str, from, to)");
     33  ed.replaceText("you?", { line: 1, ch: 8 });
     34  is(ed.getText(1), "How are you?", "replaceText(str, from)");
     35  ed.replaceText("Hello.");
     36  is(ed.getText(), "Hello.", "replaceText(str)");
     37 
     38  ed.insertText(", sir/madam", { line: 0, ch: 5 });
     39  is(ed.getText(), "Hello, sir/madam.", "insertText");
     40 
     41  // Add-ons
     42  ed.extend({ whoami: () => "Anton", whereami: () => "Mozilla" });
     43  is(ed.whoami(), "Anton", "extend/1");
     44  is(ed.whereami(), "Mozilla", "extend/2");
     45 
     46  // Line classes
     47  ed.setText("Hello!\nHow are you?");
     48  ok(!ed.hasLineClass(0, "test"), "no test line class");
     49  ed.addLineClass(0, "test");
     50  ok(ed.hasLineClass(0, "test"), "test line class is there");
     51  ed.removeLineClass(0, "test");
     52  ok(!ed.hasLineClass(0, "test"), "test line class is gone");
     53 
     54  // Font size
     55  const size = ed.getFontSize();
     56  is("number", typeof size, "we have the default font size");
     57  ed.setFontSize(ed.getFontSize() + 1);
     58  is(ed.getFontSize(), size + 1, "new font size was set");
     59 
     60  info("Check that we display unicode values for non-printable characters");
     61  ed.setText("> \u202e \u2066 - \u2069 \u2066 <");
     62 
     63  const doc = win.document.querySelector("iframe").contentWindow.document;
     64  const nonPrintableCharElements = Array.from(
     65    doc.querySelectorAll(".cm-non-printable-char")
     66  );
     67 
     68  Assert.deepEqual(
     69    nonPrintableCharElements.map(el => el.textContent),
     70    ["\\u202e", "\\u2066", "\\u2069", "\\u2066"],
     71    "non printable chars are displayed as expected"
     72  );
     73 
     74  teardown(ed, win);
     75 }