--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -121,17 +121,17 @@ XPCOMUtils.defineLazyScriptGetter(this,
if (AppConstants.NIGHTLY_BUILD) {
XPCOMUtils.defineLazyScriptGetter(this, "gWebRender",
"chrome://browser/content/browser-webrender.js");
}
// lazy service getters
XPCOMUtils.defineLazyServiceGetters(this, {
- Favicons: ["@mozilla.org/browser/favicon-service;1", "mozIAsyncFavicons"],
+ Favicons: ["@mozilla.org/browser/favicon-service;1", "nsIFaviconService"],
gAboutNewTabService: ["@mozilla.org/browser/aboutnewtab-service;1", "nsIAboutNewTabService"],
gDNSService: ["@mozilla.org/network/dns-service;1", "nsIDNSService"],
gSerializationHelper: ["@mozilla.org/network/serialization-helper;1", "nsISerializationHelper"],
Marionette: ["@mozilla.org/remote/marionette;1", "nsIMarionette"],
SessionStartup: ["@mozilla.org/browser/sessionstartup;1", "nsISessionStartup"],
WindowsUIUtils: ["@mozilla.org/windows-ui-utils;1", "nsIWindowsUIUtils"],
});
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -209,17 +209,16 @@
#include "prenv.h"
#include "URIUtils.h"
#include "timeline/JavascriptTimelineMarker.h"
#ifdef MOZ_PLACES
#include "nsIFaviconService.h"
#include "mozIPlacesPendingOperation.h"
-#include "mozIAsyncFavicons.h"
#endif
#if NS_PRINT_PREVIEW
#include "nsIDocumentViewerPrint.h"
#include "nsIWebBrowserPrint.h"
#endif
#ifdef MOZ_TOOLKIT_SEARCH
@@ -9191,17 +9190,17 @@ nsDocShell::CopyFavicon(nsIURI* aOldURI,
contentChild->SendCopyFavicon(oldURI, newURI,
IPC::Principal(aLoadingPrincipal),
aInPrivateBrowsing);
}
return;
}
#ifdef MOZ_PLACES
- nsCOMPtr<mozIAsyncFavicons> favSvc =
+ nsCOMPtr<nsIFaviconService> favSvc =
do_GetService("@mozilla.org/browser/favicon-service;1");
if (favSvc) {
favSvc->CopyFavicons(aOldURI, aNewURI,
aInPrivateBrowsing ? nsIFaviconService::FAVICON_LOAD_PRIVATE
: nsIFaviconService::FAVICON_LOAD_NON_PRIVATE, nullptr);
}
#endif
}
--- a/toolkit/components/alerts/nsAlertsService.cpp
+++ b/toolkit/components/alerts/nsAlertsService.cpp
@@ -13,17 +13,16 @@
#include "nsXPCOM.h"
#include "nsIServiceManager.h"
#include "nsIDOMWindow.h"
#include "nsPromiseFlatString.h"
#include "nsToolkitCompsCID.h"
#ifdef MOZ_PLACES
-#include "mozIAsyncFavicons.h"
#include "nsIFaviconService.h"
#endif // MOZ_PLACES
#ifdef XP_WIN
#include <shellapi.h>
#endif
using namespace mozilla;
@@ -99,17 +98,17 @@ ShowWithIconBackend(nsIAlertsService* aB
nsCOMPtr<nsIAlertsIconURI> alertsIconURI;
if (!alertsIconData) {
alertsIconURI = do_QueryInterface(aBackend);
}
if (!alertsIconData && !alertsIconURI) {
return NS_ERROR_NOT_IMPLEMENTED;
}
- nsCOMPtr<mozIAsyncFavicons> favicons(do_GetService(
+ nsCOMPtr<nsIFaviconService> favicons(do_GetService(
"@mozilla.org/browser/favicon-service;1"));
NS_ENSURE_TRUE(favicons, NS_ERROR_FAILURE);
nsCOMPtr<nsIFaviconDataCallback> callback =
new IconCallback(aBackend, aAlert, aAlertListener);
if (alertsIconData) {
return favicons->GetFaviconDataForPage(uri, callback, 0);
}
--- a/toolkit/components/places/PlacesUtils.jsm
+++ b/toolkit/components/places/PlacesUtils.jsm
@@ -1868,17 +1868,17 @@ XPCOMUtils.defineLazyGetter(PlacesUtils,
}
return property;
}
}));
});
XPCOMUtils.defineLazyServiceGetter(PlacesUtils, "favicons",
"@mozilla.org/browser/favicon-service;1",
- "mozIAsyncFavicons");
+ "nsIFaviconService");
XPCOMUtils.defineLazyServiceGetter(this, "bmsvc",
"@mozilla.org/browser/nav-bookmarks-service;1",
"nsINavBookmarksService");
XPCOMUtils.defineLazyGetter(PlacesUtils, "bookmarks", () => {
return Object.freeze(new Proxy(Bookmarks, {
get: (target, name) => Bookmarks.hasOwnProperty(name) ? Bookmarks[name]
: bmsvc[name]
--- a/toolkit/components/places/moz.build
+++ b/toolkit/components/places/moz.build
@@ -10,17 +10,16 @@ if CONFIG['MOZ_PLACES']:
XPIDL_SOURCES += [
'nsINavHistoryService.idl',
]
XPIDL_MODULE = 'places'
if CONFIG['MOZ_PLACES']:
XPIDL_SOURCES += [
- 'mozIAsyncFavicons.idl',
'mozIAsyncHistory.idl',
'mozIAsyncLivemarks.idl',
'mozIColorAnalyzer.idl',
'mozIPlacesAutoComplete.idl',
'mozIPlacesPendingOperation.idl',
'nsIAnnotationService.idl',
'nsIFaviconService.idl',
'nsINavBookmarksService.idl',
deleted file mode 100644
--- a/toolkit/components/places/mozIAsyncFavicons.idl
+++ /dev/null
@@ -1,211 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* 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/. */
-
-#include "nsISupports.idl"
-
-interface nsIURI;
-interface nsIFaviconDataCallback;
-interface nsIPrincipal;
-interface mozIPlacesPendingOperation;
-
-[scriptable, uuid(a9c81797-9133-4823-b55f-3646e67cfd41)]
-interface mozIAsyncFavicons : nsISupports
-{
- /**
- * 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 an async network request.
- *
- * If the icon data already exists, we won't try to reload the icon unless
- * aForceReload is true. Similarly, if the icon is in the failed favicon
- * cache we won't do anything unless aForceReload is true, in which case
- * we'll try to reload the favicon.
- *
- * This function will only save favicons for pages that are already stored in
- * the database, like visited pages or bookmarks. For any other URIs, it
- * will succeed but do nothing. This function will also ignore the error
- * page favicon URI (see FAVICON_ERRORPAGE_URL below).
- *
- * 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.
- *
- * @param aPageURI
- * URI of the page whose favicon is being set.
- * @param aFaviconURI
- * URI of the favicon to associate with the page.
- * @param aForceReload
- * If aForceReload is false, we try to reload the favicon only if we
- * don't have it or it has expired from the cache. Setting
- * aForceReload to true causes us to reload the favicon even if we
- * have a usable copy.
- * @param aFaviconLoadType
- * Set to FAVICON_LOAD_PRIVATE if the favicon is loaded from a private
- * browsing window. Set to FAVICON_LOAD_NON_PRIVATE otherwise.
- * @param [optional] aCallback
- * Once we're done setting and/or fetching the favicon, we invoke this
- * callback.
- * @param [optional] aLoadingPrincipal
- * Principal of the page whose favicon is being set. If this argument
- * is omitted, the loadingPrincipal defaults to the nullPrincipal.
- * @param [optional] aRequestContextID
- * used to inform Necko of how to link the
- * favicon request with other requests in the same tab.
- *
- * @see nsIFaviconDataCallback in nsIFaviconService.idl.
- */
- mozIPlacesPendingOperation setAndFetchFaviconForPage(
- in nsIURI aPageURI,
- in nsIURI aFaviconURI,
- in boolean aForceReload,
- in unsigned long aFaviconLoadType,
- [optional] in nsIFaviconDataCallback aCallback,
- [optional] in nsIPrincipal aLoadingPrincipal,
- [optional] in unsigned long long aRequestContextID);
-
- /**
- * 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.
- *
- * This function tries to optimize the favicon size, if it is bigger
- * than a defined limit we will try to convert it to a 16x16 png image.
- * If the conversion fails and favicon is still bigger than our max accepted
- * size it won't be saved.
- *
- * @param aFaviconURI
- * URI of the favicon whose data is being set.
- * @param aData
- * Binary contents of the favicon to save
- * @param aDataLength
- * Length of binary data
- * @param 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.
- * @param [optional] aExpiration
- * Time in microseconds since the epoch when this favicon expires.
- * Until this time, we won't try to load it again.
- * @throws NS_ERROR_FAILURE
- * Thrown if the favicon is overbloated and won't be saved to the db.
- */
- void replaceFaviconData(in nsIURI aFaviconURI,
- [const,array,size_is(aDataLen)] in octet aData,
- in unsigned long aDataLen,
- in AUTF8String aMimeType,
- [optional] in PRTime aExpiration);
-
- /**
- * Same as replaceFaviconData but the data is provided by a string
- * containing a data URL.
- *
- * @see replaceFaviconData
- *
- * @param aFaviconURI
- * URI of the favicon whose data is being set.
- * @param aDataURL
- * string containing a data URL that represents the contents of
- * the favicon to save
- * @param [optional] aExpiration
- * Time in microseconds since the epoch when this favicon expires.
- * Until this time, we won't try to load it again.
- * @param [optional] aLoadingPrincipal
- * Principal of the page whose favicon is being set. If this argument
- * is omitted, the loadingPrincipal defaults to the nullPrincipal.
- * @throws NS_ERROR_FAILURE
- * Thrown if the favicon is overbloated and won't be saved to the db.
- */
- void replaceFaviconDataFromDataURL(in nsIURI aFaviconURI,
- in AString aDataURL,
- [optional] in PRTime aExpiration,
- [optional] in nsIPrincipal aLoadingPrincipal);
-
- /**
- * Retrieves the favicon URI associated to the given page, if any.
- *
- * @param aPageURI
- * URI of the page whose favicon URI we're looking up.
- * @param 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.
- * aDataLen will be always 0, aData will be an empty array, and
- * aMimeType will be an empty string, regardless of whether a favicon
- * was found.
- * @param [optional] aPreferredWidth
- * The preferred icon width, 0 for the biggest available.
- *
- * @note If a favicon specific to this page cannot be found, this will try to
- * fallback to the /favicon.ico for the root domain.
- *
- * @see nsIFaviconDataCallback in nsIFaviconService.idl.
- */
- void getFaviconURLForPage(in nsIURI aPageURI,
- in nsIFaviconDataCallback aCallback,
- [optional] in unsigned short aPreferredWidth);
-
- /**
- * Retrieves the favicon URI and data associated to the given page, if any.
- * If the page icon is not available, it will try to return the root domain
- * icon data, when it's known.
- *
- * @param aPageURI
- * URI of the page whose favicon URI and data we're looking up.
- * @param 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.
- * @param [optional] aPreferredWidth
- * The preferred icon width, 0 for the biggest available.
- * @note If a favicon specific to this page cannot be found, this will try to
- * fallback to the /favicon.ico for the root domain.
- *
- * @see nsIFaviconDataCallback in nsIFaviconService.idl.
- */
- void getFaviconDataForPage(in nsIURI aPageURI,
- in nsIFaviconDataCallback aCallback,
- [optional] in unsigned short aPreferredWidth);
-
- /**
- * Copies cached favicons from a page to another one.
- *
- * @param aFromPageURI
- * URI of the originating page.
- * @param aToPageURI
- * URI of the destination page.
- * @param aFaviconLoadType
- * Set to FAVICON_LOAD_PRIVATE if the copy is started from a private
- * browsing window. Set to FAVICON_LOAD_NON_PRIVATE otherwise.
- * @param [optional] aCallback
- * Once we're done copying the favicon, we invoke this callback.
- * If a copy has been done, the callback will report one of the
- * favicons uri as aFaviconURI, otherwise all the params will be null.
- */
- void copyFavicons(in nsIURI aFromPageURI,
- in nsIURI aToPageURI,
- in unsigned long aFaviconLoadType,
- [optional] in nsIFaviconDataCallback aCallback);
-};
--- a/toolkit/components/places/nsFaviconService.cpp
+++ b/toolkit/components/places/nsFaviconService.cpp
@@ -122,17 +122,16 @@ GetFramesInfoForContainer(imgIContainer*
} // namespace
PLACES_FACTORY_SINGLETON_IMPLEMENTATION(nsFaviconService, gFaviconService)
NS_IMPL_CLASSINFO(nsFaviconService, nullptr, 0, NS_FAVICONSERVICE_CID)
NS_IMPL_ISUPPORTS_CI(
nsFaviconService
, nsIFaviconService
-, mozIAsyncFavicons
, nsITimerCallback
, nsINamed
)
nsFaviconService::nsFaviconService()
: mFailedFaviconSerial(0)
, mFailedFavicons(MAX_FAILED_FAVICONS / 2)
, mUnassociatedIcons(UNASSOCIATED_FAVICONS_LENGTH)
--- a/toolkit/components/places/nsFaviconService.h
+++ b/toolkit/components/places/nsFaviconService.h
@@ -2,17 +2,16 @@
/* 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/. */
#ifndef nsFaviconService_h_
#define nsFaviconService_h_
#include "nsIFaviconService.h"
-#include "mozIAsyncFavicons.h"
#include "nsCOMPtr.h"
#include "nsString.h"
#include "nsDataHashtable.h"
#include "nsServiceManagerUtils.h"
#include "nsTHashtable.h"
#include "nsToolkitCompsCID.h"
#include "nsURIHashKey.h"
@@ -45,17 +44,16 @@ public:
{
NS_NOTREACHED("Do not call me!");
}
mozilla::places::IconData iconData;
PRTime created;
};
class nsFaviconService final : public nsIFaviconService
- , public mozIAsyncFavicons
, public nsITimerCallback
, public nsINamed
{
public:
nsFaviconService();
/**
* Obtains the service's object.
@@ -119,17 +117,16 @@ public:
const nsACString& aGUID);
static mozilla::Atomic<int64_t> sLastInsertedIconId;
static void StoreLastInsertedId(const nsACString& aTable,
const int64_t aLastInsertedId);
NS_DECL_ISUPPORTS
NS_DECL_NSIFAVICONSERVICE
- NS_DECL_MOZIASYNCFAVICONS
NS_DECL_NSITIMERCALLBACK
NS_DECL_NSINAMED
private:
imgITools* GetImgTools() {
if (!mImgTools) {
mImgTools = do_CreateInstance("@mozilla.org/image/tools;1");
}
--- a/toolkit/components/places/nsIFaviconService.idl
+++ b/toolkit/components/places/nsIFaviconService.idl
@@ -1,16 +1,19 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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/. */
#include "nsISupports.idl"
interface nsIURI;
+interface nsIPrincipal;
+interface mozIPlacesPendingOperation;
+interface nsIFaviconDataCallback;
[scriptable, uuid(e81e0b0c-b9f1-4c2e-8f3c-b809933cf73c)]
interface nsIFaviconService : nsISupports
{
// The favicon is being loaded from a private browsing window
const unsigned long FAVICON_LOAD_PRIVATE = 1;
// The favicon is being loaded from a non-private browsing window
const unsigned long FAVICON_LOAD_NON_PRIVATE = 2;
@@ -110,16 +113,212 @@ interface nsIFaviconService : nsISupport
* The default favicon URI
*/
readonly attribute nsIURI defaultFavicon;
/**
* The default favicon mimeType
*/
readonly attribute AUTF8String defaultFaviconMimeType;
+
+ /**
+ * 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 an async network request.
+ *
+ * If the icon data already exists, we won't try to reload the icon unless
+ * aForceReload is true. Similarly, if the icon is in the failed favicon
+ * cache we won't do anything unless aForceReload is true, in which case
+ * we'll try to reload the favicon.
+ *
+ * This function will only save favicons for pages that are already stored in
+ * the database, like visited pages or bookmarks. For any other URIs, it
+ * will succeed but do nothing. This function will also ignore the error
+ * page favicon URI (see FAVICON_ERRORPAGE_URL below).
+ *
+ * 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.
+ *
+ * @param aPageURI
+ * URI of the page whose favicon is being set.
+ * @param aFaviconURI
+ * URI of the favicon to associate with the page.
+ * @param aForceReload
+ * If aForceReload is false, we try to reload the favicon only if we
+ * don't have it or it has expired from the cache. Setting
+ * aForceReload to true causes us to reload the favicon even if we
+ * have a usable copy.
+ * @param aFaviconLoadType
+ * Set to FAVICON_LOAD_PRIVATE if the favicon is loaded from a private
+ * browsing window. Set to FAVICON_LOAD_NON_PRIVATE otherwise.
+ * @param [optional] aCallback
+ * Once we're done setting and/or fetching the favicon, we invoke this
+ * callback.
+ * @param [optional] aLoadingPrincipal
+ * Principal of the page whose favicon is being set. If this argument
+ * is omitted, the loadingPrincipal defaults to the nullPrincipal.
+ * @param [optional] aRequestContextID
+ * used to inform Necko of how to link the
+ * favicon request with other requests in the same tab.
+ *
+ * @see nsIFaviconDataCallback in nsIFaviconService.idl.
+ */
+ mozIPlacesPendingOperation setAndFetchFaviconForPage(
+ in nsIURI aPageURI,
+ in nsIURI aFaviconURI,
+ in boolean aForceReload,
+ in unsigned long aFaviconLoadType,
+ [optional] in nsIFaviconDataCallback aCallback,
+ [optional] in nsIPrincipal aLoadingPrincipal,
+ [optional] in unsigned long long aRequestContextID);
+
+ /**
+ * 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.
+ *
+ * This function tries to optimize the favicon size, if it is bigger
+ * than a defined limit we will try to convert it to a 16x16 png image.
+ * If the conversion fails and favicon is still bigger than our max accepted
+ * size it won't be saved.
+ *
+ * @param aFaviconURI
+ * URI of the favicon whose data is being set.
+ * @param aData
+ * Binary contents of the favicon to save
+ * @param aDataLength
+ * Length of binary data
+ * @param 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.
+ * @param [optional] aExpiration
+ * Time in microseconds since the epoch when this favicon expires.
+ * Until this time, we won't try to load it again.
+ * @throws NS_ERROR_FAILURE
+ * Thrown if the favicon is overbloated and won't be saved to the db.
+ */
+ void replaceFaviconData(in nsIURI aFaviconURI,
+ [const,array,size_is(aDataLen)] in octet aData,
+ in unsigned long aDataLen,
+ in AUTF8String aMimeType,
+ [optional] in PRTime aExpiration);
+
+ /**
+ * Same as replaceFaviconData but the data is provided by a string
+ * containing a data URL.
+ *
+ * @see replaceFaviconData
+ *
+ * @param aFaviconURI
+ * URI of the favicon whose data is being set.
+ * @param aDataURL
+ * string containing a data URL that represents the contents of
+ * the favicon to save
+ * @param [optional] aExpiration
+ * Time in microseconds since the epoch when this favicon expires.
+ * Until this time, we won't try to load it again.
+ * @param [optional] aLoadingPrincipal
+ * Principal of the page whose favicon is being set. If this argument
+ * is omitted, the loadingPrincipal defaults to the nullPrincipal.
+ * @throws NS_ERROR_FAILURE
+ * Thrown if the favicon is overbloated and won't be saved to the db.
+ */
+ void replaceFaviconDataFromDataURL(in nsIURI aFaviconURI,
+ in AString aDataURL,
+ [optional] in PRTime aExpiration,
+ [optional] in nsIPrincipal aLoadingPrincipal);
+
+ /**
+ * Retrieves the favicon URI associated to the given page, if any.
+ *
+ * @param aPageURI
+ * URI of the page whose favicon URI we're looking up.
+ * @param 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.
+ * aDataLen will be always 0, aData will be an empty array, and
+ * aMimeType will be an empty string, regardless of whether a favicon
+ * was found.
+ * @param [optional] aPreferredWidth
+ * The preferred icon width, 0 for the biggest available.
+ *
+ * @note If a favicon specific to this page cannot be found, this will try to
+ * fallback to the /favicon.ico for the root domain.
+ *
+ * @see nsIFaviconDataCallback in nsIFaviconService.idl.
+ */
+ void getFaviconURLForPage(in nsIURI aPageURI,
+ in nsIFaviconDataCallback aCallback,
+ [optional] in unsigned short aPreferredWidth);
+
+ /**
+ * Retrieves the favicon URI and data associated to the given page, if any.
+ * If the page icon is not available, it will try to return the root domain
+ * icon data, when it's known.
+ *
+ * @param aPageURI
+ * URI of the page whose favicon URI and data we're looking up.
+ * @param 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.
+ * @param [optional] aPreferredWidth
+ * The preferred icon width, 0 for the biggest available.
+ * @note If a favicon specific to this page cannot be found, this will try to
+ * fallback to the /favicon.ico for the root domain.
+ *
+ * @see nsIFaviconDataCallback in nsIFaviconService.idl.
+ */
+ void getFaviconDataForPage(in nsIURI aPageURI,
+ in nsIFaviconDataCallback aCallback,
+ [optional] in unsigned short aPreferredWidth);
+
+ /**
+ * Copies cached favicons from a page to another one.
+ *
+ * @param aFromPageURI
+ * URI of the originating page.
+ * @param aToPageURI
+ * URI of the destination page.
+ * @param aFaviconLoadType
+ * Set to FAVICON_LOAD_PRIVATE if the copy is started from a private
+ * browsing window. Set to FAVICON_LOAD_NON_PRIVATE otherwise.
+ * @param [optional] aCallback
+ * Once we're done copying the favicon, we invoke this callback.
+ * If a copy has been done, the callback will report one of the
+ * favicons uri as aFaviconURI, otherwise all the params will be null.
+ */
+ void copyFavicons(in nsIURI aFromPageURI,
+ in nsIURI aToPageURI,
+ in unsigned long aFaviconLoadType,
+ [optional] in nsIFaviconDataCallback aCallback);
};
[scriptable, function, uuid(c85e5c82-b70f-4621-9528-beb2aa47fb44)]
interface nsIFaviconDataCallback : nsISupports
{
/**
* Called when the required favicon's information is available.
*
--- a/toolkit/components/places/tests/favicons/test_replaceFaviconData.js
+++ b/toolkit/components/places/tests/favicons/test_replaceFaviconData.js
@@ -1,13 +1,13 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
/*
- * Tests for mozIAsyncFavicons::replaceFaviconData()
+ * Tests for replaceFaviconData()
*/
var iconsvc = PlacesUtils.favicons;
var originalFavicon = {
file: do_get_file("favicon-normal16.png"),
uri: uri(do_get_file("favicon-normal16.png")),
data: readFileData(do_get_file("favicon-normal16.png")),
--- a/toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
+++ b/toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
@@ -1,13 +1,13 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
/*
- * Tests for mozIAsyncFavicons::replaceFaviconData()
+ * Tests for replaceFaviconData()
*/
var iconsvc = PlacesUtils.favicons;
var originalFavicon = {
file: do_get_file("favicon-normal16.png"),
uri: uri(do_get_file("favicon-normal16.png")),
data: readFileData(do_get_file("favicon-normal16.png")),
--- a/widget/windows/WinUtils.cpp
+++ b/widget/windows/WinUtils.cpp
@@ -32,17 +32,17 @@
#include "nsDirectoryServiceUtils.h"
#include "imgIContainer.h"
#include "imgITools.h"
#include "nsNetUtil.h"
#include "nsIOutputStream.h"
#include "nsNetCID.h"
#include "prtime.h"
#ifdef MOZ_PLACES
-#include "mozIAsyncFavicons.h"
+#include "nsIFaviconService.h"
#endif
#include "nsIIconURI.h"
#include "nsIDownloader.h"
#include "nsINetUtil.h"
#include "nsIChannel.h"
#include "nsIObserver.h"
#include "imgIEncoder.h"
#include "nsIThread.h"
@@ -1644,17 +1644,17 @@ nsresult FaviconHelper::GetOutputIconPat
nsresult
FaviconHelper::CacheIconFileFromFaviconURIAsync(nsCOMPtr<nsIURI> aFaviconPageURI,
nsCOMPtr<nsIFile> aICOFile,
nsCOMPtr<nsIThread> &aIOThread,
bool aURLShortcut)
{
#ifdef MOZ_PLACES
// Obtain the favicon service and get the favicon for the specified page
- nsCOMPtr<mozIAsyncFavicons> favIconSvc(
+ nsCOMPtr<nsIFaviconService> favIconSvc(
do_GetService("@mozilla.org/browser/favicon-service;1"));
NS_ENSURE_TRUE(favIconSvc, NS_ERROR_FAILURE);
nsCOMPtr<nsIFaviconDataCallback> callback =
new mozilla::widget::AsyncFaviconDataReady(aFaviconPageURI,
aIOThread,
aURLShortcut);