123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- "use strict";
- /**
- * Copyright 2021 Google LLC.
- * Copyright (c) Microsoft Corporation.
- *
- * 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.
- */
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.CommandProcessor = void 0;
- const protocol_js_1 = require("../protocol/protocol.js");
- const log_js_1 = require("../utils/log.js");
- const EventEmitter_js_1 = require("../utils/EventEmitter.js");
- const browsingContextProcessor_js_1 = require("./domains/context/browsingContextProcessor.js");
- const OutgoingBidiMessage_js_1 = require("./OutgoingBidiMessage.js");
- class BidiNoOpParser {
- parseAddPreloadScriptParams(params) {
- return params;
- }
- parseRemovePreloadScriptParams(params) {
- return params;
- }
- parseGetRealmsParams(params) {
- return params;
- }
- parseCallFunctionParams(params) {
- return params;
- }
- parseEvaluateParams(params) {
- return params;
- }
- parseDisownParams(params) {
- return params;
- }
- parseSendCommandParams(params) {
- return params;
- }
- parseGetSessionParams(params) {
- return params;
- }
- parseSubscribeParams(params) {
- return params;
- }
- parseNavigateParams(params) {
- return params;
- }
- parseReloadParams(params) {
- return params;
- }
- parseGetTreeParams(params) {
- return params;
- }
- parseCreateParams(params) {
- return params;
- }
- parseCloseParams(params) {
- return params;
- }
- parseCaptureScreenshotParams(params) {
- return params;
- }
- parsePrintParams(params) {
- return params;
- }
- parsePerformActionsParams(params) {
- return params;
- }
- parseReleaseActionsParams(params) {
- return params;
- }
- parseSetViewportParams(params) {
- return params;
- }
- }
- class CommandProcessor extends EventEmitter_js_1.EventEmitter {
- #contextProcessor;
- #eventManager;
- #parser;
- #logger;
- constructor(cdpConnection, eventManager, selfTargetId, parser = new BidiNoOpParser(), browsingContextStorage, realmStorage, logger) {
- super();
- this.#eventManager = eventManager;
- this.#logger = logger;
- this.#contextProcessor = new browsingContextProcessor_js_1.BrowsingContextProcessor(cdpConnection, selfTargetId, eventManager, browsingContextStorage, realmStorage, logger);
- this.#parser = parser;
- }
- static #process_session_status() {
- return { result: { ready: false, message: 'already connected' } };
- }
- async #process_session_subscribe(params, channel) {
- await this.#eventManager.subscribe(params.events, params.contexts ?? [null], channel);
- return { result: {} };
- }
- async #process_session_unsubscribe(params, channel) {
- await this.#eventManager.unsubscribe(params.events, params.contexts ?? [null], channel);
- return { result: {} };
- }
- async #processCommand(commandData) {
- switch (commandData.method) {
- case 'session.status':
- return CommandProcessor.#process_session_status();
- case 'session.subscribe':
- return this.#process_session_subscribe(this.#parser.parseSubscribeParams(commandData.params), commandData.channel ?? null);
- case 'session.unsubscribe':
- return this.#process_session_unsubscribe(this.#parser.parseSubscribeParams(commandData.params), commandData.channel ?? null);
- case 'browsingContext.create':
- return this.#contextProcessor.process_browsingContext_create(this.#parser.parseCreateParams(commandData.params));
- case 'browsingContext.close':
- return this.#contextProcessor.process_browsingContext_close(this.#parser.parseCloseParams(commandData.params));
- case 'browsingContext.getTree':
- return this.#contextProcessor.process_browsingContext_getTree(this.#parser.parseGetTreeParams(commandData.params));
- case 'browsingContext.navigate':
- return this.#contextProcessor.process_browsingContext_navigate(this.#parser.parseNavigateParams(commandData.params));
- case 'browsingContext.captureScreenshot':
- return this.#contextProcessor.process_browsingContext_captureScreenshot(this.#parser.parseCaptureScreenshotParams(commandData.params));
- case 'browsingContext.print':
- return this.#contextProcessor.process_browsingContext_print(this.#parser.parsePrintParams(commandData.params));
- case 'browsingContext.reload':
- return this.#contextProcessor.process_browsingContext_reload(this.#parser.parseReloadParams(commandData.params));
- case 'browsingContext.setViewport':
- return this.#contextProcessor.process_browsingContext_setViewport(this.#parser.parseSetViewportParams(commandData.params));
- case 'script.addPreloadScript':
- return this.#contextProcessor.process_script_addPreloadScript(this.#parser.parseAddPreloadScriptParams(commandData.params));
- case 'script.removePreloadScript':
- return this.#contextProcessor.process_script_removePreloadScript(this.#parser.parseRemovePreloadScriptParams(commandData.params));
- case 'script.getRealms':
- return this.#contextProcessor.process_script_getRealms(this.#parser.parseGetRealmsParams(commandData.params));
- case 'script.callFunction':
- return this.#contextProcessor.process_script_callFunction(this.#parser.parseCallFunctionParams(commandData.params));
- case 'script.evaluate':
- return this.#contextProcessor.process_script_evaluate(this.#parser.parseEvaluateParams(commandData.params));
- case 'script.disown':
- return this.#contextProcessor.process_script_disown(this.#parser.parseDisownParams(commandData.params));
- case 'input.performActions':
- return this.#contextProcessor.process_input_performActions(this.#parser.parsePerformActionsParams(commandData.params));
- case 'input.releaseActions':
- return this.#contextProcessor.process_input_releaseActions(this.#parser.parseReleaseActionsParams(commandData.params));
- case 'cdp.sendCommand':
- return this.#contextProcessor.process_cdp_sendCommand(this.#parser.parseSendCommandParams(commandData.params));
- case 'cdp.getSession':
- return this.#contextProcessor.process_cdp_getSession(this.#parser.parseGetSessionParams(commandData.params));
- }
- // Intentionally kept outside of the switch statement to ensure that
- // ESLint @typescript-eslint/switch-exhaustiveness-check triggers if a new
- // command is added.
- throw new protocol_js_1.Message.UnknownCommandException(`Unknown command '${commandData.method}'.`);
- }
- async processCommand(command) {
- try {
- const result = await this.#processCommand(command);
- const response = {
- id: command.id,
- ...result,
- };
- this.emit('response', OutgoingBidiMessage_js_1.OutgoingBidiMessage.createResolved(response, command.channel ?? null));
- }
- catch (e) {
- if (e instanceof protocol_js_1.Message.ErrorResponse) {
- const errorResponse = e;
- this.emit('response', OutgoingBidiMessage_js_1.OutgoingBidiMessage.createResolved(errorResponse.toErrorResponse(command.id), command.channel ?? null));
- }
- else {
- const error = e;
- this.#logger?.(log_js_1.LogType.bidi, error);
- this.emit('response', OutgoingBidiMessage_js_1.OutgoingBidiMessage.createResolved(new protocol_js_1.Message.UnknownErrorException(error.message).toErrorResponse(command.id), command.channel ?? null));
- }
- }
- }
- }
- exports.CommandProcessor = CommandProcessor;
- //# sourceMappingURL=CommandProcessor.js.map
|