Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/src/api/class-browsercontext.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,13 @@ await context.CloseAsync();

This event is not emitted.

## event: BrowserContext.bringToFront
* since: v1.60
- argument: <[Page]>

Emitted when a client calls [`method: Page.bringToFront`] on a page in this context. The event is dispatched to all
clients connected to the context, including the one that initiated the call.

## property: BrowserContext.clock
* since: v1.45
- type: <[Clock]>
Expand Down
43 changes: 43 additions & 0 deletions packages/playwright-client/types/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8225,6 +8225,13 @@ export interface BrowserContext {
*/
on(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
on(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down Expand Up @@ -8362,6 +8369,11 @@ export interface BrowserContext {
*/
once(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
*/
once(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
*/
Expand Down Expand Up @@ -8417,6 +8429,13 @@ export interface BrowserContext {
*/
addListener(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
addListener(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down Expand Up @@ -8554,6 +8573,11 @@ export interface BrowserContext {
*/
removeListener(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
removeListener(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
Expand Down Expand Up @@ -8609,6 +8633,11 @@ export interface BrowserContext {
*/
off(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
off(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
Expand Down Expand Up @@ -8664,6 +8693,13 @@ export interface BrowserContext {
*/
prependListener(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
prependListener(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down Expand Up @@ -9453,6 +9489,13 @@ export interface BrowserContext {
*/
waitForEvent(event: 'backgroundpage', optionsOrPredicate?: { predicate?: (page: Page) => boolean | Promise<boolean>, timeout?: number } | ((page: Page) => boolean | Promise<boolean>)): Promise<Page>;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
waitForEvent(event: 'bringtofront', optionsOrPredicate?: { predicate?: (page: Page) => boolean | Promise<boolean>, timeout?: number } | ((page: Page) => boolean | Promise<boolean>)): Promise<Page>;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down
1 change: 1 addition & 0 deletions packages/playwright-core/src/client/browserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel>
dialog.dismiss().catch(() => {});
}
});
this._channel.on('bringToFront', ({ page }) => this.emit(Events.BrowserContext.BringToFront, Page.from(page)));
this._channel.on('request', ({ request, page }) => this._onRequest(network.Request.from(request), Page.fromNullable(page)));
this._channel.on('requestFailed', ({ request, failureText, responseEndTiming, page }) => this._onRequestFailed(network.Request.from(request), responseEndTiming, failureText, Page.fromNullable(page)));
this._channel.on('requestFinished', params => this._onRequestFinished(params));
Expand Down
1 change: 1 addition & 0 deletions packages/playwright-core/src/client/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export const Events = {
},

BrowserContext: {
BringToFront: 'bringtofront',
Console: 'console',
Close: 'close',
Dialog: 'dialog',
Expand Down
3 changes: 3 additions & 0 deletions packages/playwright-core/src/protocol/validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -941,6 +941,9 @@ scheme.BrowserContextInitializer = tObject({
scheme.BrowserContextBindingCallEvent = tObject({
binding: tChannel(['BindingCall']),
});
scheme.BrowserContextBringToFrontEvent = tObject({
page: tChannel(['Page']),
});
scheme.BrowserContextConsoleEvent = tObject({
type: tString,
text: tString,
Expand Down
2 changes: 2 additions & 0 deletions packages/playwright-core/src/server/browserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import type * as types from './types';
import type * as channels from '@protocol/channels';

const BrowserContextEvent = {
BringToFront: 'bringtofront',
Console: 'console',
Close: 'close',
Page: 'page',
Expand All @@ -65,6 +66,7 @@ const BrowserContextEvent = {
} as const;

export type BrowserContextEventMap = {
[BrowserContextEvent.BringToFront]: [page: Page];
[BrowserContextEvent.Console]: [message: ConsoleMessage];
[BrowserContextEvent.Close]: [];
[BrowserContextEvent.Page]: [page: Page];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ export class BrowserContextDispatcher extends Dispatcher<BrowserContext, channel
this.addObjectListener(BrowserContext.Events.Page, page => {
this._dispatchEvent('page', { page: PageDispatcher.from(this, page) });
});
this.addObjectListener(BrowserContext.Events.BringToFront, page => {
this._dispatchEvent('bringToFront', { page: PageDispatcher.from(this, page) });
});
this.addObjectListener(BrowserContext.Events.Close, () => {
this._dispatchEvent('close');
this._dispose();
Expand Down
1 change: 1 addition & 0 deletions packages/playwright-core/src/server/page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -648,6 +648,7 @@ export class Page extends SdkObject<PageEventMap> {

async bringToFront(progress: Progress): Promise<void> {
await progress.race(this.delegate.bringToFront());
this.emitOnContext(BrowserContext.Events.BringToFront, this);
}

async addInitScript(progress: Progress, source: string) {
Expand Down
43 changes: 43 additions & 0 deletions packages/playwright-core/types/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8225,6 +8225,13 @@ export interface BrowserContext {
*/
on(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
on(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down Expand Up @@ -8362,6 +8369,11 @@ export interface BrowserContext {
*/
once(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
*/
once(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
*/
Expand Down Expand Up @@ -8417,6 +8429,13 @@ export interface BrowserContext {
*/
addListener(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
addListener(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down Expand Up @@ -8554,6 +8573,11 @@ export interface BrowserContext {
*/
removeListener(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
removeListener(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
Expand Down Expand Up @@ -8609,6 +8633,11 @@ export interface BrowserContext {
*/
off(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
off(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Removes an event listener added by `on` or `addListener`.
*/
Expand Down Expand Up @@ -8664,6 +8693,13 @@ export interface BrowserContext {
*/
prependListener(event: 'backgroundpage', listener: (page: Page) => any): this;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
prependListener(event: 'bringtofront', listener: (page: Page) => any): this;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down Expand Up @@ -9453,6 +9489,13 @@ export interface BrowserContext {
*/
waitForEvent(event: 'backgroundpage', optionsOrPredicate?: { predicate?: (page: Page) => boolean | Promise<boolean>, timeout?: number } | ((page: Page) => boolean | Promise<boolean>)): Promise<Page>;

/**
* Emitted when a client calls [page.bringToFront()](https://playwright.dev/docs/api/class-page#page-bring-to-front)
* on a page in this context. The event is dispatched to all clients connected to the context, including the one that
* initiated the call.
*/
waitForEvent(event: 'bringtofront', optionsOrPredicate?: { predicate?: (page: Page) => boolean | Promise<boolean>, timeout?: number } | ((page: Page) => boolean | Promise<boolean>)): Promise<Page>;

/**
* Emitted when Browser context gets closed. This might happen because of one of the following:
* - Browser context is closed.
Expand Down
5 changes: 5 additions & 0 deletions packages/protocol/src/channels.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1647,6 +1647,7 @@ export type BrowserContextInitializer = {
};
export interface BrowserContextEventTarget {
on(event: 'bindingCall', callback: (params: BrowserContextBindingCallEvent) => void): this;
on(event: 'bringToFront', callback: (params: BrowserContextBringToFrontEvent) => void): this;
on(event: 'console', callback: (params: BrowserContextConsoleEvent) => void): this;
on(event: 'close', callback: (params: BrowserContextCloseEvent) => void): this;
on(event: 'dialog', callback: (params: BrowserContextDialogEvent) => void): this;
Expand Down Expand Up @@ -1700,6 +1701,9 @@ export interface BrowserContextChannel extends BrowserContextEventTarget, EventT
export type BrowserContextBindingCallEvent = {
binding: BindingCallChannel,
};
export type BrowserContextBringToFrontEvent = {
page: PageChannel,
};
export type BrowserContextConsoleEvent = {
type: string,
text: string,
Expand Down Expand Up @@ -2075,6 +2079,7 @@ export type BrowserContextClockSetSystemTimeResult = void;

export interface BrowserContextEvents {
'bindingCall': BrowserContextBindingCallEvent;
'bringToFront': BrowserContextBringToFrontEvent;
'console': BrowserContextConsoleEvent;
'close': BrowserContextCloseEvent;
'dialog': BrowserContextDialogEvent;
Expand Down
4 changes: 4 additions & 0 deletions packages/protocol/src/protocol.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1516,6 +1516,10 @@ BrowserContext:
parameters:
binding: BindingCall

bringToFront:
parameters:
page: Page

console:
parameters:
$mixin: ConsoleMessage
Expand Down
Loading