forked from EFForg/https-everywhere
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpopup.js
More file actions
92 lines (76 loc) · 2.42 KB
/
popup.js
File metadata and controls
92 lines (76 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
var backgroundPage = null;
var stableRules = null;
var unstableRules = null;
var hostReg = /.*\/\/[^$/]*\//;
function toggleRuleLine(checkbox, ruleset) {
ruleset.active = checkbox.checked;
if (ruleset.active != ruleset.default_state) {
localStorage[ruleset.name] = ruleset.active;
} else {
delete localStorage[ruleset.name];
}
// Now reload the selected tab of the current window.
chrome.tabs.reload();
}
function createRuleLine(ruleset) {
// parent block for line
var line = document.createElement("div");
line.className = "rule checkbox";
// label "container"
var label = document.createElement("label");
// checkbox
var checkbox = document.createElement("input");
checkbox.type = "checkbox";
if (ruleset.active) {
checkbox.setAttribute("checked", "");
}
checkbox.onchange = function(ev) {
toggleRuleLine(checkbox, ruleset);
};
label.appendChild(checkbox);
// favicon (from chrome's cache)
var favicon = document.createElement("img");
favicon.src = "chrome://favicon/";
for (var i=0; i < ruleset.rules.length; i++) {
var host = hostReg.exec(ruleset.rules[i].to);
if (host) {
favicon.src += host[0];
break;
}
}
label.appendChild(favicon);
// label text
var text = document.createElement("span");
text.innerText = ruleset.name;
if (ruleset.note.length) {
text.title = ruleset.note;
}
label.appendChild(text);
line.appendChild(label);
return line;
}
function gotTab(tab) {
var rulesets = backgroundPage.activeRulesets.getRulesets(tab.id);
for (var r in rulesets) {
var listDiv = stableRules;
if (!rulesets[r].default_state) {
listDiv = unstableRules;
}
listDiv.appendChild(createRuleLine(rulesets[r]));
listDiv.style.position = "static";
listDiv.style.visibility = "visible";
}
}
document.addEventListener("DOMContentLoaded", function () {
backgroundPage = chrome.extension.getBackgroundPage();
stableRules = document.getElementById("StableRules");
unstableRules = document.getElementById("UnstableRules");
chrome.tabs.getSelected(null, gotTab);
// auto-translate all elements with i18n attributes
var e = document.querySelectorAll("[i18n]");
for (var i=0; i < e.length; i++) {
e[i].innerHTML = chrome.i18n.getMessage(e[i].getAttribute("i18n"));
}
// other translations
document.getElementById("whatIsThis").setAttribute("title", chrome.i18n.getMessage("chrome_what_is_this_title"));
});