2009-09-19 Adam Barth <abarth@webkit.org>
[WebKit-https.git] / LayoutTests / http / tests / security / canvas-remote-read-data-url-image.html
1 <pre id="console"></pre>
2 <script>
3 if (window.layoutTestController) {
4     layoutTestController.dumpAsText();
5     layoutTestController.waitUntilDone();
6 }
7
8 log = function(msg)
9 {
10     document.getElementById('console').appendChild(document.createTextNode(msg + "\n"));
11 }
12
13 testGetImageData = function(context, description)
14 {
15     description = "Calling getImageData() from a canvas tainted by a " + description;
16     try {
17         var imageData = context.getImageData(0,0,100,100);
18         log("PASS: " + description + " was allowed.");
19     } catch (e) {
20         log("FAIL: " + description + " was not allowed - Threw error: " + e + ".");
21     }
22 }
23
24 testToDataURL = function(canvas, description)
25 {
26     description = "Calling toDataURL() on a canvas tainted by a " + description;
27     try {
28         var dataURL = canvas.toDataURL();
29         log("PASS: " + description + " was allowed.");
30     } catch (e) {
31         log("FAIL: " + description + " was not allowed - Threw error: " + e + ".");
32     }
33 }
34
35 test = function(canvas, description)
36 {
37     testGetImageData(canvas.getContext("2d"), description);
38     testToDataURL(canvas, description);
39 }
40
41 var image = new Image();
42 image.onload = function() {
43     var canvas = document.createElement("canvas");
44     canvas.width = 100;
45     canvas.height = 100;
46     var context = canvas.getContext("2d");
47
48     // Test reading from a canvas after drawing a data URL image onto it
49     context.drawImage(image, 0, 0, 100, 100);
50
51     test(canvas, "data URL image");
52
53     // Test reading after using a data URL pattern
54     canvas = document.createElement("canvas");
55     canvas.width = 100;
56     canvas.height = 100;
57     var context = canvas.getContext("2d");
58     var remoteImagePattern = context.createPattern(image, "repeat");
59     context.fillStyle = remoteImagePattern;
60     context.fillRect(0, 0, 100, 100);
61
62     test(canvas, "data URL image pattern");
63
64     if (window.layoutTestController)
65         layoutTestController.notifyDone();
66 }
67
68 // A small red dot.
69 image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==";
70 </script>