mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-02 20:26:59 +01:00
Add the ability to Pause/Resume downloads via new CefDownloadItemCallback methods (issue #1425).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1966 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
ad536f769f
commit
833f762273
@ -80,6 +80,16 @@ typedef struct _cef_download_item_callback_t {
|
||||
// Call to cancel the download.
|
||||
///
|
||||
void (CEF_CALLBACK *cancel)(struct _cef_download_item_callback_t* self);
|
||||
|
||||
///
|
||||
// Call to pause the download.
|
||||
///
|
||||
void (CEF_CALLBACK *pause)(struct _cef_download_item_callback_t* self);
|
||||
|
||||
///
|
||||
// Call to resume the download.
|
||||
///
|
||||
void (CEF_CALLBACK *resume)(struct _cef_download_item_callback_t* self);
|
||||
} cef_download_item_callback_t;
|
||||
|
||||
|
||||
|
@ -71,6 +71,18 @@ class CefDownloadItemCallback : public virtual CefBase {
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void Cancel() =0;
|
||||
|
||||
///
|
||||
// Call to pause the download.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void Pause() =0;
|
||||
|
||||
///
|
||||
// Call to resume the download.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void Resume() =0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -208,6 +208,15 @@ class CefDownloadItemCallbackImpl : public CefDownloadItemCallback {
|
||||
base::Bind(&CefDownloadItemCallbackImpl::DoCancel, this));
|
||||
}
|
||||
|
||||
void Pause() override {
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::Bind(&CefDownloadItemCallbackImpl::DoPause, this));
|
||||
}
|
||||
|
||||
void Resume() override {
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::Bind(&CefDownloadItemCallbackImpl::DoResume, this));
|
||||
}
|
||||
private:
|
||||
void DoCancel() {
|
||||
if (download_id_ <= 0)
|
||||
@ -222,6 +231,28 @@ class CefDownloadItemCallbackImpl : public CefDownloadItemCallback {
|
||||
download_id_ = 0;
|
||||
}
|
||||
|
||||
void DoPause() {
|
||||
if (download_id_ <= 0)
|
||||
return;
|
||||
|
||||
if (manager_) {
|
||||
DownloadItem* item = manager_->GetDownload(download_id_);
|
||||
if (item && item->GetState() == content::DownloadItem::IN_PROGRESS)
|
||||
item->Pause();
|
||||
}
|
||||
}
|
||||
|
||||
void DoResume() {
|
||||
if (download_id_ <= 0)
|
||||
return;
|
||||
|
||||
if (manager_) {
|
||||
DownloadItem* item = manager_->GetDownload(download_id_);
|
||||
if (item && item->CanResume())
|
||||
item->Resume();
|
||||
}
|
||||
}
|
||||
|
||||
base::WeakPtr<DownloadManager> manager_;
|
||||
uint32 download_id_;
|
||||
|
||||
|
@ -27,6 +27,30 @@ void CEF_CALLBACK download_item_callback_cancel(
|
||||
CefDownloadItemCallbackCppToC::Get(self)->Cancel();
|
||||
}
|
||||
|
||||
void CEF_CALLBACK download_item_callback_pause(
|
||||
struct _cef_download_item_callback_t* self) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
|
||||
// Execute
|
||||
CefDownloadItemCallbackCppToC::Get(self)->Pause();
|
||||
}
|
||||
|
||||
void CEF_CALLBACK download_item_callback_resume(
|
||||
struct _cef_download_item_callback_t* self) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
DCHECK(self);
|
||||
if (!self)
|
||||
return;
|
||||
|
||||
// Execute
|
||||
CefDownloadItemCallbackCppToC::Get(self)->Resume();
|
||||
}
|
||||
|
||||
|
||||
// CONSTRUCTOR - Do not edit by hand.
|
||||
|
||||
@ -35,6 +59,8 @@ CefDownloadItemCallbackCppToC::CefDownloadItemCallbackCppToC(
|
||||
: CefCppToC<CefDownloadItemCallbackCppToC, CefDownloadItemCallback,
|
||||
cef_download_item_callback_t>(cls) {
|
||||
struct_.struct_.cancel = download_item_callback_cancel;
|
||||
struct_.struct_.pause = download_item_callback_pause;
|
||||
struct_.struct_.resume = download_item_callback_resume;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
@ -25,6 +25,26 @@ void CefDownloadItemCallbackCToCpp::Cancel() {
|
||||
struct_->cancel(struct_);
|
||||
}
|
||||
|
||||
void CefDownloadItemCallbackCToCpp::Pause() {
|
||||
if (CEF_MEMBER_MISSING(struct_, pause))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Execute
|
||||
struct_->pause(struct_);
|
||||
}
|
||||
|
||||
void CefDownloadItemCallbackCToCpp::Resume() {
|
||||
if (CEF_MEMBER_MISSING(struct_, resume))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Execute
|
||||
struct_->resume(struct_);
|
||||
}
|
||||
|
||||
|
||||
#ifndef NDEBUG
|
||||
template<> base::AtomicRefCount CefCToCpp<CefDownloadItemCallbackCToCpp,
|
||||
|
@ -34,6 +34,8 @@ class CefDownloadItemCallbackCToCpp
|
||||
|
||||
// CefDownloadItemCallback methods
|
||||
virtual void Cancel() OVERRIDE;
|
||||
virtual void Pause() OVERRIDE;
|
||||
virtual void Resume() OVERRIDE;
|
||||
};
|
||||
|
||||
#endif // USING_CEF_SHARED
|
||||
|
Loading…
x
Reference in New Issue
Block a user