| Index: third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9657b65c6257555dcbc6f2bc15774535ad197791
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js
|
| @@ -0,0 +1,192 @@
|
| +// Copyright 2017 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.
|
| +
|
| +/**
|
| + * @implements {Protocol.PageDispatcher}
|
| + */
|
| +SDK.ScreenCaptureModel = class extends SDK.SDKModel {
|
| + /**
|
| + * @param {!SDK.Target} target
|
| + */
|
| + constructor(target) {
|
| + super(target);
|
| + this._agent = target.pageAgent();
|
| + /** @type {?function(string, !Protocol.Page.ScreencastFrameMetadata)} */
|
| + this._onScreencastFrame = null;
|
| + /** @type {?function(boolean)} */
|
| + this._onScreencastVisibilityChanged = null;
|
| + target.registerPageDispatcher(this);
|
| + }
|
| +
|
| + /**
|
| + * @param {string} format
|
| + * @param {number} quality
|
| + * @param {number|undefined} width
|
| + * @param {number|undefined} height
|
| + * @param {number|undefined} everyNthFrame
|
| + * @param {function(string, !Protocol.Page.ScreencastFrameMetadata)} onFrame
|
| + * @param {function(boolean)} onVisibilityChanged
|
| + */
|
| + startScreencast(format, quality, width, height, everyNthFrame, onFrame, onVisibilityChanged) {
|
| + this._onScreencastFrame = onFrame;
|
| + this._onScreencastVisibilityChanged = onVisibilityChanged;
|
| + this._agent.startScreencast(format, quality, width, height, everyNthFrame);
|
| + }
|
| +
|
| + stopScreencast() {
|
| + this._onScreencastFrame = null;
|
| + this._onScreencastVisibilityChanged = null;
|
| + this._agent.stopScreencast();
|
| + }
|
| +
|
| + /**
|
| + * @param {string} format
|
| + * @param {number} quality
|
| + * @return {!Promise<?string>}
|
| + */
|
| + captureScreenshot(format, quality) {
|
| + var fulfill;
|
| + var promise = new Promise(callback => fulfill = callback);
|
| + this._agent.captureScreenshot(format, quality, (error, content) => {
|
| + if (error)
|
| + console.error(error);
|
| + fulfill(error ? null : content);
|
| + });
|
| + return promise;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} data
|
| + * @param {!Protocol.Page.ScreencastFrameMetadata} metadata
|
| + * @param {number} sessionId
|
| + */
|
| + screencastFrame(data, metadata, sessionId) {
|
| + this._agent.screencastFrameAck(sessionId);
|
| + if (this._onScreencastFrame)
|
| + this._onScreencastFrame.call(null, data, metadata);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {boolean} visible
|
| + */
|
| + screencastVisibilityChanged(visible) {
|
| + if (this._onScreencastVisibilityChanged)
|
| + this._onScreencastVisibilityChanged.call(null, visible);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {number} time
|
| + */
|
| + domContentEventFired(time) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {number} time
|
| + */
|
| + loadEventFired(time) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.Page.FrameId} frameId
|
| + * @param {!Protocol.Page.FrameId} parentFrameId
|
| + */
|
| + frameAttached(frameId, parentFrameId) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.Page.Frame} frame
|
| + */
|
| + frameNavigated(frame) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.Page.FrameId} frameId
|
| + */
|
| + frameDetached(frameId) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.Page.FrameId} frameId
|
| + */
|
| + frameStartedLoading(frameId) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.Page.FrameId} frameId
|
| + */
|
| + frameStoppedLoading(frameId) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.Page.FrameId} frameId
|
| + * @param {number} delay
|
| + */
|
| + frameScheduledNavigation(frameId, delay) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.Page.FrameId} frameId
|
| + */
|
| + frameClearedScheduledNavigation(frameId) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + frameResized() {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} message
|
| + * @param {string} dialogType
|
| + */
|
| + javascriptDialogOpening(message, dialogType) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {boolean} result
|
| + */
|
| + javascriptDialogClosed(result) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!Protocol.DOM.RGBA} color
|
| + */
|
| + colorPicked(color) {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + interstitialShown() {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + interstitialHidden() {
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + navigationRequested() {
|
| + }
|
| +};
|
| +
|
| +SDK.SDKModel.register(SDK.ScreenCaptureModel, SDK.Target.Capability.ScreenCapture);
|
|
|