Home | History | Annotate | Download | only in ManualTests
      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>
     88