mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-10 00:50:38 +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.
|
// Call to cancel the download.
|
||||||
///
|
///
|
||||||
void (CEF_CALLBACK *cancel)(struct _cef_download_item_callback_t* self);
|
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;
|
} cef_download_item_callback_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,6 +71,18 @@ class CefDownloadItemCallback : public virtual CefBase {
|
|||||||
///
|
///
|
||||||
/*--cef()--*/
|
/*--cef()--*/
|
||||||
virtual void Cancel() =0;
|
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));
|
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:
|
private:
|
||||||
void DoCancel() {
|
void DoCancel() {
|
||||||
if (download_id_ <= 0)
|
if (download_id_ <= 0)
|
||||||
@ -222,6 +231,28 @@ class CefDownloadItemCallbackImpl : public CefDownloadItemCallback {
|
|||||||
download_id_ = 0;
|
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_;
|
base::WeakPtr<DownloadManager> manager_;
|
||||||
uint32 download_id_;
|
uint32 download_id_;
|
||||||
|
|
||||||
|
@ -27,6 +27,30 @@ void CEF_CALLBACK download_item_callback_cancel(
|
|||||||
CefDownloadItemCallbackCppToC::Get(self)->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.
|
// CONSTRUCTOR - Do not edit by hand.
|
||||||
|
|
||||||
@ -35,6 +59,8 @@ CefDownloadItemCallbackCppToC::CefDownloadItemCallbackCppToC(
|
|||||||
: CefCppToC<CefDownloadItemCallbackCppToC, CefDownloadItemCallback,
|
: CefCppToC<CefDownloadItemCallbackCppToC, CefDownloadItemCallback,
|
||||||
cef_download_item_callback_t>(cls) {
|
cef_download_item_callback_t>(cls) {
|
||||||
struct_.struct_.cancel = download_item_callback_cancel;
|
struct_.struct_.cancel = download_item_callback_cancel;
|
||||||
|
struct_.struct_.pause = download_item_callback_pause;
|
||||||
|
struct_.struct_.resume = download_item_callback_resume;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
|
@ -25,6 +25,26 @@ void CefDownloadItemCallbackCToCpp::Cancel() {
|
|||||||
struct_->cancel(struct_);
|
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
|
#ifndef NDEBUG
|
||||||
template<> base::AtomicRefCount CefCToCpp<CefDownloadItemCallbackCToCpp,
|
template<> base::AtomicRefCount CefCToCpp<CefDownloadItemCallbackCToCpp,
|
||||||
|
@ -34,6 +34,8 @@ class CefDownloadItemCallbackCToCpp
|
|||||||
|
|
||||||
// CefDownloadItemCallback methods
|
// CefDownloadItemCallback methods
|
||||||
virtual void Cancel() OVERRIDE;
|
virtual void Cancel() OVERRIDE;
|
||||||
|
virtual void Pause() OVERRIDE;
|
||||||
|
virtual void Resume() OVERRIDE;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // USING_CEF_SHARED
|
#endif // USING_CEF_SHARED
|
||||||
|
Loading…
x
Reference in New Issue
Block a user