From e8730f68798f173bd4d1c2f9b7ce02985e3fd771 Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Fri, 1 Sep 2017 16:35:50 -0400 Subject: SpyBlock updated to 2.9.1 --- .../spyblock@gnu.org/lib/child/flasher.js | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 data/extensions/spyblock@gnu.org/lib/child/flasher.js (limited to 'data/extensions/spyblock@gnu.org/lib/child/flasher.js') diff --git a/data/extensions/spyblock@gnu.org/lib/child/flasher.js b/data/extensions/spyblock@gnu.org/lib/child/flasher.js new file mode 100644 index 0000000..492f4e0 --- /dev/null +++ b/data/extensions/spyblock@gnu.org/lib/child/flasher.js @@ -0,0 +1,99 @@ +/* + * This file is part of Adblock Plus , + * Copyright (C) 2006-2017 eyeo GmbH + * + * Adblock Plus is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * Adblock Plus is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Adblock Plus. If not, see . + */ + +/** + * @fileOverview Draws a blinking border for a list of matching elements. + */ + +function Flasher(elements, scrollToItem) +{ + if (scrollToItem && elements[0].ownerDocument) + { + // Ensure that at least one element is visible when flashing + elements[0].scrollIntoView(); + } + + this.elements = elements; + this.count = 0; + + this.doFlash(); + +} +Flasher.prototype = +{ + elements: null, + count: 0, + timer: null, + + doFlash: function() + { + if (this.count >= 12) + { + this.stop(); + return; + } + + if (this.count % 2) + this.switchOff(); + else + this.switchOn(); + + this.count++; + + this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); + this.timer.initWithCallback(() => this.doFlash(), 300, Ci.nsITimer.TYPE_ONE_SHOT); + }, + + stop: function() + { + if (this.timer) + { + this.timer.cancel(); + this.timer = null; + } + + if (this.elements) + { + this.switchOff(); + this.elements = null; + } + }, + + setOutline: function(outline, offset) + { + for (let element of this.elements) + { + if (!Cu.isDeadWrapper(element) && "style" in element) + { + element.style.outline = outline; + element.style.outlineOffset = offset; + } + } + }, + + switchOn: function() + { + this.setOutline("#CC0000 dotted 2px", "-2px"); + }, + + switchOff: function() + { + this.setOutline("", ""); + } +}; + +exports.Flasher = Flasher; -- cgit v1.2.3