Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: do not auto wait for downloads #1921

Merged
merged 1 commit into from
Apr 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/download.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 0 additions & 4 deletions src/firefox/ffPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
Expand Down
13 changes: 1 addition & 12 deletions src/frames.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand All @@ -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();
}
}
Expand Down
14 changes: 0 additions & 14 deletions test/autowaiting.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) => {
Expand Down