Browse Source

Dont rely on 'this' staying alive long enough for getting favicons.

This fixes #809.
pull/1/head
wolfbeast 4 years ago committed by Roy Tam
parent
commit
45cb285411
  1. 9
      application/basilisk/modules/WindowsPreviewPerTab.jsm
  2. 9
      application/palemoon/modules/WindowsPreviewPerTab.jsm

9
application/basilisk/modules/WindowsPreviewPerTab.jsm

@ -597,6 +597,7 @@ TabWindow.prototype = {
"file", "chrome", "resource", "about"
]),
onLinkIconAvailable: function (aBrowser, aIconURL) {
let self = this;
let requestURL = null;
if (aIconURL) {
let shouldRequestFaviconURL = true;
@ -613,15 +614,15 @@ TabWindow.prototype = {
let isDefaultFavicon = !requestURL;
getFaviconAsImage(
requestURL,
PrivateBrowsingUtils.isWindowPrivate(this.win),
PrivateBrowsingUtils.isWindowPrivate(self.win),
img => {
let index = this.tabbrowser.browsers.indexOf(aBrowser);
let index = self.tabbrowser.browsers.indexOf(aBrowser);
// Only add it if we've found the index and the URI is still the same.
// The tab could have closed, and there's no guarantee the icons
// will have finished fetching 'in order'.
if (index != -1) {
let tab = this.tabbrowser.tabs[index];
let preview = this.previews.get(tab);
let tab = self.tabbrowser.tabs[index];
let preview = self.previews.get(tab);
if (tab.getAttribute("image") == aIconURL ||
(!preview.icon && isDefaultFavicon)) {
preview.icon = img;

9
application/palemoon/modules/WindowsPreviewPerTab.jsm

@ -595,6 +595,7 @@ TabWindow.prototype = {
"file", "chrome", "resource", "about"
]),
onLinkIconAvailable: function (aBrowser, aIconURL) {
let self = this;
let requestURL = null;
if (aIconURL) {
let shouldRequestFaviconURL = true;
@ -611,15 +612,15 @@ TabWindow.prototype = {
let isDefaultFavicon = !requestURL;
getFaviconAsImage(
requestURL,
PrivateBrowsingUtils.isWindowPrivate(this.win),
PrivateBrowsingUtils.isWindowPrivate(self.win),
img => {
let index = this.tabbrowser.browsers.indexOf(aBrowser);
let index = self.tabbrowser.browsers.indexOf(aBrowser);
// Only add it if we've found the index and the URI is still the same.
// The tab could have closed, and there's no guarantee the icons
// will have finished fetching 'in order'.
if (index != -1) {
let tab = this.tabbrowser.tabs[index];
let preview = this.previews.get(tab);
let tab = self.tabbrowser.tabs[index];
let preview = self.previews.get(tab);
if (tab.getAttribute("image") == aIconURL ||
(!preview.icon && isDefaultFavicon)) {
preview.icon = img;

Loading…
Cancel
Save