blob: 579ef458854f11e2fa47d762e8b9af59e9b339ae [file] [log] [blame]
// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
request = {action: 'should_scroll'}
var PLAY_MUSIC_HOSTNAME = 'play.google.com';
function report_scrolling_to_test() {
//Sends message to PLT informing that user is scrolling on the browser.
var scroll_url = 'http://localhost:8001/scroll';
var req = new XMLHttpRequest();
req.open('GET', scroll_url, true);
req.send("");
}
chrome.runtime.onMessage.addListener(
function(message, sender, callback) {
if (message == "numberOfVideosPlaying") {
callback(numberOfVideosPlaying());
}
});
function numberOfVideosPlaying() {
let number_of_videos_playing = 0;
for (let video of document.querySelectorAll('video')) {
if (!video.paused) {
number_of_videos_playing++;
}
}
return number_of_videos_playing;
}
//Sends message to the test.js(background script). test.js on
//receiving a message from content script assumes the page has
//loaded successfully. It further responds with instructions on
//whether/how to scroll.
function sendSuccessToBGScript() {
chrome.runtime.sendMessage(request, function(response) {
if (response && response.should_scroll) {
window.focus();
lastOffset = window.pageYOffset;
var start_interval = Math.max(1000, response.scroll_interval);
function smoothScrollDown() {
report_scrolling_to_test();
window.scrollBy(0, response.scroll_by);
if (window.pageYOffset != lastOffset) {
lastOffset = window.pageYOffset;
setTimeout(smoothScrollDown, response.scroll_interval);
} else if (response.should_scroll_up) {
setTimeout(smoothScrollUp, start_interval);
}
}
function smoothScrollUp() {
report_scrolling_to_test();
window.scrollBy(0, -1 * response.scroll_by);
if (window.pageYOffset != lastOffset) {
lastOffset = window.pageYOffset;
setTimeout(smoothScrollUp, response.scroll_interval);
} else if (response.scroll_loop) {
setTimeout(smoothScrollDown, start_interval);
}
}
setTimeout(smoothScrollDown, start_interval);
}
});
}
function afterLoad() {
if (document.location.hostname !== PLAY_MUSIC_HOSTNAME) {
sendSuccessToBGScript();
return;
}
var playButton = document.querySelector('[data-id="play"]');
//If play music website, if we do not see a play button
//that effectively means the music is not loaded. So do not
//report success load to test.js.
if (playButton) {
sendSuccessToBGScript();
playButton.click();
}
}
window.addEventListener('load', afterLoad);