diff --git a/.gitignore b/.gitignore index 6131751..27187e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -*.svg \ No newline at end of file +*.svg +printed.png \ No newline at end of file diff --git a/webextension/background.js b/webextension/background.js index 451e6fc..405330c 100644 --- a/webextension/background.js +++ b/webextension/background.js @@ -1,16 +1,57 @@ -console.log("background"); +var getPageActionIcon = function(){ + var faktor = 2; + var canvas = document.createElement("canvas"); + canvas.width = canvas.height = 19 * faktor; + var context = canvas.getContext("2d"); + var img = document.createElement("img"); + img.src = "icons/printed" + (19 * faktor) + ".png" + + + return function getPageActionIcon(c){ + context.clearRect(0, 0, canvas.width, canvas.height); + context.drawImage(img, 0, 0, canvas.width, canvas.height); + if (c > 1){ + context.fillStyle = "#000000"; + context.fillRect(9 * faktor, 9 * faktor, 10 * faktor, 10 * faktor); + context.strokeStyle = context.fillStyle = "#FFFFFF"; + context.textAlign = "center"; + context.textBaseline = "middle"; + context.font = "Bold " + (10 * faktor) + "px Arial"; + context.fillText(c < 10? c: ">", 14 * faktor, 15 * faktor); + } + return context.getImageData(0, 0, canvas.width, canvas.height); + } +}(); + +function updatePageActionIcon(tabId, c){ + if (c === 0){ + browser.pageAction.hide(tabId); + } + else { + browser.pageAction.show(tabId); + browser.pageAction.setIcon({ + tabId: tabId, + imageData: getPageActionIcon(c) + }); + } +} + +var c = 0; + browser.tabs.query({}).then(function(tabs){ - console.log("tabs", tabs); tabs.forEach(function(tab){ - console.log("tab", tab); - browser.pageAction.show(tab.id).then(function(){console.log("success");}, function(){console.log("error");}); + browser.pageAction.show(tab.id); }); }); -browser.tabs.onActivated.addListener(function(tab){ - browser.pageAction.show(tab.id); +browser.tabs.onActivated.addListener(function(activeInfo){ + c += 1; + // console.log(c); + updatePageActionIcon(activeInfo.tabId , c); }); -browser.tabs.onUpdate.addistener(function(tab){ - browser.pageAction.show(tab.id); +browser.tabs.onUpdated.addListener(function(tabId){ + // c += 1; + //console.log(c); + // updatePageActionIcon(tabId, c); }); \ No newline at end of file diff --git a/webextension/contentScript.js b/webextension/contentScript.js new file mode 100644 index 0000000..8589882 --- /dev/null +++ b/webextension/contentScript.js @@ -0,0 +1,8 @@ +var oldAlert = alert; +exportFunction( + function(str){ + oldAlert("From page script: " + str); + }, + window, + {defineAs:'alert'} +); \ No newline at end of file diff --git a/webextension/icons/printed19.png b/webextension/icons/printed19.png index 7ec5cf4..47f97c0 100644 Binary files a/webextension/icons/printed19.png and b/webextension/icons/printed19.png differ diff --git a/webextension/icons/printed38.png b/webextension/icons/printed38.png index 15304ed..2fd7368 100644 Binary files a/webextension/icons/printed38.png and b/webextension/icons/printed38.png differ diff --git a/webextension/manifest.json b/webextension/manifest.json index a5383be..f8bb719 100644 --- a/webextension/manifest.json +++ b/webextension/manifest.json @@ -14,6 +14,13 @@ }, "default_popup": "pageAction/index.html" }, + "content_scripts": [ + { + "matches": [""], + "js": ["contentScript.js"], + "run_at": "document_start" + } + ], "applications": { "gecko": {