From 7981e4e3da6a2b1ea326d1fa1db742044df39d0b Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Thu, 28 May 2020 14:38:47 -0700 Subject: [PATCH] fix: support event source type in firefox (#2390) References #2189 --- browsers.json | 2 +- src/firefox/ffNetworkManager.ts | 6 +++++- src/webkit/wkInterceptableRequest.ts | 2 +- test/network.spec.js | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/browsers.json b/browsers.json index ee53dd74b5..912b71dba5 100644 --- a/browsers.json +++ b/browsers.json @@ -6,7 +6,7 @@ }, { "name": "firefox", - "revision": "1097" + "revision": "1098" }, { "name": "webkit", diff --git a/src/firefox/ffNetworkManager.ts b/src/firefox/ffNetworkManager.ts index 6b95962b1c..ce9c664559 100644 --- a/src/firefox/ffNetworkManager.ts +++ b/src/firefox/ffNetworkManager.ts @@ -137,6 +137,10 @@ const causeToResourceType: {[key: string]: string} = { TYPE_WEB_MANIFEST: 'manifest', }; +const internalCauseToResourceType: {[key: string]: string} = { + TYPE_INTERNAL_EVENTSOURCE: 'eventsource', +}; + class InterceptableRequest implements network.RouteDelegate { readonly request: network.Request; _id: string; @@ -151,7 +155,7 @@ class InterceptableRequest implements network.RouteDelegate { headers[name.toLowerCase()] = value; this.request = new network.Request(payload.isIntercepted ? this : null, frame, redirectedFrom ? redirectedFrom.request : null, payload.navigationId, - payload.url, causeToResourceType[payload.cause] || 'other', payload.method, payload.postData || null, headers); + payload.url, internalCauseToResourceType[payload.internalCause] || causeToResourceType[payload.cause] || 'other', payload.method, payload.postData || null, headers); } async continue(overrides: { method?: string; headers?: network.Headers; postData?: string }) { diff --git a/src/webkit/wkInterceptableRequest.ts b/src/webkit/wkInterceptableRequest.ts index f12a0c8bd5..bdde7fdd08 100644 --- a/src/webkit/wkInterceptableRequest.ts +++ b/src/webkit/wkInterceptableRequest.ts @@ -49,7 +49,7 @@ export class WKInterceptableRequest implements network.RouteDelegate { constructor(session: WKSession, allowInterception: boolean, frame: frames.Frame, event: Protocol.Network.requestWillBeSentPayload, redirectedFrom: network.Request | null, documentId: string | undefined) { this._session = session; this._requestId = event.requestId; - const resourceType = event.type ? event.type.toLowerCase() : (redirectedFrom ? redirectedFrom.resourceType() : 'unknown'); + const resourceType = event.type ? event.type.toLowerCase() : (redirectedFrom ? redirectedFrom.resourceType() : 'other'); this.request = new network.Request(allowInterception ? this : null, frame, redirectedFrom, documentId, event.request.url, resourceType, event.request.method, event.request.postData || null, headersObject(event.request.headers)); this._interceptedPromise = new Promise(f => this._interceptedCallback = f); diff --git a/test/network.spec.js b/test/network.spec.js index f74372b60b..8abc7c72b8 100644 --- a/test/network.spec.js +++ b/test/network.spec.js @@ -260,7 +260,7 @@ describe('Response.statusText', function() { }); describe('Request.resourceType', function() { - it.fail(FFOX || WEBKIT)('should return event source', async ({page, server}) => { + it.fail(WEBKIT)('should return event source', async ({page, server}) => { const SSE_MESSAGE = {foo: 'bar'}; // 1. Setup server-sent events on server that immediately sends a message to the client. server.setRoute('/sse', (req, res) => {