feat(webkit): roll webkit to r1060, support target crash (#364)
This commit is contained in:
parent
6c1289626b
commit
fcd62b9611
|
|
@ -10,7 +10,7 @@
|
|||
"playwright": {
|
||||
"chromium_revision": "724623",
|
||||
"firefox_revision": "1009",
|
||||
"webkit_revision": "1059"
|
||||
"webkit_revision": "1060"
|
||||
},
|
||||
"scripts": {
|
||||
"unit": "node test/test.js",
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ export class CRPage implements PageDelegate {
|
|||
}
|
||||
|
||||
_onTargetCrashed() {
|
||||
this._page.emit('error', new Error('Page crashed!'));
|
||||
this._page._didCrash();
|
||||
}
|
||||
|
||||
_onLogEntryAdded(event: Protocol.Log.entryAddedPayload) {
|
||||
|
|
|
|||
|
|
@ -131,6 +131,12 @@ export class Page extends EventEmitter {
|
|||
this._closedCallback();
|
||||
}
|
||||
|
||||
_didCrash() {
|
||||
const error = new Error('Page crashed!');
|
||||
error.stack = '';
|
||||
this.emit('error', error);
|
||||
}
|
||||
|
||||
_didDisconnect() {
|
||||
assert(!this._disconnected, 'Page disconnected twice');
|
||||
this._disconnected = true;
|
||||
|
|
|
|||
|
|
@ -135,10 +135,10 @@ export class WKBrowser extends browser.Browser {
|
|||
this._connection.send('Target.resume', { targetId: targetInfo.targetId }).catch(debugError);
|
||||
}
|
||||
|
||||
_onTargetDestroyed({targetId}) {
|
||||
_onTargetDestroyed({targetId, crashed}) {
|
||||
const target = this._targets.get(targetId);
|
||||
this._targets.delete(targetId);
|
||||
target._didClose();
|
||||
target._didClose(crashed);
|
||||
}
|
||||
|
||||
_closePage(targetId: string, runBeforeUnload: boolean) {
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ export class WKConnection extends EventEmitter {
|
|||
session._onClosed();
|
||||
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') {
|
||||
const {targetId, message} = object.params as Protocol.Target.dispatchMessageFromTargetPayload;
|
||||
const session = this._sessions.get(targetId);
|
||||
|
|
|
|||
|
|
@ -113,11 +113,14 @@ export class WKPage implements PageDelegate {
|
|||
await this._page.evaluate(JSON_SAVE_SCRIPT);
|
||||
}
|
||||
|
||||
didClose() {
|
||||
didClose(crashed: boolean) {
|
||||
helper.removeEventListeners(this._sessionListeners);
|
||||
this._networkManager.dispose();
|
||||
this.disconnectFromTarget();
|
||||
this._page._didClose();
|
||||
if (crashed)
|
||||
this._page._didCrash();
|
||||
else
|
||||
this._page._didClose();
|
||||
}
|
||||
|
||||
_addSessionListeners() {
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@ export class WKTarget {
|
|||
this._pagePromise = null;
|
||||
}
|
||||
|
||||
_didClose() {
|
||||
_didClose(crashed: boolean) {
|
||||
if (this._wkPage)
|
||||
this._wkPage.didClose();
|
||||
this._wkPage.didClose(crashed);
|
||||
}
|
||||
|
||||
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}) => {
|
||||
let error = null;
|
||||
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');
|
||||
expect(error.message).toBe('Page crashed!');
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue