1var truealert = window.alert;  // we overwrite window.alert sometimes
2
3// Walk up the caller chain and try to find a reference to the Inspector's window
4function doAttack() {
5  var obj = doAttack.caller;
6  for (var i = 0;
7       i < 1000 && (obj.arguments.length == 0 || !obj.arguments[0].target);
8       i++) {
9    obj = obj.caller;
10  }
11  if (i == 1000) return;
12  var win = obj.arguments[0].target.ownerDocument.defaultView;
13  xhr(win);
14}
15
16function xhr(win) {
17  var xhr = new win.XMLHttpRequest();
18  var url = prompt("Test failed. To prove it, I'm going " +
19                   "to make a cross-domain XMLHttpRequest. Where " +
20                   "would you like me to send it?\n\nHint: You can " +
21                   "also try a file:// URL.", "http://www.example.com/");
22  xhr.open("GET", url, false);
23  xhr.send();
24  truealert("Result:\n\n" + xhr.responseText);
25}
26
27function instructions(params) {
28  var str = "<p>This test tries to make a cross-domain XMLHttpRequest to " +
29    "check whether JavaScript object wrappers are working (bug 16837, bug 16011).</p>" +
30    "<p>View this page from an http:// URL to ensure that it's in a different " +
31    "origin from the Inspector.</p>" +
32    "<p>Instructions:</p>" +
33    "<ol>" +
34    "<li>Right click the box" +
35    "<img id=logo src='../resources/webkit-background.png'" +
36      "style='border: 1px solid black; display: block; margin: 1em;'>" +
37    "<li>Choose \"Inspect Element\" from the context menu";
38  if (params.console) {
39    str += "<li>Select the Console";
40    str += "<li>Type " + params.trigger + " into the console and hit Enter";
41  } else {
42    str += "<li>" + params.trigger;
43  }
44  str +=  "<li>If the test failed, a prompt will appear.</ol>";
45  document.write(str);
46}
47