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

Delta Between Two Patch Sets: ext/common.js

Issue 29570614: Issue 5028 - Use browser namespace (Closed) Base URL: https://hg.adblockplus.org/adblockpluschrome/
Left Patch Set: Use callback-based API for storage Created Oct. 9, 2017, 4:01 p.m.
Right Patch Set: Update adblockplusui dependency Created Oct. 17, 2017, 1:02 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « ext/background.js ('k') | ext/content.js » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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-present eyeo GmbH 3 * Copyright (C) 2006-present 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 "use strict"; 18 "use strict";
19 19
20 (function() 20 (function()
21 { 21 {
22 // Both Edge and Mozilla Web Extensions use the namespace
23 // 'browser' instead of 'chrome'. Edge has chrome namespace defined,
24 // in some cases, but only with one property: 'app'.
25 if (typeof browser == "undefined" ||
26 typeof chrome != "undefined" && typeof chrome.extension != "undefined")
27 window.browser = chrome;
28
29 window.ext = {}; 22 window.ext = {};
30 23
31 let EventTarget = ext._EventTarget = function() 24 let EventTarget = ext._EventTarget = function()
32 { 25 {
33 this._listeners = new Set(); 26 this._listeners = new Set();
34 }; 27 };
35 EventTarget.prototype = { 28 EventTarget.prototype = {
36 addListener(listener) 29 addListener(listener)
37 { 30 {
38 this._listeners.add(listener); 31 this._listeners.add(listener);
39 }, 32 },
40 removeListener(listener) 33 removeListener(listener)
41 { 34 {
42 this._listeners.delete(listener); 35 this._listeners.delete(listener);
43 }, 36 },
44 _dispatch(...args) 37 _dispatch(...args)
45 { 38 {
46 let results = []; 39 let results = [];
47 40
48 for (let listener of this._listeners) 41 for (let listener of this._listeners)
49 results.push(listener(...args)); 42 results.push(listener(...args));
50 43
51 return results; 44 return results;
52 } 45 }
53 }; 46 };
54 47
55 // Workaround since HTMLCollection, NodeList, StyleSheet and
56 // CSSRuleList didn't have iterator support before Chrome 51.
57 // https://bugs.chromium.org/p/chromium/issues/detail?id=401699
58 let arrayIterator = Array.prototype[Symbol.iterator];
59 if (!(Symbol.iterator in HTMLCollection.prototype))
60 HTMLCollection.prototype[Symbol.iterator] = arrayIterator;
61 if (!(Symbol.iterator in NodeList.prototype))
62 NodeList.prototype[Symbol.iterator] = arrayIterator;
63 if (!(Symbol.iterator in StyleSheetList.prototype))
64 StyleSheetList.prototype[Symbol.iterator] = arrayIterator;
65 if (!(Symbol.iterator in CSSRuleList.prototype))
66 CSSRuleList.prototype[Symbol.iterator] = arrayIterator;
67 48
68 /* Message passing */ 49 /* Message passing */
69 50
70 ext.onMessage = new ext._EventTarget(); 51 ext.onMessage = new ext._EventTarget();
71
72
73 /* Background page */
74
75 ext.backgroundPage = {
76 sendMessage: browser.runtime.sendMessage,
77 getWindow()
78 {
79 return browser.extension.getBackgroundPage();
80 }
81 };
82
83
84 /* Utils */
85
86 ext.getURL = browser.extension.getURL;
87 }()); 52 }());
LEFTRIGHT

Powered by Google App Engine
This is Rietveld