]> git.ktnx.net Git - icedeb.git/commitdiff
initial implementation of e10s. XUL/XPCOM is dropped
authorDamyan Ivanov <dmn@debian.org>
Sat, 17 Jun 2017 21:54:26 +0000 (21:54 +0000)
committerDamyan Ivanov <dmn@debian.org>
Sat, 17 Jun 2017 21:54:26 +0000 (21:54 +0000)
build
icedeb-content.js [new file with mode: 0644]
icedeb.css [new file with mode: 0644]
icedeb.html [new file with mode: 0644]
icedeb.js [new file with mode: 0644]
icons/icedeb-addon.png [new file with mode: 0644]
icons/openlogo-nd.svg [new file with mode: 0644]
manifest.json [new file with mode: 0644]
res/icon.xcf [new file with mode: 0644]

diff --git a/build b/build
index 62e4af781a8bb51189def118ea31df7bc0f036a2..08d261af14d288a2e1042282c06687c4d31819fe 100644 (file)
--- 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 "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
 btn2png bts
 btn2png pts
 btn2png deb
@@ -22,4 +24,5 @@ btn2png security
 
 [ ! -e $PKG.xpi ] || rm $PKG.xpi
 
 
 [ ! -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 (file)
index 0000000..c2a2d36
--- /dev/null
@@ -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 (file)
index 0000000..d1b2f8b
--- /dev/null
@@ -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 (file)
index 0000000..c00a15b
--- /dev/null
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <link rel="stylesheet" href="icedeb.css"/>
+  </head>
+  <script src="icedeb.js"></script>
+  <h3>Query Debian pages</h3>
+  <div class="icedeb-button" id="bts">Bug tracker (bugs.debian.org)</div>
+  <div class="icedeb-button" id="pts">Package tracker (tracker.debian.org)</div>
+  <div class="icedeb-button" id="deb">Package directory (packages.debian.org)</div>
+  <div class="icedeb-button" id="ml">Mailing lists (lists.debian.org)</div>
+  <div class="icedeb-button" id="ddpo">Developer overview</div>
+  <div class="icedeb-button" id="buildd">Build daemons (buildd.debian.org)</div>
+  <div class="icedeb-button" id="security">Security tracker (security-tracker.debian.org)</div>
+  <textarea id="clipboard" contenteditable="true"></textarea>
+  <div id="error" class="hidden"></div>
+  <p id="sorry" class="hidden">Sorry, no support for X11-style <q>selection clipboard</q>.</p>
+</html>
diff --git a/icedeb.js b/icedeb.js
new file mode 100644 (file)
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 (file)
index 0000000..54ac607
Binary files /dev/null and b/icons/icedeb-addon.png differ
diff --git a/icons/openlogo-nd.svg b/icons/openlogo-nd.svg
new file mode 100644 (file)
index 0000000..50dcb70
--- /dev/null
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [\r
+       <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
+       <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">\r
+       <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">\r
+       <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">\r
+       <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">\r
+       <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">\r
+       <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">\r
+       <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">\r
+       <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">\r
+       <!ENTITY ns_svg "http://www.w3.org/2000/svg">\r
+       <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">\r
+]>\r
+<svg \r
+        xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="262 450" i:rulerOrigin="0 0" i:pageBounds="0 792 612 0"\r
+        xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
+        width="87.041" height="108.445" viewBox="0 0 87.041 108.445" overflow="visible" enable-background="new 0 0 87.041 108.445"\r
+        xml:space="preserve">\r
+       <metadata>\r
+               <variableSets  xmlns="&ns_vars;">\r
+                       <variableSet  varSetName="binding1" locked="none">\r
+                               <variables></variables>\r
+                               <v:sampleDataSets  xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>\r
+                       </variableSet>\r
+               </variableSets>\r
+               <sfw  xmlns="&ns_sfw;">\r
+                       <slices></slices>\r
+                       <sliceSourceBounds  y="341.555" x="262" width="87.041" height="108.445" bottomLeftOrigin="true"></sliceSourceBounds>\r
+               </sfw>\r
+       </metadata>\r
+       <g id="Layer_1" i:layer="yes" i:dimmedPercent="50" i:rgbTrio="#4F008000FFFF">\r
+               <g>\r
+                       <path i:knockout="Off" fill="#A80030" d="M51.986,57.297c-1.797,0.025,0.34,0.926,2.686,1.287\r
+                               c0.648-0.506,1.236-1.018,1.76-1.516C54.971,57.426,53.484,57.434,51.986,57.297"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M61.631,54.893c1.07-1.477,1.85-3.094,2.125-4.766c-0.24,1.192-0.887,2.221-1.496,3.307\r
+                               c-3.359,2.115-0.316-1.256-0.002-2.537C58.646,55.443,61.762,53.623,61.631,54.893"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M65.191,45.629c0.217-3.236-0.637-2.213-0.924-0.978\r
+                               C64.602,44.825,64.867,46.932,65.191,45.629"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M45.172,1.399c0.959,0.172,2.072,0.304,1.916,0.533\r
+                               C48.137,1.702,48.375,1.49,45.172,1.399"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M47.088,1.932l-0.678,0.14l0.631-0.056L47.088,1.932"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M76.992,46.856c0.107,2.906-0.85,4.316-1.713,6.812l-1.553,0.776\r
+                               c-1.271,2.468,0.123,1.567-0.787,3.53c-1.984,1.764-6.021,5.52-7.313,5.863c-0.943-0.021,0.639-1.113,0.846-1.541\r
+                               c-2.656,1.824-2.131,2.738-6.193,3.846l-0.119-0.264c-10.018,4.713-23.934-4.627-23.751-17.371\r
+                               c-0.107,0.809-0.304,0.607-0.526,0.934c-0.517-6.557,3.028-13.143,9.007-15.832c5.848-2.895,12.704-1.707,16.893,2.197\r
+                               c-2.301-3.014-6.881-6.209-12.309-5.91c-5.317,0.084-10.291,3.463-11.951,7.131c-2.724,1.715-3.04,6.611-4.227,7.507\r
+                               C31.699,56.271,36.3,61.342,44.083,67.307c1.225,0.826,0.345,0.951,0.511,1.58c-2.586-1.211-4.954-3.039-6.901-5.277\r
+                               c1.033,1.512,2.148,2.982,3.589,4.137c-2.438-0.826-5.695-5.908-6.646-6.115c4.203,7.525,17.052,13.197,23.78,10.383\r
+                               c-3.113,0.115-7.068,0.064-10.566-1.229c-1.469-0.756-3.467-2.322-3.11-2.615c9.182,3.43,18.667,2.598,26.612-3.771\r
+                               c2.021-1.574,4.229-4.252,4.867-4.289c-0.961,1.445,0.164,0.695-0.574,1.971c2.014-3.248-0.875-1.322,2.082-5.609l1.092,1.504\r
+                               c-0.406-2.696,3.348-5.97,2.967-10.234c0.861-1.304,0.961,1.403,0.047,4.403c1.268-3.328,0.334-3.863,0.66-6.609\r
+                               c0.352,0.923,0.814,1.904,1.051,2.878c-0.826-3.216,0.848-5.416,1.262-7.285c-0.408-0.181-1.275,1.422-1.473-2.377\r
+                               c0.029-1.65,0.459-0.865,0.625-1.271c-0.324-0.186-1.174-1.451-1.691-3.877c0.375-0.57,1.002,1.478,1.512,1.562\r
+                               c-0.328-1.929-0.893-3.4-0.916-4.88c-1.49-3.114-0.527,0.415-1.736-1.337c-1.586-4.947,1.316-1.148,1.512-3.396\r
+                               c2.404,3.483,3.775,8.881,4.404,11.117c-0.48-2.726-1.256-5.367-2.203-7.922c0.73,0.307-1.176-5.609,0.949-1.691\r
+                               c-2.27-8.352-9.715-16.156-16.564-19.818c0.838,0.767,1.896,1.73,1.516,1.881c-3.406-2.028-2.807-2.186-3.295-3.043\r
+                               c-2.775-1.129-2.957,0.091-4.795,0.002c-5.23-2.774-6.238-2.479-11.051-4.217l0.219,1.023c-3.465-1.154-4.037,0.438-7.782,0.004\r
+                               c-0.228-0.178,1.2-0.644,2.375-0.815c-3.35,0.442-3.193-0.66-6.471,0.122c0.808-0.567,1.662-0.942,2.524-1.424\r
+                               c-2.732,0.166-6.522,1.59-5.352,0.295c-4.456,1.988-12.37,4.779-16.811,8.943l-0.14-0.933c-2.035,2.443-8.874,7.296-9.419,10.46\r
+                               l-0.544,0.127c-1.059,1.793-1.744,3.825-2.584,5.67c-1.385,2.36-2.03,0.908-1.833,1.278c-2.724,5.523-4.077,10.164-5.246,13.97\r
+                               c0.833,1.245,0.02,7.495,0.335,12.497c-1.368,24.704,17.338,48.69,37.785,54.228c2.997,1.072,7.454,1.031,11.245,1.141\r
+                               c-4.473-1.279-5.051-0.678-9.408-2.197c-3.143-1.48-3.832-3.17-6.058-5.102l0.881,1.557c-4.366-1.545-2.539-1.912-6.091-3.037\r
+                               l0.941-1.229c-1.415-0.107-3.748-2.385-4.386-3.646l-1.548,0.061c-1.86-2.295-2.851-3.949-2.779-5.23l-0.5,0.891\r
+                               c-0.567-0.973-6.843-8.607-3.587-6.83c-0.605-0.553-1.409-0.9-2.281-2.484l0.663-0.758c-1.567-2.016-2.884-4.6-2.784-5.461\r
+                               c0.836,1.129,1.416,1.34,1.99,1.533c-3.957-9.818-4.179-0.541-7.176-9.994l0.634-0.051c-0.486-0.732-0.781-1.527-1.172-2.307\r
+                               l0.276-2.75C4.667,58.121,6.719,47.409,7.13,41.534c0.285-2.389,2.378-4.932,3.97-8.92l-0.97-0.167\r
+                               c1.854-3.234,10.586-12.988,14.63-12.486c1.959-2.461-0.389-0.009-0.772-0.629c4.303-4.453,5.656-3.146,8.56-3.947\r
+                               c3.132-1.859-2.688,0.725-1.203-0.709c5.414-1.383,3.837-3.144,10.9-3.846c0.745,0.424-1.729,0.655-2.35,1.205\r
+                               c4.511-2.207,14.275-1.705,20.617,1.225c7.359,3.439,15.627,13.605,15.953,23.17l0.371,0.1\r
+                               c-0.188,3.802,0.582,8.199-0.752,12.238L76.992,46.856"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M32.372,59.764l-0.252,1.26c1.181,1.604,2.118,3.342,3.626,4.596\r
+                               C34.661,63.502,33.855,62.627,32.372,59.764"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M35.164,59.654c-0.625-0.691-0.995-1.523-1.409-2.352\r
+                               c0.396,1.457,1.207,2.709,1.962,3.982L35.164,59.654"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M84.568,48.916l-0.264,0.662c-0.484,3.438-1.529,6.84-3.131,9.994\r
+                               C82.943,56.244,84.088,52.604,84.568,48.916"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M45.527,0.537C46.742,0.092,48.514,0.293,49.803,0c-1.68,0.141-3.352,0.225-5.003,0.438\r
+                               L45.527,0.537"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M2.872,23.219c0.28,2.592-1.95,3.598,0.494,1.889\r
+                               C4.676,22.157,2.854,24.293,2.872,23.219"/>\r
+                       <path i:knockout="Off" fill="#A80030" d="M0,35.215c0.563-1.728,0.665-2.766,0.88-3.766C-0.676,33.438,0.164,33.862,0,35.215"/>\r
+               </g>\r
+       </g>\r
+</svg>\r
diff --git a/manifest.json b/manifest.json
new file mode 100644 (file)
index 0000000..025f970
--- /dev/null
@@ -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 (file)
index 0000000..9f6cc29
Binary files /dev/null and b/res/icon.xcf differ