[css-grid] Unprefix CSS Grid Layout properties
[WebKit-https.git] / ManualTests / drag-image-no-crash.html
1 <html>
2 <body>
3 <script>
4 // This is a 10x10 24-bits RGB BMP image in white.
5 var imageString =
6 "Qk12AQAAAAAAADYAAAAoAAAACgAAAAoAAAABABgAAAAAAEABAAATCwAAEwsAAAAAAAAAAAAAAAAA" +
7 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
8 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
9 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
10 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
11 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
12 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
13
14 // Raw image byets.
15 var imageRaw = window.atob(imageString).split("");
16
17 // 10x10x3 bytes are image data.
18 var pixelBytes = 300;
19 var beginByte = imageRaw.length - pixelBytes;
20
21 function generateNewImage()
22 {
23     // Add 1 to image data.
24     for (var i = beginByte; i < imageRaw.length; ++i) {
25         var c = imageRaw[i].charCodeAt(0);
26         if (c == 255) {
27             imageRaw[i] = String.fromCharCode(0);
28         } else {
29             imageRaw[i] = String.fromCharCode(c+1);
30             break;
31         }
32     }
33
34     var bmpImage = new Image();
35     bmpImage.src = "data:image/bmp;base64," + window.btoa(imageRaw.join(""));
36     return bmpImage;
37 }
38
39 var imageCount = 0;
40 function addImage()
41 {
42     if (imageCount >= 1000 * 1000)
43         return;
44     document.getElementById("imageCanvas").appendChild(generateNewImage());
45     window.setTimeout("addImage()", 1);
46 }
47
48 function runTest()
49 {
50     document.getElementById("dragFrame").contentWindow.location.href =
51         "about:blank";
52     addImage();
53 }
54 </script>
55 <p>To run this test:</p>
56 <p>1. Drag this text 10 times:
57    <iframe id="dragFrame" width="50" height="30">.</iframe></p>
58 <p>2. Click this <button onclick="runTest();">Start</button> button.</p>
59 <p>3. Let it run for 5 minutes and browser shouldn't crash.</p>
60 <div id="imageCanvas"></div>
61
62 <script>
63 // Write this content to the iframe.
64 var content =
65     "<" + "body" + ">" +
66     "<" + "script" + ">" +
67     "function dragStartHandler()" +
68     "{" +
69     "    var img = new Image();" +
70     "    img.src = 'data:image/bmp;base64," + imageString + "';" +
71     "    event.dataTransfer.setDragImage(img, 10, 10);" +
72     "}" +
73     "</" + "script" + ">" +
74     "<span ondragstart='dragStartHandler()'" +
75     "      style='-webkit-user-select:none;" +
76     "             -webkit-user-drag: element;" +
77     "             position: absolute; top: 0; left: 0;" +
78     "             background-color: blue;'>HERE</span>" +
79     "</" + "body" + ">";
80
81 var doc = document.getElementById("dragFrame");
82 doc.contentDocument.open();
83 doc.contentDocument.write(content);
84 doc.contentDocument.close();
85 </script>
86 </body>
87 </html>