diff options
-rw-r--r-- | html/display_panel/content/main_panel.js | 3 | ||||
-rw-r--r-- | main_background.js | 118 |
2 files changed, 97 insertions, 24 deletions
diff --git a/html/display_panel/content/main_panel.js b/html/display_panel/content/main_panel.js index 44be902..a724c75 100644 --- a/html/display_panel/content/main_panel.js +++ b/html/display_panel/content/main_panel.js @@ -35,6 +35,7 @@ var current_blocked_data; * */ function generate_HTML(blocked_data){ + current_blocked_data = blocked_data; var a = blocked_data; var button_complain = '<a id="complain-contact" class="button white" href="#"><span>Complain to site owner</span></a>'; @@ -80,7 +81,7 @@ function generate_HTML(blocked_data){ document.getElementById("wl_"+i).addEventListener("click",function(a){ console.log(a.path[0].id + " clicked"); var temp = current_blocked_data["blocked"][parseInt(a.path[0].id.substr(3))]; - console.log(temp); + console.log(temp); myPort.postMessage({"whitelist_script": temp}); }); } diff --git a/main_background.js b/main_background.js index caa40cd..27b788b 100644 --- a/main_background.js +++ b/main_background.js @@ -21,22 +21,53 @@ function set_webex(){ /* * -* Called when something changes the persistent data of the add-on. +* Called when something changes the persistent data of the add-on. * -* The only things that should need to change this data are: -* a) The "Whitelist this page" button -* b) The options screen +* The only things that should need to change this data are: +* a) The "Whitelist this page" button +* b) The options screen * -* When the actual blocking is implemented, this will need to comminicate -* with its code to update accordingly +* When the actual blocking is implemented, this will need to comminicate +* with its code to update accordingly * +* The object stored in storage will look like this: +* +* +* { +* pref_body : "", +* pref_complaint_tab : "", +* pref_notify_analyze : "", +* pref_subject : "", +* // The domains that are "blanket" whitelisted +* pref_whitelist : { +* "a.com" : true, +* "b.com" : true +* }, +* // Individual scripts that have been whitelisted +* whitelist : { +* "example.com":{ +* "a.js" : true +* }, +* "domain.com": { +* "a.js" : true, +* "b.js" : false +* } +* } +* } +* +* +* +* +* +* +* */ function options_listener(changes, area){ console.log("Items updated in area" + area +": "); var changedItems = Object.keys(changes); var changed_items = ""; - for (var i = 0; i < changedItems.length; i++;) { + for (var i = 0; i < changedItems.length; i++){ var item = changedItems[i]; changed_items += item + ","; } @@ -62,7 +93,6 @@ function open_popup_tab(){ * * Sends a message to the content script that updates the popup for a page. * -* * var example_blocked_info = { * "accepted": [["REASON 1","SOURCE 1"],["REASON 2","SOURCE 2"]], * "blocked": [["REASON 1","SOURCE 1"],["REASON 2","SOURCE 2"]], @@ -95,14 +125,43 @@ function connected(p) { console.log("Message:"); console.log(p); p.onMessage.addListener(function(m) { - - if(m["whitelist_script"] !== undefined){ - console.log("whitelisting script " + m["whitelist_script"][0]); + /** + * Updates the entry of the current URL in whitelist with + * + */ + function set_script(script,tof){ + console.log("setting script '" + script + "' whitelisted status to "+tof); + // Remember that we do not trust the names of whitelisted scripts. + var current_url = ""; + function geturl(tabs) { + // Got the URL of the current open tab + current_url = tabs[0]["url"]; + function storage_got(items){ + console.log("got storage:"); + console.log(items); + var new_items = items; + if(new_items["whitelist"] === undefined){ + new_items["whitelist"] = {}; + } + if(new_items["whitelist"][current_url] === undefined){ + new_items["whitelist"][current_url] = {}; + } + console.log(script); + new_items["whitelist"][current_url][script] = tof; + webex.storage.local.set(new_items); + } + webex.storage.local.get(storage_got); + } + var querying = webex.tabs.query({active: true,currentWindow: true},geturl); return; - } - - + } + if(m["whitelist_script"] !== undefined){ + set_script(m["whitelist_script"][0],true); + } + if(m["unwhitelist_script"] !== undefined){ + set_script(m["whitelist_script"][0],false); + } function logTabs(tabs) { for(var i = 0; i < tabs.length; i++) { var tab = tabs[i] @@ -156,17 +215,30 @@ function init_addon(){ init_addon(); -// some misc. debugging: -var example_input = { - "accepted": [["FILENAME 1","REASON 1"],["FILENAME 2","REASON 2"]], - "blocked": [["FILENAME 1","REASON 1"],["FILENAME 2","REASON 2"]], - "url":"example.com" -} -example_input["accepted"] = []; -example_input["blocked"] = []; +/**************** some misc. debugging: ***************************/ -//open_popup_tab(); +function debug_print_local(){ + function storage_got(items){ + console.log("Local Storage:"); + console.log(items); + } + webex.storage.local.get(storage_got); +} +function clr_local(){ + webex.storage.local.set({}); +} +// Valid input for update_popup +var example_input = { + "accepted": [["FILENAME 1","REASON 1"],["FILENAME 2","REASON 2"]], + "blocked": [["FILENAME 1","REASON 1"],["FILENAME 2","REASON 2"]], + "url":"example.com" +}; +update_popup(2,example_input); +// To test the default text +//example_input["accepted"] = []; +//example_input["blocked"] = []; +debug_print_local(); |