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

Side by Side Diff: lib/ui.js

Issue 5256408131960832: Issue 2420 - Move notification show logic to core (Closed)
Patch Set: Address comments Created June 8, 2015, 7:31 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
« lib/notification.js ('K') | « lib/notification.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 <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 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 for (let window of this.applicationWindows) 412 for (let window of this.applicationWindows)
413 this.updateStatusbarIcon(window); 413 this.updateStatusbarIcon(window);
414 } 414 }
415 }.bind(this)); 415 }.bind(this));
416 FilterNotifier.addListener(function(action) 416 FilterNotifier.addListener(function(action)
417 { 417 {
418 if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(actio n) || action == "load") 418 if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(actio n) || action == "load")
419 this.updateState(); 419 this.updateState();
420 }.bind(this)); 420 }.bind(this));
421 421
422 notificationTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); 422 Notification.addShowListener(notification =>
423 notificationTimer.initWithCallback(this.showNextNotification.bind(this), 423 {
424 3 * 60 * 1000, Ci.nsITimer.TYPE_ONE_SHOT) ; 424 let window = this.currentWindow;
425 onShutdown.add(() => notificationTimer.cancel()); 425 if (!window)
426 return;
427
428 let button = window.document.getElementById("abp-toolbarbutton")
429 || window.document.getElementById("abp-status");
430 if (!button)
431 return;
432
433 this._showNotification(window, button, notification);
434 });
426 435
427 // Add "anti-adblock messages" notification 436 // Add "anti-adblock messages" notification
428 initAntiAdblockNotification(); 437 initAntiAdblockNotification();
429 438
430 let documentCreationObserver = { 439 let documentCreationObserver = {
431 observe: function(subject, topic, data) 440 observe: function(subject, topic, data)
432 { 441 {
433 if (!(subject instanceof Ci.nsIDOMWindow)) 442 if (!(subject instanceof Ci.nsIDOMWindow))
434 return; 443 return;
435 444
436 this.showNextNotification(subject.location.href); 445 Notification.showNext(subject.location.href);
437 }.bind(UI) 446 }.bind(UI)
438 }; 447 };
439 Services.obs.addObserver(documentCreationObserver, "content-document-global- created", false); 448 Services.obs.addObserver(documentCreationObserver, "content-document-global- created", false);
440 onShutdown.add(function() 449 onShutdown.add(function()
441 { 450 {
442 Services.obs.removeObserver(documentCreationObserver, "content-document-gl obal-created", false); 451 Services.obs.removeObserver(documentCreationObserver, "content-document-gl obal-created", false);
443 }); 452 });
444 453
445 // Execute first-run actions if a window is open already, otherwise it 454 // Execute first-run actions if a window is open already, otherwise it
446 // will happen in applyToWindow() when a window is opened. 455 // will happen in applyToWindow() when a window is opened.
(...skipping 1395 matching lines...) Expand 10 before | Expand all | Expand 10 after
1842 Prefs.hideContributeButton = true; 1851 Prefs.hideContributeButton = true;
1843 1852
1844 for (let id of ["abp-status-contributebutton", "abp-toolbar-contributebutton ", "abp-menuitem-contributebutton"]) 1853 for (let id of ["abp-status-contributebutton", "abp-toolbar-contributebutton ", "abp-menuitem-contributebutton"])
1845 { 1854 {
1846 let button = window.document.getElementById(id); 1855 let button = window.document.getElementById(id);
1847 if (button) 1856 if (button)
1848 button.hidden = true; 1857 button.hidden = true;
1849 } 1858 }
1850 }, 1859 },
1851 1860
1852 showNextNotification: function(url)
1853 {
1854 let window = this.currentWindow;
1855 if (!window)
1856 return;
1857
1858 let button = window.document.getElementById("abp-toolbarbutton")
1859 || window.document.getElementById("abp-status");
1860 if (!button)
1861 return;
1862
1863 let notification = Notification.getNextToShow(url);
1864 if (!notification)
1865 return;
1866
1867 this._showNotification(window, button, notification);
1868 },
1869
1870 _showNotification: function(window, button, notification) 1861 _showNotification: function(window, button, notification)
1871 { 1862 {
1872 let panel = window.document.getElementById("abp-notification"); 1863 let panel = window.document.getElementById("abp-notification");
1873 if (panel.state !== "closed") 1864 if (panel.state !== "closed")
1874 return; 1865 return;
1875 1866
1876 function insertMessage(element, text, links) 1867 function insertMessage(element, text, links)
1877 { 1868 {
1878 let match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(text); 1869 let match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(text);
1879 if (!match) 1870 if (!match)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1925 { 1916 {
1926 event.preventDefault(); 1917 event.preventDefault();
1927 event.stopPropagation(); 1918 event.stopPropagation();
1928 panel.hidePopup(); 1919 panel.hidePopup();
1929 Notification.triggerQuestionListeners(notification.id, approved) 1920 Notification.triggerQuestionListeners(notification.id, approved)
1930 Notification.markAsShown(notification.id); 1921 Notification.markAsShown(notification.id);
1931 } 1922 }
1932 window.document.getElementById("abp-notification-yes").onclick = buttonHan dler.bind(null, true); 1923 window.document.getElementById("abp-notification-yes").onclick = buttonHan dler.bind(null, true);
1933 window.document.getElementById("abp-notification-no").onclick = buttonHand ler.bind(null, false); 1924 window.document.getElementById("abp-notification-no").onclick = buttonHand ler.bind(null, false);
1934 } 1925 }
1926 else
1927 Notification.markAsShown(notification.id);
1935 1928
1936 panel.setAttribute("class", "abp-" + notification.type); 1929 panel.setAttribute("class", "abp-" + notification.type);
1937 panel.setAttribute("noautohide", notification.type === "question"); 1930 panel.setAttribute("noautohide", notification.type === "question");
1938 panel.openPopup(button, "bottomcenter topcenter", 0, 0, false, false, null); 1931 panel.openPopup(button, "bottomcenter topcenter", 0, 0, false, false, null);
1939 } 1932 }
1940 }; 1933 };
1941 UI.onPopupShowing = UI.onPopupShowing.bind(UI); 1934 UI.onPopupShowing = UI.onPopupShowing.bind(UI);
1942 UI.onKeyPress = UI.onKeyPress.bind(UI); 1935 UI.onKeyPress = UI.onKeyPress.bind(UI);
1943 UI.onIconClick = UI.onIconClick.bind(UI); 1936 UI.onIconClick = UI.onIconClick.bind(UI);
1944 UI.init(); 1937 UI.init();
(...skipping 18 matching lines...) Expand all
1963 ["abp-command-contribute", "command", UI.openContributePage.bind(UI)], 1956 ["abp-command-contribute", "command", UI.openContributePage.bind(UI)],
1964 ["abp-command-contribute-hide", "command", UI.hideContributeButton.bind(UI)] 1957 ["abp-command-contribute-hide", "command", UI.hideContributeButton.bind(UI)]
1965 ]; 1958 ];
1966 1959
1967 onShutdown.add(function() 1960 onShutdown.add(function()
1968 { 1961 {
1969 for (let window of UI.applicationWindows) 1962 for (let window of UI.applicationWindows)
1970 if (UI.isBottombarOpen(window)) 1963 if (UI.isBottombarOpen(window))
1971 UI.toggleBottombar(window); 1964 UI.toggleBottombar(window);
1972 }); 1965 });
OLDNEW
« lib/notification.js ('K') | « lib/notification.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld