From 770b99eb23ca37c131fd5497cb5d1ce22bfb1b8d Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Sat, 17 Jun 2017 21:54:26 +0000 Subject: [PATCH] initial implementation of e10s. XUL/XPCOM is dropped --- build | 5 +- icedeb-content.js | 6 ++ icedeb.css | 10 +++ icedeb.html | 19 ++++++ icedeb.js | 141 +++++++++++++++++++++++++++++++++++++++++ icons/icedeb-addon.png | Bin 0 -> 2722 bytes icons/openlogo-nd.svg | 86 +++++++++++++++++++++++++ manifest.json | 28 ++++++++ res/icon.xcf | Bin 0 -> 5873 bytes 9 files changed, 294 insertions(+), 1 deletion(-) create mode 100644 icedeb-content.js create mode 100644 icedeb.css create mode 100644 icedeb.html create mode 100644 icedeb.js create mode 100644 icons/icedeb-addon.png create mode 100644 icons/openlogo-nd.svg create mode 100644 manifest.json create mode 100644 res/icon.xcf diff --git a/build b/build index 62e4af7..08d261a 100644 --- a/build +++ b/build @@ -12,6 +12,8 @@ btn2png() { xcf2png -o "chrome/content/$PKG-$btn.png" res/button-bts.xcf "base" "$tag small" "$tag big" } +xcf2png -o "icons/icedeb-addon.png" res/icon.xcf -f -T + btn2png bts btn2png pts btn2png deb @@ -22,4 +24,5 @@ btn2png security [ ! -e $PKG.xpi ] || rm $PKG.xpi -zip -r $PKG.xpi chrome install* chrome.manifest README TODO res +zip -r $PKG.xpi README TODO res \ + icedeb.html icedeb.css icedeb.js icedeb-content.js icons manifest.json diff --git a/icedeb-content.js b/icedeb-content.js new file mode 100644 index 0000000..c2a2d36 --- /dev/null +++ b/icedeb-content.js @@ -0,0 +1,6 @@ +function listener(request, sender, sendResponse) { + window.location = request.url; + browser.runtime.onMessage.removeListener(listener); +} + +browser.runtime.onMessage.addListener(listener); diff --git a/icedeb.css b/icedeb.css new file mode 100644 index 0000000..d1b2f8b --- /dev/null +++ b/icedeb.css @@ -0,0 +1,10 @@ +div.icedeb-button { + background: lightgray; + border-radius: 5px; +} +.hidden { display: none; } +#clipboard { + position: absolute; + left: -50000px; +} +#sorry { font-size: 80%; } diff --git a/icedeb.html b/icedeb.html new file mode 100644 index 0000000..c00a15b --- /dev/null +++ b/icedeb.html @@ -0,0 +1,19 @@ + + + + + + + +

Query Debian pages

