blob: ee900e7e16e808dcb1d824a7807ef49b6a270682 [file] [log] [blame]
// 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(HTMLCanvasElement)} callback Callback for returning the
* canvas with the screenshot. Called with null if the screenshot failed.
*/
function takeScreenshot(callback) {
let screenshotStream = null;
const video = document.createElement('video');
video.addEventListener('canplay', function(e) {
if (screenshotStream) {
const 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.srcObject = null;
screenshotStream.getVideoTracks()[0].stop();
screenshotStream = null;
callback(canvas);
}
}, false);
navigator.webkitGetUserMedia(
{
video: {
mandatory:
{chromeMediaSource: 'screen', maxWidth: 4096, maxHeight: 2560}
}
},
function(stream) {
if (stream) {
screenshotStream = stream;
video.srcObject = screenshotStream;
video.play();
}
},
function(err) {
console.error(
'takeScreenshot failed: ' + err.name + '; ' + err.message + '; ' +
err.constraintName);
callback(null);
});
}