1 <body onload="test()"> 2 <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=33813">bug 33813</a>: Crash when using DOMApplicationCache from a destroyed frame.</p> 3 <p>PASS if didn't crash.</p> 4 <iframe src="about:blank"></iframe> 5 6 <script> 7 8 function gc() 9 { 10 if (window.GCController) 11 return GCController.collect(); 12 13 for (var i = 0; i < 10000; i++) { // > force garbage collection (FF requires about 9K allocations before a collect) 14 var s = new String(""); 15 } 16 } 17 18 if (window.layoutTestController) { 19 layoutTestController.dumpAsText(); 20 layoutTestController.waitUntilDone(); 21 } 22 23 var ifrCache; 24 25 function test() 26 { 27 ifrCache = frames[0].applicationCache; 28 document.body.removeChild(document.getElementsByTagName("iframe")[0]); 29 setTimeout(function() { 30 gc(); 31 ifrCache.onchecking = function() { } 32 ifrCache.onerror = function() { } 33 ifrCache.onnoupdate = function() { } 34 ifrCache.ondownloading = function() { } 35 ifrCache.onprogress = function() { } 36 ifrCache.onupdateready = function() { } 37 ifrCache.oncached = function() { } 38 ifrCache.onobsolete = function() { } 39 ifrCache.addEventListener("error", function() { }, true); 40 41 var evt = document.createEvent("Event"); 42 evt.initEvent("error", true, true); 43 ifrCache.dispatchEvent(evt); 44 45 try { ifrCache.update(); } catch (ex) { } 46 try { ifrCache.swapCache(); } catch (ex) { } 47 48 if (window.layoutTestController) 49 layoutTestController.notifyDone(); 50 }, 0); 51 } 52 </script> 53