fix: do not auto wait for downloads (#1921)

This commit is contained in:
Yury Semikhatsky 2020-04-22 15:08:39 -07:00 committed by GitHub
parent fa6f738e4c
commit 00e8d88777
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 1 additions and 32 deletions

View file

@ -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;

View file

@ -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));
}

View file

@ -948,7 +948,6 @@ export class SignalBarrier {
private _options: types.NavigatingActionWaitOptions;
private _protectCount = 0;
private _expectedPopups = 0;
private _expectedDownloads = 0;
private _promise: Promise<void>;
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();
}
}

View file

@ -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(`<a download=true href="${server.PREFIX}/download">download</a>`);
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) => {