feat(webkit): roll webkit to r1060, support target crash (#364)
This commit is contained in:
parent
6c1289626b
commit
fcd62b9611
|
|
@ -10,7 +10,7 @@
|
||||||
"playwright": {
|
"playwright": {
|
||||||
"chromium_revision": "724623",
|
"chromium_revision": "724623",
|
||||||
"firefox_revision": "1009",
|
"firefox_revision": "1009",
|
||||||
"webkit_revision": "1059"
|
"webkit_revision": "1060"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"unit": "node test/test.js",
|
"unit": "node test/test.js",
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,7 @@ export class CRPage implements PageDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
_onTargetCrashed() {
|
_onTargetCrashed() {
|
||||||
this._page.emit('error', new Error('Page crashed!'));
|
this._page._didCrash();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onLogEntryAdded(event: Protocol.Log.entryAddedPayload) {
|
_onLogEntryAdded(event: Protocol.Log.entryAddedPayload) {
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,12 @@ export class Page extends EventEmitter {
|
||||||
this._closedCallback();
|
this._closedCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_didCrash() {
|
||||||
|
const error = new Error('Page crashed!');
|
||||||
|
error.stack = '';
|
||||||
|
this.emit('error', error);
|
||||||
|
}
|
||||||
|
|
||||||
_didDisconnect() {
|
_didDisconnect() {
|
||||||
assert(!this._disconnected, 'Page disconnected twice');
|
assert(!this._disconnected, 'Page disconnected twice');
|
||||||
this._disconnected = true;
|
this._disconnected = true;
|
||||||
|
|
|
||||||
|
|
@ -135,10 +135,10 @@ export class WKBrowser extends browser.Browser {
|
||||||
this._connection.send('Target.resume', { targetId: targetInfo.targetId }).catch(debugError);
|
this._connection.send('Target.resume', { targetId: targetInfo.targetId }).catch(debugError);
|
||||||
}
|
}
|
||||||
|
|
||||||
_onTargetDestroyed({targetId}) {
|
_onTargetDestroyed({targetId, crashed}) {
|
||||||
const target = this._targets.get(targetId);
|
const target = this._targets.get(targetId);
|
||||||
this._targets.delete(targetId);
|
this._targets.delete(targetId);
|
||||||
target._didClose();
|
target._didClose(crashed);
|
||||||
}
|
}
|
||||||
|
|
||||||
_closePage(targetId: string, runBeforeUnload: boolean) {
|
_closePage(targetId: string, runBeforeUnload: boolean) {
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ export class WKConnection extends EventEmitter {
|
||||||
session._onClosed();
|
session._onClosed();
|
||||||
this._sessions.delete(object.params.targetId);
|
this._sessions.delete(object.params.targetId);
|
||||||
}
|
}
|
||||||
Promise.resolve().then(() => this.emit(WKConnectionEvents.TargetDestroyed, { targetId: object.params.targetId }));
|
Promise.resolve().then(() => this.emit(WKConnectionEvents.TargetDestroyed, { targetId: object.params.targetId, crashed: object.params.crashed }));
|
||||||
} else if (object.method === 'Target.dispatchMessageFromTarget') {
|
} else if (object.method === 'Target.dispatchMessageFromTarget') {
|
||||||
const {targetId, message} = object.params as Protocol.Target.dispatchMessageFromTargetPayload;
|
const {targetId, message} = object.params as Protocol.Target.dispatchMessageFromTargetPayload;
|
||||||
const session = this._sessions.get(targetId);
|
const session = this._sessions.get(targetId);
|
||||||
|
|
|
||||||
|
|
@ -113,11 +113,14 @@ export class WKPage implements PageDelegate {
|
||||||
await this._page.evaluate(JSON_SAVE_SCRIPT);
|
await this._page.evaluate(JSON_SAVE_SCRIPT);
|
||||||
}
|
}
|
||||||
|
|
||||||
didClose() {
|
didClose(crashed: boolean) {
|
||||||
helper.removeEventListeners(this._sessionListeners);
|
helper.removeEventListeners(this._sessionListeners);
|
||||||
this._networkManager.dispose();
|
this._networkManager.dispose();
|
||||||
this.disconnectFromTarget();
|
this.disconnectFromTarget();
|
||||||
this._page._didClose();
|
if (crashed)
|
||||||
|
this._page._didCrash();
|
||||||
|
else
|
||||||
|
this._page._didClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
_addSessionListeners() {
|
_addSessionListeners() {
|
||||||
|
|
|
||||||
|
|
@ -42,9 +42,9 @@ export class WKTarget {
|
||||||
this._pagePromise = null;
|
this._pagePromise = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
_didClose() {
|
_didClose(crashed: boolean) {
|
||||||
if (this._wkPage)
|
if (this._wkPage)
|
||||||
this._wkPage.didClose();
|
this._wkPage.didClose(crashed);
|
||||||
}
|
}
|
||||||
|
|
||||||
async _initializeSession(session: WKTargetSession) {
|
async _initializeSession(session: WKTargetSession) {
|
||||||
|
|
|
||||||
|
|
@ -109,11 +109,14 @@ module.exports.describe = function({testRunner, expect, headless, playwright, FF
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe.skip(FFOX || WEBKIT)('Page.Events.error', function() {
|
describe.skip(FFOX)('Page.Events.error', function() {
|
||||||
it('should throw when page crashes', async({page}) => {
|
it('should throw when page crashes', async({page}) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
page.on('error', err => error = err);
|
page.on('error', err => error = err);
|
||||||
page.goto('chrome://crash').catch(e => {});
|
if (CHROME)
|
||||||
|
page.goto('chrome://crash').catch(e => {});
|
||||||
|
else if (WEBKIT)
|
||||||
|
page._delegate._session.send('Page.crash', {}).catch(e => {});
|
||||||
await waitEvent(page, 'error');
|
await waitEvent(page, 'error');
|
||||||
expect(error.message).toBe('Page crashed!');
|
expect(error.message).toBe('Page crashed!');
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue