summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/ajax/offline/test_redirectUpdateItem.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/mochitest/ajax/offline/test_redirectUpdateItem.html')
-rwxr-xr-xdom/tests/mochitest/ajax/offline/test_redirectUpdateItem.html137
1 files changed, 137 insertions, 0 deletions
diff --git a/dom/tests/mochitest/ajax/offline/test_redirectUpdateItem.html b/dom/tests/mochitest/ajax/offline/test_redirectUpdateItem.html
new file mode 100755
index 000000000..a646b33e4
--- /dev/null
+++ b/dom/tests/mochitest/ajax/offline/test_redirectUpdateItem.html
@@ -0,0 +1,137 @@
+<html xmlns="http://www.w3.org/1999/xhtml" manifest="http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/redirects.sjs">
+<head>
+<title>Entries redirection handling during 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">
+
+var gCurrentManifestVersion = 1;
+
+function manifestCached()
+{
+ var entries = [
+ ["http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/dynamicRedirect.sjs", false],
+ ["http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/explicitRedirect.sjs", true],
+ ];
+ OfflineTest.checkCacheEntries(entries, manifestCachedContinue);
+}
+
+function manifestCachedContinue()
+{
+ OfflineTest.is(gCurrentManifestVersion, 1, "Cached event for manifest version one");
+
+ // Now add one dynamic entry (now with content overriden redirect sjs)
+ applicationCache.mozAdd(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/dynamicRedirect.sjs");
+
+ // Wait for the dynamic entry be added to the cache...
+ OfflineTest.waitForAdd(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/dynamicRedirect.sjs",
+ function() {
+ // ...check it is there...
+ OfflineTest.checkCache(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/dynamicRedirect.sjs",
+ true,
+ function() {
+ // ...revert state of the dynamic entry on the server, now we get the redirect...
+ OfflineTest.setSJSState(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/dynamicRedirect.sjs",
+ "");
+
+ // ...update manifest to the new version on the server...
+ OfflineTest.setSJSState(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/redirects.sjs",
+ "second");
+ gCurrentManifestVersion = 2;
+
+ // ...and finally invoke the cache update.
+ applicationCache.update();
+ });
+ });
+}
+
+function manifestUpdated()
+{
+ switch (gCurrentManifestVersion)
+ {
+ case 2:
+ // Check the dynamic entry was removed from the cache (because of the redirect)...
+ OfflineTest.checkCache(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/dynamicRedirect.sjs",
+ false,
+ function () {
+ // ...return back redirect for the explicit entry...
+ OfflineTest.setSJSState(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/explicitRedirect.sjs",
+ "");
+
+ // ...update the manifest to the third version...
+ OfflineTest.setSJSState(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/redirects.sjs",
+ "third");
+ gCurrentManifestVersion = 3;
+
+ // ...and invoke the cache update, now we must get error.
+ applicationCache.update();
+ });
+
+ break;
+
+ case 3:
+ OfflineTest.ok(false, "Update didn't fail for third version of the manifest");
+ finish();
+ break;
+ }
+}
+
+function manifestError()
+{
+ switch (gCurrentManifestVersion)
+ {
+ case 1:
+ OfflineTest.ok(false, "Error not expected when caching the first version of the manifest");
+ finish();
+ break;
+ case 2:
+ OfflineTest.ok(false, "Error not expected when updating to second version of the manifest");
+ finish();
+ break;
+ case 3:
+ OfflineTest.ok(true, "Error expected when updating to third version of the manifest");
+ finish();
+ break;
+ }
+}
+
+function finish()
+{
+ OfflineTest.teardownAndFinish();
+}
+
+SimpleTest.waitForExplicitFinish();
+SimpleTest.requestFlakyTimeout("untriaged");
+
+if (OfflineTest.setup()) {
+ applicationCache.onerror = OfflineTest.priv(manifestError);
+ applicationCache.onupdateready = OfflineTest.priv(manifestUpdated);
+ applicationCache.oncached = OfflineTest.priv(manifestCached);
+
+ // Override sjs redirects on the server, it will now return 200 OK and the content
+ OfflineTest.setSJSState(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/explicitRedirect.sjs",
+ "on");
+ OfflineTest.setSJSState(
+ "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/dynamicRedirect.sjs",
+ "on");
+}
+
+</script>
+
+</head>
+
+<body>
+</body>
+</html>