addressed comments
This commit is contained in:
parent
758c91c9dc
commit
c76f783f02
|
|
@ -309,8 +309,11 @@ export class Frame {
|
|||
|
||||
async goto(url: string, options?: GotoOptions): Promise<network.Response | null> {
|
||||
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;
|
||||
}
|
||||
const watcher = new LifecycleWatcher(this, options, false /* supportUrlMatch */);
|
||||
|
||||
let navigateResult: GotoResult;
|
||||
|
|
|
|||
12
src/page.ts
12
src/page.ts
|
|
@ -171,18 +171,6 @@ export class Page extends platform.EventEmitter {
|
|||
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 {
|
||||
return this._browserContext;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -223,7 +223,6 @@ export class WKPage implements PageDelegate {
|
|||
}
|
||||
|
||||
async navigateFrame(frame: frames.Frame, url: string, referrer: string | undefined): Promise<frames.GotoResult> {
|
||||
this._page._validateNavigationReferrer(referrer);
|
||||
if (this._pageProxySession.isDisposed())
|
||||
throw new Error('Target closed');
|
||||
const pageProxyId = this._pageProxySession.sessionId;
|
||||
|
|
|
|||
|
|
@ -322,26 +322,13 @@ module.exports.describe = function({testRunner, expect, playwright, FFOX, CHROMI
|
|||
expect(request2.headers['referer']).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/' });
|
||||
try {
|
||||
const [request1, request2] = await Promise.all([
|
||||
server.waitForRequest('/grid.html'),
|
||||
server.waitForRequest('/digits/1.png'),
|
||||
page.goto(server.PREFIX + '/grid.html', {
|
||||
referer: 'http://google.com/',
|
||||
}),
|
||||
]);
|
||||
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');
|
||||
else
|
||||
throw error;
|
||||
}
|
||||
let error;
|
||||
await page.goto(server.PREFIX + '/grid.html', {
|
||||
referer: 'http://google.com/',
|
||||
}).catch(e => error = e);
|
||||
expect(error.message).toBe('"referer" is already specified as extra HTTP header');
|
||||
});
|
||||
it('should override referrer-policy', async({page, server}) => {
|
||||
server.setRoute('/grid.html', (req, res) => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue