cdp-tunnel 2.7.9 → 2.8.0

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.
@@ -1,4 +1,13 @@
1
1
  var LocalHandler = (function() {
2
+ function _getState(ctx) {
3
+ return ctx._state;
4
+ }
5
+
6
+ function _getConnectionTag(ctx) {
7
+ var wm = ctx._wsManager;
8
+ return (wm && wm.config && wm.config.tag) || null;
9
+ }
10
+
2
11
  function browserGetVersion() {
3
12
  var userAgent = navigator.userAgent || '';
4
13
  var match = userAgent.match(/Chrome\/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/);
@@ -29,14 +38,17 @@ var LocalHandler = (function() {
29
38
  };
30
39
  }
31
40
 
32
- function targetSetDiscoverTargets(params) {
33
- State.setDiscoverTargets(!!(params && params.discover));
34
-
41
+ function targetSetDiscoverTargets(context) {
42
+ var state = _getState(context);
43
+ var params = context.params;
44
+ var wsManager = context._wsManager;
45
+ state.setDiscoverTargets(!!(params && params.discover));
46
+
35
47
  if (params && params.discover) {
36
48
  return getTargetInfos().then(function(targets) {
37
49
  targets.forEach(function(targetInfo) {
38
- State.addEmittedTarget(targetInfo.targetId);
39
- EventBuilder.send('Target.targetCreated', { targetInfo: targetInfo });
50
+ state.addEmittedTarget(targetInfo.targetId);
51
+ EventBuilder.send('Target.targetCreated', { targetInfo: targetInfo }, null, wsManager);
40
52
  });
41
53
  return {};
42
54
  });
@@ -65,19 +77,23 @@ var LocalHandler = (function() {
65
77
  });
66
78
  }
67
79
 
68
- function targetCreateBrowserContext() {
80
+ function targetCreateBrowserContext(context) {
81
+ var state = _getState(context);
69
82
  var browserContextId = 'context-' + Date.now() + '-' + Math.random().toString(36).slice(2, 9);
70
- State.addBrowserContext(browserContextId);
83
+ state.addBrowserContext(browserContextId);
71
84
  return { browserContextId: browserContextId };
72
85
  }
73
86
 
74
- function targetGetBrowserContexts() {
75
- return { browserContextIds: State.getBrowserContexts() };
87
+ function targetGetBrowserContexts(context) {
88
+ var state = _getState(context);
89
+ return { browserContextIds: state.getBrowserContexts() };
76
90
  }
77
91
 
78
- function targetDisposeBrowserContext(params) {
92
+ function targetDisposeBrowserContext(context) {
93
+ var state = _getState(context);
94
+ var params = context.params;
79
95
  if (params && params.browserContextId) {
80
- State.removeBrowserContext(params.browserContextId);
96
+ state.removeBrowserContext(params.browserContextId);
81
97
  }
82
98
  return {};
83
99
  }
@@ -136,10 +152,11 @@ var LocalHandler = (function() {
136
152
  }
137
153
 
138
154
  function tabUngroup(context) {
155
+ var state = _getState(context);
139
156
  var clientId = context.clientId;
140
157
  var groupId = null;
141
158
  try {
142
- groupId = State.getGroupIdForClient(clientId);
159
+ groupId = state.getGroupIdForClient(clientId);
143
160
  } catch (e) {
144
161
  Logger.error('[TabUngroup] Error getting groupId: ' + (e.message || e));
145
162
  return Promise.resolve({ success: false, ungroupedCount: 0, error: e.message || String(e) });
@@ -165,7 +182,7 @@ var LocalHandler = (function() {
165
182
  resolve({ success: false, ungroupedCount: 0, error: chrome.runtime.lastError.message });
166
183
  return;
167
184
  }
168
- State.removeGroupForClient(clientId);
185
+ state.removeGroupForClient(clientId);
169
186
  resolve({ success: true, ungroupedCount: tabIds.length });
170
187
  });
171
188
  });
@@ -173,20 +190,21 @@ var LocalHandler = (function() {
173
190
  }
174
191
 
175
192
  function tabGetGroupInfo(context) {
193
+ var state = _getState(context);
176
194
  var clientId = context.clientId;
177
195
  var cachedGroupId = null;
178
196
  var baseName = null;
179
197
  try {
180
- cachedGroupId = State.getGroupIdForClient(clientId);
181
- baseName = CDPUtils.getGroupBaseName(clientId);
198
+ cachedGroupId = state.getGroupIdForClient(clientId);
199
+ baseName = CDPUtils.getGroupBaseName(clientId, _getConnectionTag(context));
182
200
  } catch (e) {
183
201
  Logger.error('[TabGetGroupInfo] Error: ' + (e.message || e));
184
202
  }
185
203
 
186
- var attachedTabIds = State.getAttachedTabIds();
204
+ var attachedTabIds = state.getAttachedTabIds();
187
205
  var matchedTabId = null;
188
206
  for (var i = 0; i < attachedTabIds.length; i++) {
189
- if (State.getClientIdByTabId(attachedTabIds[i]) === clientId) {
207
+ if (state.getClientIdByTabId(attachedTabIds[i]) === clientId) {
190
208
  matchedTabId = attachedTabIds[i];
191
209
  break;
192
210
  }
@@ -228,10 +246,11 @@ var LocalHandler = (function() {
228
246
  }
229
247
 
230
248
  function tabSimulateUserOpen(context) {
231
- var attachedTabIds = State.getAttachedTabIds();
249
+ var state = _getState(context);
250
+ var attachedTabIds = state.getAttachedTabIds();
232
251
  var openerTabId = null;
233
252
  for (var i = 0; i < attachedTabIds.length; i++) {
234
- if (State.isCDPCreatedTab(attachedTabIds[i])) {
253
+ if (state.isCDPCreatedTab(attachedTabIds[i])) {
235
254
  openerTabId = attachedTabIds[i];
236
255
  break;
237
256
  }
@@ -277,9 +296,11 @@ var LocalHandler = (function() {
277
296
  });
278
297
  }
279
298
 
280
- function tabGetMuteStatus(params) {
299
+ function tabGetMuteStatus(context) {
300
+ var state = _getState(context);
301
+ var params = context.params;
281
302
  var cdpOnly = params && params.cdpOnly;
282
- var attachedTabIds = State.getAttachedTabIds();
303
+ var attachedTabIds = state.getAttachedTabIds();
283
304
 
284
305
  return new Promise(function(resolve) {
285
306
  chrome.tabs.query({}, function(tabs) {
@@ -312,13 +333,12 @@ var LocalHandler = (function() {
312
333
 
313
334
  function getTargetInfos() {
314
335
  return chrome.debugger.getTargets().then(function(targets) {
315
- // 为每个有 tabId target 查询 openerTabId
316
- const promises = targets.map(function(target) {
336
+ var promises = targets.map(function(target) {
317
337
  if (target.tabId) {
318
338
  return new Promise(function(resolve) {
319
339
  chrome.tabs.get(target.tabId, function(tab) {
320
340
  if (tab && tab.openerTabId) {
321
- const openerMatch = targets.find(function(t) {
341
+ var openerMatch = targets.find(function(t) {
322
342
  return String(t.tabId) === String(tab.openerTabId);
323
343
  });
324
344
  if (openerMatch) {
@@ -342,14 +362,12 @@ var LocalHandler = (function() {
342
362
  return t.id === targetId || String(t.tabId) === String(targetId);
343
363
  });
344
364
  if (!match) return null;
345
-
346
- // 获取 tab 信息以获取 openerTabId
365
+
347
366
  var tabId = match.tabId;
348
367
  if (tabId) {
349
368
  return new Promise(function(resolve) {
350
369
  chrome.tabs.get(tabId, function(tab) {
351
370
  if (tab && tab.openerTabId) {
352
- // 查找 opener 的 targetId
353
371
  var openerMatch = targets.find(function(t) {
354
372
  return String(t.tabId) === String(tab.openerTabId);
355
373
  });
@@ -361,24 +379,28 @@ var LocalHandler = (function() {
361
379
  });
362
380
  });
363
381
  }
364
-
382
+
365
383
  return mapToTargetInfo(match);
366
384
  });
367
385
  }
368
386
 
369
387
  function getFallbackTargetId() {
370
- var currentTabId = State.getCurrentTabId();
371
- if (currentTabId != null) {
372
- return ensureTabExists(currentTabId).then(function(exists) {
373
- if (exists) return String(currentTabId);
374
- return getActiveTabId().then(function(activeId) {
375
- if (activeId != null) return String(activeId);
376
- return getTargetInfos().then(function(infos) {
377
- var page = infos.find(function(t) { return t.type === 'page'; });
378
- return page ? page.targetId : null;
388
+ var entry = ConnectionManager.getPrimaryConnection();
389
+ var state = entry ? entry.state : null;
390
+ if (state) {
391
+ var currentTabId = state.getCurrentTabId();
392
+ if (currentTabId != null) {
393
+ return ensureTabExists(currentTabId).then(function(exists) {
394
+ if (exists) return String(currentTabId);
395
+ return getActiveTabId().then(function(activeId) {
396
+ if (activeId != null) return String(activeId);
397
+ return getTargetInfos().then(function(infos) {
398
+ var page = infos.find(function(t) { return t.type === 'page'; });
399
+ return page ? page.targetId : null;
400
+ });
379
401
  });
380
402
  });
381
- });
403
+ }
382
404
  }
383
405
  return getActiveTabId().then(function(activeId) {
384
406
  if (activeId != null) return String(activeId);
@@ -419,7 +441,6 @@ var LocalHandler = (function() {
419
441
  canAccessOpener: false,
420
442
  browserContextId: 'default'
421
443
  };
422
- // 添加 openerId(如果有)
423
444
  if (target.openerId) {
424
445
  info.openerId = target.openerId;
425
446
  }