| // Copyright 2017 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| (function linkClickerBackgroundScript() { |
| |
| // time in ms. |
| let minInterval = 1*1000; |
| let maxInterval = 20*1000; |
| let pattern = /.*/; |
| let enabled = false; |
| |
| let animateIconIntervalId; |
| |
| // =========================================================================== |
| |
| chrome.runtime.onMessage.addListener(function(msg, sender, response) { |
| let result; |
| if (msg.type == 'update') result = updateFromMessage(msg); |
| if (msg.type == 'get') result = getValues(); |
| response(result); |
| }); |
| |
| // =========================================================================== |
| function updateFromMessage(msg) { |
| console.log(msg); |
| minInterval = Number(msg.minInterval) |
| maxInterval = Number(msg.maxInterval); |
| if (maxInterval < minInterval) { |
| let tmpMin = Math.min(minInterval, maxInterval); |
| maxInterval = Math.max(minInterval, maxInterval); |
| minInterval = tmpMin; |
| } |
| pattern = new RegExp(msg.pattern); |
| enabled = Boolean(msg.enabled); |
| updateTabs(); |
| scheduleIconAnimation(); |
| return getValues(); |
| } |
| |
| function getValues() { |
| return { |
| type: 'update', |
| minInterval: minInterval, |
| maxInterval: maxInterval, |
| pattern: pattern.source, |
| enabled: enabled |
| } |
| } |
| |
| function updateTabs() { |
| chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { |
| let message = getValues(); |
| for (let i = 0; i < tabs.length; ++i) { |
| chrome.tabs.sendMessage(tabs[i].id, message); |
| } |
| }); |
| } |
| |
| let animationIndex = 0; |
| function animateIcon() { |
| animationIndex = (animationIndex + 1) % 4; |
| chrome.browserAction.setBadgeText( { text: ".".repeat(animationIndex) } ); |
| } |
| |
| function scheduleIconAnimation() { |
| chrome.browserAction.setBadgeText( { text: "" } ); |
| clearInterval(animateIconIntervalId); |
| if (enabled) { |
| animateIconIntervalId = setInterval(animateIcon, 500); |
| } |
| } |
| |
| })(); |