зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1331851 - Intermittent browser/components/preferences/in-content/tests/browser_advanced_siteData.js | Test timed out r=Gijs
MozReview-Commit-ID: Def1trhWrIE --HG-- extra : rebase_source : e9202094ea9381cf49b75cdfb291678aea2422ad
This commit is contained in:
Родитель
28aeff702e
Коммит
c31d2de030
|
@ -136,20 +136,34 @@ function getQuotaUsage(origin) {
|
|||
});
|
||||
}
|
||||
|
||||
function getCacheUsage() {
|
||||
return new Promise(resolve => {
|
||||
let obs = {
|
||||
onNetworkCacheDiskConsumption(usage) {
|
||||
resolve(usage);
|
||||
},
|
||||
QueryInterface: XPCOMUtils.generateQI([
|
||||
Components.interfaces.nsICacheStorageConsumptionObserver,
|
||||
Components.interfaces.nsISupportsWeakReference
|
||||
]),
|
||||
};
|
||||
Services.cache2.asyncGetDiskConsumption(obs);
|
||||
});
|
||||
}
|
||||
// XXX: The intermittent bug 1331851
|
||||
// The implementation of nsICacheStorageConsumptionObserver must be passed as weak referenced,
|
||||
// so we must hold this observer here well. If we didn't, there would be a chance that
|
||||
// in Linux debug test run the observer was released before the operation at gecko was completed
|
||||
// (may be because of a relatively quicker GC cycle or a relatively slower operation).
|
||||
// As a result of that, we would never get the cache usage we want so the test would fail from timeout.
|
||||
const cacheUsageGetter = {
|
||||
_promise: null,
|
||||
_resolve: null,
|
||||
get() {
|
||||
if (!this._promise) {
|
||||
this._promise = new Promise(resolve => {
|
||||
this._resolve = resolve;
|
||||
Services.cache2.asyncGetDiskConsumption(this);
|
||||
});
|
||||
}
|
||||
return this._promise;
|
||||
},
|
||||
// nsICacheStorageConsumptionObserver implementations
|
||||
onNetworkCacheDiskConsumption(usage) {
|
||||
cacheUsageGetter._promise = null;
|
||||
cacheUsageGetter._resolve(usage);
|
||||
},
|
||||
QueryInterface: XPCOMUtils.generateQI([
|
||||
Components.interfaces.nsICacheStorageConsumptionObserver,
|
||||
Components.interfaces.nsISupportsWeakReference
|
||||
]),
|
||||
};
|
||||
|
||||
function openSettingsDialog() {
|
||||
let doc = gBrowser.selectedBrowser.contentDocument;
|
||||
|
@ -222,7 +236,7 @@ add_task(function* () {
|
|||
yield openPreferencesViaOpenPreferencesAPI("advanced", "networkTab", { leaveOpen: true });
|
||||
|
||||
// Test the initial states
|
||||
let cacheUsage = yield getCacheUsage();
|
||||
let cacheUsage = yield cacheUsageGetter.get();
|
||||
let quotaUsage = yield getQuotaUsage(TEST_ORIGIN);
|
||||
let totalUsage = yield SiteDataManager.getTotalUsage();
|
||||
Assert.greater(cacheUsage, 0, "The cache usage should not be 0");
|
||||
|
@ -241,7 +255,7 @@ add_task(function* () {
|
|||
let status = getPersistentStoragePermStatus(TEST_ORIGIN);
|
||||
is(status, Ci.nsIPermissionManager.ALLOW_ACTION, "Should not remove permission");
|
||||
|
||||
cacheUsage = yield getCacheUsage();
|
||||
cacheUsage = yield cacheUsageGetter.get();
|
||||
quotaUsage = yield getQuotaUsage(TEST_ORIGIN);
|
||||
totalUsage = yield SiteDataManager.getTotalUsage();
|
||||
Assert.greater(cacheUsage, 0, "The cache usage should not be 0");
|
||||
|
@ -269,7 +283,7 @@ add_task(function* () {
|
|||
status = getPersistentStoragePermStatus(TEST_ORIGIN);
|
||||
is(status, Ci.nsIPermissionManager.UNKNOWN_ACTION, "Should remove permission");
|
||||
|
||||
cacheUsage = yield getCacheUsage();
|
||||
cacheUsage = yield cacheUsageGetter.get();
|
||||
quotaUsage = yield getQuotaUsage(TEST_ORIGIN);
|
||||
totalUsage = yield SiteDataManager.getTotalUsage();
|
||||
is(cacheUsage, 0, "The cahce usage should be removed");
|
||||
|
|
|
@ -21,8 +21,8 @@
|
|||
let db = e.target.result;
|
||||
let tx = db.transaction("TestStore", "readwrite");
|
||||
let store = tx.objectStore("TestStore");
|
||||
tx.oncomplete = () => window.dispatchEvent(new Event("test-indexedDB-done"));
|
||||
store.put({ id: "test_id", description: "Site Data Test"});
|
||||
window.dispatchEvent(new Event("test-indexedDB-done"));
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
|
Загрузка…
Ссылка в новой задаче