tor-browser

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

document.title-09.html (3371B)


      1 <!DOCTYPE html>
      2 <link rel="help" href="https://html.spec.whatwg.org/multipage/#document.title">
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <div id="log"></div>
      6 <script>
      7 var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
      8 var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
      9 
     10 function newSVGDocument() {
     11  return document.implementation.createDocument(SVG_NAMESPACE, "svg", null);
     12 }
     13 
     14 function assertIsSVGTitle(element, expectedText) {
     15  assert_equals(element.namespaceURI, SVG_NAMESPACE);
     16  assert_equals(element.localName, "title");
     17  assert_equals(element.textContent, expectedText);
     18 }
     19 
     20 test(function() {
     21  var doc = newSVGDocument();
     22  assert_equals(doc.title, "");
     23  var child = doc.createElementNS(SVG_NAMESPACE, "x-child");
     24  doc.documentElement.appendChild(child);
     25  doc.title = "foo";
     26  assertIsSVGTitle(doc.documentElement.firstChild, "foo");
     27  assert_equals(doc.title, "foo");
     28 }, "No title element in SVG document");
     29 
     30 test(function() {
     31  var doc = newSVGDocument();
     32  var title = doc.createElementNS(SVG_NAMESPACE, "title");
     33  title.textContent = "foo";
     34  doc.documentElement.appendChild(title)
     35  assert_equals(doc.title, "foo");
     36  doc.title += "bar";
     37  assert_equals(title.textContent, "foobar");
     38  assert_equals(title.childNodes.length, 1);
     39  assert_true(title.childNodes[0] instanceof Text);
     40  assert_equals(doc.title, "foobar");
     41  doc.title = "";
     42  assert_equals(title.textContent, "");
     43  assert_equals(doc.title, "");
     44  assert_equals(title.childNodes.length, 0);
     45 }, "Title element in SVG document");
     46 
     47 test(function() {
     48  var doc = newSVGDocument();
     49  var title = doc.createElementNS(SVG_NAMESPACE, "title");
     50  title.textContent = "foo";
     51  var child = doc.createElementNS(SVG_NAMESPACE, "x-child");
     52  child.appendChild(title);
     53  doc.documentElement.appendChild(child);
     54  assert_equals(doc.title, "");
     55 
     56  // Now test that on setting, we create a new element and don't change the
     57  // existing one
     58  doc.title = "bar";
     59  assert_equals(title.textContent, "foo");
     60  assertIsSVGTitle(doc.documentElement.firstChild, "bar");
     61  assert_equals(doc.title, "bar");
     62 }, "Title element not child of SVG root");
     63 
     64 test(function() {
     65  var doc = newSVGDocument();
     66  var title = doc.createElementNS(HTML_NAMESPACE, "title");
     67  title.textContent = "foo";
     68  doc.documentElement.appendChild(title);
     69  assert_equals(doc.title, "");
     70 }, "Title element not in SVG namespace");
     71 
     72 test(function() {
     73  // "SVG" != "svg"
     74  var doc = document.implementation.createDocument(SVG_NAMESPACE, "SVG", null);
     75 
     76  // Per spec, this does nothing
     77  doc.title = "foo";
     78  assert_equals(doc.documentElement.childNodes.length, 0);
     79  assert_equals(doc.title, "");
     80 
     81  // An SVG title is ignored by .title
     82  doc.documentElement.appendChild(doc.createElementNS(SVG_NAMESPACE, "title"));
     83  doc.documentElement.lastChild.textContent = "foo";
     84  assert_equals(doc.title, "");
     85 
     86  // But an HTML title is respected
     87  doc.documentElement.appendChild(doc.createElementNS(HTML_NAMESPACE, "title"));
     88  doc.documentElement.lastChild.textContent = "bar";
     89  assert_equals(doc.title, "bar");
     90 
     91  // Even if it's not a child of the root
     92  var div = doc.createElementNS(HTML_NAMESPACE, "div");
     93  div.appendChild(doc.documentElement.lastChild);
     94  doc.documentElement.appendChild(div);
     95  assert_equals(doc.title, "bar");
     96 }, 'Root element not named "svg"');
     97 </script>