feat(webkit): roll webkit to 1178 (#1339)

This commit is contained in:
Pavel Feldman 2020-03-11 21:08:22 +00:00 committed by GitHub
parent 3b85bf9c1f
commit 5d4fdd050a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 30 deletions

View file

@ -10,7 +10,7 @@
"playwright": { "playwright": {
"chromium_revision": "747023", "chromium_revision": "747023",
"firefox_revision": "1041", "firefox_revision": "1041",
"webkit_revision": "1171" "webkit_revision": "1178"
}, },
"scripts": { "scripts": {
"ctest": "cross-env BROWSER=chromium node test/test.js", "ctest": "cross-env BROWSER=chromium node test/test.js",

View file

@ -136,7 +136,7 @@ export class WebKit implements BrowserType {
// We try to gracefully close to prevent crash reporting and core dumps. // We try to gracefully close to prevent crash reporting and core dumps.
// Note that it's fine to reuse the pipe transport, since // Note that it's fine to reuse the pipe transport, since
// our connection ignores kBrowserCloseMessageId. // our connection ignores kBrowserCloseMessageId.
const message = JSON.stringify({method: 'Browser.close', params: {}, id: kBrowserCloseMessageId}); const message = JSON.stringify({method: 'Playwright.close', params: {}, id: kBrowserCloseMessageId});
transport.send(message); transport.send(message);
}, },
onkill: (exitCode, signal) => { onkill: (exitCode, signal) => {
@ -297,7 +297,7 @@ function wrapTransportWithWebSocket(transport: ConnectionTransport, port: number
if (pendingBrowserContextCreations.has(id)) { if (pendingBrowserContextCreations.has(id)) {
transport.send(JSON.stringify({ transport.send(JSON.stringify({
id: ++SequenceNumberMixer._lastSequenceNumber, id: ++SequenceNumberMixer._lastSequenceNumber,
method: 'Browser.deleteContext', method: 'Playwright.deleteContext',
params: { browserContextId: parsedMessage.result.browserContextId } params: { browserContextId: parsedMessage.result.browserContextId }
})); }));
} }
@ -333,7 +333,7 @@ function wrapTransportWithWebSocket(transport: ConnectionTransport, port: number
socket.send(message); socket.send(message);
return; return;
} }
if (method === 'Browser.pageProxyCreated') { if (method === 'Playwright.pageProxyCreated') {
const socket = browserContextIds.get(params.pageProxyInfo.browserContextId); const socket = browserContextIds.get(params.pageProxyInfo.browserContextId);
if (!socket || socket.readyState === ws.CLOSING) { if (!socket || socket.readyState === ws.CLOSING) {
// Drop unattributed messages on the floor. // Drop unattributed messages on the floor.
@ -343,14 +343,14 @@ function wrapTransportWithWebSocket(transport: ConnectionTransport, port: number
socket.send(message); socket.send(message);
return; return;
} }
if (method === 'Browser.pageProxyDestroyed') { if (method === 'Playwright.pageProxyDestroyed') {
const socket = pageProxyIds.get(params.pageProxyId); const socket = pageProxyIds.get(params.pageProxyId);
pageProxyIds.delete(params.pageProxyId); pageProxyIds.delete(params.pageProxyId);
if (socket && socket.readyState !== ws.CLOSING) if (socket && socket.readyState !== ws.CLOSING)
socket.send(message); socket.send(message);
return; return;
} }
if (method === 'Browser.provisionalLoadFailed') { if (method === 'Playwright.provisionalLoadFailed') {
const socket = pageProxyIds.get(params.pageProxyId); const socket = pageProxyIds.get(params.pageProxyId);
if (socket && socket.readyState !== ws.CLOSING) if (socket && socket.readyState !== ws.CLOSING)
socket.send(message); socket.send(message);
@ -370,9 +370,9 @@ function wrapTransportWithWebSocket(transport: ConnectionTransport, port: number
const { id, method, params } = parsedMessage; const { id, method, params } = parsedMessage;
const seqNum = idMixer.generate({ id, socket }); const seqNum = idMixer.generate({ id, socket });
transport.send(JSON.stringify({ ...parsedMessage, id: seqNum })); transport.send(JSON.stringify({ ...parsedMessage, id: seqNum }));
if (method === 'Browser.createContext') if (method === 'Playwright.createContext')
pendingBrowserContextCreations.add(seqNum); pendingBrowserContextCreations.add(seqNum);
if (method === 'Browser.deleteContext') if (method === 'Playwright.deleteContext')
pendingBrowserContextDeletions.set(seqNum, params.browserContextId); pendingBrowserContextDeletions.set(seqNum, params.browserContextId);
}); });
@ -385,7 +385,7 @@ function wrapTransportWithWebSocket(transport: ConnectionTransport, port: number
if (s === socket) { if (s === socket) {
transport.send(JSON.stringify({ transport.send(JSON.stringify({
id: ++SequenceNumberMixer._lastSequenceNumber, id: ++SequenceNumberMixer._lastSequenceNumber,
method: 'Browser.deleteContext', method: 'Playwright.deleteContext',
params: { browserContextId } params: { browserContextId }
})); }));
browserContextIds.delete(browserContextId); browserContextIds.delete(browserContextId);

View file

@ -56,9 +56,9 @@ export class WKBrowser extends platform.EventEmitter implements Browser {
this._defaultContext = new WKBrowserContext(this, undefined, validateBrowserContextOptions({})); this._defaultContext = new WKBrowserContext(this, undefined, validateBrowserContextOptions({}));
this._eventListeners = [ this._eventListeners = [
helper.addEventListener(this._browserSession, 'Browser.pageProxyCreated', this._onPageProxyCreated.bind(this)), helper.addEventListener(this._browserSession, 'Playwright.pageProxyCreated', this._onPageProxyCreated.bind(this)),
helper.addEventListener(this._browserSession, 'Browser.pageProxyDestroyed', this._onPageProxyDestroyed.bind(this)), helper.addEventListener(this._browserSession, 'Playwright.pageProxyDestroyed', this._onPageProxyDestroyed.bind(this)),
helper.addEventListener(this._browserSession, 'Browser.provisionalLoadFailed', event => this._onProvisionalLoadFailed(event)), helper.addEventListener(this._browserSession, 'Playwright.provisionalLoadFailed', event => this._onProvisionalLoadFailed(event)),
helper.addEventListener(this._browserSession, kPageProxyMessageReceived, this._onPageProxyMessageReceived.bind(this)), helper.addEventListener(this._browserSession, kPageProxyMessageReceived, this._onPageProxyMessageReceived.bind(this)),
]; ];
@ -76,7 +76,7 @@ export class WKBrowser extends platform.EventEmitter implements Browser {
async newContext(options: BrowserContextOptions = {}): Promise<BrowserContext> { async newContext(options: BrowserContextOptions = {}): Promise<BrowserContext> {
options = validateBrowserContextOptions(options); options = validateBrowserContextOptions(options);
const { browserContextId } = await this._browserSession.send('Browser.createContext'); const { browserContextId } = await this._browserSession.send('Playwright.createContext');
options.userAgent = options.userAgent || DEFAULT_USER_AGENT; options.userAgent = options.userAgent || DEFAULT_USER_AGENT;
const context = new WKBrowserContext(this, browserContextId, options); const context = new WKBrowserContext(this, browserContextId, options);
await context._initialize(); await context._initialize();
@ -97,7 +97,7 @@ export class WKBrowser extends platform.EventEmitter implements Browser {
return this._firstPagePromise; return this._firstPagePromise;
} }
_onPageProxyCreated(event: Protocol.Browser.pageProxyCreatedPayload) { _onPageProxyCreated(event: Protocol.Playwright.pageProxyCreatedPayload) {
const { pageProxyInfo } = event; const { pageProxyInfo } = event;
const pageProxyId = pageProxyInfo.pageProxyId; const pageProxyId = pageProxyInfo.pageProxyId;
let context: WKBrowserContext | null = null; let context: WKBrowserContext | null = null;
@ -134,7 +134,7 @@ export class WKBrowser extends platform.EventEmitter implements Browser {
}); });
} }
_onPageProxyDestroyed(event: Protocol.Browser.pageProxyDestroyedPayload) { _onPageProxyDestroyed(event: Protocol.Playwright.pageProxyDestroyedPayload) {
const pageProxyId = event.pageProxyId; const pageProxyId = event.pageProxyId;
const wkPage = this._wkPages.get(pageProxyId); const wkPage = this._wkPages.get(pageProxyId);
if (!wkPage) if (!wkPage)
@ -151,7 +151,7 @@ export class WKBrowser extends platform.EventEmitter implements Browser {
wkPage.dispatchMessageToSession(event.message); wkPage.dispatchMessageToSession(event.message);
} }
_onProvisionalLoadFailed(event: Protocol.Browser.provisionalLoadFailedPayload) { _onProvisionalLoadFailed(event: Protocol.Playwright.provisionalLoadFailedPayload) {
const wkPage = this._wkPages.get(event.pageProxyId); const wkPage = this._wkPages.get(event.pageProxyId);
if (!wkPage) if (!wkPage)
return; return;
@ -189,9 +189,9 @@ export class WKBrowserContext extends BrowserContextBase {
async _initialize() { async _initialize() {
if (this._options.ignoreHTTPSErrors) if (this._options.ignoreHTTPSErrors)
await this._browser._browserSession.send('Browser.setIgnoreCertificateErrors', { browserContextId: this._browserContextId, ignore: true }); await this._browser._browserSession.send('Playwright.setIgnoreCertificateErrors', { browserContextId: this._browserContextId, ignore: true });
if (this._options.locale) if (this._options.locale)
await this._browser._browserSession.send('Browser.setLanguages', { browserContextId: this._browserContextId, languages: [this._options.locale] }); await this._browser._browserSession.send('Playwright.setLanguages', { browserContextId: this._browserContextId, languages: [this._options.locale] });
const entries = Object.entries(this._options.permissions || {}); const entries = Object.entries(this._options.permissions || {});
await Promise.all(entries.map(entry => this.setPermissions(entry[0], entry[1]))); await Promise.all(entries.map(entry => this.setPermissions(entry[0], entry[1])));
if (this._options.geolocation) if (this._options.geolocation)
@ -218,7 +218,7 @@ export class WKBrowserContext extends BrowserContextBase {
async newPage(): Promise<Page> { async newPage(): Promise<Page> {
assertBrowserContextIsNotOwned(this); assertBrowserContextIsNotOwned(this);
const { pageProxyId } = await this._browser._browserSession.send('Browser.createPage', { browserContextId: this._browserContextId }); const { pageProxyId } = await this._browser._browserSession.send('Playwright.createPage', { browserContextId: this._browserContextId });
const wkPage = this._browser._wkPages.get(pageProxyId)!; const wkPage = this._browser._wkPages.get(pageProxyId)!;
const result = await wkPage.pageOrError(); const result = await wkPage.pageOrError();
if (result instanceof Page) { if (result instanceof Page) {
@ -230,10 +230,10 @@ export class WKBrowserContext extends BrowserContextBase {
} }
async cookies(urls?: string | string[]): Promise<network.NetworkCookie[]> { async cookies(urls?: string | string[]): Promise<network.NetworkCookie[]> {
const { cookies } = await this._browser._browserSession.send('Browser.getAllCookies', { browserContextId: this._browserContextId }); const { cookies } = await this._browser._browserSession.send('Playwright.getAllCookies', { browserContextId: this._browserContextId });
return network.filterCookies(cookies.map((c: network.NetworkCookie) => { return network.filterCookies(cookies.map((c: network.NetworkCookie) => {
const copy: any = { ... c }; const copy: any = { ... c };
copy.expires = c.expires === 0 ? -1 : c.expires / 1000; copy.expires = c.expires === -1 ? -1 : c.expires / 1000;
delete copy.session; delete copy.session;
return copy as network.NetworkCookie; return copy as network.NetworkCookie;
}), urls); }), urls);
@ -244,12 +244,12 @@ export class WKBrowserContext extends BrowserContextBase {
...c, ...c,
session: c.expires === -1 || c.expires === undefined, session: c.expires === -1 || c.expires === undefined,
expires: c.expires && c.expires !== -1 ? c.expires * 1000 : c.expires expires: c.expires && c.expires !== -1 ? c.expires * 1000 : c.expires
})) as Protocol.Browser.SetCookieParam[]; })) as Protocol.Playwright.SetCookieParam[];
await this._browser._browserSession.send('Browser.setCookies', { cookies: cc, browserContextId: this._browserContextId }); await this._browser._browserSession.send('Playwright.setCookies', { cookies: cc, browserContextId: this._browserContextId });
} }
async clearCookies() { async clearCookies() {
await this._browser._browserSession.send('Browser.deleteAllCookies', { browserContextId: this._browserContextId }); await this._browser._browserSession.send('Playwright.deleteAllCookies', { browserContextId: this._browserContextId });
} }
async setPermissions(origin: string, permissions: string[]): Promise<void> { async setPermissions(origin: string, permissions: string[]): Promise<void> {
@ -262,11 +262,11 @@ export class WKBrowserContext extends BrowserContextBase {
throw new Error('Unknown permission: ' + permission); throw new Error('Unknown permission: ' + permission);
return protocolPermission; return protocolPermission;
}); });
await this._browser._browserSession.send('Browser.grantPermissions', { origin, browserContextId: this._browserContextId, permissions: filtered }); await this._browser._browserSession.send('Playwright.grantPermissions', { origin, browserContextId: this._browserContextId, permissions: filtered });
} }
async clearPermissions() { async clearPermissions() {
await this._browser._browserSession.send('Browser.resetPermissions', { browserContextId: this._browserContextId }); await this._browser._browserSession.send('Playwright.resetPermissions', { browserContextId: this._browserContextId });
} }
async setGeolocation(geolocation: types.Geolocation | null): Promise<void> { async setGeolocation(geolocation: types.Geolocation | null): Promise<void> {
@ -274,7 +274,7 @@ export class WKBrowserContext extends BrowserContextBase {
geolocation = verifyGeolocation(geolocation); geolocation = verifyGeolocation(geolocation);
this._options.geolocation = geolocation || undefined; this._options.geolocation = geolocation || undefined;
const payload: any = geolocation ? { ...geolocation, timestamp: Date.now() } : undefined; const payload: any = geolocation ? { ...geolocation, timestamp: Date.now() } : undefined;
await this._browser._browserSession.send('Browser.setGeolocationOverride', { browserContextId: this._browserContextId, geolocation: payload }); await this._browser._browserSession.send('Playwright.setGeolocationOverride', { browserContextId: this._browserContextId, geolocation: payload });
} }
async setExtraHTTPHeaders(headers: network.Headers): Promise<void> { async setExtraHTTPHeaders(headers: network.Headers): Promise<void> {
@ -330,7 +330,7 @@ export class WKBrowserContext extends BrowserContextBase {
await this._browser.close(); await this._browser.close();
return; return;
} }
await this._browser._browserSession.send('Browser.deleteContext', { browserContextId: this._browserContextId }); await this._browser._browserSession.send('Playwright.deleteContext', { browserContextId: this._browserContextId });
this._browser._contexts.delete(this._browserContextId); this._browser._contexts.delete(this._browserContextId);
this._didCloseInternal(); this._didCloseInternal();
} }

View file

@ -212,7 +212,7 @@ export class WKPage implements PageDelegate {
this._pageProxySession.dispatchMessage(message); this._pageProxySession.dispatchMessage(message);
} }
handleProvisionalLoadFailed(event: Protocol.Browser.provisionalLoadFailedPayload) { handleProvisionalLoadFailed(event: Protocol.Playwright.provisionalLoadFailedPayload) {
if (!this._initialized || !this._provisionalPage) if (!this._initialized || !this._provisionalPage)
return; return;
let errorText = event.error; let errorText = event.error;
@ -390,7 +390,7 @@ export class WKPage implements PageDelegate {
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;
const result = await this._pageProxySession.connection.browserSession.send('Browser.navigate', { url, pageProxyId, frameId: frame._id, referrer }); const result = await this._pageProxySession.connection.browserSession.send('Playwright.navigate', { url, pageProxyId, frameId: frame._id, referrer });
return { newDocumentId: result.loaderId }; return { newDocumentId: result.loaderId };
} }