summaryrefslogtreecommitdiffstats
path: root/content/public
diff options
context:
space:
mode:
authorasanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-14 06:14:56 +0000
committerasanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-14 06:14:56 +0000
commit7f391888950e6517a9550783497ce9ce529b67da (patch)
tree2f0c6fe8e28fdc575151198c9dfae2cc277873db /content/public
parent66d4e0f30c56363cd5dca3b8d6a7c452e128d28f (diff)
downloadchromium_src-7f391888950e6517a9550783497ce9ce529b67da.zip
chromium_src-7f391888950e6517a9550783497ce9ce529b67da.tar.gz
chromium_src-7f391888950e6517a9550783497ce9ce529b67da.tar.bz2
[Download] Return DownloadInterruptReason from OnStartedCallback
DownloadUrlParameters::OnStartedCallback is invoked when the server response is received for a newly started download. If there's an error, this callback used to receive a net::Error indicating why. This CL changes the return value to a DownloadInterruptReason so that the callback can indicate error conditions that affect downloads that aren't considered errors at the network layer. Also, it avoids having to call DownloadManager::Start() when the response indicates that a download is not possible. Currently downloads that fail to start return a net::Error, but those that fail after starting return a DownloadInterruptReason. With this change, all downloads will return a DownloadInterruptReason regardless of when the download is interrupted. BUG=7648 Review URL: https://codereview.chromium.org/114193009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244657 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/public')
-rw-r--r--content/public/browser/download_interrupt_reason_values.h6
-rw-r--r--content/public/browser/download_interrupt_reasons.h2
-rw-r--r--content/public/browser/download_url_parameters.h9
-rw-r--r--content/public/browser/resource_dispatcher_host.h11
-rw-r--r--content/public/test/download_test_observer.cc6
-rw-r--r--content/public/test/download_test_observer.h13
6 files changed, 29 insertions, 18 deletions
diff --git a/content/public/browser/download_interrupt_reason_values.h b/content/public/browser/download_interrupt_reason_values.h
index fcfa74a..b05207a 100644
--- a/content/public/browser/download_interrupt_reason_values.h
+++ b/content/public/browser/download_interrupt_reason_values.h
@@ -70,6 +70,12 @@ INTERRUPT_REASON(NETWORK_DISCONNECTED, 22)
// "Server Down".
INTERRUPT_REASON(NETWORK_SERVER_DOWN, 23)
+// The network request was invalid. This may be due to the original URL or a
+// redirected URL:
+// - Having an unsupported scheme.
+// - Being an invalid URL.
+// - Being disallowed by policy.
+INTERRUPT_REASON(NETWORK_INVALID_REQUEST, 24)
// Server responses.
diff --git a/content/public/browser/download_interrupt_reasons.h b/content/public/browser/download_interrupt_reasons.h
index ebeef3a..78a81a0 100644
--- a/content/public/browser/download_interrupt_reasons.h
+++ b/content/public/browser/download_interrupt_reasons.h
@@ -21,7 +21,7 @@ enum DownloadInterruptReason {
#undef INTERRUPT_REASON
};
-std::string CONTENT_EXPORT InterruptReasonDebugString(
+std::string CONTENT_EXPORT DownloadInterruptReasonToString(
DownloadInterruptReason error);
} // namespace content
diff --git a/content/public/browser/download_url_parameters.h b/content/public/browser/download_url_parameters.h
index b48bc2a..72969361 100644
--- a/content/public/browser/download_url_parameters.h
+++ b/content/public/browser/download_url_parameters.h
@@ -10,9 +10,9 @@
#include "base/basictypes.h"
#include "base/callback.h"
+#include "content/public/browser/download_interrupt_reasons.h"
#include "content/public/browser/download_save_info.h"
#include "content/public/common/referrer.h"
-#include "net/base/net_errors.h"
#include "url/gurl.h"
namespace content {
@@ -39,7 +39,8 @@ class WebContents;
class CONTENT_EXPORT DownloadUrlParameters {
public:
// If there is an error, then |item| will be NULL.
- typedef base::Callback<void(DownloadItem*, net::Error)> OnStartedCallback;
+ typedef base::Callback<void(DownloadItem*, DownloadInterruptReason)>
+ OnStartedCallback;
typedef std::pair<std::string, std::string> RequestHeadersNameValuePair;
typedef std::vector<RequestHeadersNameValuePair> RequestHeadersType;
@@ -104,8 +105,8 @@ class CONTENT_EXPORT DownloadUrlParameters {
const OnStartedCallback& callback() const { return callback_; }
bool content_initiated() const { return content_initiated_; }
int load_flags() const { return load_flags_; }
- const std::string& last_modified() { return last_modified_; }
- const std::string& etag() { return etag_; }
+ const std::string& last_modified() const { return last_modified_; }
+ const std::string& etag() const { return etag_; }
const std::string& method() const { return method_; }
const std::string& post_body() const { return post_body_; }
int64 post_id() const { return post_id_; }
diff --git a/content/public/browser/resource_dispatcher_host.h b/content/public/browser/resource_dispatcher_host.h
index 0d4a624..7db278c 100644
--- a/content/public/browser/resource_dispatcher_host.h
+++ b/content/public/browser/resource_dispatcher_host.h
@@ -6,7 +6,8 @@
#define CONTENT_PUBLIC_BROWSER_RESOURCE_DISPATCHER_HOST_H_
#include "base/callback_forward.h"
-#include "net/base/net_errors.h"
+#include "base/memory/scoped_ptr.h"
+#include "content/public/browser/download_interrupt_reasons.h"
namespace net {
class URLRequest;
@@ -22,8 +23,8 @@ struct Referrer;
class CONTENT_EXPORT ResourceDispatcherHost {
public:
- typedef base::Callback<void(DownloadItem*, net::Error)>
- DownloadStartedCallback;
+ typedef base::Callback<void(DownloadItem*, DownloadInterruptReason)>
+ DownloadStartedCallback;
// Returns the singleton instance of the ResourceDispatcherHost.
static ResourceDispatcherHost* Get();
@@ -45,8 +46,8 @@ class CONTENT_EXPORT ResourceDispatcherHost {
// will be used. (Note that this will result in re-use of an existing
// download item if the download id was already assigned.) If the download
// is started, |started_callback| will be called on the UI thread with the
- // DownloadItem; otherwise an error code will be returned.
- virtual net::Error BeginDownload(
+ // DownloadItem; otherwise an interrupt reason will be returned.
+ virtual DownloadInterruptReason BeginDownload(
scoped_ptr<net::URLRequest> request,
const Referrer& referrer,
bool is_content_initiated,
diff --git a/content/public/test/download_test_observer.cc b/content/public/test/download_test_observer.cc
index adce290..8ce69b8 100644
--- a/content/public/test/download_test_observer.cc
+++ b/content/public/test/download_test_observer.cc
@@ -413,7 +413,7 @@ void DownloadTestFlushObserver::PingIOThread(int cycle) {
DownloadTestItemCreationObserver::DownloadTestItemCreationObserver()
: download_id_(DownloadItem::kInvalidId),
- error_(net::OK),
+ interrupt_reason_(DOWNLOAD_INTERRUPT_REASON_NONE),
called_back_count_(0),
waiting_(false) {
}
@@ -433,12 +433,12 @@ void DownloadTestItemCreationObserver::WaitForDownloadItemCreation() {
void DownloadTestItemCreationObserver::DownloadItemCreationCallback(
DownloadItem* item,
- net::Error error) {
+ DownloadInterruptReason interrupt_reason) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (item)
download_id_ = item->GetId();
- error_ = error;
+ interrupt_reason_ = interrupt_reason;
++called_back_count_;
DCHECK_EQ(1u, called_back_count_);
diff --git a/content/public/test/download_test_observer.h b/content/public/test/download_test_observer.h
index 15a055df..a06e994 100644
--- a/content/public/test/download_test_observer.h
+++ b/content/public/test/download_test_observer.h
@@ -11,10 +11,10 @@
#include "base/basictypes.h"
#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
+#include "content/public/browser/download_interrupt_reasons.h"
#include "content/public/browser/download_item.h"
#include "content/public/browser/download_manager.h"
#include "content/public/browser/download_url_parameters.h"
-#include "net/base/net_errors.h"
namespace content {
@@ -282,9 +282,11 @@ class DownloadTestItemCreationObserver
void WaitForDownloadItemCreation();
uint32 download_id() const { return download_id_; }
- net::Error error() const { return error_; }
+ DownloadInterruptReason interrupt_reason() const { return interrupt_reason_; }
bool started() const { return called_back_count_ > 0; }
- bool succeeded() const { return started() && (error_ == net::OK); }
+ bool succeeded() const {
+ return started() && interrupt_reason_ == DOWNLOAD_INTERRUPT_REASON_NONE;
+ }
const DownloadUrlParameters::OnStartedCallback callback();
@@ -293,11 +295,12 @@ class DownloadTestItemCreationObserver
~DownloadTestItemCreationObserver();
- void DownloadItemCreationCallback(DownloadItem* item, net::Error error);
+ void DownloadItemCreationCallback(DownloadItem* item,
+ DownloadInterruptReason interrupt_reason);
// The download creation information we received.
uint32 download_id_;
- net::Error error_;
+ DownloadInterruptReason interrupt_reason_;
// Count of callbacks.
size_t called_back_count_;