From 5044a5aca428ec38e5c41135826d65927401a5e0 Mon Sep 17 00:00:00 2001 From: Margaret Leibovic Date: Wed, 3 Aug 2011 11:09:10 -0700 Subject: [PATCH] Bug 670341 - about:permissions queries hosts for favicons, r=mak --- .../components/preferences/aboutPermissions.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/browser/components/preferences/aboutPermissions.js b/browser/components/preferences/aboutPermissions.js index c9a9e12aeee..1299064655f 100644 --- a/browser/components/preferences/aboutPermissions.js +++ b/browser/components/preferences/aboutPermissions.js @@ -92,18 +92,28 @@ Site.prototype = { * A callback function that takes a favicon image URL as a parameter. */ getFavicon: function Site_getFavicon(aCallback) { + let callbackExecuted = false; function faviconDataCallback(aURI, aDataLen, aData, aMimeType) { + // We don't need a second callback, so we can ignore it to avoid making + // a second database query for the favicon data. + if (callbackExecuted) { + return; + } try { - aCallback(aURI.spec); + // Use getFaviconLinkForIcon to get image data from the database instead + // of using the favicon URI to fetch image data over the network. + aCallback(gFaviconService.getFaviconLinkForIcon(aURI).spec); + callbackExecuted = true; } catch (e) { Cu.reportError("AboutPermissions: " + e); } } // Try to find favicion for both URIs. Callback will only be called if a - // favicon URI is found, so this means we'll always prefer the https favicon. - gFaviconService.getFaviconURLForPage(this.httpURI, faviconDataCallback); + // favicon URI is found. We'll ignore the second callback if it is called, + // so this means we'll always prefer the https favicon. gFaviconService.getFaviconURLForPage(this.httpsURI, faviconDataCallback); + gFaviconService.getFaviconURLForPage(this.httpURI, faviconDataCallback); }, /**