Implement Request object

This patch does a step towards Fetch API:
- implements Request object to some extend. The Request object will be
  sent in RequestWillBeSent event.
- implements InterceptedRequest which extends from Request and allows
  for request modification. The InterceptedRequest does not
  conform to Fetch API spec - there seems to be nothing related to
  amending in-flight request.
- adds test to make sure that request can change headers.

References #26
This commit is contained in:
Andrey Lushnikov
2017-06-27 23:31:38 -07:00
parent 5ed71fcb8f
commit 7b59a89695
5 changed files with 178 additions and 92 deletions

View File

@@ -17,7 +17,7 @@
let fs = require('fs');
let EventEmitter = require('events');
let mime = require('mime');
let Request = require('./Request');
let {InterceptedRequest} = require('./Request');
let Navigator = require('./Navigator');
let Dialog = require('./Dialog');
let FrameManager = require('./FrameManager');
@@ -57,7 +57,7 @@ class Page extends EventEmitter {
this._extraHeaders = {};
/** @type {!Map<string, function>} */
this._inPageCallbacks = new Map();
/** @type {?function(!Request)} */
/** @type {?function(!InterceptedRequest)} */
this._requestInterceptor = null;
/** @type {?Promise<number>} */
this._rootNodeIdPromise = null;
@@ -94,7 +94,7 @@ class Page extends EventEmitter {
}
/**
* @param {?function(!Request)} interceptor
* @param {?function(!InterceptedRequest)} interceptor
*/
async setRequestInterceptor(interceptor) {
this._requestInterceptor = interceptor;
@@ -105,7 +105,7 @@ class Page extends EventEmitter {
* @param {!Object} event
*/
_onRequestIntercepted(event) {
let request = new Request(this._client, event.InterceptionId, event.request);
let request = new InterceptedRequest(this._client, event.InterceptionId, event.request);
this._requestInterceptor(request);
}