| <pre id="console"></pre> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| log = function(msg) |
| { |
| document.getElementById('console').appendChild(document.createTextNode(msg + "\n")); |
| } |
| |
| var image; |
| var url = "http://localhost:8000/security/resources/abe-allow-star.php"; |
| |
| function testGetImageData(shouldWork) |
| { |
| var canvas = document.createElement("canvas"); |
| canvas.width = 100; |
| canvas.height = 100; |
| var context = canvas.getContext("2d"); |
| context.drawImage(image, 0, 0, 100, 100); |
| var worked = true; |
| try { |
| context.getImageData(0, 0, 100, 100); |
| } catch (e) { |
| worked = false; |
| } |
| if (worked == shouldWork) { |
| if (shouldWork) { |
| log("PASS: image did not taint canvas"); |
| } else { |
| log("PASS: image tainted canvas"); |
| } |
| } else { |
| if (shouldWork) { |
| log("FAIL: image tainted canvas"); |
| } else { |
| log("FAIL: image did not taint canvas"); |
| } |
| } |
| } |
| |
| function testWithoutCORS() |
| { |
| log("Testing uploading without CORS headers"); |
| testGetImageData(false); |
| image = new Image(); |
| image.onload = testWithCORS; |
| image.crossOrigin = ""; |
| image.src = url; |
| } |
| |
| function testWithCORS() |
| { |
| log("Testing uploading with CORS headers"); |
| testGetImageData(true); |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| function start() |
| { |
| log('Test that if an image is served with "Access-Control-Allow-Origin: *", then loading it first without and then with a CORS request works the second time.'); |
| image = new Image(); |
| image.onload = testWithoutCORS; |
| image.src = url; |
| } |
| |
| start(); |
| </script> |