Home | History | Annotate | Download | only in js
      1 // Copyright 2013 The Chromium 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 /**
      6  * Function to take the screenshot of the current screen.
      7  * @param {function(HTMLCanvasElement)} callback Callback for returning the
      8  *                                      canvas with the screenshot on it.
      9  */
     10 function takeScreenshot(callback) {
     11   var screenshotStream = null;
     12   var video = document.createElement('video');
     13 
     14   video.addEventListener('canplay', function(e) {
     15     if (screenshotStream) {
     16       var canvas = document.createElement('canvas');
     17       canvas.setAttribute('width', video.videoWidth);
     18       canvas.setAttribute('height', video.videoHeight);
     19       canvas.getContext('2d').drawImage(
     20           video, 0, 0, video.videoWidth, video.videoHeight);
     21 
     22       video.pause();
     23       video.src = '';
     24 
     25       screenshotStream.stop();
     26       screenshotStream = null;
     27 
     28       callback(canvas);
     29     }
     30   }, false);
     31 
     32   navigator.webkitGetUserMedia(
     33     {
     34       video: {
     35         mandatory: {
     36           chromeMediaSource: 'screen',
     37           maxWidth: 4096,
     38           maxHeight: 2560
     39         }
     40       }
     41     },
     42     function(stream) {
     43       if (stream) {
     44         screenshotStream = stream;
     45         video.src = window.URL.createObjectURL(screenshotStream);
     46         video.play();
     47       }
     48     },
     49     function(err) {
     50       console.error('takeScreenshot failed: ' +
     51           err.name + '; ' + err.message + '; ' + err.constraintName);
     52     }
     53   );
     54 }
     55