content/base/test/test_bug515401.html

Thu, 15 Jan 2015 21:03:48 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 21:03:48 +0100
branch
TOR_BUG_9701
changeset 11
deefc01c0e14
permissions
-rw-r--r--

Integrate friendly tips from Tor colleagues to make (or not) 4.5 alpha 3;
This includes removal of overloaded (but unused) methods, and addition of
a overlooked call to DataStruct::SetData(nsISupports, uint32_t, bool.)

     1 <!DOCTYPE HTML>
     2 <html>
     3 <!--
     4 https://bugzilla.mozilla.org/show_bug.cgi?id=515401
     5 -->
     6 <head>
     7   <title>Test for Bug 515401</title>
     8   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     9   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
    10   <base id=basehref href="base/">
    11   <base id=basehref2>
    12   <base id=basetarget target="def_target">
    13 </head>
    14 <body>
    15 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=515401">Mozilla Bug 515401</a>
    16 <a id=a href="dest.html">Simple link</a>
    17 <a id=awtarget target="a_target">Link with target</a>
    19 <p id="display"></p>
    20 <pre id="test">
    21 <script class="testbody" type="text/javascript">
    23 var a = $('a');
    24 var awtarget = $('awtarget');
    25 var head = document.documentElement.firstElementChild;
    27 // Test targets
    28 is(a.target, "def_target", "using default target");
    29 is(awtarget.target, "a_target", "specified target");
    30 $('basetarget').setAttribute("target", "new_def_target");
    31 is(a.target, "new_def_target", "using new default target");
    32 is(awtarget.target, "a_target", "still specified target");
    33 $('basetarget').removeAttribute("target");
    34 is(a.target, "", "no target");
    35 is(awtarget.target, "a_target", "yet still specified target");
    36 newbasetarget = document.createElement('base');
    37 newbasetarget.target = "new_target_elem";
    38 head.appendChild(newbasetarget);
    39 is(a.target, "new_target_elem", "new target element");
    40 is(awtarget.target, "a_target", "yet still specified target");
    41 newbasetarget.target = "new_target_elem_value";
    42 is(a.target, "new_target_elem_value", "new target element attribute");
    43 is(awtarget.target, "a_target", "yet still specified target");
    44 newbasetarget.target = "";
    45 is(a.target, "", "new target element no attribute");
    46 is(awtarget.target, "a_target", "yet still specified target");
    49 // link hrefs
    50 var basehref = $('basehref');
    51 var basehref2 = $('basehref2');
    52 var pre = "http://mochi.test:8888/tests/content/base/test/";
    53 function verifyBase(base, test) {
    54   if (base == "") {
    55     is(document.baseURI, document.URL, "document base when " + test);
    56     is(a.href, pre + "dest.html", "link href when " + test);
    57   }
    58   else {
    59     is(document.baseURI, pre + base, "document base when " + test);
    60     is(a.href, pre + base + "dest.html", "link href when " + test);
    61   }
    62 }
    65 // In document base
    66 verifyBase("base/", "from markup");
    68 // Modify existing <base>
    69 basehref.href = "base2/";
    70 verifyBase("base2/", "modify existing");
    71 is(basehref.href, pre + "base2/", "HTMLBaseElement.href resolves correctly");
    73 // Modify existing <base> to absolute url
    74 basehref.href = "http://www.example.com/foo/bar.html";
    75 is(document.baseURI, "http://www.example.com/foo/bar.html", "document base when setting absolute url");
    76 is(a.href, "http://www.example.com/foo/dest.html", "link href when setting absolute url");
    77 is(basehref.href, "http://www.example.com/foo/bar.html",
    78    "HTMLBaseElement.href resolves correctly when setting absolute url");
    80 // Remove href on existing element
    81 basehref.removeAttribute("href");
    82 verifyBase("", "remove href on existing element");
    84 // Create href on existing element
    85 basehref.href = "base3/";
    86 verifyBase("base3/", "create href on existing element");
    88 // Fall back to second after remove attr
    89 basehref2.href = "base4/";
    90 verifyBase("base3/", "add href on second base");
    91 basehref.removeAttribute("href");
    92 verifyBase("base4/", "fall back to second after remove attr");
    94 // Set href on existing again
    95 basehref.href = "base5/";
    96 verifyBase("base5/", "set href on existing again");
    98 // Unset href on second
    99 basehref2.removeAttribute("href");
   100 verifyBase("base5/", "unset href on second");
   102 // Insert base with href before existing
   103 var basehref0 = document.createElement("base");
   104 basehref0.href = "base6/";
   105 verifyBase("base5/", "nothing modified");
   106 head.insertBefore(basehref0, head.firstChild);
   107 verifyBase("base6/", "insert base with href before existing");
   109 // Insert base as grandchild of head
   110 var basehref3 = document.createElement("base");
   111 basehref3.href = "base7/";
   112 var tmp = document.createElement("head");
   113 tmp.appendChild(basehref3);
   114 head.insertBefore(tmp, head.firstChild);
   115 verifyBase("base7/", "inserted base as grandchild of head at the beginning of head");
   116 is(basehref3.parentNode.parentNode, head, "base got inserted correctly");
   118 // Remove secondary bases
   119 var tmp, tmp2;
   120 for (tmp = head.firstChild; tmp = tmp.nextSibling; tmp) {
   121   if (tmp.localName == "base" && tmp != basehref0) {
   122     tmp2 = tmp.previousSibling;
   123     head.removeChild(tmp);
   124     tmp = tmp2;
   125   }
   126   verifyBase("base7/", "remove unneeded base");
   127 }
   129 // Remove head
   130 document.documentElement.removeChild(head);
   131 verifyBase("", "removed head");
   133 // Insert base in body
   134 document.body.insertBefore(basehref3, document.body.firstChild);
   135 verifyBase("base7/", "inserted base in body");
   137 </script>
   138 </pre>
   139 </body>
   140 </html>

mercurial