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> {
|
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;
|
||||||
|
|
|
||||||
12
src/page.ts
12
src/page.ts
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
referer: 'http://google.com/',
|
||||||
server.waitForRequest('/digits/1.png'),
|
}).catch(e => error = e);
|
||||||
page.goto(server.PREFIX + '/grid.html', {
|
expect(error.message).toBe('"referer" is already specified as extra HTTP header');
|
||||||
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;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
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) => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue