cdp-tunnel 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -156,17 +156,24 @@ importScripts('features/automation-badge.js');
156
156
  var openerTabId = tab.openerTabId;
157
157
  var isOpenerControlled = openerTabId && State.isTabAttached(openerTabId);
158
158
 
159
- if (!isOpenerControlled) {
160
- Logger.info('[Tabs] Tab not controlled (no controlled opener), skipping. openerTabId:', openerTabId);
159
+ // 修改逻辑:只要有 opener,就尝试处理(不管 opener 是否被控制)
160
+ // 因为 Playwright 创建的页面 opener 可能没有被扩展识别
161
+ if (!openerTabId) {
162
+ Logger.info('[Tabs] Tab has no opener, skipping. tabId:', tabId);
161
163
  return;
162
164
  }
163
165
 
164
- Logger.info('[Tabs] Tab has controlled opener:', openerTabId, ', will attach');
166
+ Logger.info('[Tabs] Tab has opener:', openerTabId, ', controlled:', isOpenerControlled, ', will attach');
165
167
 
166
168
  LocalHandler.getTargetInfoById(String(tabId)).then(function(targetInfo) {
167
- if (!targetInfo) return;
169
+ Logger.info('[Tabs] getTargetInfoById result:', targetInfo ? targetInfo.targetId : 'null');
170
+ if (!targetInfo) {
171
+ Logger.error('[Tabs] getTargetInfoById returned null for tabId:', tabId);
172
+ return;
173
+ }
168
174
 
169
175
  var targetId = targetInfo.targetId;
176
+ Logger.info('[Tabs] targetId:', targetId);
170
177
 
171
178
  if (State.hasEmittedTarget(targetId)) {
172
179
  Logger.info('[Tabs] Target already emitted, skipping:', targetId);
@@ -174,23 +181,35 @@ importScripts('features/automation-badge.js');
174
181
  }
175
182
 
176
183
  State.addEmittedTarget(targetId);
184
+ Logger.info('[Tabs] Sending Target.targetCreated event');
177
185
 
178
186
  EventBuilder.send('Target.targetCreated', { targetInfo: targetInfo });
187
+ Logger.info('[Tabs] Target.targetCreated sent, now attaching to tab:', tabId);
179
188
 
180
189
  return DebuggerManager.attach(tabId).then(function(attached) {
181
- if (!attached) return;
190
+ Logger.info('[Tabs] DebuggerManager.attach result:', attached);
191
+ if (!attached) {
192
+ Logger.error('[Tabs] Failed to attach to tab:', tabId);
193
+ return;
194
+ }
182
195
 
183
196
  var sessionId = CDPUtils.generateSessionId();
184
197
  State.mapSession(sessionId, tabId, targetId);
185
198
 
186
199
  AutomationBadge.inject(tabId);
200
+ Logger.info('[Tabs] Sending Target.attachedToTarget event');
187
201
 
188
202
  EventBuilder.send('Target.attachedToTarget', {
189
203
  sessionId: sessionId,
190
204
  targetInfo: targetInfo,
191
205
  waitingForDebugger: false
192
206
  });
207
+ Logger.info('[Tabs] Target.attachedToTarget sent');
208
+ }).catch(function(err) {
209
+ Logger.error('[Tabs] DebuggerManager.attach error:', err);
193
210
  });
211
+ }).catch(function(err) {
212
+ Logger.error('[Tabs] getTargetInfoById error:', err);
194
213
  });
195
214
  });
196
215
 
@@ -39,6 +39,7 @@ var EventBuilder = (function() {
39
39
  function send(method, params, sessionId) {
40
40
  var event = EventBuilder.build(method, params, sessionId);
41
41
  WebSocketManager.send(event);
42
+ console.log('[EventBuilder.send]', method);
42
43
  return event;
43
44
  }
44
45
 
@@ -52,8 +52,9 @@ var WebSocketManager = (function() {
52
52
 
53
53
  function send(message) {
54
54
  var ws = State.getWs();
55
+ var wsState = ws ? ws.readyState : 'no ws';
55
56
  if (!ws || ws.readyState !== WebSocket.OPEN) {
56
- Logger.warn('[WS] Cannot send, WebSocket not open');
57
+ Logger.warn('[WS] Cannot send, WebSocket not open. State:', wsState);
57
58
  return false;
58
59
  }
59
60
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdp-tunnel",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "Chrome Extension CDP Proxy - 通过 Chrome 扩展将 chrome.debugger API 暴露为 WebSocket 端点",
5
5
  "main": "server/proxy-server.js",
6
6
  "bin": "./cli/index.js",