зеркало из https://github.com/mozilla/gecko-dev.git
Bug 728142 - Replace old synchronous favicons calls in tabview. r=ttaubert
--HG-- extra : rebase_source : 5dc2e1a50862eaa238cd16479dada60da507eb01
This commit is contained in:
Родитель
1bb5c0078e
Коммит
a4e2da87ad
|
@ -1,6 +1,12 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
/**
|
||||
* This file tests that, when there is an app tab that references an invalid
|
||||
* favicon, the default favicon appears the group app tab tray, instead of an
|
||||
* empty image that would not be visible.
|
||||
*/
|
||||
|
||||
const fi = Cc["@mozilla.org/browser/favicon-service;1"].
|
||||
getService(Ci.nsIFaviconService);
|
||||
|
||||
|
@ -40,18 +46,20 @@ function onTabPinned() {
|
|||
// code.
|
||||
executeSoon(function() {
|
||||
let iconSrc = $icon.attr("src");
|
||||
let hasData = true;
|
||||
try {
|
||||
fi.getFaviconDataAsDataURL(iconSrc);
|
||||
} catch(e) {
|
||||
hasData = false;
|
||||
}
|
||||
ok(!hasData, "The icon src doesn't return any data");
|
||||
|
||||
// with moz-anno:favicon automatically redirects to the default favIcon
|
||||
// if the given url is invalid
|
||||
ok(/^moz-anno:favicon:/.test(iconSrc),
|
||||
"The icon url starts with moz-anno:favicon so the default fav icon would be displayed");
|
||||
|
||||
// At this point, as an additional integrity check we could also verify
|
||||
// that the iconSrc URI does not have any associated favicon data. This
|
||||
// kind of check, however, is not easily supported by the asynchronous
|
||||
// favicon API. Fortunately, the fact that we received the error event
|
||||
// already indicates that the original favicon was not available.
|
||||
// Morevover, since we are using a "moz-anno:favicon:" URI, we know that
|
||||
// we'll not display an empty icon, but the default favicon.
|
||||
|
||||
// clean up
|
||||
gBrowser.removeTab(newTab);
|
||||
let endGame = function() {
|
||||
|
|
|
@ -1695,7 +1695,7 @@ let UI = {
|
|||
|
||||
// ----------
|
||||
// Function: getFavIconUrlForTab
|
||||
// Gets fav icon url for the given xul:tab.
|
||||
// Gets the "favicon link URI" for the given xul:tab, or null if unavailable.
|
||||
getFavIconUrlForTab: function UI_getFavIconUrlForTab(tab, callback) {
|
||||
this._isImageDocument(tab, function(isImageDoc) {
|
||||
if (isImageDoc) {
|
||||
|
@ -1709,12 +1709,20 @@ let UI = {
|
|||
|
||||
callback(tabImage);
|
||||
} else {
|
||||
// determine to load the default/cached icon or not and also ensure we don't show the default icon
|
||||
// for about:-style error pages
|
||||
let url = null;
|
||||
if (this._shouldLoadFavIcon(tab))
|
||||
url = gFavIconService.getFaviconImageForPage(tab.linkedBrowser.currentURI).spec;
|
||||
callback(url);
|
||||
// ensure we don't show the default icon for about:-style error pages
|
||||
if (!this._shouldLoadFavIcon(tab)) {
|
||||
callback(null);
|
||||
} else {
|
||||
// determine to load the default/cached icon or not
|
||||
gFavIconService.getFaviconURLForPage(tab.linkedBrowser.currentURI,
|
||||
function (uri) {
|
||||
if (!uri) {
|
||||
callback(gFavIconService.defaultFavicon.spec);
|
||||
} else {
|
||||
callback(gFavIconService.getFaviconLinkForIcon(uri).spec);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}.bind(this));
|
||||
|
|
Загрузка…
Ссылка в новой задаче