diff options
Diffstat (limited to 'dom/tests/mochitest/ajax/offline/test_changingManifest.html')
-rw-r--r-- | dom/tests/mochitest/ajax/offline/test_changingManifest.html | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/dom/tests/mochitest/ajax/offline/test_changingManifest.html b/dom/tests/mochitest/ajax/offline/test_changingManifest.html new file mode 100644 index 000000000..2ff365a4a --- /dev/null +++ b/dom/tests/mochitest/ajax/offline/test_changingManifest.html @@ -0,0 +1,116 @@ +<html xmlns="http://www.w3.org/1999/xhtml" manifest="http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/changingManifest.sjs"> +<head> +<title>changing manifest test</title> + +<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> +<script type="text/javascript" src="/tests/dom/tests/mochitest/ajax/offline/offlineTests.js"></script> +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> + +<script type="text/javascript"> + +var gGotChecking = false; +var gGotDownloading = false; + +var g1SecUrl = "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/changing1Sec.sjs"; +var g1HourUrl = "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/changing1Hour.sjs"; + +var gCacheContents = null; + +function finish() +{ + OfflineTest.teardownAndFinish(); +} + +function manifestUpdatedAgain() +{ + OfflineTest.ok(gGotChecking, "Should get a checking event on the second update"); + OfflineTest.ok(gGotDownloading, "Should get a downloading event on the second update"); + + // The second manifest has no NETWORK entry, but we are still + // associated with the first version of the manifest, so we should + // be able to access the whitelisted entry. + try { + var xhr = new XMLHttpRequest(); + xhr.open("GET", "onwhitelist.html", false); + xhr.send(); + OfflineTest.ok(true, "Fetched from the initial cache's whitelist."); + } catch (e) { + OfflineTest.ok(false, "Failed to fetch from the initial cache's whitelist."); + } + + // Get the initial contents of the first two files. + fetcher = new OfflineCacheContents([g1SecUrl, g1HourUrl]); + fetcher.fetch(function(contents) { + // Make sure the contents of the 1-second-expiration file have changed, + // but that the 1-hour-expiration has not. + OfflineTest.isnot(gCacheContents[g1SecUrl], contents[g1SecUrl], "1-second expiration should have changed"); + OfflineTest.is(gCacheContents[g1HourUrl], contents[g1HourUrl], "1-hour expiration should not have changed"); + + finish(); + }); +} + +function failAndFinish(e) { + OfflineTest.ok(false, "Unexpected event: " + e.type); + finish(); +} + +function manifestUpdated() +{ + OfflineTest.ok(gGotChecking, "Should get a checking event"); + OfflineTest.ok(gGotDownloading, "Should get a downloading event"); + + // Replace this manifest with a new one. + OfflineTest.setSJSState("changingManifest.sjs", "2"); + + // Get the initial contents of the first two files. + fetcher = new OfflineCacheContents([g1SecUrl, g1HourUrl]); + fetcher.fetch(function(contents) { + gCacheContents = contents; + + // Now make sure applicationCache.update() does what we expect. + applicationCache.onchecking = function() { + OfflineTest.is(applicationCache.status, applicationCache.CHECKING, + "CHECKING state during update"); + gGotChecking = true; + }; + applicationCache.ondownloading = function() { + OfflineTest.is(applicationCache.status, applicationCache.DOWNLOADING, + "DOWNLOADING state during update"); + gGotDownloading = true; + }; + + applicationCache.onupdateready = OfflineTest.priv(manifestUpdatedAgain); + applicationCache.onnoupdate = failAndFinish; + applicationCache.oncached = failAndFinish; + + gGotChecking = false; + gGotDownloading = false; + + // The changing versions give out a new version each second, + // make sure it has time to grab a new version, and for the + // 1-second cache timeout to pass. + window.setTimeout("applicationCache.update()", 5000); + }); +} + +if (OfflineTest.setup()) { + applicationCache.onerror = failAndFinish; + applicationCache.onnoupdate = failAndFinish; + + applicationCache.onchecking = function() { gGotChecking = true; }; + applicationCache.ondownloading = function() { gGotDownloading = true; }; + applicationCache.oncached = OfflineTest.priv(manifestUpdated); +} + +SimpleTest.waitForExplicitFinish(); +SimpleTest.requestFlakyTimeout("untriaged"); + +</script> + +</head> + +<body> + +</body> +</html> |