зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1398231 - P2: Add a test to verify cache work when there is a temporary padding file. r=bkelly
MozReview-Commit-ID: JhPuL7AmteM --HG-- extra : rebase_source : b2c60f288f4f5424ea11212db26676cb467daf77
This commit is contained in:
Родитель
d56be4c5f0
Коммит
3e445962b3
|
@ -19,7 +19,7 @@ var hash = Cc['@mozilla.org/security/hash;1']
|
|||
.createInstance(Ci.nsICryptoHash);
|
||||
|
||||
// Expose Cache and Fetch symbols on the global
|
||||
Cu.importGlobalProperties(['caches', 'fetch']);
|
||||
Cu.importGlobalProperties(['caches', 'File', 'fetch']);
|
||||
|
||||
// Extract a zip file into the profile
|
||||
function create_test_profile(zipFileName) {
|
||||
|
@ -75,3 +75,19 @@ function create_test_profile(zipFileName) {
|
|||
|
||||
zipReader.close();
|
||||
}
|
||||
|
||||
function getCacheDir()
|
||||
{
|
||||
let dirService = Cc["@mozilla.org/file/directory_service;1"]
|
||||
.getService(Ci.nsIProperties);
|
||||
|
||||
let profileDir = dirService.get("ProfD", Ci.nsIFile);
|
||||
let cacheDir = profileDir.clone();
|
||||
cacheDir.append("storage");
|
||||
cacheDir.append("default");
|
||||
cacheDir.append("chrome");
|
||||
cacheDir.append("cache");
|
||||
|
||||
return cacheDir;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
/**
|
||||
* This test is mainly to verify cache actions work as usual even there exists
|
||||
* an unexpected padding file.
|
||||
*/
|
||||
|
||||
function getTempPaddingFilePath() {
|
||||
let cacheDir = getCacheDir();
|
||||
let temporaryPaddingFile = cacheDir.clone();
|
||||
temporaryPaddingFile.append(".padding-tmp");
|
||||
return temporaryPaddingFile;
|
||||
}
|
||||
|
||||
function createTempPaddingFile () {
|
||||
let temporaryPaddingFile = getTempPaddingFilePath();
|
||||
temporaryPaddingFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, parseInt("0644", 8));
|
||||
|
||||
ok(temporaryPaddingFile.exists(),
|
||||
"Temporary padding file does be created by test");
|
||||
}
|
||||
|
||||
async function run_test() {
|
||||
do_test_pending();
|
||||
create_test_profile('schema_25_profile.zip');
|
||||
let cache = await caches.open("test");
|
||||
|
||||
// Step 1: Verify cache.match won't fail when there is a temporary padding
|
||||
// file
|
||||
createTempPaddingFile();
|
||||
|
||||
let response = await cache.match("https://www.mozilla.org");
|
||||
ok(!!response, "Upgrade from 25 to 26 do succeed");
|
||||
|
||||
// Note: Only cache write actions(e.g. cache.put/add/addAll/delete) will
|
||||
// remove unexpected temporary padding file when writting an opaque response
|
||||
// into the file-system. Cache read actions(e.g. cache.keys/match) won't.
|
||||
let temporaryPaddingFile = getTempPaddingFilePath();
|
||||
ok(temporaryPaddingFile.exists(),
|
||||
"Temporary padding file doesn't be removed by cache.match");
|
||||
|
||||
// Step 2: Verify cache.put won't fail when there is a temporary padding
|
||||
// file
|
||||
await cache.put("https://foo.com", response);
|
||||
ok(!temporaryPaddingFile.exists(),
|
||||
"Temporary padding file does be removed by cache.put");
|
||||
|
||||
// Step 3: Verify cache.keys won't fail when there is a temporary padding
|
||||
// file
|
||||
createTempPaddingFile();
|
||||
|
||||
let cacheEntries = await cache.keys("https://foo.com");
|
||||
ok(cacheEntries.length === 1, "Cache.put does succeed");
|
||||
|
||||
ok(temporaryPaddingFile.exists(),
|
||||
"Temporary padding file doesn't be removed by cache.keys");
|
||||
|
||||
// Step 4: Verify cache.delete won't fail when there is a temporary padding
|
||||
// file
|
||||
await cache.delete("https://foo.com");
|
||||
ok(!temporaryPaddingFile.exists(),
|
||||
"Temporary padding file does be removed by cache.delete");
|
||||
|
||||
await caches.delete("test");
|
||||
|
||||
do_test_finished();
|
||||
}
|
|
@ -13,4 +13,5 @@ support-files =
|
|||
skip-if = true
|
||||
|
||||
[test_migration.js]
|
||||
[test_padding_error_handle.js]
|
||||
[test_schema_26_upgrade.js]
|
||||
|
|
Загрузка…
Ссылка в новой задаче