diff options
Diffstat (limited to 'deps/v8/tools/link_clicker.extension/content.js')
-rw-r--r-- | deps/v8/tools/link_clicker.extension/content.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/deps/v8/tools/link_clicker.extension/content.js b/deps/v8/tools/link_clicker.extension/content.js new file mode 100644 index 0000000000..4ab825e01e --- /dev/null +++ b/deps/v8/tools/link_clicker.extension/content.js @@ -0,0 +1,66 @@ +// 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 linkClickerContentScript() { + // time in ms + let minInterval; + let maxInterval; + let pattern; + let enabled; + let timeoutId; + + // Initialize variables. + chrome.runtime.sendMessage({type:'get'}, function(msg) { + if (msg.type == 'update') updateFromMessage(msg); + }); + + chrome.runtime.onMessage.addListener( + function(msg, sender, sendResponse) { + if (msg.type == 'update') updateFromMessage(msg); + }); + + function findAllLinks() { + let links = document.links; + let results = new Set(); + for (let i = 0; i < links.length; i++) { + let href = links[i].href; + if (!href) continue; + if (href && href.match(pattern)) results.add(href); + } + return Array.from(results); + } + + function updateFromMessage(msg) { + console.log(msg); + minInterval = Number(msg.minInterval) + maxInterval = Number(msg.maxInterval); + pattern = new RegExp(msg.pattern); + enabled = Boolean(msg.enabled); + if (enabled) schedule(); + } + + function followLink() { + if (!enabled) return; + let links = findAllLinks(); + if (links.length <= 5) { + // navigate back if the page has not enough links + window.history.back() + console.log("navigate back"); + } else { + let link = links[Math.round(Math.random() * (links.length-1))]; + console.log(link); + window.location.href = link; + // Schedule in case we just followed an anchor. + schedule(); + } + } + + function schedule() { + clearTimeout(timeoutId); + let delta = maxInterval - minInterval; + let duration = minInterval + (Math.random() * delta); + console.log(duration); + timeoutId = setTimeout(followLink, duration); + } +})(); |