This repository has been archived by the owner on Apr 10, 2024. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 861894 - Avoid apps to schedule new offline cache downloads while…
… device free space is low. Tests. r=honzab, a=tef+
- Loading branch information
Showing
4 changed files
with
154 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
91 changes: 91 additions & 0 deletions
91
dom/tests/mochitest/ajax/offline/test_lowDeviceStorage.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 = SpecialPowers.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> |
59 changes: 59 additions & 0 deletions
59
dom/tests/mochitest/ajax/offline/test_lowDeviceStorageDuringUpdate.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters