Use dumpJSConsoleLogInStdErr=true webkit-test-runner option for non-imported tests...
[WebKit-https.git] / LayoutTests / http / tests / appcache / fail-on-update-2.html
1 <!-- webkit-test-runner [ dumpJSConsoleLogInStdErr=true ] -->
2 <html manifest="resources/fail-on-update-2.php">
3 <script>
4 if (window.testRunner) {
5     testRunner.dumpAsText();
6     testRunner.waitUntilDone();
7 }
8
9 function setManifestDeleted(state)
10 {
11     var req = new XMLHttpRequest;
12     req.open("GET", "resources/fail-on-update-2.php?command=" + (state ? "delete" : "reset"), false);
13     req.send(null);
14 }
15
16 function test()
17 {
18     clearTimeout(timeoutId);
19
20     setManifestDeleted(true);
21     applicationCache.update();
22     
23     // Create two subframes at different times to make hitting the race condition more likely.
24     var ifr = document.createElement("iframe");
25     ifr.setAttribute("src", 'resources/fail-on-update-2.html');
26     document.body.appendChild(ifr);
27
28     setTimeout(function() {
29         var ifr = document.createElement("iframe");
30         ifr.setAttribute("src", 'resources/fail-on-update-2.html');
31         document.body.appendChild(ifr);
32     }, 0);
33 }
34
35 var subframesLeft = 2;
36 function subframeLoaded()
37 {
38     if (!--subframesLeft) {
39         document.write('<p>SUCCESS: No crash.</p>');
40         if (window.testRunner)
41             testRunner.notifyDone();
42     }
43 }
44
45 function resetManifest()
46 {
47     if (applicationCache.status != applicationCache.UNCACHED && applicationCache.status != applicationCache.OBSOLETE) {
48         timeoutId = setTimeout(resetManifest, 100);
49         return;
50     }
51
52     setManifestDeleted(false);
53     location.reload();
54 }
55
56 applicationCache.addEventListener('noupdate', function() { setTimeout(test, 0) }, false);
57 applicationCache.addEventListener('cached', function() { setTimeout(test, 0) }, false);
58
59 // If the manifest script happened to be in a wrong state, reset it.
60 var timeoutId = setTimeout(resetManifest, 100);
61
62 </script>
63 <p>Test for a particular incorrect assertion failure.</p>
64
65 </html>