// Copyright 2013 The Chromium 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 to take the screenshot of the current screen.
 * @param {function(string)} callback Callback for returning the data URL to the
 *                           screenshot.
 */
function takeScreenshot(callback) {
  var streaming = false;
  var video = document.createElement('video');

  video.addEventListener('canplay', function(e) {
    if (!streaming) {
      streaming = true;

      var canvas = document.createElement('canvas');
      canvas.setAttribute('width', video.videoWidth);
      canvas.setAttribute('height', video.videoHeight);
      canvas.getContext('2d').drawImage(
          video, 0, 0, video.videoWidth, video.videoHeight);

      video.pause();
      video.src = '';

      callback(canvas.toDataURL('image/png'));
    }
  }, false);

  navigator.webkitGetUserMedia(
    {
      video: {mandatory: {chromeMediaSource: 'screen'}}
    },
    function(stream) {
      video.src = window.webkitURL.createObjectURL(stream);
      video.play();
    },
    function(err) {
      console.error('takeScreenshot failed: ' +
          err.name + '; ' + err.message + '; ' + err.constraintName);
    }
  );
}

// Copyright 2013 The Chromium 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 to take the screenshot of the current screen.
 * @param {function(string)} callback Callback for returning the data URL to the
 *                           screenshot.
 */
function takeScreenshot(callback) {
  var streaming = false;
  var video = document.createElement('video');

  video.addEventListener('canplay', function(e) {
    if (!streaming) {
      streaming = true;

      var canvas = document.createElement('canvas');
      canvas.setAttribute('width', video.videoWidth);
      canvas.setAttribute('height', video.videoHeight);
      canvas.getContext('2d').drawImage(
          video, 0, 0, video.videoWidth, video.videoHeight);

      video.pause();
      video.src = '';

      callback(canvas.toDataURL('image/png'));
    }
  }, false);

  navigator.webkitGetUserMedia(
    {
      video: {
        mandatory: {
          chromeMediaSource: 'screen',
          maxWidth: 4096,
          maxHeight: 2560
        }
      }
    },
    function(stream) {
      video.src = window.webkitURL.createObjectURL(stream);
      video.play();
    },
    function(err) {
      console.error('takeScreenshot failed: ' +
          err.name + '; ' + err.message + '; ' + err.constraintName);
    }
  );
}

Fix screenshot size. Not providing a maxWidth/maxHeight defaults GetUserMedia to a width of 640 pixels, making all our screenshots 640 pixels wide. Specify a large upper limit to be able to take screenshots of the actual screen size. Not making this int_max to keep a sanity check on the screenshot size.
Fix screenshot size.
Not providing a maxWidth/maxHeight defaults GetUserMedia to a width of 640 pixels, making all our screenshots 640 pixels wide.
Specify a large upper limit to be able to take screenshots of the actual screen size. Not making this int_max to keep a sanity check on the screenshot size.

R=xiyuan@chromium.org
BUG=299289

Review URL: https://codereview.chromium.org/24895003

git-svn-id: de016e52bd170d2d4f2344f9bf92d50478b649e0@225813 0039d316-1c4b-4281-b951-d872f2087c98
