summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/ajax/offline/test_updateCheck.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/mochitest/ajax/offline/test_updateCheck.html')
-rw-r--r--dom/tests/mochitest/ajax/offline/test_updateCheck.html87
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>