From d931095f3df784fde81573bbd38f544d434d11b8 Mon Sep 17 00:00:00 2001 From: Jonathan Kingston Date: Thu, 1 Jun 2017 22:03:07 +0100 Subject: [PATCH 1/2] Fix async favicon service issue for <55 builds. Fixes #574 --- index.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index bf70a1c..a9f7754 100644 --- a/index.js +++ b/index.js @@ -68,6 +68,8 @@ const { viewFor } = require("sdk/view/core"); const webExtension = require("sdk/webextension"); const windows = require("sdk/windows"); const windowUtils = require("sdk/window/utils"); +const { setTimeout } = require("sdk/timers"); + Cu.import("resource:///modules/CustomizableUI.jsm"); Cu.import("resource:///modules/CustomizableWidgets.jsm"); @@ -457,11 +459,22 @@ const ContainerService = { }, async _createTabObject(tab) { + const defaultIcon = "moz-icon://goat?size=16"; let url; try { - url = await getFavicon(tab.url); + url = await new Promise((resolve) => { + const icon = getFavicon(tab.url); + icon.then(resolve).catch(() => { + resolve(defaultIcon); + }); + // This is hacky but for some reason in <55 firefox had a broken getFavicon build + // Mozregression found: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=b01f44c896b2472b154a48c68cf343ae2289d6bd&tochange=d80c517658f5048491b7bf27da25246a297ab50b + setTimeout(() => { + resolve(defaultIcon); + }, 300); + }); } catch (e) { - url = ""; + url = defaultIcon; } return { title: tab.title, From 1d7248e95d03738fe9796afa35307fc1ea6ffe01 Mon Sep 17 00:00:00 2001 From: Jonathan Kingston Date: Wed, 31 May 2017 15:36:45 +0100 Subject: [PATCH 2/2] Fix first focus issue on opening browser action. Fixes #564 --- webextension/js/popup.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/webextension/js/popup.js b/webextension/js/popup.js index 26afa59..20f9237 100644 --- a/webextension/js/popup.js +++ b/webextension/js/popup.js @@ -429,8 +429,14 @@ Logic.registerPanel(P_CONTAINERS_LIST, { /* Not sure why extensions require a focus for the doorhanger, however it allows us to have a tabindex before the first selected item */ - document.addEventListener("focus", () => { + const focusHandler = () => { list.querySelector("tr").focus(); + document.removeEventListener("focus", focusHandler); + }; + document.addEventListener("focus", focusHandler); + /* If the user mousedown's first then remove the focus handler */ + document.addEventListener("mousedown", () => { + document.removeEventListener("focus", focusHandler); }); return Promise.resolve();