| <body> |
| <pre id="log"></pre> |
| <script> |
| function log(msg) { |
| document.getElementById("log").textContent += msg + "\n"; |
| } |
| |
| function getText(iframe) { |
| return iframe.contentDocument.documentElement.textContent; |
| } |
| |
| var testIndex = 0; |
| |
| function runTest(name, testFunction) { |
| var iframe = document.createElement('iframe'); |
| document.body.appendChild(iframe); |
| |
| var expectedText = "foo " + testIndex; |
| iframe.onerror = function() { |
| log(name + ' error ' + getText(iframe)); |
| } |
| testFunction(iframe, expectedText); |
| var resultText = getText(iframe); |
| if (resultText == expectedText) { |
| log(' sync : ' + name); |
| iframe.parentNode.removeChild(iframe); |
| nextTest(); |
| } else { |
| iframe.onload = function() { |
| log('ASYNC : ' + name); |
| iframe.parentNode.removeChild(iframe); |
| nextTest(); |
| } |
| } |
| } |
| |
| var tests = [ |
| { name: 'src = javascript:"content"', testFunction: function(iframe, expectedText) { iframe.src = 'javascript: "' + expectedText + '"'} }, |
| { name: 'src = data:text/html,content', testFunction: function(iframe, expectedText) { iframe.src = 'data:text/html,"' + expectedText + '"'} }, |
| { name: 'srcdoc = "content"', testFunction: function(iframe, expectedText) { iframe.src = 'data:text/html,"' + expectedText + '"'} }, |
| ]; |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| function nextTest() { |
| if (testIndex >= tests.length) { |
| log("done"); |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| return; |
| } |
| var test = tests[testIndex++]; |
| runTest(test.name, test.testFunction); |
| } |
| nextTest(); |
| </script> |