| Index: content/browser/net/url_request_slow_download_job.cc
|
| ===================================================================
|
| --- content/browser/net/url_request_slow_download_job.cc (revision 102135)
|
| +++ content/browser/net/url_request_slow_download_job.cc (working copy)
|
| @@ -10,11 +10,9 @@
|
| #include "base/string_util.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "net/base/io_buffer.h"
|
| -#include "net/base/net_errors.h"
|
| #include "net/http/http_response_headers.h"
|
| #include "net/url_request/url_request.h"
|
| #include "net/url_request/url_request_filter.h"
|
| -#include "net/url_request/url_request_status.h"
|
|
|
| const int kFirstDownloadSize = 1024 * 35;
|
| const int kSecondDownloadSize = 1024 * 10;
|
| @@ -25,19 +23,10 @@
|
| "http://url.handled.by.slow.download/download-known-size";
|
| const char URLRequestSlowDownloadJob::kFinishDownloadUrl[] =
|
| "http://url.handled.by.slow.download/download-finish";
|
| -const char URLRequestSlowDownloadJob::kErrorFinishDownloadUrl[] =
|
| - "http://url.handled.by.slow.download/download-error";
|
|
|
| std::vector<URLRequestSlowDownloadJob*>
|
| - URLRequestSlowDownloadJob::pending_requests_;
|
| + URLRequestSlowDownloadJob::kPendingRequests;
|
|
|
| -// Return whether this is the finish or error URL.
|
| -static bool IsCompletionUrl(const GURL& url) {
|
| - if (url.spec() == URLRequestSlowDownloadJob::kFinishDownloadUrl)
|
| - return true;
|
| - return (url.spec() == URLRequestSlowDownloadJob::kErrorFinishDownloadUrl);
|
| -}
|
| -
|
| void URLRequestSlowDownloadJob::Start() {
|
| MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| @@ -54,8 +43,6 @@
|
| &URLRequestSlowDownloadJob::Factory);
|
| filter->AddUrlHandler(GURL(kFinishDownloadUrl),
|
| &URLRequestSlowDownloadJob::Factory);
|
| - filter->AddUrlHandler(GURL(kErrorFinishDownloadUrl),
|
| - &URLRequestSlowDownloadJob::Factory);
|
| }
|
|
|
| /*static */
|
| @@ -63,23 +50,19 @@
|
| net::URLRequest* request,
|
| const std::string& scheme) {
|
| URLRequestSlowDownloadJob* job = new URLRequestSlowDownloadJob(request);
|
| - if (!IsCompletionUrl(request->url()))
|
| - URLRequestSlowDownloadJob::pending_requests_.push_back(job);
|
| + if (request->url().spec() != kFinishDownloadUrl)
|
| + URLRequestSlowDownloadJob::kPendingRequests.push_back(job);
|
| return job;
|
| }
|
|
|
| /* static */
|
| -void URLRequestSlowDownloadJob::FinishPendingRequests(bool error) {
|
| +void URLRequestSlowDownloadJob::FinishPendingRequests() {
|
| typedef std::vector<URLRequestSlowDownloadJob*> JobList;
|
| - for (JobList::iterator it = pending_requests_.begin(); it !=
|
| - pending_requests_.end(); ++it) {
|
| - if (error) {
|
| - (*it)->set_should_error_download();
|
| - } else {
|
| - (*it)->set_should_finish_download();
|
| - }
|
| + for (JobList::iterator it = kPendingRequests.begin(); it !=
|
| + kPendingRequests.end(); ++it) {
|
| + (*it)->set_should_finish_download();
|
| }
|
| - pending_requests_.clear();
|
| + kPendingRequests.clear();
|
| }
|
|
|
| URLRequestSlowDownloadJob::URLRequestSlowDownloadJob(net::URLRequest* request)
|
| @@ -87,21 +70,19 @@
|
| first_download_size_remaining_(kFirstDownloadSize),
|
| should_finish_download_(false),
|
| should_send_second_chunk_(false),
|
| - should_error_download_(false),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {}
|
|
|
| void URLRequestSlowDownloadJob::StartAsync() {
|
| - if (IsCompletionUrl(request_->url())) {
|
| - URLRequestSlowDownloadJob::FinishPendingRequests(
|
| - request_->url().spec() == kErrorFinishDownloadUrl);
|
| - }
|
| + if (LowerCaseEqualsASCII(kFinishDownloadUrl, request_->url().spec().c_str()))
|
| + URLRequestSlowDownloadJob::FinishPendingRequests();
|
|
|
| NotifyHeadersComplete();
|
| }
|
|
|
| bool URLRequestSlowDownloadJob::ReadRawData(net::IOBuffer* buf, int buf_size,
|
| int *bytes_read) {
|
| - if (IsCompletionUrl(request_->url())) {
|
| + if (LowerCaseEqualsASCII(kFinishDownloadUrl,
|
| + request_->url().spec().c_str())) {
|
| *bytes_read = 0;
|
| return true;
|
| }
|
| @@ -151,9 +132,6 @@
|
| should_send_second_chunk_ = true;
|
| SetStatus(net::URLRequestStatus());
|
| NotifyReadComplete(kSecondDownloadSize);
|
| - } else if (should_error_download_) {
|
| - NotifyDone(
|
| - net::URLRequestStatus(net::URLRequestStatus::FAILED, net::ERR_FAILED));
|
| } else {
|
| MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE,
|
| @@ -176,7 +154,8 @@
|
| net::HttpResponseInfo* info) const {
|
| // Send back mock headers.
|
| std::string raw_headers;
|
| - if (IsCompletionUrl(request_->url())) {
|
| + if (LowerCaseEqualsASCII(kFinishDownloadUrl,
|
| + request_->url().spec().c_str())) {
|
| raw_headers.append(
|
| "HTTP/1.1 200 OK\n"
|
| "Content-type: text/plain\n");
|
| @@ -186,7 +165,7 @@
|
| "Content-type: application/octet-stream\n"
|
| "Cache-Control: max-age=0\n");
|
|
|
| - if (request_->url().spec() == kKnownSizeUrl) {
|
| + if (LowerCaseEqualsASCII(kKnownSizeUrl, request_->url().spec().c_str())) {
|
| raw_headers.append(base::StringPrintf(
|
| "Content-Length: %d\n",
|
| kFirstDownloadSize + kSecondDownloadSize));
|
|
|