Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/ui.js

Issue 6020195227271168: Moved initAntiAdblockNotification function from ui.js to its own file (Closed)
Patch Set: Created March 19, 2014, 2:10 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/antiadblockInit.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <http://adblockplus.org/>, 2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2006-2013 Eyeo GmbH 3 * Copyright (C) 2006-2013 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 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); 18 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
19 Cu.import("resource://gre/modules/Services.jsm"); 19 Cu.import("resource://gre/modules/Services.jsm");
20 20
21 let {Utils} = require("utils"); 21 let {Utils} = require("utils");
22 let {Prefs} = require("prefs"); 22 let {Prefs} = require("prefs");
23 let {Policy} = require("contentPolicy"); 23 let {Policy} = require("contentPolicy");
24 let {FilterListener} = require("filterListener"); 24 let {FilterListener} = require("filterListener");
25 let {FilterStorage} = require("filterStorage"); 25 let {FilterStorage} = require("filterStorage");
26 let {FilterNotifier} = require("filterNotifier"); 26 let {FilterNotifier} = require("filterNotifier");
27 let {RequestNotifier} = require("requestNotifier"); 27 let {RequestNotifier} = require("requestNotifier");
28 let {Filter, ActiveFilter} = require("filterClasses"); 28 let {Filter} = require("filterClasses");
29 let {Subscription, SpecialSubscription, DownloadableSubscription} = require("sub scriptionClasses"); 29 let {Subscription, SpecialSubscription, DownloadableSubscription} = require("sub scriptionClasses");
30 let {Synchronizer} = require("synchronizer"); 30 let {Synchronizer} = require("synchronizer");
31 let {KeySelector} = require("keySelector"); 31 let {KeySelector} = require("keySelector");
32 let {Notification} = require("notification"); 32 let {Notification} = require("notification");
33 let {initAntiAdblockNotification} = require("antiadblockInit");
33 34
34 let CustomizableUI; 35 let CustomizableUI;
35 try 36 try
36 { 37 {
37 ({CustomizableUI}) = Cu.import("resource:///modules/CustomizableUI.jsm", null) ; 38 ({CustomizableUI}) = Cu.import("resource:///modules/CustomizableUI.jsm", null) ;
38 } 39 }
39 catch (e) 40 catch (e)
40 { 41 {
41 // No built-in CustomizableUI API, use our own implementation. 42 // No built-in CustomizableUI API, use our own implementation.
42 ({CustomizableUI}) = require("customizableUI"); 43 ({CustomizableUI}) = require("customizableUI");
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 392
392 if (this.overlay.all.length) 393 if (this.overlay.all.length)
393 this.overlay.all[0].appendChild(menuSource); 394 this.overlay.all[0].appendChild(menuSource);
394 if ("abp-toolbarbutton" in this.overlay) 395 if ("abp-toolbarbutton" in this.overlay)
395 this.overlay["abp-toolbarbutton"].appendChild(fixId(menuSource.cloneNode (true), "abp-toolbar")); 396 this.overlay["abp-toolbarbutton"].appendChild(fixId(menuSource.cloneNode (true), "abp-toolbar"));
396 if ("abp-menuitem" in this.overlay) 397 if ("abp-menuitem" in this.overlay)
397 this.overlay["abp-menuitem"].appendChild(fixId(menuSource.cloneNode(true ), "abp-menuitem")); 398 this.overlay["abp-menuitem"].appendChild(fixId(menuSource.cloneNode(true ), "abp-menuitem"));
398 } 399 }
399 }, 400 },
400 401
401 _initAntiAdblockNotification: function()
402 {
403 let notification = {
404 id: "antiadblock",
405 type: "question",
406 title: Utils.getString("notification_antiadblock_title"),
407 message: Utils.getString("notification_antiadblock_message"),
408 urlFilters: []
409 };
410
411 function notificationListener(approved)
412 {
413 let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl );
414 if (subscription.url in FilterStorage.knownSubscriptions)
415 subscription.disabled = !approved;
416 }
417
418 function addAntiAdblockNotification(subscription)
419 {
420 let urlFilters = [];
421 for each (let filter in subscription.filters)
422 if (filter instanceof ActiveFilter)
423 for (let domain in filter.domains)
424 if (domain && urlFilters.indexOf(domain) == -1)
425 urlFilters.push(domain);
426 notification.urlFilters = urlFilters;
427 Notification.addNotification(notification);
428 Notification.addQuestionListener(notification.id, notificationListener);
429 }
430
431 function removeAntiAdblockNotification()
432 {
433 Notification.removeNotification(notification);
434 Notification.removeQuestionListener(notification.id, notificationListener) ;
435 }
436
437 let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl);
438 if (subscription.lastDownload && subscription.disabled)
439 addAntiAdblockNotification(subscription);
440
441 FilterNotifier.addListener(function(action, value, newItem, oldItem)
442 {
443 if (!/^subscription\.(updated|removed|disabled)$/.test(action) || value.ur l != Prefs.subscriptions_antiadblockurl)
444 return;
445
446 if (action == "subscription.updated")
447 addAntiAdblockNotification(value);
448 else if (action == "subscription.removed" || (action == "subscription.disa bled" && !value.disabled))
449 removeAntiAdblockNotification();
450 });
451
452 var documentCreationObserver = {
453 observe: function(subject, topic, data)
454 {
455 if (!(subject instanceof Ci.nsIDOMWindow))
456 return;
457
458 this._showNextNotification(subject.location.href);
459 }.bind(this)
460 };
461 Services.obs.addObserver(documentCreationObserver, "content-document-global- created", false);
462 onShutdown.add(function()
463 {
464 Services.obs.removeObserver(documentCreationObserver, "content-document-gl obal-created", false);
465 });
466 },
467
468 /** 402 /**
469 * Gets called once the initialization is finished and Adblock Plus elements 403 * Gets called once the initialization is finished and Adblock Plus elements
470 * can be added to the UI. 404 * can be added to the UI.
471 */ 405 */
472 initDone: function() 406 initDone: function()
473 { 407 {
474 let {WindowObserver} = require("windowObserver"); 408 let {WindowObserver} = require("windowObserver");
475 new WindowObserver(this); 409 new WindowObserver(this);
476 410
477 // Add toolbar icon 411 // Add toolbar icon
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 this.updateStatusbarIcon(window); 449 this.updateStatusbarIcon(window);
516 } 450 }
517 }.bind(this)); 451 }.bind(this));
518 FilterNotifier.addListener(function(action) 452 FilterNotifier.addListener(function(action)
519 { 453 {
520 if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(actio n) || action == "load") 454 if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(actio n) || action == "load")
521 this.updateState(); 455 this.updateState();
522 }.bind(this)); 456 }.bind(this));
523 457
524 notificationTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); 458 notificationTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
525 notificationTimer.initWithCallback(this._showNextNotification.bind(this), 459 notificationTimer.initWithCallback(this.showNextNotification.bind(this),
526 3 * 60 * 1000, Ci.nsITimer.TYPE_ONE_SHOT) ; 460 3 * 60 * 1000, Ci.nsITimer.TYPE_ONE_SHOT) ;
527 onShutdown.add(function() notificationTimer.cancel()); 461 onShutdown.add(function() notificationTimer.cancel());
528 }, 462 },
529 463
530 /** 464 /**
531 * Will be set to true after the check whether first-run actions should run 465 * Will be set to true after the check whether first-run actions should run
532 * has been performed. 466 * has been performed.
533 * @type Boolean 467 * @type Boolean
534 */ 468 */
535 firstRunDone: false, 469 firstRunDone: false,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 this.updateIconState(window, window.document.getElementById("abp-toolbarbu tton")); 525 this.updateIconState(window, window.document.getElementById("abp-toolbarbu tton"));
592 }.bind(this)); 526 }.bind(this));
593 addBrowserClickListener(window, this.onBrowserClick.bind(this, window)); 527 addBrowserClickListener(window, this.onBrowserClick.bind(this, window));
594 528
595 window.document.getElementById("abp-notification-close").addEventListener("c ommand", function(event) 529 window.document.getElementById("abp-notification-close").addEventListener("c ommand", function(event)
596 { 530 {
597 window.document.getElementById("abp-notification").hidePopup(); 531 window.document.getElementById("abp-notification").hidePopup();
598 }, false); 532 }, false);
599 533
600 // Add "anti-adblock messages" notification 534 // Add "anti-adblock messages" notification
601 this._initAntiAdblockNotification(); 535 initAntiAdblockNotification();
536
537 let documentCreationObserver = {
538 observe: function(subject, topic, data)
539 {
540 if (!(subject instanceof Ci.nsIDOMWindow))
541 return;
542
543 this.showNextNotification(subject.location.href);
544 }.bind(UI)
545 };
546 Services.obs.addObserver(documentCreationObserver, "content-document-global- created", false);
547 onShutdown.add(function()
548 {
549 Services.obs.removeObserver(documentCreationObserver, "content-document-gl obal-created", false);
550 });
602 551
603 // First-run actions? 552 // First-run actions?
604 if (!this.firstRunDone) 553 if (!this.firstRunDone)
605 { 554 {
606 this.firstRunDone = true; 555 this.firstRunDone = true;
607 556
608 let {addonVersion} = require("info"); 557 let {addonVersion} = require("info");
609 let prevVersion = Prefs.currentVersion; 558 let prevVersion = Prefs.currentVersion;
610 if (prevVersion != addonVersion) 559 if (prevVersion != addonVersion)
611 { 560 {
(...skipping 1231 matching lines...) Expand 10 before | Expand all | Expand 10 after
1843 Prefs.hideContributeButton = true; 1792 Prefs.hideContributeButton = true;
1844 1793
1845 for each (let id in ["abp-status-contributebutton", "abp-toolbar-contributeb utton", "abp-menuitem-contributebutton"]) 1794 for each (let id in ["abp-status-contributebutton", "abp-toolbar-contributeb utton", "abp-menuitem-contributebutton"])
1846 { 1795 {
1847 let button = window.document.getElementById(id); 1796 let button = window.document.getElementById(id);
1848 if (button) 1797 if (button)
1849 button.hidden = true; 1798 button.hidden = true;
1850 } 1799 }
1851 }, 1800 },
1852 1801
1853 _showNextNotification: function(url) 1802 showNextNotification: function(url)
1854 { 1803 {
1855 let window = this.currentWindow; 1804 let window = this.currentWindow;
1856 if (!window) 1805 if (!window)
1857 return; 1806 return;
1858 1807
1859 let button = window.document.getElementById("abp-toolbarbutton") 1808 let button = window.document.getElementById("abp-toolbarbutton")
1860 || window.document.getElementById("abp-status"); 1809 || window.document.getElementById("abp-status");
1861 if (!button) 1810 if (!button)
1862 return; 1811 return;
1863 1812
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1963 ["abp-command-contribute", "command", UI.openContributePage.bind(UI)], 1912 ["abp-command-contribute", "command", UI.openContributePage.bind(UI)],
1964 ["abp-command-contribute-hide", "command", UI.hideContributeButton.bind(UI)] 1913 ["abp-command-contribute-hide", "command", UI.hideContributeButton.bind(UI)]
1965 ]; 1914 ];
1966 1915
1967 onShutdown.add(function() 1916 onShutdown.add(function()
1968 { 1917 {
1969 for (let window in UI.applicationWindows) 1918 for (let window in UI.applicationWindows)
1970 if (UI.isBottombarOpen(window)) 1919 if (UI.isBottombarOpen(window))
1971 UI.toggleBottombar(window); 1920 UI.toggleBottombar(window);
1972 }); 1921 });
OLDNEW
« no previous file with comments | « lib/antiadblockInit.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld