diff options
Diffstat (limited to 'LayoutTests/http/tests/appcache/fail-on-update-2.html')
-rw-r--r-- | LayoutTests/http/tests/appcache/fail-on-update-2.html | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/LayoutTests/http/tests/appcache/fail-on-update-2.html b/LayoutTests/http/tests/appcache/fail-on-update-2.html new file mode 100644 index 0000000..fcbc3dd --- /dev/null +++ b/LayoutTests/http/tests/appcache/fail-on-update-2.html @@ -0,0 +1,64 @@ +<html manifest="resources/fail-on-update-2.php"> +<script> +if (window.layoutTestController) { + layoutTestController.dumpAsText(); + layoutTestController.waitUntilDone(); +} + +function setManifestDeleted(state) +{ + var req = new XMLHttpRequest; + req.open("GET", "resources/fail-on-update.php?command=" + (state ? "delete" : "reset"), false); + req.send(null); +} + +function test() +{ + clearTimeout(timeoutId); + + setManifestDeleted(true); + applicationCache.update(); + + // Create two subframes at different times to make hitting the race condition more likely. + var ifr = document.createElement("iframe"); + ifr.setAttribute("src", 'resources/fail-on-update-2.html'); + document.body.appendChild(ifr); + + setTimeout(function() { + var ifr = document.createElement("iframe"); + ifr.setAttribute("src", 'resources/fail-on-update-2.html'); + document.body.appendChild(ifr); + }, 0); +} + +var subframesLeft = 2; +function subframeLoaded() +{ + if (!--subframesLeft) { + document.write('<p>SUCCESS: No crash.</p>'); + if (window.layoutTestController) + layoutTestController.notifyDone(); + } +} + +function resetManifest() +{ + if (applicationCache.status != applicationCache.UNCACHED && applicationCache.status != applicationCache.OBSOLETE) { + timeoutId = setTimeout(resetManifest, 100); + return; + } + + setManifestDeleted(false); + location.reload(); +} + +applicationCache.addEventListener('noupdate', function() { setTimeout(test, 0) }, false); +applicationCache.addEventListener('cached', function() { setTimeout(test, 0) }, false); + +// If the manifest script happened to be in a wrong state, reset it. +var timeoutId = setTimeout(resetManifest, 100); + +</script> +<p>Test for a particular incorrect assertion failure.</p> + +</html> |