add support for opening page and closing page

This commit is contained in:
Tommy D. Rossi
2025-11-15 16:04:50 +01:00
parent 1b0480c77f
commit bbda29069c
4 changed files with 41 additions and 17 deletions
-15
View File
@@ -1,18 +1,3 @@
/**
* 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.
*/
import { RelayConnection, debugLog } from './relayConnection';
@@ -277,13 +277,38 @@ export class RelayConnection {
if (message.method === 'forwardCDPCommand') {
const { sessionId, method, params } = message.params;
if (method === 'Target.createTarget') {
const url = params?.url || 'about:blank';
debugLog('Creating new tab with URL:', url);
const tab = await chrome.tabs.create({ url, active: false });
if (!tab.id) {
throw new Error('Failed to create tab');
}
debugLog('Created tab:', tab.id, 'waiting for it to load...');
// Wait a bit for tab to initialize
await new Promise(resolve => setTimeout(resolve, 100));
// Attach to the new tab
const targetInfo = await this.attachTab(tab.id);
return { targetId: targetInfo.targetId };
}
if (method === 'Target.closeTarget' && params?.targetId) {
debugLog('Closing target:', params.targetId);
for (const [tabId, tab] of this._attachedTabs) {
if (tab.targetId === params.targetId) {
debugLog('Found tab to close:', tabId);
await chrome.tabs.remove(tabId);
return { success: true };
}
}
debugLog('Target not found:', params.targetId);
throw new Error(`Target not found: ${params.targetId}`);
}