Skip to content

Commit

Permalink
fixed mozilla#1564: cleanup updates requested for bookmark context menu
Browse files Browse the repository at this point in the history
  • Loading branch information
kendallcorner committed Oct 30, 2019
1 parent f159e42 commit 05bea37
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 43 deletions.
31 changes: 21 additions & 10 deletions src/js/background/assignManager.js
Expand Up @@ -244,15 +244,18 @@ const assignManager = {
},

async getPermissions() {
const {permissions} = await browser.permissions.getAll();
permissions.includes("bookmarks") ? this.makeBookmarksMenu() : browser.contextMenus.remove(this.OPEN_IN_CONTAINER);
},

makeBookmarksMenu() {
this.initBookmarksMenu();
browser.contextualIdentities.onCreated.addListener(this.contextualIdentityCreated);
browser.contextualIdentities.onUpdated.addListener(this.contextualIdentityUpdated);
browser.contextualIdentities.onRemoved.addListener(this.contextualIdentityRemoved);
const hasPermission = await browser.permissions.contains({permissions: ["bookmarks"]});
if (hasPermission) {
this.initBookmarksMenu();
browser.contextualIdentities.onCreated.addListener(this.contextualIdentityCreated);
browser.contextualIdentities.onUpdated.addListener(this.contextualIdentityUpdated);
browser.contextualIdentities.onRemoved.addListener(this.contextualIdentityRemoved);
} else {
this.removeBookmarksMenu();
browser.contextualIdentities.onCreated.removeListener(this.contextualIdentityCreated);
browser.contextualIdentities.onUpdated.removeListener(this.contextualIdentityUpdated);
browser.contextualIdentities.onRemoved.removeListener(this.contextualIdentityRemoved);
}
},

contextualIdentityCreated(changeInfo) {
Expand Down Expand Up @@ -324,7 +327,7 @@ const assignManager = {
if(openInReaderMode) {
try {
const parsed = new URL(bookmark.url);
bookmark.url = parsed.searchParams.get("url") + parsed.hash; // can't believe const lets me do this ...
bookmark.url = parsed.searchParams.get("url") + parsed.hash;
} catch (err) {
return err.message;
}
Expand Down Expand Up @@ -521,6 +524,14 @@ const assignManager = {
icons: { "16": `img/usercontext.svg#${identity.icon}` }
});
}
},

async removeBookmarksMenu() {
browser.contextMenus.remove(this.OPEN_IN_CONTAINER);
const identities = await browser.contextualIdentities.query({});
for (const identity of identities) {
browser.contextMenus.remove(identity.cookieStoreId);
}
}
};

Expand Down
39 changes: 10 additions & 29 deletions src/js/options.js
@@ -1,39 +1,20 @@

function requestPermissions() {
async function requestPermissions() {
const checkbox = document.querySelector("#bookmarksPermissions");
if (checkbox.checked) {
browser.permissions.request({permissions: ["bookmarks"]}).
then((response) => {
if (response) {
browser.runtime.sendMessage({ method: "resetBookmarksContext" });
} else {
checkbox.checked = false;
}
}).
catch((err) => {
return err.message;
});
const response = await browser.permissions.request({permissions: ["bookmarks"]});
if (!response) { checkbox.checked = false; }
} else {
browser.permissions.remove({permissions: ["bookmarks"]}).
then(() => {
browser.runtime.sendMessage({ method: "resetBookmarksContext" });
}).
catch((err) => {
return err.message;
});
await browser.permissions.remove({permissions: ["bookmarks"]});
}
browser.runtime.sendMessage({ method: "resetBookmarksContext" });
}

function restoreOptions() {
browser.permissions.getAll()
.then((permissions) => {
if (permissions.permissions.includes("bookmarks")) {
document.querySelector("#bookmarksPermissions").checked = true;
}
}).
catch((err) => {
return err.message;
});
async function restoreOptions() {
const hasPermission = await browser.permissions.contains({permissions: ["bookmarks"]});
if (hasPermission) {
document.querySelector("#bookmarksPermissions").checked = true;
}
}


Expand Down
8 changes: 5 additions & 3 deletions src/options.html
Expand Up @@ -2,13 +2,15 @@

<html>
<head>
<meta charset="utf-8"/>
<meta charset="utf-8">
</head>

<body>
<form>
<input type="checkbox" id="bookmarksPermissions"/>
<label>Enable Bookmark Menus</label>
<label>
<input type="checkbox" id="bookmarksPermissions">
Enable Bookmark Menus
</label>
<p>This setting allows you to open a bookmark or folder of bookmarks in a container.</p>
</form>
<script src="js/options.js"></script>
Expand Down
2 changes: 1 addition & 1 deletion test/browser.mock.js
Expand Up @@ -93,7 +93,7 @@ module.exports = () => {
getURL: sinon.stub().returns("moz-extension://multi-account-containers/confirm-page.html")
},
permissions: {
getAll: sinon.stub().returns({"permissions": ["bookmarks"]})
contains: sinon.stub().returns(true)
}
};

Expand Down

0 comments on commit 05bea37

Please sign in to comment.