Skip to content

Commit

Permalink
chore: remove dedicated console channel (microsoft#27234)
Browse files Browse the repository at this point in the history
  • Loading branch information
pavelfeldman authored and Germandrummer92 committed Oct 27, 2023
1 parent a9672e9 commit a0b028a
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 117 deletions.
4 changes: 2 additions & 2 deletions packages/playwright-core/src/client/browserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,8 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel>
this._serviceWorkers.add(serviceWorker);
this.emit(Events.BrowserContext.ServiceWorker, serviceWorker);
});
this._channel.on('console', ({ message }) => {
const consoleMessage = ConsoleMessage.from(message);
this._channel.on('console', event => {
const consoleMessage = new ConsoleMessage(event);
this.emit(Events.BrowserContext.Console, consoleMessage);
const page = consoleMessage.page();
if (page)
Expand Down
4 changes: 0 additions & 4 deletions packages/playwright-core/src/client/connection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import { JSHandle } from './jsHandle';
import { Request, Response, Route, WebSocket } from './network';
import { Page, BindingCall } from './page';
import { Worker } from './worker';
import { ConsoleMessage } from './consoleMessage';
import { Dialog } from './dialog';
import { parseError } from '../protocol/serializers';
import { CDPSession } from './cdpSession';
Expand Down Expand Up @@ -240,9 +239,6 @@ export class Connection extends EventEmitter {
case 'CDPSession':
result = new CDPSession(parent, type, guid, initializer);
break;
case 'ConsoleMessage':
result = new ConsoleMessage(parent, type, guid, initializer);
break;
case 'Dialog':
result = new Dialog(parent, type, guid, initializer);
break;
Expand Down
26 changes: 10 additions & 16 deletions packages/playwright-core/src/client/consoleMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,45 +17,39 @@
import * as util from 'util';
import { JSHandle } from './jsHandle';
import type * as channels from '@protocol/channels';
import { ChannelOwner } from './channelOwner';
import type * as api from '../../types/types';
import { Page } from './page';

type ConsoleMessageLocation = channels.ConsoleMessageInitializer['location'];
type ConsoleMessageLocation = channels.BrowserContextConsoleEvent['location'];

export class ConsoleMessage extends ChannelOwner<channels.ConsoleMessageChannel> implements api.ConsoleMessage {
static from(message: channels.ConsoleMessageChannel): ConsoleMessage {
return (message as any)._object;
}
export class ConsoleMessage implements api.ConsoleMessage {

private _page: Page | null;
private _event: channels.BrowserContextConsoleEvent;

constructor(parent: ChannelOwner, type: string, guid: string, initializer: channels.ConsoleMessageInitializer) {
super(parent, type, guid, initializer);
// Note: currently, we only report console messages for pages and they always have a page.
// However, in the future we might report console messages for service workers or something else,
// where page() would be null.
this._page = Page.fromNullable(initializer.page);
constructor(event: channels.BrowserContextConsoleEvent) {
this._page = event.page ? Page.from(event.page) : null;
this._event = event;
}

page() {
return this._page;
}

type(): string {
return this._initializer.type;
return this._event.type;
}

text(): string {
return this._initializer.text;
return this._event.text;
}

args(): JSHandle[] {
return this._initializer.args.map(JSHandle.from);
return this._event.args.map(JSHandle.from);
}

location(): ConsoleMessageLocation {
return this._initializer.location;
return this._event.location;
}

[util.inspect.custom]() {
Expand Down
21 changes: 9 additions & 12 deletions packages/playwright-core/src/protocol/validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -761,7 +761,15 @@ scheme.BrowserContextBindingCallEvent = tObject({
binding: tChannel(['BindingCall']),
});
scheme.BrowserContextConsoleEvent = tObject({
message: tChannel(['ConsoleMessage']),
page: tChannel(['Page']),
type: tString,
text: tString,
args: tArray(tChannel(['ElementHandle', 'JSHandle'])),
location: tObject({
url: tString,
lineNumber: tNumber,
columnNumber: tNumber,
}),
});
scheme.BrowserContextCloseEvent = tOptional(tObject({}));
scheme.BrowserContextDialogEvent = tObject({
Expand Down Expand Up @@ -2095,17 +2103,6 @@ scheme.WebSocketSocketErrorEvent = tObject({
error: tString,
});
scheme.WebSocketCloseEvent = tOptional(tObject({}));
scheme.ConsoleMessageInitializer = tObject({
page: tChannel(['Page']),
type: tString,
text: tString,
args: tArray(tChannel(['ElementHandle', 'JSHandle'])),
location: tObject({
url: tString,
lineNumber: tNumber,
columnNumber: tNumber,
}),
});
scheme.BindingCallInitializer = tObject({
frame: tChannel(['Frame']),
name: tString,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ import * as fs from 'fs';
import * as path from 'path';
import { createGuid, urlMatches } from '../../utils';
import { WritableStreamDispatcher } from './writableStreamDispatcher';
import { ConsoleMessageDispatcher } from './consoleMessageDispatcher';
import { DialogDispatcher } from './dialogDispatcher';
import type { Page } from '../page';
import type { Dialog } from '../dialog';
import type { ConsoleMessage } from '../console';
import { serializeError } from '../../protocol/serializers';
import { ElementHandleDispatcher } from './elementHandlerDispatcher';

export class BrowserContextDispatcher extends Dispatcher<BrowserContext, channels.BrowserContextChannel, DispatcherScope> implements channels.BrowserContextChannel {
_type_EventTarget = true;
Expand Down Expand Up @@ -89,8 +89,16 @@ export class BrowserContextDispatcher extends Dispatcher<BrowserContext, channel
this._dispatchEvent('pageError', { error: serializeError(error), page: PageDispatcher.from(this, page) });
});
this.addObjectListener(BrowserContext.Events.Console, (message: ConsoleMessage) => {
if (this._shouldDispatchEvent(message.page(), 'console'))
this._dispatchEvent('console', { message: new ConsoleMessageDispatcher(PageDispatcher.from(this, message.page()), message) });
if (this._shouldDispatchEvent(message.page(), 'console')) {
const pageDispatcher = PageDispatcher.from(this, message.page());
this._dispatchEvent('console', {
page: pageDispatcher,
type: message.type(),
text: message.text(),
args: message.args().map(a => ElementHandleDispatcher.fromJSHandle(pageDispatcher, a)),
location: message.location(),
});
}
});
this.addObjectListener(BrowserContext.Events.Dialog, (dialog: Dialog) => {
if (this._shouldDispatchEvent(dialog.page(), 'dialog'))
Expand Down

This file was deleted.

34 changes: 9 additions & 25 deletions packages/protocol/src/channels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ export type InitializerTraits<T> =
T extends TracingChannel ? TracingInitializer :
T extends DialogChannel ? DialogInitializer :
T extends BindingCallChannel ? BindingCallInitializer :
T extends ConsoleMessageChannel ? ConsoleMessageInitializer :
T extends WebSocketChannel ? WebSocketInitializer :
T extends ResponseChannel ? ResponseInitializer :
T extends RouteChannel ? RouteInitializer :
Expand Down Expand Up @@ -76,7 +75,6 @@ export type EventsTraits<T> =
T extends TracingChannel ? TracingEvents :
T extends DialogChannel ? DialogEvents :
T extends BindingCallChannel ? BindingCallEvents :
T extends ConsoleMessageChannel ? ConsoleMessageEvents :
T extends WebSocketChannel ? WebSocketEvents :
T extends ResponseChannel ? ResponseEvents :
T extends RouteChannel ? RouteEvents :
Expand Down Expand Up @@ -114,7 +112,6 @@ export type EventTargetTraits<T> =
T extends TracingChannel ? TracingEventTarget :
T extends DialogChannel ? DialogEventTarget :
T extends BindingCallChannel ? BindingCallEventTarget :
T extends ConsoleMessageChannel ? ConsoleMessageEventTarget :
T extends WebSocketChannel ? WebSocketEventTarget :
T extends ResponseChannel ? ResponseEventTarget :
T extends RouteChannel ? RouteEventTarget :
Expand Down Expand Up @@ -1445,7 +1442,15 @@ export type BrowserContextBindingCallEvent = {
binding: BindingCallChannel,
};
export type BrowserContextConsoleEvent = {
message: ConsoleMessageChannel,
page: PageChannel,
type: string,
text: string,
args: JSHandleChannel[],
location: {
url: string,
lineNumber: number,
columnNumber: number,
},
};
export type BrowserContextCloseEvent = {};
export type BrowserContextDialogEvent = {
Expand Down Expand Up @@ -3718,27 +3723,6 @@ export interface WebSocketEvents {
'close': WebSocketCloseEvent;
}

// ----------- ConsoleMessage -----------
export type ConsoleMessageInitializer = {
page: PageChannel,
type: string,
text: string,
args: JSHandleChannel[],
location: {
url: string,
lineNumber: number,
columnNumber: number,
},
};
export interface ConsoleMessageEventTarget {
}
export interface ConsoleMessageChannel extends ConsoleMessageEventTarget, Channel {
_type_ConsoleMessage: boolean;
}

export interface ConsoleMessageEvents {
}

// ----------- BindingCall -----------
export type BindingCallInitializer = {
frame: FrameChannel,
Expand Down
32 changes: 12 additions & 20 deletions packages/protocol/src/protocol.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1176,7 +1176,18 @@ BrowserContext:

console:
parameters:
message: ConsoleMessage
page: Page
type: string
text: string
args:
type: array
items: JSHandle
location:
type: object
properties:
url: string
lineNumber: number
columnNumber: number

close:

Expand Down Expand Up @@ -2950,25 +2961,6 @@ WebSocket:
close:


ConsoleMessage:
type: interface

initializer:
page: Page
type: string
text: string
args:
type: array
items: JSHandle
location:
type: object
properties:
url: string
lineNumber: number
columnNumber: number



BindingCall:
type: interface

Expand Down

0 comments on commit a0b028a

Please sign in to comment.