1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /**
- * Copyright 2018 Google Inc. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- const EventEmitter = require('events');
- const {debugError} = require('./helper');
- const {ExecutionContext} = require('./ExecutionContext');
- const {JSHandle} = require('./JSHandle');
- class Worker extends EventEmitter {
- /**
- * @param {Puppeteer.CDPSession} client
- * @param {string} url
- * @param {function(string, !Array<!JSHandle>, Protocol.Runtime.StackTrace=):void} consoleAPICalled
- * @param {function(!Protocol.Runtime.ExceptionDetails):void} exceptionThrown
- */
- constructor(client, url, consoleAPICalled, exceptionThrown) {
- super();
- this._client = client;
- this._url = url;
- this._executionContextPromise = new Promise(x => this._executionContextCallback = x);
- /** @type {function(!Protocol.Runtime.RemoteObject):!JSHandle} */
- let jsHandleFactory;
- this._client.once('Runtime.executionContextCreated', async event => {
- jsHandleFactory = remoteObject => new JSHandle(executionContext, client, remoteObject);
- const executionContext = new ExecutionContext(client, event.context, null);
- this._executionContextCallback(executionContext);
- });
- // This might fail if the target is closed before we recieve all execution contexts.
- this._client.send('Runtime.enable', {}).catch(debugError);
- this._client.on('Runtime.consoleAPICalled', event => consoleAPICalled(event.type, event.args.map(jsHandleFactory), event.stackTrace));
- this._client.on('Runtime.exceptionThrown', exception => exceptionThrown(exception.exceptionDetails));
- }
- /**
- * @return {string}
- */
- url() {
- return this._url;
- }
- /**
- * @return {!Promise<ExecutionContext>}
- */
- async executionContext() {
- return this._executionContextPromise;
- }
- /**
- * @param {Function|string} pageFunction
- * @param {!Array<*>} args
- * @return {!Promise<*>}
- */
- async evaluate(pageFunction, ...args) {
- return (await this._executionContextPromise).evaluate(pageFunction, ...args);
- }
- /**
- * @param {Function|string} pageFunction
- * @param {!Array<*>} args
- * @return {!Promise<!JSHandle>}
- */
- async evaluateHandle(pageFunction, ...args) {
- return (await this._executionContextPromise).evaluateHandle(pageFunction, ...args);
- }
- }
- module.exports = {Worker};
|