From 94461f9355e5943d475a3b4327d13f786f3d6e21 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Wed, 22 Jan 2020 14:02:30 -0800 Subject: [PATCH] support provisional page changes for setEmulatedMedia --- src/webkit/wkPage.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index ac73e79cc6..5ac6ce4453 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -220,16 +220,18 @@ export class WKPage implements PageDelegate { method: T, params?: Protocol.CommandParameters[T] ): Promise { - const promises = [ - this._session.send(method, params) + await this._forAllsSessions(session => session.send(method, params).then()); + } + + private async _forAllsSessions(callback: ((session: WKSession) => Promise)): Promise { + const sessions = [ + this._session ]; // If the state changes during provisional load, push it to the provisional page // as well to always be in sync with the backend. if (this._provisionalPage) - promises.push(this._provisionalPage._session.send(method, params)); - for (const p of promises) - p.catch(debugError); - await Promise.all(promises); + sessions.push(this._provisionalPage._session); + await Promise.all(sessions.map(session => callback(session).catch(debugError))); } private _onFrameStoppedLoading(frameId: string) { @@ -373,7 +375,7 @@ export class WKPage implements PageDelegate { } async setEmulateMedia(mediaType: types.MediaType | null, colorScheme: types.ColorScheme | null): Promise { - await WKPage._setEmulateMedia(this._session, mediaType, colorScheme); + await this._forAllsSessions(session => WKPage._setEmulateMedia(session, mediaType, colorScheme)); } async setViewport(viewport: types.Viewport): Promise {