forked from adblockplus/backup-adblockpluschrome
-
Notifications
You must be signed in to change notification settings - Fork 0
/
block.js
126 lines (113 loc) · 3.04 KB
/
block.js
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
125
126
/*
* This file is part of Adblock Plus <http://adblockplus.org/>,
* Copyright (C) 2006-2013 Eyeo GmbH
*
* Adblock Plus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* Adblock Plus is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
*/
function init()
{
// Attach event listeners
window.addEventListener("keydown", onKeyDown, false);
window.addEventListener("dragstart", onDragStart, false);
window.addEventListener("drag", onDrag, false);
window.addEventListener("dragend", onDragEnd, false);
$("#addButton").click(addFilters);
$("#cancelButton").click(closeDialog.bind(null, false));
// Apply jQuery UI styles
$("button").button();
chrome.extension.sendRequest(
{
reqtype: "forward",
request:
{
reqtype: "clickhide-init",
width: Math.max(document.body.offsetWidth || document.body.scrollWidth),
height: Math.max(document.body.offsetHeight || document.body.scrollHeight)
}
},
function(response)
{
document.getElementById("filters").value = response.filters.join("\n");
}
);
document.getElementById("filters").focus();
}
$(init);
function onKeyDown(event)
{
if (event.keyCode == 27)
{
event.preventDefault();
closeDialog();
}
else if (event.keyCode == 13 && !event.shiftKey && !event.ctrlKey)
{
event.preventDefault();
addFilters();
}
}
function addFilters()
{
// Tell the background page to add the filters
var filters = document.getElementById("filters").value.split(/[\r\n]+/)
.map(function(f) {return f.replace(/^\s+/, "").replace(/\s+$/, "");})
.filter(function(f) {return f != "";});
chrome.extension.sendRequest({reqtype: "add-filters", filters: filters});
closeDialog(true);
}
function closeDialog(success)
{
chrome.extension.sendRequest(
{
reqtype: "forward",
request:
{
reqtype: "clickhide-close",
remove: (typeof success == "boolean" ? success : false)
}
}
);
}
var dragCoords = null;
function onDragStart(event)
{
dragCoords = [event.screenX, event.screenY];
}
function onDrag(event)
{
if (!dragCoords)
return;
if (!event.screenX && !event.screenY)
return;
var diff = [event.screenX - dragCoords[0], event.screenY - dragCoords[1]];
if (diff[0] || diff[1])
{
chrome.extension.sendRequest(
{
reqtype: "forward",
request:
{
reqtype: "clickhide-move",
x: diff[0],
y: diff[1]
}
}
);
dragCoords = [event.screenX, event.screenY];
}
}
function onDragEnd(event)
{
onDrag(event);
dragCoords = null;
}