diff --git a/menu-search/README.md b/menu-search/README.md new file mode 100644 index 0000000..a3fb887 --- /dev/null +++ b/menu-search/README.md @@ -0,0 +1,20 @@ +# menu-search + +A demo of the [search API](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/search/). + +## What it does + +This add-on retrieves the list of installed search engines, and adds a context menu item for each one, displayed in the "selection" context. + +Each context menu item searches for the selected text using the corresponding search engine. + +This enables a user to: +* select some text to search for +* activate the context menu +* choose which search engine to use for the search. + +## What it shows + +* How to retrieve the set of search engines. +* How to search using a specific search engine. + diff --git a/menu-search/background.js b/menu-search/background.js new file mode 100644 index 0000000..29b59ed --- /dev/null +++ b/menu-search/background.js @@ -0,0 +1,26 @@ +/* +Create a menu item for each installed search engine. +The ID and title are both set to the search engine's name. +*/ +function createMenuItem(engines) { + for (let engine of engines) { + browser.menus.create({ + id: engine.name, + title: engine.name, + contexts: ["selection"] + }); + } +} + +browser.search.get().then(createMenuItem); + +/* +Search using the search engine whose name matches the +menu item's ID. +*/ +browser.menus.onClicked.addListener((info, tab) => { + browser.search.search({ + query: info.selectionText, + engine: info.menuItemId + }); +}); diff --git a/menu-search/icons/LICENSE b/menu-search/icons/LICENSE new file mode 100644 index 0000000..cb79109 --- /dev/null +++ b/menu-search/icons/LICENSE @@ -0,0 +1 @@ +The "page-32.png" and "page-48.png" icons are taken from the miu iconset created by Linh Pham Thi Dieu, and are used under the terms of its license: http://linhpham.me/miu/. \ No newline at end of file diff --git a/menu-search/icons/page-16.png b/menu-search/icons/page-16.png new file mode 100644 index 0000000..a6fed5c Binary files /dev/null and b/menu-search/icons/page-16.png differ diff --git a/menu-search/icons/page-32.png b/menu-search/icons/page-32.png new file mode 100644 index 0000000..dae663d Binary files /dev/null and b/menu-search/icons/page-32.png differ diff --git a/menu-search/icons/page-48.png b/menu-search/icons/page-48.png new file mode 100644 index 0000000..ba042cd Binary files /dev/null and b/menu-search/icons/page-48.png differ diff --git a/menu-search/manifest.json b/menu-search/manifest.json new file mode 100644 index 0000000..639373f --- /dev/null +++ b/menu-search/manifest.json @@ -0,0 +1,28 @@ +{ + + "manifest_version": 2, + "name": "Search using...", + "description": "Search ", + "version": "1.0", + "applications": { + "gecko": { + "strict_min_version": "63.0b14" + } + }, + + "background": { + "scripts": ["background.js"] + }, + + "permissions": [ + "menus", + "search" + ], + + "icons": { + "16": "icons/page-16.png", + "32": "icons/page-32.png", + "48": "icons/page-48.png" + } + +}