gecko/toolkit/components/places/tests/unit/test_favicons.js
Ted Mielczarek dcc2d8f492 bug 482085 - fix all xpcshell tests to not reference files from the srcdir. r=bsmedberg,waldo
--HG--
rename : toolkit/components/downloads/test/downloads.empty.sqlite => browser/components/privatebrowsing/test/unit/downloads.empty.sqlite
rename : dom/src/json/test/fail1.json => dom/src/json/test/unit/fail1.json
rename : dom/src/json/test/fail10.json => dom/src/json/test/unit/fail10.json
rename : dom/src/json/test/fail11.json => dom/src/json/test/unit/fail11.json
rename : dom/src/json/test/fail12.json => dom/src/json/test/unit/fail12.json
rename : dom/src/json/test/fail13.json => dom/src/json/test/unit/fail13.json
rename : dom/src/json/test/fail14.json => dom/src/json/test/unit/fail14.json
rename : dom/src/json/test/fail15.json => dom/src/json/test/unit/fail15.json
rename : dom/src/json/test/fail16.json => dom/src/json/test/unit/fail16.json
rename : dom/src/json/test/fail17.json => dom/src/json/test/unit/fail17.json
rename : dom/src/json/test/fail18.json => dom/src/json/test/unit/fail18.json
rename : dom/src/json/test/fail19.json => dom/src/json/test/unit/fail19.json
rename : dom/src/json/test/fail2.json => dom/src/json/test/unit/fail2.json
rename : dom/src/json/test/fail20.json => dom/src/json/test/unit/fail20.json
rename : dom/src/json/test/fail21.json => dom/src/json/test/unit/fail21.json
rename : dom/src/json/test/fail22.json => dom/src/json/test/unit/fail22.json
rename : dom/src/json/test/fail23.json => dom/src/json/test/unit/fail23.json
rename : dom/src/json/test/fail24.json => dom/src/json/test/unit/fail24.json
rename : dom/src/json/test/fail25.json => dom/src/json/test/unit/fail25.json
rename : dom/src/json/test/fail26.json => dom/src/json/test/unit/fail26.json
rename : dom/src/json/test/fail27.json => dom/src/json/test/unit/fail27.json
rename : dom/src/json/test/fail28.json => dom/src/json/test/unit/fail28.json
rename : dom/src/json/test/fail29.json => dom/src/json/test/unit/fail29.json
rename : dom/src/json/test/fail3.json => dom/src/json/test/unit/fail3.json
rename : dom/src/json/test/fail30.json => dom/src/json/test/unit/fail30.json
rename : dom/src/json/test/fail31.json => dom/src/json/test/unit/fail31.json
rename : dom/src/json/test/fail32.json => dom/src/json/test/unit/fail32.json
rename : dom/src/json/test/fail33.json => dom/src/json/test/unit/fail33.json
rename : dom/src/json/test/fail34.json => dom/src/json/test/unit/fail34.json
rename : dom/src/json/test/fail4.json => dom/src/json/test/unit/fail4.json
rename : dom/src/json/test/fail5.json => dom/src/json/test/unit/fail5.json
rename : dom/src/json/test/fail6.json => dom/src/json/test/unit/fail6.json
rename : dom/src/json/test/fail7.json => dom/src/json/test/unit/fail7.json
rename : dom/src/json/test/fail8.json => dom/src/json/test/unit/fail8.json
rename : dom/src/json/test/fail9.json => dom/src/json/test/unit/fail9.json
rename : dom/src/json/test/json2.js => dom/src/json/test/unit/json2.js
rename : dom/src/json/test/pass1.json => dom/src/json/test/unit/pass1.json
rename : dom/src/json/test/pass3.json => dom/src/json/test/unit/pass3.json
rename : testing/xpcshell/example/location_load.js => testing/xpcshell/example/unit/location_load.js
rename : toolkit/components/commandlines/test/unit/unix/test_bug410156.js => toolkit/components/commandlines/test/unit_unix/test_bug410156.js
rename : toolkit/components/commandlines/test/unit/win/test_bug410156.js => toolkit/components/commandlines/test/unit_win/test_bug410156.js
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug257155/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug257155/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_a_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_a_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_a_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_a_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_b_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_b_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_b_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_b_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_c_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_c_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_c_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_c_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_d_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_d_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_d_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_d_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_e_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_e_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_e_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_e_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_f_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_f_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_f_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_f_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_g_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_g_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug299716_g_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug299716_g_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_3/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_4/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_5/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_6/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_7/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_8/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug324121_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug324121_9/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug335238_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug335238_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug335238_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug335238_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_10/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_10/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_11/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_11/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_12/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_12/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_13/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_13/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_3/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_4/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_5/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_6/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_7/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_8/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug378216_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug378216_9/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug394300_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug394300_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug394300_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug394300_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_a_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_a_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_a_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_a_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_b_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_b_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_b_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_b_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_c_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_c_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_c_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_c_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_d_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_d_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug396129_d_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug396129_d_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug397778/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug397778/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug425657/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug425657/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_1/README => toolkit/mozapps/extensions/test/addons/test_bug428341_1/README
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_3/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_4/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_5/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_6/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_7/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_8/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug428341_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug428341_9/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug436207/install.js => toolkit/mozapps/extensions/test/addons/test_bug436207/install.js
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_1/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_1/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_2/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_2/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_3/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_3/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_4/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_4/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_5/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_5/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_6/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_6/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_7/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_7/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_8/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_8/install.rdf
rename : toolkit/mozapps/extensions/test/unit/addons/test_bug463819_9/install.rdf => toolkit/mozapps/extensions/test/addons/test_bug463819_9/install.rdf
2009-03-21 11:20:00 -04:00

