mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
153 lines
5.5 KiB
JavaScript
153 lines
5.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
// This file tests the normal operation of setAndFetchFaviconForPage.
|
|
function test() {
|
|
// Initialization
|
|
waitForExplicitFinish();
|
|
let windowsToClose = [];
|
|
let testURI = "https://www.mozilla.org/en-US/";
|
|
let favIconLocation =
|
|
"http://example.org/tests/toolkit/components/places/tests/browser/favicon-normal32.png";
|
|
let favIconURI = NetUtil.newURI(favIconLocation);
|
|
let favIconMimeType= "image/png";
|
|
let pageURI;
|
|
let favIconData;
|
|
|
|
function testOnWindow(aOptions, aCallback) {
|
|
whenNewWindowLoaded(aOptions, function(aWin) {
|
|
windowsToClose.push(aWin);
|
|
executeSoon(function() aCallback(aWin));
|
|
});
|
|
};
|
|
|
|
// This function is called after calling finish() on the test.
|
|
registerCleanupFunction(function() {
|
|
windowsToClose.forEach(function(aWin) {
|
|
aWin.close();
|
|
});
|
|
});
|
|
|
|
function getIconFile(aCallback) {
|
|
NetUtil.asyncFetch2(
|
|
favIconLocation,
|
|
function(inputStream, status) {
|
|
if (!Components.isSuccessCode(status)) {
|
|
ok(false, "Could not get the icon file");
|
|
// Handle error.
|
|
return;
|
|
}
|
|
|
|
// Check the returned size versus the expected size.
|
|
let size = inputStream.available();
|
|
favIconData = NetUtil.readInputStreamToString(inputStream, size);
|
|
is(size, favIconData.length, "Check correct icon size");
|
|
// Check that the favicon loaded correctly before starting the actual tests.
|
|
is(favIconData.length, 344, "Check correct icon length (344)");
|
|
|
|
if (aCallback) {
|
|
aCallback();
|
|
} else {
|
|
finish();
|
|
}
|
|
},
|
|
null, // aLoadingNode
|
|
Services.scriptSecurityManager.getSystemPrincipal(),
|
|
null, // aTriggeringPrincipal
|
|
Ci.nsILoadInfo.SEC_NORMAL,
|
|
Ci.nsIContentPolicy.TYPE_IMAGE);
|
|
}
|
|
|
|
function testNormal(aWindow, aCallback) {
|
|
pageURI = NetUtil.newURI("http://example.com/normal");
|
|
waitForFaviconChanged(pageURI, favIconURI, aWindow,
|
|
function testNormalCallback() {
|
|
checkFaviconDataForPage(pageURI, favIconMimeType, favIconData, aWindow,
|
|
aCallback);
|
|
}
|
|
);
|
|
|
|
addVisits({uri: pageURI, transition: TRANSITION_TYPED}, aWindow,
|
|
function () {
|
|
aWindow.PlacesUtils.favicons.setAndFetchFaviconForPage(pageURI,
|
|
favIconURI, true, aWindow.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE);
|
|
}
|
|
);
|
|
}
|
|
|
|
function testAboutURIBookmarked(aWindow, aCallback) {
|
|
pageURI = NetUtil.newURI("about:testAboutURI_bookmarked");
|
|
waitForFaviconChanged(pageURI, favIconURI, aWindow,
|
|
function testAboutURIBookmarkedCallback() {
|
|
checkFaviconDataForPage(pageURI, favIconMimeType, favIconData, aWindow,
|
|
aCallback);
|
|
}
|
|
);
|
|
|
|
aWindow.PlacesUtils.bookmarks.insertBookmark(
|
|
aWindow.PlacesUtils.unfiledBookmarksFolderId, pageURI,
|
|
aWindow.PlacesUtils.bookmarks.DEFAULT_INDEX, pageURI.spec);
|
|
aWindow.PlacesUtils.favicons.setAndFetchFaviconForPage(pageURI, favIconURI,
|
|
true, aWindow.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE);
|
|
}
|
|
|
|
function testPrivateBrowsingBookmarked(aWindow, aCallback) {
|
|
pageURI = NetUtil.newURI("http://example.com/privateBrowsing_bookmarked");
|
|
waitForFaviconChanged(pageURI, favIconURI, aWindow,
|
|
function testPrivateBrowsingBookmarkedCallback() {
|
|
checkFaviconDataForPage(pageURI, favIconMimeType, favIconData, aWindow,
|
|
aCallback);
|
|
}
|
|
);
|
|
|
|
aWindow.PlacesUtils.bookmarks.insertBookmark(
|
|
aWindow.PlacesUtils.unfiledBookmarksFolderId, pageURI,
|
|
aWindow.PlacesUtils.bookmarks.DEFAULT_INDEX, pageURI.spec);
|
|
aWindow.PlacesUtils.favicons.setAndFetchFaviconForPage(pageURI, favIconURI,
|
|
true, aWindow.PlacesUtils.favicons.FAVICON_LOAD_PRIVATE);
|
|
}
|
|
|
|
function testDisabledHistoryBookmarked(aWindow, aCallback) {
|
|
pageURI = NetUtil.newURI("http://example.com/disabledHistory_bookmarked");
|
|
waitForFaviconChanged(pageURI, favIconURI, aWindow,
|
|
function testDisabledHistoryBookmarkedCallback() {
|
|
checkFaviconDataForPage(pageURI, favIconMimeType, favIconData, aWindow,
|
|
aCallback);
|
|
}
|
|
);
|
|
|
|
// Disable history while changing the favicon.
|
|
aWindow.Services.prefs.setBoolPref("places.history.enabled", false);
|
|
|
|
aWindow.PlacesUtils.bookmarks.insertBookmark(
|
|
aWindow.PlacesUtils.unfiledBookmarksFolderId, pageURI,
|
|
aWindow.PlacesUtils.bookmarks.DEFAULT_INDEX, pageURI.spec);
|
|
aWindow.PlacesUtils.favicons.setAndFetchFaviconForPage(pageURI, favIconURI,
|
|
true, aWindow.PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE);
|
|
|
|
// The setAndFetchFaviconForPage function calls CanAddURI synchronously, thus
|
|
// we can set the preference back to true immediately. We don't clear the
|
|
// preference because not all products enable Places by default.
|
|
aWindow.Services.prefs.setBoolPref("places.history.enabled", true);
|
|
}
|
|
|
|
getIconFile(function () {
|
|
testOnWindow({}, function(aWin) {
|
|
testNormal(aWin, function () {
|
|
testOnWindow({}, function(aWin) {
|
|
testAboutURIBookmarked(aWin, function () {
|
|
testOnWindow({private: true}, function(aWin) {
|
|
testPrivateBrowsingBookmarked(aWin, function () {
|
|
testOnWindow({}, function(aWin) {
|
|
testDisabledHistoryBookmarked(aWin, finish);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|