15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var truealert = window.alert; // we overwrite window.alert sometimes 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Walk up the caller chain and try to find a reference to the Inspector's window 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function doAttack() { 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var obj = doAttack.caller; 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i < 1000 && (obj.arguments.length == 0 || !obj.arguments[0].target); 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i++) { 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) obj = obj.caller; 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (i == 1000) return; 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var win = obj.arguments[0].target.ownerDocument.defaultView; 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr(win); 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function xhr(win) { 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var xhr = new win.XMLHttpRequest(); 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var url = prompt("Test failed. To prove it, I'm going " + 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "to make a cross-domain XMLHttpRequest. Where " + 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "would you like me to send it?\n\nHint: You can " + 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "also try a file:// URL.", "http://www.example.com/"); 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.open("GET", url, false); 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.send(); 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) truealert("Result:\n\n" + xhr.responseText); 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function instructions(params) { 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var str = "<p>This test tries to make a cross-domain XMLHttpRequest to " + 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "check whether JavaScript object wrappers are working (bug 16837, bug 16011).</p>" + 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "<p>View this page from an http:// URL to ensure that it's in a different " + 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "origin from the Inspector.</p>" + 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "<p>Instructions:</p>" + 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "<ol>" + 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "<li>Right click the box" + 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "<img id=logo src='../resources/webkit-background.png'" + 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "style='border: 1px solid black; display: block; margin: 1em;'>" + 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "<li>Choose \"Inspect Element\" from the context menu"; 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (params.console) { 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) str += "<li>Select the Console"; 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) str += "<li>Type " + params.trigger + " into the console and hit Enter"; 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) str += "<li>" + params.trigger; 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) str += "<li>If the test failed, a prompt will appear.</ol>"; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.write(str); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 47