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-2017 eyeo GmbH | 3 * Copyright (C) 2006-2017 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 12 matching lines...) Expand all Loading... |
23 let InvalidFilter = null; | 23 let InvalidFilter = null; |
24 let CommentFilter = null; | 24 let CommentFilter = null; |
25 let ActiveFilter = null; | 25 let ActiveFilter = null; |
26 let RegExpFilter = null; | 26 let RegExpFilter = null; |
27 let BlockingFilter = null; | 27 let BlockingFilter = null; |
28 let WhitelistFilter = null; | 28 let WhitelistFilter = null; |
29 let ElemHideBase = null; | 29 let ElemHideBase = null; |
30 let ElemHideFilter = null; | 30 let ElemHideFilter = null; |
31 let ElemHideException = null; | 31 let ElemHideException = null; |
32 let ElemHideEmulationFilter = null; | 32 let ElemHideEmulationFilter = null; |
| 33 let FilterNotifier = null; |
33 | 34 |
34 exports.setUp = function(callback) | 35 exports.setUp = function(callback) |
35 { | 36 { |
36 let sandboxedRequire = createSandbox(); | 37 let sandboxedRequire = createSandbox(); |
37 ( | 38 ( |
38 { | 39 { |
39 Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter, | 40 Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter, |
40 BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, | 41 BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, |
41 ElemHideException, ElemHideEmulationFilter | 42 ElemHideException, ElemHideEmulationFilter |
42 } = sandboxedRequire("../lib/filterClasses") | 43 } = sandboxedRequire("../lib/filterClasses") |
43 ); | 44 ); |
| 45 ({FilterNotifier} = sandboxedRequire("../lib/filterNotifier")); |
44 callback(); | 46 callback(); |
45 }; | 47 }; |
46 | 48 |
47 exports.testFromText = function(test) | 49 exports.testFromText = function(test) |
48 { | 50 { |
49 let tests = [ | 51 let tests = [ |
50 ["!asdf", CommentFilter, "comment"], | 52 ["!asdf", CommentFilter, "comment"], |
51 ["asdf", BlockingFilter, "blocking"], | 53 ["asdf", BlockingFilter, "blocking"], |
52 ["asdf$image,~collapse", BlockingFilter, "blocking"], | 54 ["asdf$image,~collapse", BlockingFilter, "blocking"], |
53 ["/asdf/", BlockingFilter, "blocking"], | 55 ["/asdf/", BlockingFilter, "blocking"], |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 ]; | 364 ]; |
363 | 365 |
364 for (let [text, selector, selectorDomain] of tests) | 366 for (let [text, selector, selectorDomain] of tests) |
365 { | 367 { |
366 doTest(text, selector, selectorDomain); | 368 doTest(text, selector, selectorDomain); |
367 doTest(text.replace("##", "#@#"), selector, selectorDomain); | 369 doTest(text.replace("##", "#@#"), selector, selectorDomain); |
368 } | 370 } |
369 | 371 |
370 test.done(); | 372 test.done(); |
371 }; | 373 }; |
| 374 |
| 375 exports.testNotifications = function(test) |
| 376 { |
| 377 function checkNotifications(action, expected, message) |
| 378 { |
| 379 let result = null; |
| 380 let listener = (topic, filter, newValue, oldValue) => |
| 381 { |
| 382 if (result) |
| 383 test.ok(false, "Got more that one notification - " + message); |
| 384 else |
| 385 result = [topic, filter.text, newValue, oldValue]; |
| 386 }; |
| 387 FilterNotifier.addListener(listener); |
| 388 action(); |
| 389 FilterNotifier.removeListener(listener); |
| 390 test.deepEqual(result, expected, message); |
| 391 } |
| 392 |
| 393 let filter = Filter.fromText("foobar"); |
| 394 checkNotifications(() => |
| 395 { |
| 396 filter.disabled = true; |
| 397 }, ["filter.disabled", "foobar", true, false], "Disabling filter"); |
| 398 checkNotifications(() => |
| 399 { |
| 400 filter.disabled = true; |
| 401 }, null, "Disabling already disabled filter"); |
| 402 checkNotifications(() => |
| 403 { |
| 404 filter.disabled = false; |
| 405 }, ["filter.disabled", "foobar", false, true], "Enabling filter"); |
| 406 |
| 407 checkNotifications(() => |
| 408 { |
| 409 filter.lastHit = 1234; |
| 410 }, ["filter.lastHit", "foobar", 1234, 0], "Changing last filter hit"); |
| 411 checkNotifications(() => |
| 412 { |
| 413 filter.lastHit = 1234; |
| 414 }, null, "Changing last filter hit to same value"); |
| 415 checkNotifications(() => |
| 416 { |
| 417 filter.lastHit = 0; |
| 418 }, ["filter.lastHit", "foobar", 0, 1234], "Resetting last filter hit"); |
| 419 |
| 420 checkNotifications(() => |
| 421 { |
| 422 filter.hitCount++; |
| 423 }, ["filter.hitCount", "foobar", 1, 0], "Increasing filter hit counts"); |
| 424 checkNotifications(() => |
| 425 { |
| 426 filter.hitCount = 0; |
| 427 }, ["filter.hitCount", "foobar", 0, 1], "Resetting filter hit counts"); |
| 428 |
| 429 filter.delete(); |
| 430 test.done(); |
| 431 }; |
OLD | NEW |