diff options
Diffstat (limited to 'dom/tests/mochitest/ajax/offline/test_updateCheck.html')
-rw-r--r-- | dom/tests/mochitest/ajax/offline/test_updateCheck.html | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/dom/tests/mochitest/ajax/offline/test_updateCheck.html b/dom/tests/mochitest/ajax/offline/test_updateCheck.html new file mode 100644 index 000000000..1f0634cba --- /dev/null +++ b/dom/tests/mochitest/ajax/offline/test_updateCheck.html @@ -0,0 +1,87 @@ +<html xmlns="http://www.w3.org/1999/xhtml" manifest="http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingManifest.sjs"> +<head> +<title>Cache update 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 class="testbody" type="text/javascript"> + +/* + * The test is checking nsIOfflineCacheUpdateService.checkForUpdate API: + * - cache a manifest + * - check for an update of it, expected is "no update avail" + * - modify the manifest on the server + * - check for an update again, expected is "update avail" + * - check for an update ones again, expected is "update avail" (secondary check to probe + * we didn't screw state of the manifest in the current cache with the first check) + * - cache the modified manifest, new version is now in the cache + * - last check for an update, expected is "no update avail" again + */ + +SimpleTest.waitForExplicitFinish(); + +var manifest = "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingManifest.sjs"; +var manifestURI = Cc["@mozilla.org/network/io-service;1"] + .getService(Ci.nsIIOService) + .newURI(manifest, null, null); +var updateService = Cc['@mozilla.org/offlinecacheupdate-service;1'] + .getService(Ci.nsIOfflineCacheUpdateService); + +var systemPrincipal = SpecialPowers.Services.scriptSecurityManager.getSystemPrincipal(); + +function manifestCached() +{ + // Run first check for an update + updateService.checkForUpdate(manifestURI, systemPrincipal, { + observe: function(subject, topic, data) { + OfflineTest.is(topic, "offline-cache-update-unavailable", "No update avail"); + + // Change the manifest content + OfflineTest.setSJSState(manifest, "second"); + + // Check we now get notification on update ready + updateService.checkForUpdate(manifestURI, systemPrincipal, { + observe: function(subject, topic, data) { + OfflineTest.is(topic, "offline-cache-update-available", "Update avail (1)"); + + // Do the check again. We must get the same result. Double check is here + // to make sure we don't overwrite any data in the cache by the check it self. + updateService.checkForUpdate(manifestURI, systemPrincipal, { + observe: function(subject, topic, data) { + OfflineTest.is(topic, "offline-cache-update-available", "Update avail (2)"); + + // Update the manifest, invokes manifestUpdated() + applicationCache.onupdateready = OfflineTest.priv(manifestUpdated); + applicationCache.update(); + } + }); + } + }); + } + }); +} + +function manifestUpdated() +{ + // Check for an update after manifest has been updated + updateService.checkForUpdate(manifestURI, systemPrincipal, { + observe: function(subject, topic, data) { + OfflineTest.is(topic, "offline-cache-update-unavailable", "No update avail (2)"); + + OfflineTest.teardownAndFinish(); + } + }); +} + +if (OfflineTest.setup()) { + applicationCache.onerror = OfflineTest.failEvent; + applicationCache.oncached = OfflineTest.priv(manifestCached); +} + +</script> +</head> +<body> +</body> +</html> |