forked from ccampbell/chromelogger
-
Notifications
You must be signed in to change notification settings - Fork 0
/
background.html
124 lines (106 loc) · 3.37 KB
/
background.html
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<script>
window.ChromePhp = (function () {
active = false;
/**
* determines if this tab is a chrome tab in which case the extension cannot run
*/
function _tabIsChrome(tab) {
return tab.url.indexOf("https://chrome.google.com/extensions") == 0 || tab.url.indexOf("chrome://") == 0;
}
/**
* handles a click on the extension icon
*/
function _handleIconClick(tab) {
if (_tabIsChrome(tab)) {
return alert('You cannot use ChromePHP on this page.');
}
_toggleDomain(tab);
}
function _toggleDomain(tab)
{
var url = tab.url;
url = _getTopLevelDomain(url);
if (_domainIsActive(url)) {
localStorage[url] = false;
_deactivate();
return;
}
localStorage[url] = true;
_activate();
}
function _getTopLevelDomain(url)
{
var pattern = /^(https?:\/\/)/;
url = url.replace(pattern, '', url);
domain = url.split('/')[0];
bits = domain.split('.');
ext = bits.pop();
domain = bits.pop();
return domain + "." + ext;
}
function _domainIsActive(url)
{
return localStorage[url] == "true";
}
function _activate()
{
active = true;
_enableIcon();
}
function _deactivate()
{
active = false;
_disableIcon();
}
function _enableIcon()
{
chrome.browserAction.setIcon({
path: "icon48.png"
});
}
function _disableIcon()
{
chrome.browserAction.setIcon({
path: "icon48_disabled.png"
});
}
function _handleTabUpdate(tab_id)
{
chrome.tabs.get(tab_id, function (tab) {
if (_tabIsChrome(tab)) {
return _deactivate();
}
domain = _getTopLevelDomain(tab.url);
if (_domainIsActive(domain)) {
return _activate();
}
_deactivate();
})
}
function _addListeners()
{
chrome.browserAction.onClicked.addListener(_handleIconClick);
chrome.tabs.onSelectionChanged.addListener(_handleTabUpdate);
chrome.tabs.onUpdated.addListener(_handleTabUpdate);
chrome.webRequest.onResponseStarted.addListener(function(details) {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {name: "header_update", details: details});
});
}, {urls: ["<all_urls>"]}, ["responseHeaders"]);
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request === "localStorage") {
return sendResponse(localStorage);
}
if (request === "isActive") {
return sendResponse(active);
}
});
}
return {
init: function() {
_addListeners();
}
}
}) ();
window.ChromePhp.init();
</script>