From 3e33523ee34e7d9a23950c319c53bf561679f558 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Fri, 26 Jun 2020 22:38:21 -0700 Subject: [PATCH] chore(rpc): clear the browsercontext test spec (#2739) --- src/rpc/channels.ts | 6 ++++-- src/rpc/client/browserContext.ts | 3 ++- src/rpc/client/elementHandle.ts | 4 ++-- src/rpc/server/browserContextDispatcher.ts | 2 +- src/rpc/server/elementHandlerDispatcher.ts | 4 ++-- src/rpc/server/jsHandleDispatcher.ts | 3 ++- src/rpc/server/pageDispatcher.ts | 2 +- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/rpc/channels.ts b/src/rpc/channels.ts index 587120456e..185cdcf653 100644 --- a/src/rpc/channels.ts +++ b/src/rpc/channels.ts @@ -43,6 +43,8 @@ export type BrowserInitializer = {}; export interface BrowserContextChannel extends Channel { + on(event: 'bindingCall', callback: (params: BindingCallChannel) => void): this; + on(event: 'page', callback: (params: PageChannel) => void): this; addCookies(params: { cookies: types.SetNetworkCookieParam[] }): Promise; addInitScript(params: { source: string }): Promise; clearCookies(): Promise; @@ -179,8 +181,8 @@ export type JSHandleInitializer = { export interface ElementHandleChannel extends JSHandleChannel { - $$eval(params: { selector: string; expression: string, isFunction: boolean, arg: any }): Promise; - $eval(params: { selector: string; expression: string, isFunction: boolean, arg: any }): Promise; + $$evalExpression(params: { selector: string; expression: string, isFunction: boolean, arg: any }): Promise; + $evalExpression(params: { selector: string; expression: string, isFunction: boolean, arg: any }): Promise; boundingBox(): Promise; check(params: { options?: types.TimeoutOptions & { force?: boolean } & { noWaitAfter?: boolean } }): Promise; click(params: { options?: types.PointerActionOptions & types.MouseClickOptions & types.TimeoutOptions & { force?: boolean } & { noWaitAfter?: boolean } }): Promise; diff --git a/src/rpc/client/browserContext.ts b/src/rpc/client/browserContext.ts index 1c61202155..37c98f37d6 100644 --- a/src/rpc/client/browserContext.ts +++ b/src/rpc/client/browserContext.ts @@ -50,7 +50,8 @@ export class BrowserContext extends ChannelOwner this._onPage(Page.from(page))); + this._channel.on('bindingCall', bindingCall => this._onBinding(BindingCall.from(bindingCall))); + this._channel.on('page', page => this._onPage(Page.from(page))); } private _onPage(page: Page): void { diff --git a/src/rpc/client/elementHandle.ts b/src/rpc/client/elementHandle.ts index b0a118f6c8..903de0e856 100644 --- a/src/rpc/client/elementHandle.ts +++ b/src/rpc/client/elementHandle.ts @@ -139,13 +139,13 @@ export class ElementHandle extends JSHandle { async $eval(selector: string, pageFunction: FuncOn, arg: Arg): Promise; async $eval(selector: string, pageFunction: FuncOn, arg?: any): Promise; async $eval(selector: string, pageFunction: FuncOn, arg: Arg): Promise { - return await this._elementChannel.$eval({ selector, expression: String(pageFunction), isFunction: typeof pageFunction === 'function', arg: convertArg(arg) }); + return await this._elementChannel.$evalExpression({ selector, expression: String(pageFunction), isFunction: typeof pageFunction === 'function', arg: convertArg(arg) }); } async $$eval(selector: string, pageFunction: FuncOn, arg: Arg): Promise; async $$eval(selector: string, pageFunction: FuncOn, arg?: any): Promise; async $$eval(selector: string, pageFunction: FuncOn, arg: Arg): Promise { - return await this._elementChannel.$$eval({ selector, expression: String(pageFunction), isFunction: typeof pageFunction === 'function', arg: convertArg(arg) }); + return await this._elementChannel.$$evalExpression({ selector, expression: String(pageFunction), isFunction: typeof pageFunction === 'function', arg: convertArg(arg) }); } } diff --git a/src/rpc/server/browserContextDispatcher.ts b/src/rpc/server/browserContextDispatcher.ts index d57a886e4d..46a139cd92 100644 --- a/src/rpc/server/browserContextDispatcher.ts +++ b/src/rpc/server/browserContextDispatcher.ts @@ -51,7 +51,7 @@ export class BrowserContextDispatcher extends Dispatcher { - this._context.exposeBinding(params.name, (source, ...args) => { + await this._context.exposeBinding(params.name, (source, ...args) => { const bindingCall = new BindingCallDispatcher(this._scope, params.name, source, args); this._dispatchEvent('bindingCall', bindingCall); return bindingCall.promise(); diff --git a/src/rpc/server/elementHandlerDispatcher.ts b/src/rpc/server/elementHandlerDispatcher.ts index 1ecdd8f523..f6fb3a2d9e 100644 --- a/src/rpc/server/elementHandlerDispatcher.ts +++ b/src/rpc/server/elementHandlerDispatcher.ts @@ -153,11 +153,11 @@ export class ElementHandleDispatcher extends JSHandleDispatcher implements Eleme return elements.map(e => ElementHandleDispatcher.fromElement(this._scope, e)); } - async $eval(params: { selector: string, expression: string, isFunction: boolean, arg: any }): Promise { + async $evalExpression(params: { selector: string, expression: string, isFunction: boolean, arg: any }): Promise { return this._elementHandle._$evalExpression(params.selector, params.expression, params.isFunction, convertArg(this._scope, params.arg)); } - async $$eval(params: { selector: string, expression: string, isFunction: boolean, arg: any }): Promise { + async $$evalExpression(params: { selector: string, expression: string, isFunction: boolean, arg: any }): Promise { return this._elementHandle._$$evalExpression(params.selector, params.expression, params.isFunction, convertArg(this._scope, params.arg)); } } diff --git a/src/rpc/server/jsHandleDispatcher.ts b/src/rpc/server/jsHandleDispatcher.ts index 403322c7c7..204a708149 100644 --- a/src/rpc/server/jsHandleDispatcher.ts +++ b/src/rpc/server/jsHandleDispatcher.ts @@ -18,6 +18,7 @@ import * as js from '../../javascript'; import { JSHandleChannel, JSHandleInitializer } from '../channels'; import { Dispatcher, DispatcherScope } from '../dispatcher'; import { convertArg } from './frameDispatcher'; +import { ElementHandleDispatcher } from './elementHandlerDispatcher'; export class JSHandleDispatcher extends Dispatcher implements JSHandleChannel { @@ -33,7 +34,7 @@ export class JSHandleDispatcher extends Dispatcher { const jsHandle = await this._object._evaluateExpression(params.expression, params.isFunction, false /* returnByValue */, convertArg(this._scope, params.arg)); - return new JSHandleDispatcher(this._scope, jsHandle); + return ElementHandleDispatcher.from(this._scope, jsHandle); } async getPropertyList(): Promise<{ name: string, value: JSHandleChannel }[]> { diff --git a/src/rpc/server/pageDispatcher.ts b/src/rpc/server/pageDispatcher.ts index a2838b66ea..e0cefe6f48 100644 --- a/src/rpc/server/pageDispatcher.ts +++ b/src/rpc/server/pageDispatcher.ts @@ -84,7 +84,7 @@ export class PageDispatcher extends Dispatcher implements } async exposeBinding(params: { name: string }): Promise { - this._page.exposeBinding(params.name, (source, ...args) => { + await this._page.exposeBinding(params.name, (source, ...args) => { const bindingCall = new BindingCallDispatcher(this._scope, params.name, source, args); this._dispatchEvent('bindingCall', bindingCall); return bindingCall.promise();