Bug 737615 - Remove use of synchronous cache API from unit tests - browser tests, r=bsmith

This commit is contained in:
Michal Novotny 2012-07-11 11:18:13 +02:00
parent 132fa0b1dc
commit 596010fc99
2 changed files with 52 additions and 36 deletions

View File

@ -465,12 +465,6 @@ var gAllTests = [
var cs = Components.classes["@mozilla.org/network/cache-service;1"]
.getService(Components.interfaces.nsICacheService);
var session = cs.createSession(URL + "/manifest", nsICache.STORE_OFFLINE, nsICache.STREAM_BASED);
var cacheEntry = session.openCacheEntry(URL, nsICache.ACCESS_READ_WRITE, false);
var stream = cacheEntry.openOutputStream(0);
var content = "content";
stream.write(content, content.length);
stream.close();
cacheEntry.close();
// Open the dialog
let wh = new WindowHelper();
@ -506,7 +500,20 @@ var gAllTests = [
cs.visitEntries(visitor);
is(size, 0, "offline application cache entries evicted");
};
wh.open();
var cacheListener = {
onCacheEntryAvailable: function (entry, access, status) {
is(status, Cr.NS_OK);
var stream = entry.openOutputStream(0);
var content = "content";
stream.write(content, content.length);
stream.close();
entry.close();
wh.open();
}
};
session.asyncOpenCacheEntry(URL, nsICache.ACCESS_READ_WRITE, cacheListener);
},
function () {
// Test for offline apps permission deletion

View File

@ -66,9 +66,7 @@ let notificationsObserver = {
}
// Check cache.
do_check_false(cacheExists(URL));
do_test_finished();
checkCache(URL);
}
}
@ -105,7 +103,10 @@ function run_test() {
});
print("Add cache.");
storeCache(URL, "testData");
}
function run_test_continue()
{
print("Simulate and wait shutdown.");
getDistinctNotifications().forEach(
function (topic)
@ -128,38 +129,46 @@ function storeCache(aURL, aContent) {
getService(Ci.nsICacheService);
let session = cache.createSession("FTP", Ci.nsICache.STORE_ANYWHERE,
Ci.nsICache.STREAM_BASED);
let cacheEntry =
session.openCacheEntry(aURL, Ci.nsICache.ACCESS_READ_WRITE, false);
cacheEntry.setMetaDataElement("servertype", "0");
var oStream = cacheEntry.openOutputStream(0);
var storeCacheListener = {
onCacheEntryAvailable: function (entry, access, status) {
do_check_eq(status, Cr.NS_OK);
var written = oStream.write(aContent, aContent.length);
if (written != aContent.length) {
do_throw("oStream.write has not written all data!\n" +
" Expected: " + written + "\n" +
" Actual: " + aContent.length + "\n");
}
oStream.close();
cacheEntry.close();
entry.setMetaDataElement("servertype", "0");
var os = entry.openOutputStream(0);
var written = os.write(aContent, aContent.length);
if (written != aContent.length) {
do_throw("os.write has not written all data!\n" +
" Expected: " + written + "\n" +
" Actual: " + aContent.length + "\n");
}
os.close();
entry.close();
do_execute_soon(run_test_continue);
}
};
session.asyncOpenCacheEntry(aURL,
Ci.nsICache.ACCESS_READ_WRITE,
storeCacheListener);
}
function cacheExists(aURL) {
function checkCache(aURL) {
let cache = Cc["@mozilla.org/network/cache-service;1"].
getService(Ci.nsICacheService);
let session = cache.createSession("FTP", Ci.nsICache.STORE_ANYWHERE,
Ci.nsICache.STREAM_BASED);
try {
let cacheEntry =
session.openCacheEntry(aURL, Ci.nsICache.ACCESS_READ, true);
} catch (e) {
if (e.result == Cr.NS_ERROR_CACHE_KEY_NOT_FOUND ||
e.result == Cr.NS_ERROR_FAILURE)
return false;
// Throw the textual error description.
do_throw(e);
}
cacheEntry.close();
return true;
var checkCacheListener = {
onCacheEntryAvailable: function (entry, access, status) {
do_check_eq(status, Cr.NS_ERROR_CACHE_KEY_NOT_FOUND);
do_test_finished();
}
};
session.asyncOpenCacheEntry(aURL,
Ci.nsICache.ACCESS_READ,
checkCacheListener);
}