diff --git a/src/context-menu.js b/src/context-menu.js new file mode 100644 index 0000000..c62c6cd --- /dev/null +++ b/src/context-menu.js @@ -0,0 +1,21 @@ +// Checking if context menu is enabled in options +chrome.storage.sync.get({turnOffContextMenu: false}, results => { + if (results.turnOffContextMenu) { + return; + } + // Set up onclick listener for context menu + chrome.contextMenus.onClicked.addListener(tab => { + chrome.tabs.executeScript({file: 'script.js', allFrames: true}); + }); + + // Set up context menu at install time + chrome.runtime.onInstalled.addListener(function () { + // Create context menu for `page` and `video` type + let contexts = ["page", "video"]; + for (let i = 0; i < contexts.length; i++) { + let context = contexts[i]; + let title = "Picture-in-picture"; + chrome.contextMenus.create({"title": title, "contexts": [context], "id": "context" + context}); + } + }); +}); diff --git a/src/manifest.json b/src/manifest.json index 1b6741c..21bcb20 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -7,7 +7,7 @@ }, "background": { "persistent": false, - "scripts": ["background.js"] + "scripts": ["background.js", "context-menu.js"] }, "browser_action": { "default_icon": { @@ -32,7 +32,8 @@ "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'", "permissions": [ "", - "storage" + "storage", + "contextMenus" ], "minimum_chrome_version": "69.0.3483.0", "manifest_version": 2 diff --git a/src/options.html b/src/options.html index 2a7214b..f56e33a 100644 --- a/src/options.html +++ b/src/options.html @@ -3,10 +3,15 @@ - +
+ + diff --git a/src/options.js b/src/options.js index 509d06c..bbce3b9 100644 --- a/src/options.js +++ b/src/options.js @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -chrome.storage.sync.get({ optOutAnalytics: false }, results => { +chrome.storage.sync.get({ optOutAnalytics: false, turnOffContextMenu: false}, results => { const optOutAnalyticsCheckbox = document.querySelector('#optOutAnalytics'); optOutAnalyticsCheckbox.checked = results.optOutAnalytics; @@ -20,7 +20,21 @@ chrome.storage.sync.get({ optOutAnalytics: false }, results => { chrome.storage.sync.set({ optOutAnalytics: optOutAnalyticsCheckbox.checked }, _ => { - // Reload extension to make opt-out change immediate. + // Reload extension to make opt-out change immediate. + chrome.runtime.reload(); + window.close(); + }); + }; + + // Settings for turn off context menu + const turnOffContextMenuCheckbox = document.querySelector('#turnOffContextMenu'); + + turnOffContextMenuCheckbox.checked = results.turnOffContextMenu; + turnOffContextMenuCheckbox.onchange = _ => { + chrome.storage.sync.set({ + turnOffContextMenu: turnOffContextMenuCheckbox.checked + }, _ => { + // Reload extension to make opt-out change immediate. chrome.runtime.reload(); window.close(); });