tor-browser

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

exceptions.html (2643B)


      1 <!doctype html>
      2 <meta charset=utf-8>
      3 <title>DOMException-throwing tests</title>
      4 <link rel=author title="Aryeh Gregor" href=ayg@aryeh.name>
      5 <div id=log></div>
      6 <script src=/resources/testharness.js></script>
      7 <script src=/resources/testharnessreport.js></script>
      8 <script>
      9 /**
     10 * This file just picks one case where browsers are supposed to throw an
     11 * exception, and tests the heck out of whether it meets the spec.  In the
     12 * future, all these checks should be in assert_throws_dom(), but we don't want
     13 * every browser failing every assert_throws_dom() check until they fix every
     14 * single bug in their exception-throwing.
     15 *
     16 * We don't go out of our way to test everything that's already tested by
     17 * interfaces.html, like whether all constants are present on the object, but
     18 * some things are duplicated.
     19 */
     20 setup({explicit_done: true});
     21 
     22 function testException(exception, global, desc) {
     23  test(function() {
     24    assert_equals(global.Object.getPrototypeOf(exception),
     25                  global.DOMException.prototype);
     26  }, desc + "Object.getPrototypeOf(exception) === DOMException.prototype");
     27 
     28 
     29  test(function() {
     30    assert_false(exception.hasOwnProperty("name"));
     31  }, desc + "exception.hasOwnProperty(\"name\")");
     32  test(function() {
     33    assert_false(exception.hasOwnProperty("message"));
     34  }, desc + "exception.hasOwnProperty(\"message\")");
     35 
     36  test(function() {
     37    assert_equals(exception.name, "HierarchyRequestError");
     38  }, desc + "exception.name === \"HierarchyRequestError\"");
     39 
     40  test(function() {
     41    assert_equals(exception.code, global.DOMException.HIERARCHY_REQUEST_ERR);
     42  }, desc + "exception.code === DOMException.HIERARCHY_REQUEST_ERR");
     43 
     44  test(function() {
     45    assert_equals(global.Object.prototype.toString.call(exception),
     46                  "[object DOMException]");
     47  }, desc + "Object.prototype.toString.call(exception) === \"[object DOMException]\"");
     48 }
     49 
     50 
     51 // Test in current window
     52 var exception = null;
     53 try {
     54  // This should throw a HierarchyRequestError in every browser since the
     55  // Stone Age, so we're really only testing exception-throwing details.
     56  document.documentElement.appendChild(document);
     57 } catch(e) {
     58  exception = e;
     59 }
     60 testException(exception, window, "");
     61 
     62 // Test in iframe
     63 var iframe = document.createElement("iframe");
     64 iframe.src = "about:blank";
     65 iframe.onload = function() {
     66  var exception = null;
     67  try {
     68    iframe.contentDocument.documentElement.appendChild(iframe.contentDocument);
     69  } catch(e) {
     70    exception = e;
     71  }
     72  testException(exception, iframe.contentWindow, "In iframe: ");
     73 
     74  document.body.removeChild(iframe);
     75  done();
     76 };
     77 document.body.appendChild(iframe);
     78 </script>