mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-10 01:07:31 +09:00
66 lines
2.3 KiB
JavaScript
66 lines
2.3 KiB
JavaScript
const ICON_DATA = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==";
|
|
const TEST_URI = NetUtil.newURI("http://mozilla.org/");
|
|
const ICON_URI = NetUtil.newURI("http://mozilla.org/favicon.ico");
|
|
|
|
function fetchIconForSpec(spec) {
|
|
return new Promise((resolve, reject) => {
|
|
NetUtil.asyncFetch({
|
|
uri: NetUtil.newURI("page-icon:" + TEST_URI.spec),
|
|
loadUsingSystemPrincipal: true,
|
|
contentPolicyType: Ci.nsIContentPolicy.TYPE_INTERNAL_IMAGE_FAVICON
|
|
}, (input, status, request) => {
|
|
if (!Components.isSuccessCode(status)) {
|
|
reject(new Error("unable to load icon"));
|
|
return;
|
|
}
|
|
|
|
try {
|
|
let data = NetUtil.readInputStreamToString(input, input.available());
|
|
let contentType = request.QueryInterface(Ci.nsIChannel).contentType;
|
|
input.close();
|
|
resolve({ data, contentType });
|
|
} catch (ex) {
|
|
reject(ex);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
var gDefaultFavicon;
|
|
var gFavicon;
|
|
|
|
add_task(function* setup() {
|
|
yield PlacesTestUtils.addVisits({ uri: TEST_URI });
|
|
|
|
PlacesUtils.favicons.replaceFaviconDataFromDataURL(
|
|
ICON_URI, ICON_DATA, (Date.now() + 8640000) * 1000,
|
|
Services.scriptSecurityManager.getSystemPrincipal());
|
|
|
|
yield new Promise(resolve => {
|
|
PlacesUtils.favicons.setAndFetchFaviconForPage(
|
|
TEST_URI, ICON_URI, false,
|
|
PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE,
|
|
resolve, Services.scriptSecurityManager.getSystemPrincipal());
|
|
});
|
|
|
|
gDefaultFavicon = yield fetchIconForSpec(PlacesUtils.favicons.defaultFavicon);
|
|
gFavicon = yield fetchIconForSpec(ICON_DATA);
|
|
});
|
|
|
|
add_task(function* known_url() {
|
|
let {data, contentType} = yield fetchIconForSpec(TEST_URI.spec);
|
|
Assert.equal(contentType, gFavicon.contentType);
|
|
Assert.ok(data == gFavicon.data, "Got the favicon data");
|
|
});
|
|
|
|
add_task(function* unknown_url() {
|
|
let {data, contentType} = yield fetchIconForSpec("http://www.moz.org/");
|
|
Assert.equal(contentType, gDefaultFavicon.contentType);
|
|
Assert.ok(data == gDefaultFavicon.data, "Got the default favicon data");
|
|
});
|
|
|
|
add_task(function* invalid_url() {
|
|
let {data, contentType} = yield fetchIconForSpec("test");
|
|
Assert.equal(contentType, gDefaultFavicon.contentType);
|
|
Assert.ok(data == gDefaultFavicon.data, "Got the default favicon data");
|
|
});
|