1<html>
2<body>
3<script>
4// This is a 10x10 24-bits RGB BMP image in white.
5var imageString =
6"Qk12AQAAAAAAADYAAAAoAAAACgAAAAoAAAABABgAAAAAAEABAAATCwAAEwsAAAAAAAAAAAAAAAAA" +
7"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
8"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
9"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
10"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
11"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +
12"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
13
14// Raw image byets.
15var imageRaw = window.atob(imageString).split("");
16
17// 10x10x3 bytes are image data.
18var pixelBytes = 300;
19var beginByte = imageRaw.length - pixelBytes;
20
21function 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
39var imageCount = 0;
40function addImage()
41{
42    if (imageCount >= 1000 * 1000)
43        return;
44    document.getElementById("imageCanvas").appendChild(generateNewImage());
45    window.setTimeout("addImage()", 1);
46}
47
48function 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.
64var 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
81var doc = document.getElementById("dragFrame");
82doc.contentDocument.open();
83doc.contentDocument.write(content);
84doc.contentDocument.close();
85</script>
86</body>
87</html>
88