mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 23:05:42 +00:00
Avoid apps to schedule new offline cache downloads while device free space is low. Tests. r=honzab
This commit is contained in:
parent
ee50f5e46e
commit
1385c80a37
@ -95,6 +95,8 @@ MOCHITEST_FILES = \
|
||||
missing.html \
|
||||
jupiter.jpg \
|
||||
test_cancelOfflineCache.html \
|
||||
test_lowDeviceStorage.html \
|
||||
test_lowDeviceStorageDuringUpdate.html \
|
||||
$(NULL)
|
||||
|
||||
# test_offlineMode.html disabled due to bug 656943
|
||||
|
91
dom/tests/mochitest/ajax/offline/test_lowDeviceStorage.html
Normal file
91
dom/tests/mochitest/ajax/offline/test_lowDeviceStorage.html
Normal file
@ -0,0 +1,91 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Low device storage</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">
|
||||
|
||||
/**
|
||||
* This test checks that an offline cache update scheduled *after* a low device
|
||||
* storage situation appears is canceled. It basically does:
|
||||
*
|
||||
* 1. Notifies to the offline cache update service about a fake
|
||||
* low device storage situation.
|
||||
* 2. Schedules an update and observes for its notifications.
|
||||
* 3. We are supposed to recieve an error event notifying about the cancelation
|
||||
* of the update because of the low storage situation.
|
||||
* 4. Notifies to the offline cache update service that we've recovered from
|
||||
* the low storage situation.
|
||||
*/
|
||||
|
||||
var updateService = Cc['@mozilla.org/offlinecacheupdate-service;1']
|
||||
.getService(Ci.nsIOfflineCacheUpdateService);
|
||||
|
||||
var obs = SpecialPowers.Cc["@mozilla.org/observer-service;1"]
|
||||
.getService(SpecialPowers.Ci.nsIObserverService);
|
||||
|
||||
var errorReceived = false;
|
||||
|
||||
function finish() {
|
||||
obs.notifyObservers(updateService, "disk-space-watcher", "free");
|
||||
|
||||
OfflineTest.teardown();
|
||||
OfflineTest.finish();
|
||||
}
|
||||
|
||||
if (OfflineTest.setup()) {
|
||||
obs.notifyObservers(updateService, "disk-space-watcher", "full");
|
||||
|
||||
var updateObserver = {
|
||||
updateStateChanged: function (aUpdate, aState) {
|
||||
switch(aState) {
|
||||
case Ci.nsIOfflineCacheUpdateObserver.STATE_ERROR:
|
||||
aUpdate.removeObserver(this);
|
||||
errorReceived = true;
|
||||
OfflineTest.ok(true, "Expected error. Update canceled");
|
||||
finish();
|
||||
break;
|
||||
case Ci.nsIOfflineCacheUpdateObserver.STATE_FINISHED:
|
||||
OfflineTest.ok(errorReceived,
|
||||
"Finished after receiving the expected error");
|
||||
finish();
|
||||
break;
|
||||
case Ci.nsIOfflineCacheUpdateObserver.STATE_NOUPDATE:
|
||||
aUpdate.removeObserver(this);
|
||||
OfflineTest.ok(false, "No update");
|
||||
finish();
|
||||
break;
|
||||
case Ci.nsIOfflineCacheUpdateObserver.STATE_DOWNLOADING:
|
||||
case Ci.nsIOfflineCacheUpdateObserver.STATE_ITEMSTARTED:
|
||||
case Ci.nsIOfflineCacheUpdateObserver.STATE_ITEMPROGRESS:
|
||||
aUpdate.removeObserver(this);
|
||||
OfflineTest.ok(false, "The update was supposed to be canceled");
|
||||
finish();
|
||||
break;
|
||||
}
|
||||
},
|
||||
applicationCacheAvailable: function() {}
|
||||
};
|
||||
|
||||
var manifest = "http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/simpleManifest.cacheManifest";
|
||||
var ioService = Cc["@mozilla.org/network/io-service;1"]
|
||||
.getService(Ci.nsIIOService);
|
||||
var manifestURI = ioService.newURI(manifest, null, null);
|
||||
var documentURI = ioService.newURI(document.documentURI, null, null);
|
||||
var update = updateService.scheduleUpdate(manifestURI, documentURI, window);
|
||||
update.addObserver(updateObserver, false);
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,59 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" manifest="http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/simpleManifest.cacheManifest">
|
||||
<head>
|
||||
<title>Low device storage during update</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">
|
||||
|
||||
/**
|
||||
* This test checks that an offline cache update is canceled when a low device
|
||||
* storage condition is detected during the update.
|
||||
*/
|
||||
|
||||
var updateService = Cc['@mozilla.org/offlinecacheupdate-service;1']
|
||||
.getService(Ci.nsIOfflineCacheUpdateService);
|
||||
|
||||
var obs = SpecialPowers.Cc["@mozilla.org/observer-service;1"]
|
||||
.getService(SpecialPowers.Ci.nsIObserverService);
|
||||
|
||||
function finish() {
|
||||
obs.notifyObservers(updateService, "disk-space-watcher", "free");
|
||||
|
||||
OfflineTest.teardown();
|
||||
OfflineTest.finish();
|
||||
}
|
||||
|
||||
function onError() {
|
||||
OfflineTest.ok(true, "Expected error: Update canceled");
|
||||
finish();
|
||||
}
|
||||
|
||||
function onUnexpectedEvent() {
|
||||
OfflineTest.ok(false, "The update was supposed to be canceled");
|
||||
finish();
|
||||
}
|
||||
|
||||
function onChecking() {
|
||||
obs.notifyObservers(updateService, "disk-space-watcher", "full");
|
||||
}
|
||||
|
||||
if (OfflineTest.setup()) {
|
||||
applicationCache.onerror = OfflineTest.priv(onError);
|
||||
applicationCache.onprogress = OfflineTest.priv(onUnexpectedEvent);
|
||||
applicationCache.oncached = OfflineTest.priv(onUnexpectedEvent);
|
||||
applicationCache.onchecking = OfflineTest.priv(onChecking);
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user