addressed comments

This commit is contained in:
Yury Semikhatsky 2020-01-14 10:20:39 -08:00
parent 758c91c9dc
commit c76f783f02
4 changed files with 10 additions and 33 deletions

View file

@ -309,8 +309,11 @@ export class Frame {
async goto(url: string, options?: GotoOptions): Promise<network.Response | null> { async goto(url: string, options?: GotoOptions): Promise<network.Response | null> {
let referer = (this._page._state.extraHTTPHeaders || {})['referer']; let referer = (this._page._state.extraHTTPHeaders || {})['referer'];
if (options && options.referer !== undefined) if (options && options.referer !== undefined) {
if (referer !== undefined && referer !== options.referer)
throw new Error('"referer" is already specified as extra HTTP header');
referer = options.referer; referer = options.referer;
}
const watcher = new LifecycleWatcher(this, options, false /* supportUrlMatch */); const watcher = new LifecycleWatcher(this, options, false /* supportUrlMatch */);
let navigateResult: GotoResult; let navigateResult: GotoResult;

View file

@ -171,18 +171,6 @@ export class Page extends platform.EventEmitter {
this.emit(Events.Page.FileChooser, fileChooser); this.emit(Events.Page.FileChooser, fileChooser);
} }
_validateNavigationReferrer(referrer: string | undefined) {
if (!referrer)
return;
if (!this._state.extraHTTPHeaders)
return;
const header = this._state.extraHTTPHeaders['referer'];
if (!header)
return;
if (header !== referrer)
throw new Error('"referer" is already specified as extra HTTP header');
}
browserContext(): BrowserContext { browserContext(): BrowserContext {
return this._browserContext; return this._browserContext;
} }

View file

@ -223,7 +223,6 @@ export class WKPage implements PageDelegate {
} }
async navigateFrame(frame: frames.Frame, url: string, referrer: string | undefined): Promise<frames.GotoResult> { async navigateFrame(frame: frames.Frame, url: string, referrer: string | undefined): Promise<frames.GotoResult> {
this._page._validateNavigationReferrer(referrer);
if (this._pageProxySession.isDisposed()) if (this._pageProxySession.isDisposed())
throw new Error('Target closed'); throw new Error('Target closed');
const pageProxyId = this._pageProxySession.sessionId; const pageProxyId = this._pageProxySession.sessionId;

View file

@ -322,26 +322,13 @@ module.exports.describe = function({testRunner, expect, playwright, FFOX, CHROMI
expect(request2.headers['referer']).toBe(server.PREFIX + '/grid.html'); expect(request2.headers['referer']).toBe(server.PREFIX + '/grid.html');
expect(page.url()).toBe(server.PREFIX + '/grid.html'); expect(page.url()).toBe(server.PREFIX + '/grid.html');
}); });
it('should use referer option when setExtraHTTPHeaders provides referer', async({page, server}) => { it('should reject referer option when setExtraHTTPHeaders provides referer', async({page, server}) => {
await page.setExtraHTTPHeaders({ 'referer': 'http://microsoft.com/' }); await page.setExtraHTTPHeaders({ 'referer': 'http://microsoft.com/' });
try { let error;
const [request1, request2] = await Promise.all([ await page.goto(server.PREFIX + '/grid.html', {
server.waitForRequest('/grid.html'),
server.waitForRequest('/digits/1.png'),
page.goto(server.PREFIX + '/grid.html', {
referer: 'http://google.com/', referer: 'http://google.com/',
}), }).catch(e => error = e);
]);
expect(request1.headers['referer']).toBe('http://google.com/');
// Make sure subresources use referer specified by setExtraHTTPHeaders.
expect(request2.headers['referer']).toBe('http://microsoft.com/');
expect(page.url()).toBe(server.PREFIX + '/grid.html');
} catch (error) {
if (FFOX || WEBKIT)
expect(error.message).toBe('"referer" is already specified as extra HTTP header'); expect(error.message).toBe('"referer" is already specified as extra HTTP header');
else
throw error;
}
}); });
it('should override referrer-policy', async({page, server}) => { it('should override referrer-policy', async({page, server}) => {
server.setRoute('/grid.html', (req, res) => { server.setRoute('/grid.html', (req, res) => {