diff options
Diffstat (limited to 'embed/mozilla')
-rw-r--r-- | embed/mozilla/MozDownload.cpp | 25 | ||||
-rw-r--r-- | embed/mozilla/MozDownload.h | 1 | ||||
-rw-r--r-- | embed/mozilla/mozilla-download.cpp | 2 |
3 files changed, 22 insertions, 6 deletions
diff --git a/embed/mozilla/MozDownload.cpp b/embed/mozilla/MozDownload.cpp index 8e7df243c..2b9a9e4b6 100644 --- a/embed/mozilla/MozDownload.cpp +++ b/embed/mozilla/MozDownload.cpp @@ -308,6 +308,9 @@ MozDownload::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress) { + if (!mRequest) + mRequest = aRequest; + PRInt64 now = PR_Now (); if ((now - mLastUpdate < mInterval) && @@ -316,7 +319,7 @@ MozDownload::OnProgressChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest return NS_OK; mLastUpdate = now; - + if (mUserCanceled) { if (aRequest) @@ -368,21 +371,31 @@ MozDownload::OnSecurityChange (nsIWebProgress *aWebProgress, nsIRequest *aReques void MozDownload::Cancel() { - mUserCanceled = true; - /* nsWebBrowserPersist does the right thing: After canceling, next time through - OnStateChange(), aStatus != NS_OK. This isn't the case with nsExternalHelperAppService.*/ - if (!mWebPersist) - mStatus = NS_ERROR_ABORT; + mUserCanceled = true; + /* nsWebBrowserPersist does the right thing: After canceling, next time through + * OnStateChange(), aStatus != NS_OK. This isn't the case with nsExternalHelperAppService.*/ + if (!mWebPersist) + mStatus = NS_ERROR_ABORT; } void MozDownload::Pause() { + if (mRequest) + { + mRequest->Suspend (); + mDownloadState = EPHY_DOWNLOAD_PAUSED; + } } void MozDownload::Resume() { + if (mRequest) + { + mRequest->Resume (); + mDownloadState = EPHY_DOWNLOAD_DOWNLOADING; + } } nsresult InitiateMozillaDownload (nsIDOMDocument *domDocument, nsIURI *sourceURI, diff --git a/embed/mozilla/MozDownload.h b/embed/mozilla/MozDownload.h index 930e110b8..7f40bc327 100644 --- a/embed/mozilla/MozDownload.h +++ b/embed/mozilla/MozDownload.h @@ -122,6 +122,7 @@ protected: nsresult mStatus; nsCOMPtr<nsIWebBrowserPersist> mWebPersist; + nsCOMPtr<nsIRequest> mRequest; EphyDownload *mEphyDownload; DownloaderView *mDownloaderView; MozillaEmbedPersist *mEmbedPersist; diff --git a/embed/mozilla/mozilla-download.cpp b/embed/mozilla/mozilla-download.cpp index d970264fe..c5908dcfa 100644 --- a/embed/mozilla/mozilla-download.cpp +++ b/embed/mozilla/mozilla-download.cpp @@ -165,11 +165,13 @@ impl_cancel (EphyDownload *download) static void impl_pause (EphyDownload *download) { + MOZILLA_DOWNLOAD (download)->moz_download->Pause (); } static void impl_resume (EphyDownload *download) { + MOZILLA_DOWNLOAD (download)->moz_download->Resume (); } static void |