tor-browser

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

test_attributes.html (2050B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <title>Test L10nOverlays Top-level attributes</title>
      6  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
      7  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
      8  <script type="application/javascript">
      9  /* global L10nOverlays */
     10  "use strict";
     11 
     12  function elem(name) {
     13    return function(str) {
     14      const element = document.createElement(name);
     15      element.innerHTML = str;
     16      return element;
     17    };
     18  }
     19 
     20  const { translateElement } = L10nOverlays;
     21 
     22  {
     23    // Allowed attribute
     24    const element = elem("div")``;
     25    const translation = {
     26      value: null,
     27      attributes: [
     28        {name: "title", value: "FOO"},
     29      ],
     30    };
     31    translateElement(element, translation);
     32    is(element.outerHTML, '<div title="FOO"></div>');
     33  }
     34 
     35  {
     36    // Forbidden attribute
     37    const element = elem("input")``;
     38    const translation = {
     39      value: null,
     40      attributes: [
     41        {name: "disabled", value: "DISABLED"},
     42      ],
     43    };
     44    translateElement(element, translation);
     45    is(element.outerHTML, "<input>");
     46  }
     47 
     48  {
     49    // Attributes do not leak on first translation
     50    const element = elem("div")`Foo`;
     51    element.setAttribute("title", "Title");
     52 
     53    const translation = {
     54      value: "FOO",
     55      attributes: null,
     56    };
     57    translateElement(element, translation);
     58    is(element.outerHTML, "<div>FOO</div>");
     59  }
     60 
     61  {
     62    // Attributes do not leak on retranslation
     63    const element = elem("div")`Foo`;
     64 
     65    const translationA = {
     66      value: "FOO A",
     67      attributes: [
     68        {name: "title", value: "TITLE A"},
     69      ],
     70    };
     71 
     72    const translationB = {
     73      value: "FOO B",
     74      attributes: null,
     75    };
     76    translateElement(element, translationA);
     77    is(element.outerHTML, '<div title="TITLE A">FOO A</div>');
     78    translateElement(element, translationB);
     79    is(element.outerHTML, "<div>FOO B</div>");
     80  }
     81  </script>
     82 </head>
     83 <body>
     84 </body>
     85 </html>