Skip to content

Commit

Permalink
Fixing favicon loading for all icons. Part of mozilla#561
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanKingston committed May 31, 2017
1 parent 45f34a5 commit 11e3194
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 24 deletions.
1 change: 1 addition & 0 deletions .eslintrc.js
Expand Up @@ -9,6 +9,7 @@ module.exports = {
"webextensions": true
},
"globals": {
"Utils": true,
"CustomizableUI": true,
"CustomizableWidgets": true,
"SessionStore": true,
Expand Down
1 change: 1 addition & 0 deletions webextension/confirm-page.html
Expand Up @@ -27,6 +27,7 @@ <h1 class="title-text">Open this site in your assigned container?</h1>
</form>
</main>

<script src="js/utils.js"></script>
<script src="js/confirm-page.js"></script>
</body>
</html>
9 changes: 4 additions & 5 deletions webextension/js/confirm-page.js
Expand Up @@ -5,7 +5,7 @@ async function load() {
const currentCookieStoreId = searchParams.get("currentCookieStoreId");
const redirectUrlElement = document.getElementById("redirect-url");
redirectUrlElement.textContent = redirectUrl;
createFavicon(redirectUrl, redirectUrlElement);
appendFavicon(redirectUrl, redirectUrlElement);

const container = await browser.contextualIdentities.get(cookieStoreId);
[...document.querySelectorAll(".container-name")].forEach((containerNameElement) => {
Expand All @@ -32,12 +32,11 @@ async function load() {
});
}

function createFavicon(pageUrl, redirectUrlElement) {
function appendFavicon(pageUrl, redirectUrlElement) {
const origin = new URL(pageUrl).origin;
const imageElement = document.createElement("img");
imageElement.src = `${origin}/favicon.ico`;
const favIconElement = Utils.createFavIconElement(`${origin}/favicon.ico`);

redirectUrlElement.prepend(imageElement);
redirectUrlElement.prepend(favIconElement);
}

function confirmSubmit(redirectUrl, cookieStoreId) {
Expand Down
23 changes: 5 additions & 18 deletions webextension/js/popup.js
Expand Up @@ -18,7 +18,6 @@ const P_CONTAINERS_EDIT = "containersEdit";
const P_CONTAINER_INFO = "containerInfo";
const P_CONTAINER_EDIT = "containerEdit";
const P_CONTAINER_DELETE = "containerDelete";
const DEFAULT_FAVICON = "moz-icon://goat?size=16";

/**
* Escapes any occurances of &, ", <, > or / with XML entities.
Expand Down Expand Up @@ -446,22 +445,9 @@ Logic.registerPanel(P_CONTAINERS_LIST, {
const siteSettings = await Logic.getAssignment(currentTab);
this.setupAssignmentCheckbox(siteSettings);
const currentPage = document.getElementById("current-page");
const favIconUrl = currentTab.favIconUrl || "";
currentPage.innerHTML = escaped`
<img class="offpage" src="${favIconUrl}" /> ${currentTab.title}
`;

const imageElement = currentPage.querySelector("img");
const loadListener = (e) => {
e.target.classList.remove("offpage");
e.target.removeEventListener("load", loadListener);
e.target.removeEventListener("error", errorListener);
};
const errorListener = (e) => {
e.target.src = DEFAULT_FAVICON;
};
imageElement.addEventListener("error", errorListener);
imageElement.addEventListener("load", loadListener);
currentPage.innerHTML = escaped`${currentTab.title}`;
const favIconElement = Utils.createFavIconElement(currentTab.favIconUrl || "");
currentPage.prepend(favIconElement);

const currentContainer = document.getElementById("current-container");
currentContainer.innerText = identity.name;
Expand Down Expand Up @@ -645,8 +631,9 @@ Logic.registerPanel(P_CONTAINER_INFO, {
fragment.appendChild(tr);
tr.classList.add("container-info-tab-row");
tr.innerHTML = escaped`
<td><img class="icon" src="${tab.favicon}" /></td>
<td></td>
<td class="container-info-tab-title truncate-text">${tab.title}</td>`;
tr.querySelector("td").appendChild(Utils.createFavIconElement(tab.favicon));

// On click, we activate this tab. But only if this tab is active.
if (tab.active) {
Expand Down
23 changes: 23 additions & 0 deletions webextension/js/utils.js
@@ -0,0 +1,23 @@
const DEFAULT_FAVICON = "moz-icon://goat?size=16";

// TODO use export here instead of globals
window.Utils = {

createFavIconElement(url) {
const imageElement = document.createElement("img");
imageElement.classList.add("icon", "offpage");
imageElement.src = url;
const loadListener = (e) => {
e.target.classList.remove("offpage");
e.target.removeEventListener("load", loadListener);
e.target.removeEventListener("error", errorListener);
};
const errorListener = (e) => {
e.target.src = DEFAULT_FAVICON;
};
imageElement.addEventListener("error", errorListener);
imageElement.addEventListener("load", loadListener);
return imageElement;
}

};
2 changes: 1 addition & 1 deletion webextension/popup.html
Expand Up @@ -148,7 +148,7 @@ <h4 class="delete-container-confirm-title">Remove This Container</h4>
</div>
</div>


<script src="js/utils.js"></script>
<script src="js/popup.js"></script>
</body>
</html>

0 comments on commit 11e3194

Please sign in to comment.