tor-browser

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

test_onerror_message.html (3473B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=743049
      5 -->
      6 <head>
      7  <meta charset="UTF-8">
      8  <title>Test for Bug 743049</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11 </head>
     12 <body>
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=743049">Mozilla Bug 743049</a>
     14 <p id="display"></p>
     15 <div id="content" style="display: none">
     16  <iframe id="frame"></iframe>
     17 </div>
     18 <pre id="test">
     19 <script type="application/javascript">
     20 "use strict";
     21 
     22 /** Test for Bug 743049 */
     23 
     24 var expected = [
     25 { name: "Error", message: "foo", filename: String(location), lineNumber: 44 },
     26 { name: "Error", message: "foo", filename: "bar", lineNumber: 123 },
     27 { name: "", message: "uncaught exception: [object Object]", filename: location.href, lineNumber: 77 },
     28 { name: "", message: "uncaught exception: [object Object]", filename: location.href, lineNumber: 77 },
     29 { name: "Error", message: "msg", filename: location.href, lineNumber: 52 },
     30 { name: "MyException", message: "msg", filename: location.href, lineNumber: 54},
     31 { name: "InvalidStateError", message: "XMLHttpRequest.responseType setter: Cannot set 'responseType' property on XMLHttpRequest after 'send()' (when its state is LOADING or DONE).", filename: String(location), lineNumber: 59 },
     32 { name: "ReferenceError", message: "xxx is not defined", filename: String(location), lineNumber: 61 },
     33 { name: "ReferenceError", message: "xxx is not defined", filename: String(location), lineNumber: 63 }
     34 ];
     35 
     36 var counter = 0;
     37 var origin = location.protocol + "//" + location.host;
     38 postMessage(counter, origin);
     39 window.onmessage = function(e) {
     40 if (e.origin !== origin)
     41 	return;
     42 try {
     43 	if (e.data == 0) {
     44 		throw new Error("foo");
     45 	} else if (e.data == 1) {
     46 		throw new Error("foo","bar", 123);
     47 	} else if (e.data == 2) {
     48 		throw {};
     49 	} else if (e.data == 3) {
     50 		throw {name:"DuckError",message:"foo",filename:"bar",lineNumber:123};
     51 	} else if (e.data == 4) {
     52 		throw new DOMException("msg");
     53 	} else if (e.data == 5) {
     54 		throw new DOMException("msg", "MyException");
     55 	} else if (e.data == 6) {
     56 		var x = new XMLHttpRequest();
     57 		x.open("GET", location, false);
     58 		var a = x.send();
     59 		x.responseType = "arraybuffer";
     60 	} else if (e.data == 7) {
     61 		throw new ReferenceError("xxx is not defined");
     62 	} else if (e.data == 8) {
     63 		new xxx;
     64 	} else {
     65 		SimpleTest.finish();
     66 		return;
     67 	}
     68 } catch (e) {
     69 	if (e instanceof Error || typeof e.message=="string" && e.name != "DuckError" &&
     70 		("filename" in e || "fileName" in e) && "lineNumber" in e) {
     71 		is(e.message, expected[counter].message, counter + " catch message");
     72 		is(e.filename || e.fileName, expected[counter].filename, counter + " catch filename");
     73 		is(e.lineNumber, expected[counter].lineNumber, counter + " catch lineno");
     74 	} else {
     75 		is("uncaught exception: " + e, expected[counter].message, counter + " catch message");
     76 	}
     77 	throw e;
     78 }
     79 ok(false, counter + " Error should be thrown or test should finish");
     80 };
     81 window.onerror = function(message, filename, lineno) {
     82 is(message, Error.prototype.toString.call(expected[counter]), counter + " onerror message");
     83 is(filename, expected[counter].filename, counter + " onerror filename");
     84 is(lineno, expected[counter].lineNumber, counter + " onerror lineno");
     85 postMessage(++counter, origin);
     86 return true;
     87 };
     88 
     89 SimpleTest.waitForExplicitFinish();
     90 
     91 </script>
     92 </pre>
     93 </body>
     94 </html>