feat: add getPercentComplete
/ getCurrentBytesPerSecond
/ getEndTime
to DownloadItem (#42805)
feat: getCurrentSpeed / getPercentComplete / getEndTime on DownloadItem
This commit is contained in:
parent
0fddfd1b28
commit
bab3fcc9ab
4 changed files with 46 additions and 1 deletions
|
@ -145,6 +145,10 @@ Returns `string` - The file name of the download item.
|
||||||
disk. If user changes the file name in a prompted download saving dialog, the
|
disk. If user changes the file name in a prompted download saving dialog, the
|
||||||
actual name of saved file will be different.
|
actual name of saved file will be different.
|
||||||
|
|
||||||
|
#### `downloadItem.getCurrentBytesPerSecond()`
|
||||||
|
|
||||||
|
Returns `Integer` - The current download speed in bytes per second.
|
||||||
|
|
||||||
#### `downloadItem.getTotalBytes()`
|
#### `downloadItem.getTotalBytes()`
|
||||||
|
|
||||||
Returns `Integer` - The total size in bytes of the download item.
|
Returns `Integer` - The total size in bytes of the download item.
|
||||||
|
@ -155,6 +159,10 @@ If the size is unknown, it returns 0.
|
||||||
|
|
||||||
Returns `Integer` - The received bytes of the download item.
|
Returns `Integer` - The received bytes of the download item.
|
||||||
|
|
||||||
|
#### `downloadItem.getPercentComplete()`
|
||||||
|
|
||||||
|
Returns `Integer` - The download completion in percent.
|
||||||
|
|
||||||
#### `downloadItem.getContentDisposition()`
|
#### `downloadItem.getContentDisposition()`
|
||||||
|
|
||||||
Returns `string` - The Content-Disposition field from the response
|
Returns `string` - The Content-Disposition field from the response
|
||||||
|
@ -184,6 +192,10 @@ Returns `string` - ETag header value.
|
||||||
Returns `Double` - Number of seconds since the UNIX epoch when the download was
|
Returns `Double` - Number of seconds since the UNIX epoch when the download was
|
||||||
started.
|
started.
|
||||||
|
|
||||||
|
#### `downloadItem.getEndTime()`
|
||||||
|
|
||||||
|
Returns `Double` - Number of seconds since the UNIX epoch when the download ended.
|
||||||
|
|
||||||
### Instance Properties
|
### Instance Properties
|
||||||
|
|
||||||
#### `downloadItem.savePath`
|
#### `downloadItem.savePath`
|
||||||
|
|
|
@ -149,6 +149,12 @@ void DownloadItem::Cancel() {
|
||||||
download_item_->Cancel(true);
|
download_item_->Cancel(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t DownloadItem::GetCurrentBytesPerSecond() const {
|
||||||
|
if (!CheckAlive())
|
||||||
|
return 0;
|
||||||
|
return download_item_->CurrentSpeed();
|
||||||
|
}
|
||||||
|
|
||||||
int64_t DownloadItem::GetReceivedBytes() const {
|
int64_t DownloadItem::GetReceivedBytes() const {
|
||||||
if (!CheckAlive())
|
if (!CheckAlive())
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -161,6 +167,12 @@ int64_t DownloadItem::GetTotalBytes() const {
|
||||||
return download_item_->GetTotalBytes();
|
return download_item_->GetTotalBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DownloadItem::GetPercentComplete() const {
|
||||||
|
if (!CheckAlive())
|
||||||
|
return 0;
|
||||||
|
return download_item_->PercentComplete();
|
||||||
|
}
|
||||||
|
|
||||||
std::string DownloadItem::GetMimeType() const {
|
std::string DownloadItem::GetMimeType() const {
|
||||||
if (!CheckAlive())
|
if (!CheckAlive())
|
||||||
return "";
|
return "";
|
||||||
|
@ -248,6 +260,12 @@ double DownloadItem::GetStartTime() const {
|
||||||
return download_item_->GetStartTime().InSecondsFSinceUnixEpoch();
|
return download_item_->GetStartTime().InSecondsFSinceUnixEpoch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double DownloadItem::GetEndTime() const {
|
||||||
|
if (!CheckAlive())
|
||||||
|
return 0;
|
||||||
|
return download_item_->GetEndTime().InSecondsFSinceUnixEpoch();
|
||||||
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
gin::ObjectTemplateBuilder DownloadItem::GetObjectTemplateBuilder(
|
gin::ObjectTemplateBuilder DownloadItem::GetObjectTemplateBuilder(
|
||||||
v8::Isolate* isolate) {
|
v8::Isolate* isolate) {
|
||||||
|
@ -258,8 +276,11 @@ gin::ObjectTemplateBuilder DownloadItem::GetObjectTemplateBuilder(
|
||||||
.SetMethod("resume", &DownloadItem::Resume)
|
.SetMethod("resume", &DownloadItem::Resume)
|
||||||
.SetMethod("canResume", &DownloadItem::CanResume)
|
.SetMethod("canResume", &DownloadItem::CanResume)
|
||||||
.SetMethod("cancel", &DownloadItem::Cancel)
|
.SetMethod("cancel", &DownloadItem::Cancel)
|
||||||
|
.SetMethod("getCurrentBytesPerSecond",
|
||||||
|
&DownloadItem::GetCurrentBytesPerSecond)
|
||||||
.SetMethod("getReceivedBytes", &DownloadItem::GetReceivedBytes)
|
.SetMethod("getReceivedBytes", &DownloadItem::GetReceivedBytes)
|
||||||
.SetMethod("getTotalBytes", &DownloadItem::GetTotalBytes)
|
.SetMethod("getTotalBytes", &DownloadItem::GetTotalBytes)
|
||||||
|
.SetMethod("getPercentComplete", &DownloadItem::GetPercentComplete)
|
||||||
.SetMethod("getMimeType", &DownloadItem::GetMimeType)
|
.SetMethod("getMimeType", &DownloadItem::GetMimeType)
|
||||||
.SetMethod("hasUserGesture", &DownloadItem::HasUserGesture)
|
.SetMethod("hasUserGesture", &DownloadItem::HasUserGesture)
|
||||||
.SetMethod("getFilename", &DownloadItem::GetFilename)
|
.SetMethod("getFilename", &DownloadItem::GetFilename)
|
||||||
|
@ -276,7 +297,8 @@ gin::ObjectTemplateBuilder DownloadItem::GetObjectTemplateBuilder(
|
||||||
.SetMethod("getSaveDialogOptions", &DownloadItem::GetSaveDialogOptions)
|
.SetMethod("getSaveDialogOptions", &DownloadItem::GetSaveDialogOptions)
|
||||||
.SetMethod("getLastModifiedTime", &DownloadItem::GetLastModifiedTime)
|
.SetMethod("getLastModifiedTime", &DownloadItem::GetLastModifiedTime)
|
||||||
.SetMethod("getETag", &DownloadItem::GetETag)
|
.SetMethod("getETag", &DownloadItem::GetETag)
|
||||||
.SetMethod("getStartTime", &DownloadItem::GetStartTime);
|
.SetMethod("getStartTime", &DownloadItem::GetStartTime)
|
||||||
|
.SetMethod("getEndTime", &DownloadItem::GetEndTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* DownloadItem::GetTypeName() {
|
const char* DownloadItem::GetTypeName() {
|
||||||
|
|
|
@ -62,8 +62,10 @@ class DownloadItem : public gin::Wrappable<DownloadItem>,
|
||||||
void Resume();
|
void Resume();
|
||||||
bool CanResume() const;
|
bool CanResume() const;
|
||||||
void Cancel();
|
void Cancel();
|
||||||
|
int64_t GetCurrentBytesPerSecond() const;
|
||||||
int64_t GetReceivedBytes() const;
|
int64_t GetReceivedBytes() const;
|
||||||
int64_t GetTotalBytes() const;
|
int64_t GetTotalBytes() const;
|
||||||
|
int GetPercentComplete() const;
|
||||||
std::string GetMimeType() const;
|
std::string GetMimeType() const;
|
||||||
bool HasUserGesture() const;
|
bool HasUserGesture() const;
|
||||||
std::string GetFilename() const;
|
std::string GetFilename() const;
|
||||||
|
@ -76,6 +78,7 @@ class DownloadItem : public gin::Wrappable<DownloadItem>,
|
||||||
std::string GetLastModifiedTime() const;
|
std::string GetLastModifiedTime() const;
|
||||||
std::string GetETag() const;
|
std::string GetETag() const;
|
||||||
double GetStartTime() const;
|
double GetStartTime() const;
|
||||||
|
double GetEndTime() const;
|
||||||
|
|
||||||
base::FilePath save_path_;
|
base::FilePath save_path_;
|
||||||
file_dialog::DialogSettings dialog_options_;
|
file_dialog::DialogSettings dialog_options_;
|
||||||
|
|
|
@ -889,13 +889,21 @@ describe('session module', () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const today = Math.floor(Date.now() / 1000);
|
||||||
const item = await downloadDone;
|
const item = await downloadDone;
|
||||||
expect(item.getState()).to.equal('completed');
|
expect(item.getState()).to.equal('completed');
|
||||||
expect(item.getFilename()).to.equal('mock.pdf');
|
expect(item.getFilename()).to.equal('mock.pdf');
|
||||||
expect(item.getMimeType()).to.equal('application/pdf');
|
expect(item.getMimeType()).to.equal('application/pdf');
|
||||||
expect(item.getReceivedBytes()).to.equal(mockPDF.length);
|
expect(item.getReceivedBytes()).to.equal(mockPDF.length);
|
||||||
expect(item.getTotalBytes()).to.equal(mockPDF.length);
|
expect(item.getTotalBytes()).to.equal(mockPDF.length);
|
||||||
|
expect(item.getPercentComplete()).to.equal(100);
|
||||||
|
expect(item.getCurrentBytesPerSecond()).to.equal(0);
|
||||||
expect(item.getContentDisposition()).to.equal(contentDisposition);
|
expect(item.getContentDisposition()).to.equal(contentDisposition);
|
||||||
|
|
||||||
|
const start = item.getStartTime();
|
||||||
|
const end = item.getEndTime();
|
||||||
|
expect(start).to.be.greaterThan(today);
|
||||||
|
expect(end).to.be.greaterThan(start);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('throws when called with invalid headers', () => {
|
it('throws when called with invalid headers', () => {
|
||||||
|
|
Loading…
Reference in a new issue