| 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-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 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 |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 let browser = (exports.getBrowser ? exports.getBrowser(window) : null); | 205 let browser = (exports.getBrowser ? exports.getBrowser(window) : null); |
| 206 if (browser) | 206 if (browser) |
| 207 { | 207 { |
| 208 let listeners = progressListeners.get(window); | 208 let listeners = progressListeners.get(window); |
| 209 for (let i = 0; i < listeners.length; i++) | 209 for (let i = 0; i < listeners.length; i++) |
| 210 browser.removeProgressListener(listeners[i]); | 210 browser.removeProgressListener(listeners[i]); |
| 211 } | 211 } |
| 212 progressListeners.delete(window); | 212 progressListeners.delete(window); |
| 213 }; | 213 }; |
| 214 | 214 |
| 215 /** | |
| 216 * Maps windows to a list of click listeners. | |
| 217 */ | |
| 218 let clickListeners = new WeakMap(); | |
| 219 | |
| 220 /** | |
| 221 * Makes sure that a function is called whenever the user clicks inside the | |
| 222 * browser's content area. | |
| 223 */ | |
| 224 exports.addBrowserClickListener = function addBrowserClickListener(/**Window*/ w
indow, /**Function*/ callback) | |
| 225 { | |
| 226 let browser = (exports.getBrowser ? exports.getBrowser(window) : null); | |
| 227 if (browser) | |
| 228 { | |
| 229 browser.addEventListener("click", callback, true); | |
| 230 | |
| 231 if (clickListeners.has(window)) | |
| 232 clickListeners.get(window).push(callback); | |
| 233 else | |
| 234 clickListeners.set(window, [callback]); | |
| 235 } | |
| 236 }; | |
| 237 | |
| 238 /** | |
| 239 * Removes all click listeners registered for a window, to be called on | |
| 240 * cleanup. | |
| 241 */ | |
| 242 exports.removeBrowserClickListeners = function removeBrowserClickListeners(/**Wi
ndow*/ window) | |
| 243 { | |
| 244 if (!clickListeners.has(window)) | |
| 245 return; | |
| 246 | |
| 247 let browser = (exports.getBrowser ? exports.getBrowser(window) : null); | |
| 248 if (browser) | |
| 249 { | |
| 250 let listeners = clickListeners.get(window); | |
| 251 for (let i = 0; i < listeners.length; i++) | |
| 252 browser.removeEventListener("click", listeners[i], true); | |
| 253 } | |
| 254 clickListeners.delete(window); | |
| 255 }; | |
| 256 | |
| 257 let {application} = require("info"); | 215 let {application} = require("info"); |
| 258 switch (application) | 216 switch (application) |
| 259 { | 217 { |
| 260 case "firefox": | 218 case "firefox": |
| 261 { | 219 { |
| 262 exports.isKnownWindow = function ff_isKnownWindow(window) | 220 exports.isKnownWindow = function ff_isKnownWindow(window) |
| 263 { | 221 { |
| 264 return (window.document.documentElement.getAttribute("windowtype") == "nav
igator:browser"); | 222 return (window.document.documentElement.getAttribute("windowtype") == "nav
igator:browser"); |
| 265 }; | 223 }; |
| 266 | 224 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 { | 310 { |
| 353 return null; | 311 return null; |
| 354 } | 312 } |
| 355 } | 313 } |
| 356 else | 314 else |
| 357 { | 315 { |
| 358 let browser = exports.getBrowser(window); | 316 let browser = exports.getBrowser(window); |
| 359 return (browser ? browser.currentURI : null); | 317 return (browser ? browser.currentURI : null); |
| 360 } | 318 } |
| 361 }; | 319 }; |
| 362 | 320 |
| 363 // for Seamonkey we have to ignore same document flag because of | 321 // for Seamonkey we have to ignore same document flag because of |
| 364 // bug #1035171 (https://bugzilla.mozilla.org/show_bug.cgi?id=1035171) | 322 // bug #1035171 (https://bugzilla.mozilla.org/show_bug.cgi?id=1035171) |
| 365 let origAddBrowserLocationListener = exports.addBrowserLocationListener; | 323 let origAddBrowserLocationListener = exports.addBrowserLocationListener; |
| 366 exports.addBrowserLocationListener = function sm_addBrowserLocationListener(
window, callback, ignoreSameDoc) | 324 exports.addBrowserLocationListener = function sm_addBrowserLocationListener(
window, callback, ignoreSameDoc) |
| 367 { | 325 { |
| 368 origAddBrowserLocationListener(window, callback, false); | 326 origAddBrowserLocationListener(window, callback, false); |
| 369 }; | 327 }; |
| 370 | 328 |
| 371 exports.contentContextMenu = ["contentAreaContextMenu", "mailContext"]; | 329 exports.contentContextMenu = ["contentAreaContextMenu", "mailContext"]; |
| 372 | 330 |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 | 568 |
| 611 let messageListener = listener.messageListener; | 569 let messageListener = listener.messageListener; |
| 612 let index = ("gMessageListeners" in window ? window.gMessageListeners.inde
xOf(messageListener) : -1); | 570 let index = ("gMessageListeners" in window ? window.gMessageListeners.inde
xOf(messageListener) : -1); |
| 613 if (index >= 0) | 571 if (index >= 0) |
| 614 window.gMessageListeners.splice(index, 1); | 572 window.gMessageListeners.splice(index, 1); |
| 615 | 573 |
| 616 listener.detach(); | 574 listener.detach(); |
| 617 progressListeners.delete(window); | 575 progressListeners.delete(window); |
| 618 }; | 576 }; |
| 619 | 577 |
| 620 exports.addBrowserClickListener = function addBrowserClickListener(/**Window
*/ window, /**Function*/ callback) | |
| 621 { | |
| 622 if (clickListeners.has(window)) | |
| 623 { | |
| 624 clickListeners.get(window).callbacks.push(callback); | |
| 625 return; | |
| 626 } | |
| 627 | |
| 628 let callbacks = [callback]; | |
| 629 let listener = new BrowserChangeListener(window, function(oldBrowser, newB
rowser) | |
| 630 { | |
| 631 if (oldBrowser) | |
| 632 for (let i = 0; i < callbacks.length; i++) | |
| 633 oldBrowser.removeEventListener("click", callbacks[i], true); | |
| 634 if (newBrowser) | |
| 635 for (let i = 0; i < callbacks.length; i++) | |
| 636 newBrowser.addEventListener("click", callbacks[i], true); | |
| 637 }); | |
| 638 listener.callbacks = callbacks; | |
| 639 | |
| 640 clickListeners.set(window, listener); | |
| 641 }; | |
| 642 | |
| 643 exports.removeBrowserClickListeners = function removeBrowserClickListeners(/
**Window*/ window) | |
| 644 { | |
| 645 if (!clickListeners.has(window)) | |
| 646 return; | |
| 647 | |
| 648 let listener = clickListeners.get(window); | |
| 649 listener.detach(); | |
| 650 | |
| 651 clickListeners.delete(window); | |
| 652 }; | |
| 653 | |
| 654 // Make sure to close/reopen list of blockable items when the user changes t
abs | 578 // Make sure to close/reopen list of blockable items when the user changes t
abs |
| 655 let {WindowObserver} = require("windowObserver"); | 579 let {WindowObserver} = require("windowObserver"); |
| 656 new WindowObserver({ | 580 new WindowObserver({ |
| 657 listeners: new WeakMap(), | 581 listeners: new WeakMap(), |
| 658 applyToWindow: function(window) | 582 applyToWindow: function(window) |
| 659 { | 583 { |
| 660 if (!exports.isKnownWindow(window) || this.listeners.has(window)) | 584 if (!exports.isKnownWindow(window) || this.listeners.has(window)) |
| 661 return; | 585 return; |
| 662 | 586 |
| 663 let {Utils} = require("utils"); | 587 let {Utils} = require("utils"); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 799 exports.removeBrowserLocationListeners = function ffn_removeBrowserLocationL
isteners(/**Window*/ window) | 723 exports.removeBrowserLocationListeners = function ffn_removeBrowserLocationL
isteners(/**Window*/ window) |
| 800 { | 724 { |
| 801 if (!progressListeners.has(window)) | 725 if (!progressListeners.has(window)) |
| 802 return; | 726 return; |
| 803 | 727 |
| 804 let listener = progressListeners.get(window); | 728 let listener = progressListeners.get(window); |
| 805 listener.detach(); | 729 listener.detach(); |
| 806 progressListeners.delete(window); | 730 progressListeners.delete(window); |
| 807 }; | 731 }; |
| 808 | 732 |
| 809 exports.addBrowserClickListener = function ffn_addBrowserClickListener(/**Wi
ndow*/ window, /**Function*/ callback) | |
| 810 { | |
| 811 if (clickListeners.has(window)) | |
| 812 { | |
| 813 clickListeners.get(window).callbacks.push(callback); | |
| 814 return; | |
| 815 } | |
| 816 | |
| 817 let callbacks = [callback]; | |
| 818 let listener = new BrowserChangeListener(window, function(oldBrowser, newB
rowser) | |
| 819 { | |
| 820 if (oldBrowser) | |
| 821 for (let i = 0; i < callbacks.length; i++) | |
| 822 oldBrowser.removeEventListener("click", callbacks[i], true); | |
| 823 if (newBrowser) | |
| 824 for (let i = 0; i < callbacks.length; i++) | |
| 825 newBrowser.addEventListener("click", callbacks[i], true); | |
| 826 }); | |
| 827 listener.callbacks = callbacks; | |
| 828 | |
| 829 clickListeners.set(window, listener); | |
| 830 }; | |
| 831 | |
| 832 exports.removeBrowserClickListeners = function ffn_removeBrowserClickListene
rs(/**Window*/ window) | |
| 833 { | |
| 834 if (!clickListeners.has(window)) | |
| 835 return; | |
| 836 | |
| 837 let listener = clickListeners.get(window); | |
| 838 listener.detach(); | |
| 839 | |
| 840 clickListeners.delete(window); | |
| 841 }; | |
| 842 | |
| 843 let {Filter} = require("filterClasses"); | 733 let {Filter} = require("filterClasses"); |
| 844 let {Prefs} = require("prefs"); | 734 let {Prefs} = require("prefs"); |
| 845 let {Policy} = require("contentPolicy"); | 735 let {Policy} = require("contentPolicy"); |
| 846 let {UI} = require("ui"); | 736 let {UI} = require("ui"); |
| 847 let {Utils} = require("utils"); | 737 let {Utils} = require("utils"); |
| 848 | 738 |
| 849 let toggleWhitelist = function(window) | 739 let toggleWhitelist = function(window) |
| 850 { | 740 { |
| 851 if (!Prefs.enabled) | 741 if (!Prefs.enabled) |
| 852 { | 742 { |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 952 event.state = {id: require("info").addonID}; | 842 event.state = {id: require("info").addonID}; |
| 953 browser._contentWindow.dispatchEvent(event); | 843 browser._contentWindow.dispatchEvent(event); |
| 954 }); | 844 }); |
| 955 }); | 845 }); |
| 956 }, true); | 846 }, true); |
| 957 }; | 847 }; |
| 958 | 848 |
| 959 break; | 849 break; |
| 960 } | 850 } |
| 961 } | 851 } |
| OLD | NEW |