mozIAsyncFavicons

Interface for accessing the favicon service asynchronously.
1.0
66
Introduced
Gecko 6.0
Inherits from: nsISupports Last changed in Gecko 11.0 (Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)

nsIFaviconService handles this interface, so you do not need to directly create a new service. Simply QueryInterface() the nsIFaviconService to this interface. As an alternative, you can just use PlacesUtils.favicons from JavaScript.

Method overview

void getFaviconURLForPage(in nsIURI aPageURI, in nsIFaviconDataCallback aCallback);
void getFaviconDataForPage(in nsIURI aPageURI, in nsIFaviconDataCallback aCallback);
void setAndFetchFaviconForPage(in nsIURI aPageURI, in nsIURI aFaviconURI, in boolean aForceReload, in unsigned long aFaviconLoadType, [optional] in nsIFaviconDataCallback aCallback);
void replaceFaviconData(in nsIURI aFaviconURI, [const,array,size_is(aDataLen)] in octet aData, in unsigned long aDataLen, in AUTF8String aMimeType, [optional] in PRTime aExpiration);
void replaceFaviconDataFromDataURL(in nsIURI aFaviconURI, in AString aDataURL, [optional] in PRTime aExpiration);

Methods

getFaviconURLForPage()

Retrieve the URL of the favicon for the given page.

void getFaviconURLForPage(
  in nsIURI aPageURI,
  in nsIFaviconDataCallback aCallback
);

Parameters

aPageURI
URI of the page whose favicon's URL we're looking up.
aCallback
Once we have found the favicon's URL, we invoke this callback. Note that the callback's aDataLen will be 0, aData will be null, and aMimeType will be empty -- only aURI will be non-zero/null/empty.

getFaviconDataForPage()

Retrieves the favicon URI and data associated to the given page, if any.

void getFaviconURLForPage(
  in nsIURI aPageURI,
  in nsIFaviconDataCallback aCallback
);

Parameters

aPageURI
URI of the page whose favicon URI and data we're looking up.
aCallback
This callback is always invoked to notify the result of the lookup. The aURI parameter will be the favicon URI, or null when no favicon is associated with the page or an error occurred while fetching it. If aURI is not null, the other parameters may contain the favicon data. However, if no favicon data is currently associated with the favicon URI, aDataLen will be 0, aData will be an empty array, and aMimeType will be an empty string.

setAndFetchFaviconForPage()

Declares that a given page uses a favicon with the given URI and attempts to fetch and save the icon data by loading the favicon URI through a asynchronous network request.

If the icon data already exists, we will not try to reload the icon unless aForceReload is true. Similarly, if the icon is in the failed favicon cache we will not do anything unless aForceReload is true, in which case we'll try to reload the favicon.

This function will only save favicons for "good" URIs, as defined by what gets added to history or is a bookmark. For "bad" URIs, this function will succeed but do nothing. This function will also ignore the error page favicon URI (see FAVICON_ERRORPAGE_URL in nsIFaviconService.idl).

Icons that fail to load will automatically be added to the failed favicon cache, and this function will not save favicons for non-bookmarked URIs when history is disabled.

Note: This function is identical to nsIFaviconService.setAndLoadFaviconForPage()
void setAndFetchFaviconForPage(
  in nsIURI aPageURI,
  in nsIURI aFaviconURI,
  in boolean aForceReload,
  in unsigned long afaviconLoadType,
  in nsIFaviconDataCallback aCallback Optional
);

Parameters

aPageURI
URI of the page whose favicon is being set.
aFaviconURI
URI of the favicon to associate with the page.
aForceReload
If false, we try to reload the favicon only if we do not have it or it has expired from the cache. Setting to true causes us to reload the favicon even if we have a usable copy.
aFaviconLoadType
Set to nsIFaviconService.FAVICON_LOAD_PRIVATE if the favicon is loaded from a private browsing window. Set to nsIFaviconService.FAVICON_LOAD_NON_PRIVATE otherwise
aCallback Optional
Once we're done setting and/or fetching the favicon, we invoke this callback.

replaceFaviconData()

Sets the data for a given favicon URI either by replacing existing data in the database or taking the place of otherwise fetched icon data when calling setAndFetchFaviconForPage later.

Favicon data for favicon URIs that are not associated with a page URI via setAndFetchFaviconForPage will be stored in memory, but may be expired at any time, so you should make an effort to associate favicon URIs with page URIs as soon as possible.

It's better to not use this function for chrome: icon URIs since you can reference the chrome image yourself. getFaviconLinkForIcon/Page will ignore any associated data if the favicon URI is "chrome:" and just return the same chrome URI.

This function does NOT send out notifications that the data has changed. Pages using this favicons that are visible in history or bookmarks views will keep the old icon until they have been refreshed by other means.

void replaceFaviconData(
  in nsIURI aFaviconURI,
  [const,array,size_is(aDataLen)] in octet aData,
  in unsigned long aDataLen,
  in AUTF8String aMimeType,
  [optional] in PRTime aExpiration);

Parameters

aFaviconURI
URI of the favicon whose data is being set.
aData
Binary contents of the favicon to save.
aDataLen
Length of binary data
aMimeType
MIME type of the data to store. This is important so that we know what to report when the favicon is used. You should always set this param unless you are clearing an icon.
aExpiration Optional
Time in microseconds since the epoch when this favicon expires. Until this time, we won't try to load it again.

replaceFaviconDataFromDataURL()

Same as replaceFaviconData() but the data is provided by a string containing a data URL.

Favicon data for favicon URIs that are not associated with a page URI via setAndFetchFaviconForPage will be stored in memory, but may be expired at any time, so you should make an effort to associate favicon URIs with page URIs as soon as possible.

It's better to not use this function for chrome: icon URIs since you can reference the chrome image yourself. getFaviconLinkForIcon/Page will ignore any associated data if the favicon URI is "chrome:" and just return the same chrome URI.

This function does NOT send out notifications that the data has changed. Pages using this favicons that are visible in history or bookmarks views will keep the old icon until they have been refreshed by other means.

void replaceFaviconDataFromDataURL(
  in nsIURI aFaviconURI,
  in AString aDataURL,
  [optional] in PRTime aExpiration);

Parameters

aFaviconURI
URI of the favicon whose data is being set.
aDataURL
String containing a data URL that represents the contents of the favicon to save.
aExpiration Optional
Time in microseconds since the epoch when this favicon expires. Until this time, we won't try to load it again./dd>

See also