Skip to content

Commit

Permalink
chore: tab wip
Browse files Browse the repository at this point in the history
  • Loading branch information
OrKoN committed May 9, 2023
1 parent 75a5025 commit 592e159
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 9 deletions.
5 changes: 3 additions & 2 deletions docs/api/puppeteer.target.type.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@ class Target {
| 'shared_worker'
| 'other'
| 'browser'
| 'webview';
| 'webview'
| 'tab';
}
```

**Returns:**

'page' \| 'background_page' \| 'service_worker' \| 'shared_worker' \| 'other' \| 'browser' \| 'webview'
'page' \| 'background_page' \| 'service_worker' \| 'shared_worker' \| 'other' \| 'browser' \| 'webview' \| 'tab'

## Remarks

Expand Down
10 changes: 8 additions & 2 deletions packages/puppeteer-core/src/common/Browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,9 @@ export class CDPBrowser extends BrowserBase {
url: 'about:blank',
browserContextId: contextId || undefined,
});
const target = this.#targetManager.getAvailableTargets().get(targetId);
const target = await this.waitForTarget(t => {
return t._targetId === targetId;
});
if (!target) {
throw new Error(`Missing target for page (id = ${targetId})`);
}
Expand Down Expand Up @@ -615,7 +617,11 @@ export class CDPBrowserContext extends BrowserContext {
options: {timeout?: number} = {}
): Promise<Target> {
return this.#browser.waitForTarget(target => {
return target.browserContext() === this && predicate(target);
return (
target.browserContext() === this &&
target._getTargetInfo().type !== 'tab' &&
predicate(target)
);
}, options);
}

Expand Down
25 changes: 22 additions & 3 deletions packages/puppeteer-core/src/common/ChromeTargetManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ export class ChromeTargetManager extends EventEmitter implements TargetManager {
#initializePromise = createDeferredPromise<void>();
#targetsIdsForInit: Set<string> = new Set();

#tabMode = false;
#discoveryFilter = this.#tabMode ? [{}] : [{type: 'tab', exclude: true}, {}];

constructor(
connection: Connection,
targetFactory: TargetFactory,
Expand All @@ -103,7 +106,7 @@ export class ChromeTargetManager extends EventEmitter implements TargetManager {
this.#connection
.send('Target.setDiscoverTargets', {
discover: true,
filter: [{type: 'tab', exclude: true}, {}],
filter: this.#discoveryFilter,
})
.then(this.#storeExistingTargetsForInit)
.catch(debugError);
Expand All @@ -129,6 +132,15 @@ export class ChromeTargetManager extends EventEmitter implements TargetManager {
waitForDebuggerOnStart: true,
flatten: true,
autoAttach: true,
filter: this.#tabMode
? [
{
type: 'page',
exclude: true,
},
...this.#discoveryFilter,
]
: this.#discoveryFilter,
});
this.#finishInitializationIfReady();
await this.#initializePromise;
Expand All @@ -144,7 +156,13 @@ export class ChromeTargetManager extends EventEmitter implements TargetManager {
}

getAvailableTargets(): Map<string, Target> {
return this.#attachedTargetsByTargetId;
const result = new Map<string, Target>();
for (const [id, target] of this.#attachedTargetsByTargetId.entries()) {
if (target.type() !== 'tab') {
result.set(id, target);
}
}
return result;
}

addTargetInterceptor(
Expand Down Expand Up @@ -359,7 +377,7 @@ export class ChromeTargetManager extends EventEmitter implements TargetManager {
}

this.#targetsIdsForInit.delete(target._targetId);
if (!existingTarget) {
if (!existingTarget && target.type() !== 'tab') {
this.emit(TargetManagerEmittedEvents.TargetAvailable, target);
}
this.#finishInitializationIfReady();
Expand All @@ -371,6 +389,7 @@ export class ChromeTargetManager extends EventEmitter implements TargetManager {
waitForDebuggerOnStart: true,
flatten: true,
autoAttach: true,
filter: this.#discoveryFilter,
}),
session.send('Runtime.runIfWaitingForDebugger'),
]).catch(debugError);
Expand Down
6 changes: 4 additions & 2 deletions packages/puppeteer-core/src/common/Target.ts
Original file line number Diff line number Diff line change
Expand Up @@ -226,15 +226,17 @@ export class Target {
| 'shared_worker'
| 'other'
| 'browser'
| 'webview' {
| 'webview'
| 'tab' {
const type = this.#targetInfo.type;
if (
type === 'page' ||
type === 'background_page' ||
type === 'service_worker' ||
type === 'shared_worker' ||
type === 'browser' ||
type === 'webview'
type === 'webview' ||
type === 'tab'
) {
return type;
}
Expand Down

0 comments on commit 592e159

Please sign in to comment.