462 lines
13 KiB
JavaScript

/*
* Tests for nsIFaviconService
*/
/*
* dumpToFile()
*
* For test development, dumps the specified array to a file.
* Call |dumpToFile(outData);| in a test to file to a file.
*/
function dumpToFile(aData) {
const path = "/tmp";
var outputFile = Cc["@mozilla.org/file/local;1"].
createInstance(Ci.nsILocalFile);
outputFile.initWithPath(path);
outputFile.append("testdump.png");
var outputStream = Cc["@mozilla.org/network/file-output-stream;1"].
createInstance(Ci.nsIFileOutputStream);
// WR_ONLY|CREAT|TRUNC
outputStream.init(outputFile, 0x02 | 0x08 | 0x20, 0644, null);
var bos = Cc["@mozilla.org/binaryoutputstream;1"].
createInstance(Ci.nsIBinaryOutputStream);
bos.setOutputStream(outputStream);
bos.writeByteArray(aData, aData.length);
outputStream.close();
}
/*
* readFileData()
*
* Reads the data from the specified nsIFile, and returns an array of bytes.
*/
function readFileData(aFile) {
var inputStream = Cc["@mozilla.org/network/file-input-stream;1"].
createInstance(Ci.nsIFileInputStream);
// init the stream as RD_ONLY, -1 == default permissions.
inputStream.init(aFile, 0x01, -1, null);
var size = inputStream.available();
// use a binary input stream to grab the bytes.
var bis = Cc["@mozilla.org/binaryinputstream;1"].
createInstance(Ci.nsIBinaryInputStream);
bis.setInputStream(inputStream);
var bytes = bis.readByteArray(size);
if (size != bytes.length)
throw "Didn't read expected number of bytes";
return bytes;
}
/*
* setAndGetFaviconData()
*
* Calls setFaviconData() with the specified image data,
* and then retrieves it with getFaviconData(). Returns
* and array of bytes and mimetype.
*/
function setAndGetFaviconData(aFilename, aData, aMimeType) {
var iconURI = uri("http://places.test/" + aFilename);
try {
iconsvc.setFaviconData(iconURI,
aData, aData.length, aMimeType,
Number.MAX_VALUE);
} catch (ex) {}
var dataURL = iconsvc.getFaviconDataAsDataURL(iconURI);
try {
iconsvc.setFaviconDataFromDataURL(iconURI, dataURL, Number.MAX_VALUE);
} catch (ex) {}
var mimeTypeOutparam = {};
var outData = iconsvc.getFaviconData(iconURI,
mimeTypeOutparam, {});
return [outData, mimeTypeOutparam.value];
}
/*
* compareArrays
*
* Compares two arrays, and throws if there's a difference.
*/
function compareArrays(aArray1, aArray2) {
do_check_eq(aArray1.length, aArray2.length);
for (var i = 0; i < aArray1.length; i++)
if (aArray1[i] != aArray2[i])
throw "arrays differ at index " + i;
}
// Get favicon service
try {
var iconsvc = Cc["@mozilla.org/browser/favicon-service;1"].
getService(Ci.nsIFaviconService);
// Ugh, this is an ugly hack. The pixel values we get in Windows are sometimes
// +/- 1 value compared to other platforms, so we need to compare against a
// different set of reference images. nsIXULRuntime.OS doesn't seem to be
// available in xpcshell, so we'll use this as a kludgy way to figure out if
// we're running on Windows.
var isWindows = ("@mozilla.org/windows-registry-key;1" in Cc);
} catch(ex) {
do_throw("Could not get favicon service\n");
}
// Get history services
try {
var histsvc = Cc["@mozilla.org/browser/nav-history-service;1"].
getService(Ci.nsINavHistoryService);
var bhist = histsvc.QueryInterface(Ci.nsIBrowserHistory);
} catch(ex) {
do_throw("Could not get history services\n");
}
function run_test() {
try {
/* ========== 1 ========== */
var testnum = 1;
var testdesc = "test storing a normal 16x16 icon";
// 16x16 png, 286 bytes.
var iconName = "favicon-normal16.png";
var inMimeType = "image/png";
var iconFile = do_get_file(iconName);
var inData = readFileData(iconFile);
do_check_eq(inData.length, 286);
var [outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Ensure input and output are identical
do_check_eq(inMimeType, outMimeType);
compareArrays(inData, outData);
/* ========== 2 ========== */
testnum++;
testdesc = "test storing a normal 32x32 icon";
// 32x32 png, 344 bytes.
iconName = "favicon-normal32.png";
inMimeType = "image/png";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 344);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Ensure input and output are identical
do_check_eq(inMimeType, outMimeType);
compareArrays(inData, outData);
/* ========== 3 ========== */
testnum++;
testdesc = "test storing an oversize 16x16 icon ";
// in: 16x16 ico, 1406 bytes.
// out: 16x16 png
iconName = "favicon-big16.ico";
inMimeType = "image/x-icon";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 1406);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Read in the expected output.
var expectedFile = do_get_file("expected-" + iconName + ".png");
var expectedData = readFileData(expectedFile);
// Compare thet expected data to the actual data.
do_check_eq("image/png", outMimeType);
compareArrays(expectedData, outData);
/* ========== 4 ========== */
testnum++;
testdesc = "test storing an oversize 4x4 icon ";
// in: 4x4 jpg, 4751 bytes.
// out: 16x16 png
iconName = "favicon-big4.jpg";
inMimeType = "image/jpeg";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 4751);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Read in the expected output.
var expectedFile = do_get_file("expected-" + iconName + ".png");
var expectedData = readFileData(expectedFile);
// Compare thet expected data to the actual data.
do_check_eq("image/png", outMimeType);
compareArrays(expectedData, outData);
/* ========== 5 ========== */
testnum++;
testdesc = "test storing an oversize 32x32 icon ";
// in: 32x32 jpg, 3494 bytes.
// out: 16x16 png
iconName = "favicon-big32.jpg";
inMimeType = "image/jpeg";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 3494);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Read in the expected output.
var expectedFile = do_get_file("expected-" + iconName + ".png");
var expectedData = readFileData(expectedFile);
// Compare thet expected data to the actual data.
do_check_eq("image/png", outMimeType);
// Disabled on Windows due to problems with pixels varying slightly.
if (!isWindows)
compareArrays(expectedData, outData);
/* ========== 6 ========== */
testnum++;
testdesc = "test storing an oversize 48x48 icon ";
// in: 48x48 ico, 56646 bytes.
// (howstuffworks.com icon, contains 13 icons with sizes from 16x16 to
// 48x48 in varying depths)
// out: 16x16 png
iconName = "favicon-big48.ico";
inMimeType = "image/x-icon";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 56646);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Read in the expected output.
var expectedFile = do_get_file("expected-" + iconName + ".png");
var expectedData = readFileData(expectedFile);
// Compare thet expected data to the actual data.
do_check_eq("image/png", outMimeType);
compareArrays(expectedData, outData);
/* ========== 7 ========== */
testnum++;
testdesc = "test storing an oversize 64x64 icon ";
// in: 64x64 png, 10698 bytes.
// out: 16x16 png
iconName = "favicon-big64.png";
inMimeType = "image/png";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 10698);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Read in the expected output.
var expectedFile = do_get_file("expected-" + iconName + ".png");
var expectedData = readFileData(expectedFile);
// Compare thet expected data to the actual data.
do_check_eq("image/png", outMimeType);
compareArrays(expectedData, outData);
/* ========== 8 ========== */
testnum++;
testdesc = "test scaling an oversize 160x3 icon ";
// in: 160x3 jpg, 5095 bytes.
// out: 16x16 png
iconName = "favicon-scale160x3.jpg";
inMimeType = "image/jpeg";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 5095);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Read in the expected output.
var expectedFile = do_get_file("expected-" + iconName + ".png");
var expectedData = readFileData(expectedFile);
// Compare thet expected data to the actual data.
do_check_eq("image/png", outMimeType);
compareArrays(expectedData, outData);
/* ========== 9 ========== */
testnum++;
testdesc = "test scaling an oversize 3x160 icon ";
// in: 3x160 jpg, 5059 bytes.
// out: 16x16 png
iconName = "favicon-scale3x160.jpg";
inMimeType = "image/jpeg";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 5059);
[outData, outMimeType] = setAndGetFaviconData(iconName, inData, inMimeType);
// Read in the expected output.
var expectedFile = do_get_file("expected-" + iconName + ".png");
var expectedData = readFileData(expectedFile);
// Compare thet expected data to the actual data.
do_check_eq("image/png", outMimeType);
compareArrays(expectedData, outData);
/* ========== 10 ========== */
testnum++;
testdesc = "test set and get favicon ";
// 32x32 png, 344 bytes.
var icon1Name = "favicon-normal32.png";
var icon1MimeType = "image/png";
var icon1File = do_get_file(icon1Name);
var icon1Data = readFileData(icon1File);
do_check_eq(icon1Data.length, 344);
var icon1URI = uri("file:///./" + icon1Name);
// 16x16 png, 286 bytes.
var icon2Name = "favicon-normal16.png";
var icon2MimeType = "image/png";
var icon2File = do_get_file(icon2Name);
var icon2Data = readFileData(icon2File);
do_check_eq(icon2Data.length, 286);
var icon2URI = uri("file:///./" + icon2Name);
var page1URI = uri("http://foo.bar/");
var page2URI = uri("http://bar.foo/");
var page3URI = uri("http://foo.bar.moz/");
// add visits to the db
histsvc.addVisit(page1URI, Date.now() * 1000, null,
histsvc.TRANSITION_TYPED, false, 0);
histsvc.addVisit(page2URI, Date.now() * 1000, null,
histsvc.TRANSITION_TYPED, false, 0);
histsvc.addVisit(page3URI, Date.now() * 1000, null,
histsvc.TRANSITION_TYPED, false, 0);
// set first page icon
try {
iconsvc.setFaviconData(icon1URI, icon1Data, icon1Data.length,
icon1MimeType, Number.MAX_VALUE);
} catch (ex) {}
iconsvc.setFaviconUrlForPage(page1URI, icon1URI);
var savedIcon1URI = iconsvc.getFaviconForPage(page1URI);
// set second page icon
try {
iconsvc.setFaviconData(icon2URI, icon2Data, icon2Data.length,
icon2MimeType, Number.MAX_VALUE);
} catch (ex) {}
iconsvc.setFaviconUrlForPage(page2URI, icon2URI);
var savedIcon2URI = iconsvc.getFaviconForPage(page2URI);
// set third page icon as the same as first page one
try {
iconsvc.setFaviconData(icon1URI, icon1Data, icon1Data.length,
icon1MimeType, Number.MAX_VALUE);
} catch (ex) {}
iconsvc.setFaviconUrlForPage(page3URI, icon1URI);
var savedIcon3URI = iconsvc.getFaviconForPage(page3URI);
// check first page icon
var out1MimeType = {};
var out1Data = iconsvc.getFaviconData(savedIcon1URI, out1MimeType, {});
do_check_eq(icon1MimeType, out1MimeType.value);
compareArrays(icon1Data, out1Data);
// check second page icon
var out2MimeType = {};
var out2Data = iconsvc.getFaviconData(savedIcon2URI, out2MimeType, {});
do_check_eq(icon2MimeType, out2MimeType.value);
compareArrays(icon2Data, out2Data);
// check third page icon
var out3MimeType = {};
var out3Data = iconsvc.getFaviconData(savedIcon3URI, out3MimeType, {});
do_check_eq(icon1MimeType, out3MimeType.value);
compareArrays(icon1Data, out3Data);
/* ========== 11 ========== */
testnum++;
testdesc = "test setAndLoadFaviconForPage ";
// 32x32 png, 344 bytes.
iconName = "favicon-normal32.png";
inMimeType = "image/png";
iconFile = do_get_file(iconName);
inData = readFileData(iconFile);
do_check_eq(inData.length, 344);
var pageURI = uri("http://foo.bar/");
faviconURI = uri("file:///./" + iconName);
iconsvc.setAndLoadFaviconForPage(pageURI, faviconURI, true);
var savedFaviconURI = iconsvc.getFaviconForPage(pageURI);
outMimeType = {};
outData = iconsvc.getFaviconData(savedFaviconURI, outMimeType, {});
// Ensure input and output are identical
do_check_eq(inMimeType, outMimeType.value);
compareArrays(inData, outData);
/* ========== 12 ========== */
testnum++;
testdesc = "test favicon links ";
do_check_eq(iconsvc.getFaviconImageForPage(pageURI).spec,
iconsvc.getFaviconLinkForIcon(faviconURI).spec);
/* ========== 13 ========== */
testnum++;
testdesc = "test failed favicon cache ";
// 32x32 png, 344 bytes.
iconName = "favicon-normal32.png";
faviconURI = uri("file:///./" + iconName);
iconsvc.addFailedFavicon(faviconURI);
do_check_true(iconsvc.isFailedFavicon(faviconURI));
iconsvc.removeFailedFavicon(faviconURI);
do_check_false(iconsvc.isFailedFavicon(faviconURI));
/* ========== end ========== */
} catch (e) {
throw "FAILED in test #" + testnum + " -- " + testdesc + ": " + e;
}
};