feat(download): add Page in Download (#6501)
This commit is contained in:
parent
3bded35834
commit
e87fbfcc1d
|
|
@ -75,6 +75,11 @@ Deletes the downloaded file. Will wait for the download to finish if necessary.
|
||||||
|
|
||||||
Returns download error if any. Will wait for the download to finish if necessary.
|
Returns download error if any. Will wait for the download to finish if necessary.
|
||||||
|
|
||||||
|
## method: Download.page
|
||||||
|
- returns: <[Page]>
|
||||||
|
|
||||||
|
Get the page that the download belongs to.
|
||||||
|
|
||||||
## async method: Download.path
|
## async method: Download.path
|
||||||
- returns: <[null]|[path]>
|
- returns: <[null]|[path]>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,18 +17,25 @@
|
||||||
import { Readable } from 'stream';
|
import { Readable } from 'stream';
|
||||||
import * as api from '../../types/types';
|
import * as api from '../../types/types';
|
||||||
import { Artifact } from './artifact';
|
import { Artifact } from './artifact';
|
||||||
|
import { Page } from './page';
|
||||||
|
|
||||||
export class Download implements api.Download {
|
export class Download implements api.Download {
|
||||||
|
private _page: Page;
|
||||||
private _url: string;
|
private _url: string;
|
||||||
private _suggestedFilename: string;
|
private _suggestedFilename: string;
|
||||||
private _artifact: Artifact;
|
private _artifact: Artifact;
|
||||||
|
|
||||||
constructor(url: string, suggestedFilename: string, artifact: Artifact) {
|
constructor(page: Page, url: string, suggestedFilename: string, artifact: Artifact) {
|
||||||
|
this._page = page;
|
||||||
this._url = url;
|
this._url = url;
|
||||||
this._suggestedFilename = suggestedFilename;
|
this._suggestedFilename = suggestedFilename;
|
||||||
this._artifact = artifact;
|
this._artifact = artifact;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
page(): Page {
|
||||||
|
return this._page;
|
||||||
|
}
|
||||||
|
|
||||||
url(): string {
|
url(): string {
|
||||||
return this._url;
|
return this._url;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -125,7 +125,7 @@ export class Page extends ChannelOwner<channels.PageChannel, channels.PageInitia
|
||||||
this._channel.on('download', ({ url, suggestedFilename, artifact }) => {
|
this._channel.on('download', ({ url, suggestedFilename, artifact }) => {
|
||||||
const artifactObject = Artifact.from(artifact);
|
const artifactObject = Artifact.from(artifact);
|
||||||
artifactObject._isRemote = !!this._browserContext._browser && !!this._browserContext._browser._remoteType;
|
artifactObject._isRemote = !!this._browserContext._browser && !!this._browserContext._browser._remoteType;
|
||||||
this.emit(Events.Page.Download, new Download(url, suggestedFilename, artifactObject));
|
this.emit(Events.Page.Download, new Download(this, url, suggestedFilename, artifactObject));
|
||||||
});
|
});
|
||||||
this._channel.on('fileChooser', ({ element, isMultiple }) => this.emit(Events.Page.FileChooser, new FileChooser(this, ElementHandle.from(element), isMultiple)));
|
this._channel.on('fileChooser', ({ element, isMultiple }) => this.emit(Events.Page.FileChooser, new FileChooser(this, ElementHandle.from(element), isMultiple)));
|
||||||
this._channel.on('frameAttached', ({ frame }) => this._onFrameAttached(Frame.from(frame)));
|
this._channel.on('frameAttached', ({ frame }) => this._onFrameAttached(Frame.from(frame)));
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ it.describe('download event', () => {
|
||||||
page.click('a')
|
page.click('a')
|
||||||
]);
|
]);
|
||||||
let error;
|
let error;
|
||||||
|
expect(download.page()).toBe(page);
|
||||||
expect(download.url()).toBe(`${server.PREFIX}/downloadWithFilename`);
|
expect(download.url()).toBe(`${server.PREFIX}/downloadWithFilename`);
|
||||||
expect(download.suggestedFilename()).toBe(`file.txt`);
|
expect(download.suggestedFilename()).toBe(`file.txt`);
|
||||||
await download.path().catch(e => error = e);
|
await download.path().catch(e => error = e);
|
||||||
|
|
|
||||||
5
types/types.d.ts
vendored
5
types/types.d.ts
vendored
|
|
@ -9532,6 +9532,11 @@ export interface Download {
|
||||||
*/
|
*/
|
||||||
failure(): Promise<null|string>;
|
failure(): Promise<null|string>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the page that the download belongs to.
|
||||||
|
*/
|
||||||
|
page(): Page;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns path to the downloaded file in case of successful download. The method will wait for the download to finish if
|
* Returns path to the downloaded file in case of successful download. The method will wait for the download to finish if
|
||||||
* necessary. The method throws when connected remotely.
|
* necessary. The method throws when connected remotely.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue