From 00e8d887774558a06477b53db4d200dbdd277723 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Wed, 22 Apr 2020 15:08:39 -0700 Subject: [PATCH] fix: do not auto wait for downloads (#1921) --- src/download.ts | 2 -- src/firefox/ffPage.ts | 4 ---- src/frames.ts | 13 +------------ test/autowaiting.spec.js | 14 -------------- 4 files changed, 1 insertion(+), 32 deletions(-) diff --git a/src/download.ts b/src/download.ts index 200bd75f29..4f03fb60a7 100644 --- a/src/download.ts +++ b/src/download.ts @@ -39,8 +39,6 @@ export class Download { this._url = url; this._finishedCallback = () => {}; this._finishedPromise = new Promise(f => this._finishedCallback = f); - for (const barrier of this._page._frameManager._signalBarriers) - barrier.addDownload(); this._page.emit(Events.Page.Download, this); page._browserContext._downloads.add(this); this._acceptDownloads = !!this._page._browserContext._options.acceptDownloads; diff --git a/src/firefox/ffPage.ts b/src/firefox/ffPage.ts index 115cf85f74..9390b90612 100644 --- a/src/firefox/ffPage.ts +++ b/src/firefox/ffPage.ts @@ -147,10 +147,6 @@ export class FFPage implements PageDelegate { _onNavigationAborted(params: Protocol.Page.navigationAbortedPayload) { const frame = this._page._frameManager.frame(params.frameId)!; - if (params.errorText === 'Will download to file') { - for (const barrier of this._page._frameManager._signalBarriers) - barrier.expectDownload(); - } for (const task of frame._frameTasks) task.onNewDocument(params.navigationId, new Error(params.errorText)); } diff --git a/src/frames.ts b/src/frames.ts index 0b5ff3097d..5e36f701ef 100644 --- a/src/frames.ts +++ b/src/frames.ts @@ -948,7 +948,6 @@ export class SignalBarrier { private _options: types.NavigatingActionWaitOptions; private _protectCount = 0; private _expectedPopups = 0; - private _expectedDownloads = 0; private _promise: Promise; private _promiseCallback = () => {}; private _deadline: number; @@ -989,16 +988,6 @@ export class SignalBarrier { this.release(); } - async expectDownload() { - ++this._expectedDownloads; - } - - async addDownload() { - if (this._expectedDownloads) - --this._expectedDownloads; - this._maybeResolve(); - } - retain() { ++this._protectCount; } @@ -1009,7 +998,7 @@ export class SignalBarrier { } private async _maybeResolve() { - if (!this._protectCount && !this._expectedPopups && !this._expectedDownloads && !this._frameIds.size) + if (!this._protectCount && !this._expectedPopups && !this._frameIds.size) this._promiseCallback(); } } diff --git a/test/autowaiting.spec.js b/test/autowaiting.spec.js index 2fe769fa44..5978a998ed 100644 --- a/test/autowaiting.spec.js +++ b/test/autowaiting.spec.js @@ -54,20 +54,6 @@ describe('Auto waiting', () => { ]); expect(messages.join('|')).toBe('popup|click'); }); - it.fail(CHROMIUM)('should await download when clicking anchor', async function({page, server}) { - server.setRoute('/download', (req, res) => { - res.setHeader('Content-Type', 'application/octet-stream'); - res.setHeader('Content-Disposition', 'attachment'); - res.end(`Hello world`); - }); - await page.setContent(`download`); - const messages = []; - await Promise.all([ - page.waitForEvent('download').then(() => messages.push('download')), - page.click('a').then(() => messages.push('click')), - ]); - expect(messages.join('|')).toBe('download|click'); - }); it('should await cross-process navigation when clicking anchor', async({page, server}) => { const messages = []; server.setRoute('/empty.html', async (req, res) => {