LEFT | RIGHT |
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 let { | 20 let { |
21 createSandbox, setupTimerAndXMLHttp, setupRandomResult, unexpectedError | 21 createSandbox, setupTimerAndFetch, setupRandomResult, unexpectedError |
22 } = require("./_common"); | 22 } = require("./_common"); |
23 | 23 |
24 let Prefs = null; | 24 let Prefs = null; |
25 let Utils = null; | 25 let Utils = null; |
26 let Notification = null; | 26 let Notification = null; |
27 | 27 |
28 // Only starting NodeJS 10 that URL is in the global space. | 28 // Only starting NodeJS 10 that URL is in the global space. |
29 const {URL} = require("url"); | 29 const {URL} = require("url"); |
30 | 30 |
31 exports.setUp = function(callback) | 31 exports.setUp = function(callback) |
32 { | 32 { |
33 // Inject our Array and JSON to make sure that instanceof checks on arrays | 33 // Inject our Array and JSON to make sure that instanceof checks on arrays |
34 // within the sandbox succeed even with data passed in from outside. | 34 // within the sandbox succeed even with data passed in from outside. |
35 let globals = Object.assign({Array, JSON}, | 35 let globals = Object.assign({Array, JSON}, |
36 setupTimerAndXMLHttp.call(this), setupRandomResult.call(this)); | 36 setupTimerAndFetch.call(this), setupRandomResult.call(this)); |
37 | 37 |
38 let sandboxedRequire = createSandbox({globals}); | 38 let sandboxedRequire = createSandbox({globals}); |
39 ( | 39 ( |
40 {Prefs} = sandboxedRequire("./stub-modules/prefs"), | 40 {Prefs} = sandboxedRequire("./stub-modules/prefs"), |
41 {Utils} = sandboxedRequire("./stub-modules/utils"), | 41 {Utils} = sandboxedRequire("./stub-modules/utils"), |
42 {Notification} = sandboxedRequire("../lib/notification") | 42 {Notification} = sandboxedRequire("../lib/notification") |
43 ); | 43 ); |
44 | 44 |
45 callback(); | 45 callback(); |
46 }; | 46 }; |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 | 428 |
429 registerHandler.call(this, [relentless]); | 429 registerHandler.call(this, [relentless]); |
430 this.runScheduledTasks(1).then(() => | 430 this.runScheduledTasks(1).then(() => |
431 { | 431 { |
432 test.deepEqual(showNotifications(), [relentless], "Relentless notifications
are shown initially"); | 432 test.deepEqual(showNotifications(), [relentless], "Relentless notifications
are shown initially"); |
433 }).then(() => | 433 }).then(() => |
434 { | 434 { |
435 test.deepEqual(showNotifications(), [], "Relentless notifications are not sh
own before the interval"); | 435 test.deepEqual(showNotifications(), [], "Relentless notifications are not sh
own before the interval"); |
436 }).then(() => | 436 }).then(() => |
437 { | 437 { |
438 // Date always returns a fixed time (see setupTimerAndXMLHttp) so we | 438 // Date always returns a fixed time (see setupTimerAndFetch) so we |
439 // manipulate the shown data manually. | 439 // manipulate the shown data manually. |
440 Prefs.notificationdata.shown[relentless.id] -= relentless.interval; | 440 Prefs.notificationdata.shown[relentless.id] -= relentless.interval; |
441 test.deepEqual(showNotifications(), [relentless], "Relentless notifications
are shown after the interval"); | 441 test.deepEqual(showNotifications(), [relentless], "Relentless notifications
are shown after the interval"); |
442 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 442 }).catch(unexpectedError.bind(test)).then(() => test.done()); |
443 }; | 443 }; |
444 | 444 |
445 exports.testRelentlessNotification = function(test) | 445 exports.testRelentlessNotification = function(test) |
446 { | 446 { |
447 let relentless = { | 447 let relentless = { |
448 id: 3, | 448 id: 3, |
449 type: "relentless", | 449 type: "relentless", |
450 interval: 100, | 450 interval: 100, |
451 urlFilters: ["foo.com$document", "bar.foo$document"] | 451 urlFilters: ["foo.com$document", "bar.foo$document"] |
452 }; | 452 }; |
453 | 453 |
454 registerHandler.call(this, [relentless]); | 454 registerHandler.call(this, [relentless]); |
455 this.runScheduledTasks(1).then(() => | 455 this.runScheduledTasks(1).then(() => |
456 { | 456 { |
457 test.deepEqual(showNotifications(), [], "Relentless notification is not show
n without URL"); | 457 test.deepEqual(showNotifications(), [], "Relentless notification is not show
n without URL"); |
458 test.deepEqual(showNotifications("http://bar.com"), [], "Relentless notifica
tion is not shown for a non-matching URL"); | 458 test.deepEqual(showNotifications("http://bar.com"), [], "Relentless notifica
tion is not shown for a non-matching URL"); |
459 test.deepEqual(showNotifications("http://foo.com"), [relentless], "Relentles
s notification is shown for a matching URL"); | 459 test.deepEqual(showNotifications("http://foo.com"), [relentless], "Relentles
s notification is shown for a matching URL"); |
460 }).then(() => | 460 }).then(() => |
461 { | 461 { |
462 test.deepEqual(showNotifications("http://foo.com"), [], "Relentless notifica
tions are not shown before the interval"); | 462 test.deepEqual(showNotifications("http://foo.com"), [], "Relentless notifica
tions are not shown before the interval"); |
463 }).then(() => | 463 }).then(() => |
464 { | 464 { |
465 // Date always returns a fixed time (see setupTimerAndXMLHttp) so we | 465 // Date always returns a fixed time (see setupTimerAndFetch) so we |
466 // manipulate the shown data manually. | 466 // manipulate the shown data manually. |
467 Prefs.notificationdata.shown[relentless.id] -= relentless.interval; | 467 Prefs.notificationdata.shown[relentless.id] -= relentless.interval; |
468 test.deepEqual(showNotifications(), [], "Relentless notifications are not sh
own after the interval without URL"); | 468 test.deepEqual(showNotifications(), [], "Relentless notifications are not sh
own after the interval without URL"); |
469 test.deepEqual(showNotifications("http://bar.com"), [], "Relentless notifica
tions are not shown after the interval for a non-matching URL"); | 469 test.deepEqual(showNotifications("http://bar.com"), [], "Relentless notifica
tions are not shown after the interval for a non-matching URL"); |
470 test.deepEqual(showNotifications("http://bar.foo.com"), [relentless], "Relen
tless notifications are shown after the interval for a matching URL"); | 470 test.deepEqual(showNotifications("http://bar.foo.com"), [relentless], "Relen
tless notifications are shown after the interval for a matching URL"); |
471 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 471 }).catch(unexpectedError.bind(test)).then(() => test.done()); |
472 }; | 472 }; |
473 | 473 |
474 exports.testGlobalOptOut = function(test) | 474 exports.testGlobalOptOut = function(test) |
475 { | 475 { |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 }; | 565 }; |
566 | 566 |
567 exports.testMissingTranslation = function(test) | 567 exports.testMissingTranslation = function(test) |
568 { | 568 { |
569 let notification = {message: {"en-US": "en-US"}}; | 569 let notification = {message: {"en-US": "en-US"}}; |
570 Utils.appLocale = "fr"; | 570 Utils.appLocale = "fr"; |
571 let texts = Notification.getLocalizedTexts(notification); | 571 let texts = Notification.getLocalizedTexts(notification); |
572 test.equal(texts.message, "en-US"); | 572 test.equal(texts.message, "en-US"); |
573 test.done(); | 573 test.done(); |
574 }; | 574 }; |
LEFT | RIGHT |