| 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 targetPageId = null; | 
|   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: 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   // Attach event listeners | 
|  100 var dragEndY = null; |   68   window.addEventListener("keydown", onKeyDown, false); | 
|  101  |   69  | 
|  102 function onDragStart(event) |   70   document.getElementById("addButton").addEventListener("click", addFilters); | 
|  103 { |   71   document.getElementById("cancelButton").addEventListener( | 
|  104   var element = document.elementFromPoint(event.clientX, event.clientY); |   72     "click", closeDialog.bind(null, false) | 
|  105   if (element && element.localName == "textarea") |   73   ); | 
 |   74  | 
 |   75   // Apply jQuery UI styles | 
 |   76   $("button").button(); | 
 |   77  | 
 |   78   document.getElementById("filters").focus(); | 
 |   79  | 
 |   80   ext.onMessage.addListener(function(msg, sender, sendResponse) | 
|  106   { |   81   { | 
|  107     // Don't drag the dialog when the user has clicked into the textarea. |   82     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     { |   83     { | 
|  129       type: "clickhide-move", |   84       case "blockelement-popup-init": | 
|  130       x: dragEndX - dragStartX, |   85         targetPageId = msg.sender; | 
|  131       y: dragEndY - dragStartY |   86         document.getElementById("filters").value = msg.filters.join("\n"); | 
 |   87         break; | 
 |   88       case "blockelement-close-popup": | 
 |   89         window.close(); | 
 |   90         break; | 
|  132     } |   91     } | 
|  133   }); |   92   }); | 
|  134  |   93  | 
|  135   dragStartX = null; |   94   window.removeEventListener("load", init); | 
|  136   dragStartY = null; |  | 
|  137   dragEndX = null; |  | 
|  138   dragEndY = null; |  | 
|  139 } |   95 } | 
|  140  |   96 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 |