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 {