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