Home | History | Annotate | Download | only in extension
      1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 request = {action: 'should_scroll'}
      6 
      7 var PLAY_MUSIC_HOSTNAME = 'play.google.com';
      8 
      9 function report_scrolling_to_test() {
     10   //Sends message to PLT informing that user is scrolling on the browser.
     11   var scroll_url = 'http://localhost:8001/scroll';
     12   var req = new XMLHttpRequest();
     13   req.open('GET', scroll_url, true);
     14   req.send("");
     15 }
     16 
     17 //Sends message to the test.js(background script). test.js on
     18 //receiving a message from content script assumes the page has
     19 //loaded successfully. It further responds with instructions on
     20 //whether/how to scroll.
     21 function sendSuccessToBGScript() {
     22   chrome.runtime.sendMessage(request, function(response) {
     23     if (response && response.should_scroll) {
     24       window.focus();
     25       lastOffset = window.pageYOffset;
     26       var start_interval = Math.max(1000, response.scroll_interval);
     27       function smoothScrollDown() {
     28         report_scrolling_to_test();
     29         window.scrollBy(0, response.scroll_by);
     30         if (window.pageYOffset != lastOffset) {
     31           lastOffset = window.pageYOffset;
     32           setTimeout(smoothScrollDown, response.scroll_interval);
     33         } else if (response.should_scroll_up) {
     34           setTimeout(smoothScrollUp, start_interval);
     35         }
     36       }
     37       function smoothScrollUp() {
     38         report_scrolling_to_test();
     39         window.scrollBy(0, -1 * response.scroll_by);
     40         if (window.pageYOffset != lastOffset) {
     41           lastOffset = window.pageYOffset;
     42           setTimeout(smoothScrollUp, response.scroll_interval);
     43         } else if (response.scroll_loop) {
     44           setTimeout(smoothScrollDown, start_interval);
     45         }
     46       }
     47       setTimeout(smoothScrollDown, start_interval);
     48     }
     49   });
     50 }
     51 
     52 function afterLoad() {
     53   if (document.location.hostname !== PLAY_MUSIC_HOSTNAME) {
     54     sendSuccessToBGScript();
     55     return;
     56   }
     57 
     58   var playButton = document.querySelector('[data-id="play"]');
     59 
     60   //If play music website, if we do not see a play button
     61   //that effectively means the music is not loaded. So do not
     62   //report success load to test.js.
     63   if (playButton) {
     64     sendSuccessToBGScript();
     65     playButton.click();
     66   }
     67 }
     68 
     69 window.addEventListener('load', afterLoad);
     70