+
Bug tracker (bugs.debian.org)
+
Package tracker (tracker.debian.org)
+
Package directory (packages.debian.org)
+
Mailing lists (lists.debian.org)
+
Developer overview
+
Build daemons (buildd.debian.org)
+
Security tracker (security-tracker.debian.org)
+ + + + diff --git a/icedeb.js b/icedeb.js new file mode 100644 index 0000000..dcd1197 --- /dev/null +++ b/icedeb.js @@ -0,0 +1,141 @@ +function load_settings() { + browser.storage.local.get({auto_close: true}) + .then( + function(v) { + document.getElementById('auto-close').checked = v.auto_close === true; + //console.log('Success', v); + }, + function() { + document.getElementById('auto-close').checked = true; + //console.log('Failure'); + } + ); +} + +function save_settings() { + let v = document.getElementById('auto-close').checked; + browser.storage.local.set({ + auto_close: v, + }); + //console.log('stored', v); +} + +function trim(word) { + if (!word) return word; + + var oldword; + do { + oldword = word; + + word = word.replace(/^[^a-zA-Z0-9]+/, ''); + word = word.replace(/[^a-zA-Z0-9]+$/, ''); + word = word.replace(/^Bug#/i, ''); + } while ( oldword != word ); + + return word; +} + +function open_tab(url) { + browser.tabs.create({url:url}) + .then( + function() {}, + function(err) { + console.log('Error creating tab', err); + } + ); +} + +document.addEventListener('click', (e) => { + console.log(e.button); + if ( !e.target.classList.contains('icedeb-button') ) + return; + + let autoclose = true; + + let clip_input = document.getElementById("clipboard"); + clip_input.focus(); + if (!document.execCommand("paste")) { + let err = document.getElementById('error'); + err.textContent = 'Error executing Paste'; + err.classList.remove('hidden'); + return; + } + + let clip = trim(clip_input.textContent); + + let url; + + switch (e.target.id) { + case 'bts': + url = 'https://bugs.debian.org/' + clip; + break; + case 'pts': + url = 'https://tracker.debian.org/' + clip; + break; + case 'deb': + url = 'https://packages.debian.org/' + clip; + break; + case 'ml': + url = 'https://lists.debian.org/msgid-search/' + clip; + break; + case 'ddpo': + url = 'https://qa.debian.org/developer.php'; + if (clip != '') + url += '?login=' + clip; + break; + case 'buildd': + url = 'https://buildd.debian.org/' + clip; + break; + case 'security': + url = 'https://security-tracker.debian.org/'; + if (clip != '') + url += 'tracker/' + clip; + break; + } + + if (e.button == 1) { + open_tab(url); + if (autoclose) window.close(); + return; + } + + browser.tabs.query({active:true, currentWindow:true}) + .then( + function(tabs) { + browser.tabs.executeScript(tabs[0].id, {file: '/icedeb-content.js'}) + .then( + function(){ + browser.tabs.sendMessage( tabs[0].id, {url:url} ); + if (autoclose) window.close(); + }, + function(err){ + console.log('Error executing script', err); + }); + + }, + function(err) { + console.log('Error querying the active tab of the current window', err); + open_tab(url); + if (autoclose) window.close(); + } + ); +}); + +document.addEventListener('change', (e) => { + if ( !e.target.classList.contains('icedeb-option') ) + return; + + save_settings(); +}); + +browser.runtime.getPlatformInfo() + .then(function(info) { + console.log(info.os); + + switch (info.os) { + case 'linux': + case 'openbsd': + document.getElementById('sorry').classList.remove('hidden'); + break; + } + }); diff --git a/icons/icedeb-addon.png b/icons/icedeb-addon.png new file mode 100644 index 0000000000000000000000000000000000000000..54ac607dfe5e0ec3a393061e9275f6a7caa4e042 GIT binary patch literal 2722 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 literal 0 HcmV?d00001 diff --git a/icons/openlogo-nd.svg b/icons/openlogo-nd.svg new file mode 100644 index 0000000..50dcb70 --- /dev/null +++ b/icons/openlogo-nd.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..025f970 --- /dev/null +++ b/manifest.json @@ -0,0 +1,28 @@ +{ + "applications": { + "gecko": { + "id": "{8fb11c5b-84eb-4da0-9128-292eacce2dcb}", + "strict_min_version": "42.0" + } + }, + "author": "Damyan Ivanov", + "manifest_version": 2, + "version": "2.0", + "name": "Debian buttons", + "description": "Query Debian-related pages using the text in the clipboard", + "homepage_url": "http://icedeb.ktnx.net/", + "icons": { + "48": "icons/icedeb-addon.png" + }, + "permissions": [ + "activeTab", "storage", "clipboardRead" + ], + "browser_action": { + "browser_style": true, + "default_icon": { + "48": "icons/openlogo-nd.svg" + }, + "default_title": "Query Debian pages", + "default_popup": "icedeb.html" + } +} diff --git a/res/icon.xcf b/res/icon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..9f6cc29bb317706fcb7849d9bba5e56b1f7f7b35 GIT binary patch literal 5873 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 literal 0 HcmV?d00001 -- 2.39.2