mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-22 16:37:31 +09:00
164 lines
5.1 KiB
HTML
164 lines
5.1 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml" manifest="http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingManifest.sjs">
|
|
<head>
|
|
<title>Offline mode 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 loads a manifest and cache it.
|
|
* Then tests if all works in online mode
|
|
* as expected. Then switches firefox to offline
|
|
* mode and tries the page load still works as
|
|
* expected, i.e. all items from the cache load.
|
|
*/
|
|
|
|
var gImplicitWindow = null;
|
|
var gCompleteTimeout = null;
|
|
var gGotExplicitVersion = 0;
|
|
var gGotImplicitVersion = 0;
|
|
var gGotDynamicVersion = 0;
|
|
var gGotOnError = false;
|
|
|
|
function createURI(urispec)
|
|
{
|
|
var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
return ioServ.newURI(urispec, null, null);
|
|
}
|
|
|
|
// test
|
|
|
|
function manifestUpdated()
|
|
{
|
|
applicationCache.mozAdd("http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html");
|
|
OfflineTest.waitForAdd("http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html", dynamicAdded);
|
|
}
|
|
|
|
function dynamicAdded()
|
|
{
|
|
aFrame.location = "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html";
|
|
}
|
|
|
|
// Called by the dynamically added iframe on load
|
|
function notwhitelistOnLoad()
|
|
{
|
|
gGotDynamicVersion = 1;
|
|
aFrame.location = "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingIframe.sjs";
|
|
}
|
|
|
|
// Called by the explicit iframe on load
|
|
function frameLoad(version)
|
|
{
|
|
gGotExplicitVersion = version;
|
|
gImplicitWindow = window.open("http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingImplicit.html");
|
|
}
|
|
|
|
// Called by the implicit window on load
|
|
function implicitLoaded(aWindow, errorOccured)
|
|
{
|
|
aWindow.close();
|
|
|
|
gGotImplicitVersion = 1;
|
|
OfflineTest.waitForAdd("http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingImplicit.html", implicitAdded);
|
|
}
|
|
|
|
function implicitAdded()
|
|
{
|
|
OfflineTest.priv(finalize)();
|
|
}
|
|
|
|
function finalize()
|
|
{
|
|
window.clearTimeout(gCompleteTimeout);
|
|
|
|
var ioserv = Cc["@mozilla.org/network/io-service;1"]
|
|
.getService(Ci.nsIIOService);
|
|
|
|
if (!ioserv.offline)
|
|
{
|
|
OfflineTest.is(gGotExplicitVersion, 1, "Explicit entry loaded");
|
|
OfflineTest.is(gGotImplicitVersion, 1, "Implicit entry loaded");
|
|
OfflineTest.is(gGotDynamicVersion, 1, "Dynamic entry loaded");
|
|
|
|
gGotExplicitVersion = 0;
|
|
gGotImplicitVersion = 0;
|
|
gGotDynamicVersion = 0;
|
|
|
|
var entries = [
|
|
["http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html", true],
|
|
["http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingIframe.sjs", true],
|
|
["http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingImplicit.html", true]
|
|
];
|
|
OfflineTest.checkCacheEntries(entries, goOffline);
|
|
}
|
|
else
|
|
{
|
|
gImplicitWindow.close();
|
|
|
|
ioserv.offline = false;
|
|
|
|
OfflineTest.is(gGotExplicitVersion, 1, "Explicit entry loaded");
|
|
OfflineTest.is(gGotImplicitVersion, 1, "Bug 461325 - Implicit entry loaded");
|
|
OfflineTest.is(gGotDynamicVersion, 1, "Dynamic entry loaded");
|
|
OfflineTest.ok(gGotOnError, "Got onerror event invoked by implicit page load in offline mode");
|
|
|
|
OfflineTest.teardownAndFinish();
|
|
}
|
|
}
|
|
|
|
function goOffline()
|
|
{
|
|
var listener = {
|
|
onCacheEntryDoomed: function (status) {
|
|
OfflineTest.priv(goOfflineContinue)();
|
|
}
|
|
};
|
|
|
|
// Delete HTTP cache to ensure we are going from offline cache
|
|
var cache = Cc["@mozilla.org/network/cache-storage-service;1"]
|
|
.getService(Ci.nsICacheStorageService);
|
|
var storage = cache.diskCacheStorage(LoadContextInfo.default, false);
|
|
storage.asyncDoomURI(createURI("http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html"), "", null);
|
|
storage.asyncDoomURI(createURI("http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingIframe.sjs"), "", null);
|
|
storage.asyncDoomURI(createURI("http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/updatingImplicit.html"), "", listener);
|
|
}
|
|
|
|
function goOfflineContinue()
|
|
{
|
|
var ioserv = Cc["@mozilla.org/network/io-service;1"]
|
|
.getService(Ci.nsIIOService);
|
|
|
|
ioserv.offline = true;
|
|
|
|
gCompleteTimeout = window.setTimeout(OfflineTest.priv(finalize), 10000);
|
|
|
|
// remove error handling. in offline mode
|
|
// is correct to get error message
|
|
applicationCache.onerror = function() {gGotOnError = true;}
|
|
|
|
aFrame.location = "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/notonwhitelist.html";
|
|
// Starts the chain all over again but in offline mode.
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
if (OfflineTest.setup()) {
|
|
applicationCache.onerror = OfflineTest.failEvent;
|
|
applicationCache.onupdateready = OfflineTest.failEvent;
|
|
applicationCache.oncached = OfflineTest.priv(manifestUpdated);
|
|
}
|
|
|
|
</script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<iframe name="aFrame" src=""></iframe>
|
|
|
|
</body>
|
|
</html>
|