| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2016 Eyeo GmbH | 3  * Copyright (C) 2006-2016 Eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 function init() | 18 var searchParams = {}; | 
| 19 { |  | 
| 20   // Attach event listeners |  | 
| 21   window.addEventListener("keydown", onKeyDown, false); |  | 
| 22   window.addEventListener("dragstart", onDragStart, false); |  | 
| 23   window.addEventListener("dragend", onDragEnd, false); |  | 
| 24 |  | 
| 25   $("#addButton").click(addFilters); |  | 
| 26   $("#cancelButton").click(closeDialog.bind(null, false)); |  | 
| 27 |  | 
| 28   // Apply jQuery UI styles |  | 
| 29   $("button").button(); |  | 
| 30 |  | 
| 31   ext.backgroundPage.sendMessage( |  | 
| 32   { |  | 
| 33     type: "forward", |  | 
| 34     expectsResponse: true, |  | 
| 35     payload: |  | 
| 36     { |  | 
| 37       type: "clickhide-init", |  | 
| 38       width: Math.max(document.body.offsetWidth || document.body.scrollWidth), |  | 
| 39       height: Math.max(document.body.offsetHeight || document.body.scrollHeight) |  | 
| 40     } |  | 
| 41   }, |  | 
| 42   function(response) |  | 
| 43   { |  | 
| 44     document.getElementById("filters").value = response.filters.join("\n"); |  | 
| 45   }); |  | 
| 46 |  | 
| 47   document.getElementById("filters").focus(); |  | 
| 48 } |  | 
| 49 window.addEventListener("load", init, false); |  | 
| 50 | 19 | 
| 51 function onKeyDown(event) | 20 function onKeyDown(event) | 
| 52 { | 21 { | 
| 53   if (event.keyCode == 27) | 22   if (event.keyCode == 27) | 
| 54   { | 23   { | 
| 55     event.preventDefault(); | 24     event.preventDefault(); | 
| 56     closeDialog(); | 25     closeDialog(); | 
| 57   } | 26   } | 
| 58   else if (event.keyCode == 13 && !event.shiftKey && !event.ctrlKey) | 27   else if (event.keyCode == 13 && !event.shiftKey && !event.ctrlKey) | 
| 59   { | 28   { | 
| 60     event.preventDefault(); | 29     event.preventDefault(); | 
| 61     addFilters(); | 30     addFilters(); | 
| 62   } | 31   } | 
| 63 } | 32 } | 
| 64 | 33 | 
| 65 function addFilters() | 34 function addFilters() | 
| 66 { | 35 { | 
| 67   ext.backgroundPage.sendMessage( | 36   ext.backgroundPage.sendMessage( | 
| 68     { | 37   { | 
| 69       type: "add-filters", | 38     type: "add-filters", | 
| 70       text: document.getElementById("filters").value | 39     text: document.getElementById("filters").value | 
| 71     }, | 40   }, | 
| 72 | 41   function(response) | 
| 73     function(response) | 42   { | 
| 74     { | 43     if (response.status == "ok") | 
| 75       if (response.status == "ok") | 44       closeDialog(true); | 
| 76         closeDialog(true); | 45     else | 
| 77       else | 46       alert(response.error); | 
| 78         alert(response.error); | 47   }); | 
| 79     } |  | 
| 80   ); |  | 
| 81 } | 48 } | 
| 82 | 49 | 
| 83 function closeDialog(success) | 50 function closeDialog(success) | 
| 84 { | 51 { | 
| 85   ext.backgroundPage.sendMessage( | 52   ext.backgroundPage.sendMessage( | 
|  | 53   { | 
|  | 54     type: "forward", | 
|  | 55     targetPageId: searchParams.targetPageId, | 
|  | 56     payload: | 
| 86     { | 57     { | 
| 87       type: "forward", | 58       type: "blockelement-finished", | 
| 88       payload: | 59       remove: (typeof success == "boolean" ? success : false) | 
| 89       { |  | 
| 90         type: "clickhide-close", |  | 
| 91         remove: (typeof success == "boolean" ? success : false) |  | 
| 92       } |  | 
| 93     } | 60     } | 
| 94   ); | 61   }); | 
|  | 62   window.close(); | 
| 95 } | 63 } | 
| 96 | 64 | 
| 97 var dragStartX; | 65 function init() | 
| 98 var dragStartY; | 66 { | 
| 99 var dragEndX = null; | 67   // Parse the search parameters. We expect both the targetPageId and suggested | 
| 100 var dragEndY = null; | 68   // filters to be provided. | 
|  | 69   window.location.search.substr(1).split("&").forEach(function(pair) | 
|  | 70   { | 
|  | 71     var parts = pair.split("="); | 
|  | 72     searchParams[parts[0]] = JSON.parse(decodeURIComponent(parts[1])); | 
|  | 73   }); | 
| 101 | 74 | 
| 102 function onDragStart(event) | 75   // Attach event listeners | 
| 103 { | 76   window.addEventListener("keydown", onKeyDown, false); | 
| 104   var element = document.elementFromPoint(event.clientX, event.clientY); | 77 | 
| 105   if (element && element.localName == "textarea") | 78   document.getElementById("addButton").addEventListener("click", addFilters); | 
|  | 79   document.getElementById("cancelButton").addEventListener( | 
|  | 80     "click", closeDialog.bind(null, false) | 
|  | 81   ); | 
|  | 82 | 
|  | 83   // Apply jQuery UI styles | 
|  | 84   $("button").button(); | 
|  | 85 | 
|  | 86   document.getElementById("filters").value = searchParams.filters.join("\n"); | 
|  | 87   document.getElementById("filters").focus(); | 
|  | 88 | 
|  | 89   ext.onMessage.addListener(function(msg, sender, sendResponse) | 
| 106   { | 90   { | 
| 107     // Don't drag the dialog when the user has clicked into the textarea. | 91     switch (msg.type) | 
| 108     // Most likely the user just wants to focus it or select text there. |  | 
| 109     event.preventDefault(); |  | 
| 110   } |  | 
| 111   else |  | 
| 112   { |  | 
| 113     dragStartX = event.screenX; |  | 
| 114     dragStartY = event.screenY; |  | 
| 115   } |  | 
| 116 } |  | 
| 117 |  | 
| 118 function onDragEnd(event) |  | 
| 119 { |  | 
| 120   if (dragEndX == null) |  | 
| 121     dragEndX = event.screenX; |  | 
| 122   if (dragEndY == null) |  | 
| 123     dragEndY = event.screenY; |  | 
| 124 |  | 
| 125   ext.backgroundPage.sendMessage({ |  | 
| 126     type: "forward", |  | 
| 127     payload: |  | 
| 128     { | 92     { | 
| 129       type: "clickhide-move", | 93       case "blockelement-close-popup": | 
| 130       x: dragEndX - dragStartX, | 94         window.close(); | 
| 131       y: dragEndY - dragStartY | 95         break; | 
| 132     } | 96     } | 
| 133   }); | 97   }); | 
| 134 | 98 | 
| 135   dragStartX = null; | 99   window.removeEventListener("load", init); | 
| 136   dragStartY = null; |  | 
| 137   dragEndX = null; |  | 
| 138   dragEndY = null; |  | 
| 139 } | 100 } | 
| 140 | 101 window.addEventListener("load", init, false); | 
| 141 // The coordinates in the dragend event are unreliable on Safari. So we |  | 
| 142 // need to get the destination coordinates from the drag event instead. |  | 
| 143 // However on Chrome, the coordinates in the drag event are unreliable. |  | 
| 144 // So we need to get the coordinates from dragend event there. |  | 
| 145 if (navigator.userAgent.indexOf(" Version/") != -1) |  | 
| 146 { |  | 
| 147   window.addEventListener("drag", function(event) |  | 
| 148   { |  | 
| 149     dragEndX = event.screenX; |  | 
| 150     dragEndY = event.screenY; |  | 
| 151   }, false); |  | 
| 152 } |  | 
| OLD | NEW | 
|---|