mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 794804 - part 2 - add tests for thumbnails expiration; r=yoric
This commit is contained in:
parent
38131681bb
commit
153c897cfb
@ -445,13 +445,13 @@ let PageThumbsExpiration = {
|
||||
}
|
||||
},
|
||||
|
||||
expireThumbnails: function Expiration_expireThumbnails(aURLsToKeep) {
|
||||
expireThumbnails: function Expiration_expireThumbnails(aURLsToKeep, aCallback) {
|
||||
PageThumbsWorker.postMessage({
|
||||
type: "expireFilesInDirectory",
|
||||
minChunkSize: EXPIRATION_MIN_CHUNK_SIZE,
|
||||
path: PageThumbsStorage.getDirectory().path,
|
||||
filesToKeep: [PageThumbsStorage.getLeafNameForURL(url) for (url of aURLsToKeep)]
|
||||
});
|
||||
}, aCallback);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -13,6 +13,7 @@ include $(topsrcdir)/config/rules.mk
|
||||
|
||||
_BROWSER_FILES = \
|
||||
browser_thumbnails_capture.js \
|
||||
browser_thumbnails_expiration.js \
|
||||
browser_thumbnails_privacy.js \
|
||||
browser_thumbnails_redirect.js \
|
||||
browser_thumbnails_storage.js \
|
||||
|
@ -0,0 +1,78 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
const URL = "http://mochi.test:8888/?t=" + Date.now();
|
||||
const URL1 = URL + "#1";
|
||||
const URL2 = URL + "#2";
|
||||
const URL3 = URL + "#3";
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
|
||||
"resource://gre/modules/FileUtils.jsm");
|
||||
|
||||
let tmp = {};
|
||||
Cc["@mozilla.org/moz/jssubscript-loader;1"]
|
||||
.getService(Ci.mozIJSSubScriptLoader)
|
||||
.loadSubScript("resource:///modules/PageThumbs.jsm", tmp);
|
||||
|
||||
const {EXPIRATION_MIN_CHUNK_SIZE, PageThumbsExpiration} = tmp;
|
||||
|
||||
function runTests() {
|
||||
// Create three thumbnails.
|
||||
createDummyThumbnail(URL1);
|
||||
ok(thumbnailExists(URL1), "first thumbnail created");
|
||||
|
||||
createDummyThumbnail(URL2);
|
||||
ok(thumbnailExists(URL2), "second thumbnail created");
|
||||
|
||||
createDummyThumbnail(URL3);
|
||||
ok(thumbnailExists(URL3), "third thumbnail created");
|
||||
|
||||
// Remove the third thumbnail.
|
||||
yield expireThumbnails([URL1, URL2]);
|
||||
ok(thumbnailExists(URL1), "first thumbnail still exists");
|
||||
ok(thumbnailExists(URL2), "second thumbnail still exists");
|
||||
ok(!thumbnailExists(URL3), "third thumbnail has been removed");
|
||||
|
||||
// Remove the second thumbnail.
|
||||
yield expireThumbnails([URL1]);
|
||||
ok(thumbnailExists(URL1), "first thumbnail still exists");
|
||||
ok(!thumbnailExists(URL2), "second thumbnail has been removed");
|
||||
|
||||
// Remove all thumbnails.
|
||||
yield expireThumbnails([]);
|
||||
ok(!thumbnailExists(URL1), "all thumbnails have been removed");
|
||||
|
||||
// Create some more files than the min chunk size.
|
||||
let urls = [];
|
||||
for (let i = 0; i < EXPIRATION_MIN_CHUNK_SIZE + 10; i++) {
|
||||
urls.push(URL + "#dummy" + i);
|
||||
}
|
||||
|
||||
urls.forEach(createDummyThumbnail);
|
||||
ok(urls.every(thumbnailExists), "all dummy thumbnails created");
|
||||
|
||||
// Expire thumbnails and expect 10 remaining.
|
||||
yield expireThumbnails([]);
|
||||
let remainingURLs = [u for (u of urls) if (thumbnailExists(u))];
|
||||
is(remainingURLs.length, 10, "10 dummy thumbnails remaining");
|
||||
|
||||
// Expire thumbnails again. All should be gone by now.
|
||||
yield expireThumbnails([]);
|
||||
remainingURLs = [u for (u of remainingURLs) if (thumbnailExists(u))];
|
||||
is(remainingURLs.length, 0, "no dummy thumbnails remaining");
|
||||
}
|
||||
|
||||
function createDummyThumbnail(aURL) {
|
||||
let file = PageThumbsStorage.getFileForURL(aURL);
|
||||
let fos = FileUtils.openSafeFileOutputStream(file);
|
||||
|
||||
let data = "dummy";
|
||||
fos.write(data, data.length);
|
||||
FileUtils.closeSafeFileOutputStream(fos);
|
||||
}
|
||||
|
||||
function expireThumbnails(aKeep) {
|
||||
PageThumbsExpiration.expireThumbnails(aKeep, function () {
|
||||
executeSoon(next);
|
||||
});
|
||||
}
|
@ -96,8 +96,7 @@ function createThumbnail() {
|
||||
|
||||
function whenFileExists(aCallback) {
|
||||
let callback;
|
||||
let file = PageThumbsStorage.getFileForURL(URL);
|
||||
if (file.exists() && file.fileSize) {
|
||||
if (thumbnailExists(URL)) {
|
||||
callback = aCallback;
|
||||
} else {
|
||||
callback = function () whenFileExists(aCallback);
|
||||
|
@ -146,3 +146,12 @@ function checkCanvasColor(aContext, aRed, aGreen, aBlue, aMessage) {
|
||||
let [r, g, b] = aContext.getImageData(0, 0, 1, 1).data;
|
||||
ok(r == aRed && g == aGreen && b == aBlue, aMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a thumbnail for the given URL exists.
|
||||
* @param aURL The url associated to the thumbnail.
|
||||
*/
|
||||
function thumbnailExists(aURL) {
|
||||
let file = PageThumbsStorage.getFileForURL(aURL);
|
||||
return file.exists() && file.fileSize;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user