mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
fix(firefox): track frame detachment in navigation watchdog (#4008)
This commit is contained in:
parent
247733b879
commit
e0d4a5d2ec
@ -69,6 +69,7 @@ class NavigationWatchdog {
|
||||
helper.addEventListener(session, 'Page.navigationCommitted', check),
|
||||
helper.addEventListener(session, 'Page.navigationAborted', this._onNavigationAborted.bind(this)),
|
||||
helper.addEventListener(networkManager, Events.NetworkManager.Request, this._onRequest.bind(this)),
|
||||
helper.addEventListener(navigatedFrame._frameManager, Events.FrameManager.FrameDetached, check),
|
||||
];
|
||||
check();
|
||||
}
|
||||
@ -84,7 +85,9 @@ class NavigationWatchdog {
|
||||
}
|
||||
|
||||
_checkNavigationComplete() {
|
||||
if (this._navigatedFrame._lastCommittedNavigationId === this._targetNavigationId
|
||||
if (this._navigatedFrame.isDetached()) {
|
||||
this._resolveCallback(new Error('Navigating frame was detached'));
|
||||
} else if (this._navigatedFrame._lastCommittedNavigationId === this._targetNavigationId
|
||||
&& checkFiredEvents(this._navigatedFrame, this._firedEvents)) {
|
||||
this._resolveCallback(null);
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ module.exports.addTests = function({testRunner, expect, Errors, CHROME}) {
|
||||
expect(response.ok()).toBe(true);
|
||||
expect(response.frame()).toBe(page.frames()[1]);
|
||||
});
|
||||
it_fails_ffox('should reject when frame detaches', async({page, server}) => {
|
||||
it('should reject when frame detaches', async({page, server}) => {
|
||||
await page.goto(server.PREFIX + '/frames/one-frame.html');
|
||||
|
||||
server.setRoute('/empty.html', () => {});
|
||||
@ -533,7 +533,7 @@ module.exports.addTests = function({testRunner, expect, Errors, CHROME}) {
|
||||
expect(response.frame()).toBe(frame);
|
||||
expect(page.url()).toContain('/frames/one-frame.html');
|
||||
});
|
||||
it_fails_ffox('should reject when frame detaches', async({page, server}) => {
|
||||
it_fails_ffox('should resolve when frame detaches', async({page, server}) => {
|
||||
await page.goto(server.PREFIX + '/frames/one-frame.html');
|
||||
const frame = page.frames()[1];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user