diff --git a/src/webkit/wkConnection.ts b/src/webkit/wkConnection.ts index 0c0434f5e7..329c2a5b05 100644 --- a/src/webkit/wkConnection.ts +++ b/src/webkit/wkConnection.ts @@ -157,7 +157,7 @@ export class WKSession extends platform.EventEmitter { // Response might come after session has been disposed and rejected all callbacks. assert(this.isDisposed()); } else { - Promise.resolve().then(() => this.emit(object.method, object.params, this)); + Promise.resolve().then(() => this.emit(object.method, object.params)); } } } diff --git a/src/webkit/wkNetworkManager.ts b/src/webkit/wkNetworkManager.ts index ba60e1d123..353f36e7b3 100644 --- a/src/webkit/wkNetworkManager.ts +++ b/src/webkit/wkNetworkManager.ts @@ -46,11 +46,11 @@ export class WKNetworkManager { helper.removeEventListeners(this._sessionListeners); this._session = session; this._sessionListeners = [ - helper.addEventListener(this._session, 'Network.requestWillBeSent', this._onRequestWillBeSent.bind(this)), - helper.addEventListener(this._session, 'Network.requestIntercepted', this._onRequestIntercepted.bind(this)), - helper.addEventListener(this._session, 'Network.responseReceived', this._onResponseReceived.bind(this)), - helper.addEventListener(this._session, 'Network.loadingFinished', this._onLoadingFinished.bind(this)), - helper.addEventListener(this._session, 'Network.loadingFailed', this._onLoadingFailed.bind(this)), + helper.addEventListener(session, 'Network.requestWillBeSent', e => this._onRequestWillBeSent(session, e)), + helper.addEventListener(session, 'Network.requestIntercepted', e => this._onRequestIntercepted(e)), + helper.addEventListener(session, 'Network.responseReceived', e => this._onResponseReceived(e)), + helper.addEventListener(session, 'Network.loadingFinished', e => this._onLoadingFinished(e)), + helper.addEventListener(session, 'Network.loadingFailed', e => this._onLoadingFailed(e)), ]; } @@ -83,7 +83,7 @@ export class WKNetworkManager { }); } - private _onRequestWillBeSent(event: Protocol.Network.requestWillBeSentPayload, session: WKSession) { + _onRequestWillBeSent(session: WKSession, event: Protocol.Network.requestWillBeSentPayload) { if (event.request.url.startsWith('data:')) return; let redirectChain: network.Request[] = []; @@ -104,7 +104,7 @@ export class WKNetworkManager { this._page._frameManager.requestStarted(request.request); } - private _onRequestIntercepted(event: Protocol.Network.requestInterceptedPayload) { + _onRequestIntercepted(event: Protocol.Network.requestInterceptedPayload) { const request = this._requestIdToRequest.get(event.requestId); if (request) request._interceptedCallback(); @@ -128,7 +128,7 @@ export class WKNetworkManager { this._page._frameManager.requestFinished(request.request); } - private _onResponseReceived(event: Protocol.Network.responseReceivedPayload) { + _onResponseReceived(event: Protocol.Network.responseReceivedPayload) { const request = this._requestIdToRequest.get(event.requestId); // FileUpload sends a response without a matching request. if (!request) @@ -137,7 +137,7 @@ export class WKNetworkManager { this._page._frameManager.requestReceivedResponse(response); } - private _onLoadingFinished(event: Protocol.Network.loadingFinishedPayload) { + _onLoadingFinished(event: Protocol.Network.loadingFinishedPayload) { const request = this._requestIdToRequest.get(event.requestId); // For certain requestIds we never receive requestWillBeSent event. // @see https://crbug.com/750469 @@ -153,7 +153,7 @@ export class WKNetworkManager { this._page._frameManager.requestFinished(request.request); } - private _onLoadingFailed(event: Protocol.Network.loadingFailedPayload) { + _onLoadingFailed(event: Protocol.Network.loadingFailedPayload) { const request = this._requestIdToRequest.get(event.requestId); // For certain requestIds we never receive requestWillBeSent event. // @see https://crbug.com/750469 diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index 36e53d71e5..c82a031015 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -43,7 +43,7 @@ export class WKPage implements PageDelegate { _session: WKSession; readonly _page: Page; private readonly _pageProxySession: WKSession; - private readonly _networkManager: WKNetworkManager; + readonly _networkManager: WKNetworkManager; private readonly _workers: WKWorkers; private readonly _contextIdToContext: Map; private _sessionListeners: RegisteredListener[] = []; diff --git a/src/webkit/wkProvisionalPage.ts b/src/webkit/wkProvisionalPage.ts index 34c721870b..5c81b580e4 100644 --- a/src/webkit/wkProvisionalPage.ts +++ b/src/webkit/wkProvisionalPage.ts @@ -29,13 +29,24 @@ export class WKProvisionalPage { this._session = session; this._wkPage = page; + const overrideFrameId = (handler: (p: any) => void) => { + return (payload: any) => { + // Pretend that the events happened in the same process. + if (payload.frameId) + payload.frameId = this._wkPage._page._frameManager.mainFrame()._id; + handler(payload); + }; + }; + const networkManager = this._wkPage._networkManager; + this._sessionListeners = [ - 'Network.requestWillBeSent', - 'Network.requestIntercepted', - 'Network.responseReceived', - 'Network.loadingFinished', - 'Network.loadingFailed', - ].map(name => helper.addEventListener(this._session, name, args => this._onNetworkEvent(name, args))); + helper.addEventListener(session, 'Network.requestWillBeSent', overrideFrameId(e => networkManager._onRequestWillBeSent(session, e))), + helper.addEventListener(session, 'Network.requestIntercepted', overrideFrameId(e => networkManager._onRequestIntercepted(e))), + helper.addEventListener(session, 'Network.responseReceived', overrideFrameId(e => networkManager._onResponseReceived(e))), + helper.addEventListener(session, 'Network.loadingFinished', overrideFrameId(e => networkManager._onLoadingFinished(e))), + helper.addEventListener(session, 'Network.loadingFailed', overrideFrameId(e => networkManager._onLoadingFailed(e))), + ]; + this._wkPage._initializeSession(session, ({frameTree}) => this._handleFrameTree(frameTree)); } @@ -49,13 +60,6 @@ export class WKProvisionalPage { this._wkPage._onFrameAttached(this._mainFrameId!, null); } - private _onNetworkEvent(eventName: string, payload: any) { - // Pretend that the events happened in the same process. - if (payload.frameId) - payload.frameId = this._wkPage._page._frameManager.mainFrame()._id; - this._wkPage._session.emit(eventName, payload, this._session); - } - private _handleFrameTree(frameTree: Protocol.Page.FrameResourceTree) { assert(!frameTree.frame.parentId); this._mainFrameId = frameTree.frame.id;