| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "net/url_request/url_request_http_job.h" | 5 #include "net/url_request/url_request_http_job.h" | 
| 6 | 6 | 
| 7 #include "base/base_switches.h" | 7 #include "base/base_switches.h" | 
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" | 
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" | 
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 33 #include "net/url_request/url_request_context.h" | 33 #include "net/url_request/url_request_context.h" | 
| 34 #include "net/url_request/url_request_error_job.h" | 34 #include "net/url_request/url_request_error_job.h" | 
| 35 #include "net/url_request/url_request_redirect_job.h" | 35 #include "net/url_request/url_request_redirect_job.h" | 
| 36 #include "net/url_request/url_request_throttler_header_adapter.h" | 36 #include "net/url_request/url_request_throttler_header_adapter.h" | 
| 37 #include "net/url_request/url_request_throttler_manager.h" | 37 #include "net/url_request/url_request_throttler_manager.h" | 
| 38 | 38 | 
| 39 static const char kAvailDictionaryHeader[] = "Avail-Dictionary"; | 39 static const char kAvailDictionaryHeader[] = "Avail-Dictionary"; | 
| 40 | 40 | 
| 41 // TODO(darin): make sure the port blocking code is not lost | 41 // TODO(darin): make sure the port blocking code is not lost | 
| 42 // static | 42 // static | 
| 43 URLRequestJob* URLRequestHttpJob::Factory(net::URLRequest* request, | 43 net::URLRequestJob* URLRequestHttpJob::Factory(net::URLRequest* request, | 
| 44                                           const std::string& scheme) { | 44                                                const std::string& scheme) { | 
| 45   DCHECK(scheme == "http" || scheme == "https"); | 45   DCHECK(scheme == "http" || scheme == "https"); | 
| 46 | 46 | 
| 47   int port = request->url().IntPort(); | 47   int port = request->url().IntPort(); | 
| 48   if (!net::IsPortAllowedByDefault(port) && !net::IsPortAllowedByOverride(port)) | 48   if (!net::IsPortAllowedByDefault(port) && !net::IsPortAllowedByOverride(port)) | 
| 49     return new URLRequestErrorJob(request, net::ERR_UNSAFE_PORT); | 49     return new URLRequestErrorJob(request, net::ERR_UNSAFE_PORT); | 
| 50 | 50 | 
| 51   if (!request->context() || | 51   if (!request->context() || | 
| 52       !request->context()->http_transaction_factory()) { | 52       !request->context()->http_transaction_factory()) { | 
| 53     NOTREACHED() << "requires a valid context"; | 53     NOTREACHED() << "requires a valid context"; | 
| 54     return new URLRequestErrorJob(request, net::ERR_INVALID_ARGUMENT); | 54     return new URLRequestErrorJob(request, net::ERR_INVALID_ARGUMENT); | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 71       return new URLRequestRedirectJob(request, new_location); | 71       return new URLRequestRedirectJob(request, new_location); | 
| 72     } else { | 72     } else { | 
| 73       // TODO(agl): implement opportunistic HTTPS upgrade. | 73       // TODO(agl): implement opportunistic HTTPS upgrade. | 
| 74     } | 74     } | 
| 75   } | 75   } | 
| 76 | 76 | 
| 77   return new URLRequestHttpJob(request); | 77   return new URLRequestHttpJob(request); | 
| 78 } | 78 } | 
| 79 | 79 | 
| 80 URLRequestHttpJob::URLRequestHttpJob(net::URLRequest* request) | 80 URLRequestHttpJob::URLRequestHttpJob(net::URLRequest* request) | 
| 81     : URLRequestJob(request), | 81     : net::URLRequestJob(request), | 
| 82       response_info_(NULL), | 82       response_info_(NULL), | 
| 83       response_cookies_save_index_(0), | 83       response_cookies_save_index_(0), | 
| 84       proxy_auth_state_(net::AUTH_STATE_DONT_NEED_AUTH), | 84       proxy_auth_state_(net::AUTH_STATE_DONT_NEED_AUTH), | 
| 85       server_auth_state_(net::AUTH_STATE_DONT_NEED_AUTH), | 85       server_auth_state_(net::AUTH_STATE_DONT_NEED_AUTH), | 
| 86       ALLOW_THIS_IN_INITIALIZER_LIST(can_get_cookies_callback_( | 86       ALLOW_THIS_IN_INITIALIZER_LIST(can_get_cookies_callback_( | 
| 87           this, &URLRequestHttpJob::OnCanGetCookiesCompleted)), | 87           this, &URLRequestHttpJob::OnCanGetCookiesCompleted)), | 
| 88       ALLOW_THIS_IN_INITIALIZER_LIST(can_set_cookie_callback_( | 88       ALLOW_THIS_IN_INITIALIZER_LIST(can_set_cookie_callback_( | 
| 89           this, &URLRequestHttpJob::OnCanSetCookieCompleted)), | 89           this, &URLRequestHttpJob::OnCanSetCookieCompleted)), | 
| 90       ALLOW_THIS_IN_INITIALIZER_LIST(start_callback_( | 90       ALLOW_THIS_IN_INITIALIZER_LIST(start_callback_( | 
| 91           this, &URLRequestHttpJob::OnStartCompleted)), | 91           this, &URLRequestHttpJob::OnStartCompleted)), | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 161 | 161 | 
| 162   AddExtraHeaders(); | 162   AddExtraHeaders(); | 
| 163   AddCookieHeaderAndStart(); | 163   AddCookieHeaderAndStart(); | 
| 164 } | 164 } | 
| 165 | 165 | 
| 166 void URLRequestHttpJob::Kill() { | 166 void URLRequestHttpJob::Kill() { | 
| 167   if (!transaction_.get()) | 167   if (!transaction_.get()) | 
| 168     return; | 168     return; | 
| 169 | 169 | 
| 170   DestroyTransaction(); | 170   DestroyTransaction(); | 
| 171   URLRequestJob::Kill(); | 171   net::URLRequestJob::Kill(); | 
| 172 } | 172 } | 
| 173 | 173 | 
| 174 net::LoadState URLRequestHttpJob::GetLoadState() const { | 174 net::LoadState URLRequestHttpJob::GetLoadState() const { | 
| 175   return transaction_.get() ? | 175   return transaction_.get() ? | 
| 176       transaction_->GetLoadState() : net::LOAD_STATE_IDLE; | 176       transaction_->GetLoadState() : net::LOAD_STATE_IDLE; | 
| 177 } | 177 } | 
| 178 | 178 | 
| 179 uint64 URLRequestHttpJob::GetUploadProgress() const { | 179 uint64 URLRequestHttpJob::GetUploadProgress() const { | 
| 180   return transaction_.get() ? transaction_->GetUploadProgress() : 0; | 180   return transaction_.get() ? transaction_->GetUploadProgress() : 0; | 
| 181 } | 181 } | 
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 615 | 615 | 
| 616   // The HTTP transaction may be restarted several times for the purposes | 616   // The HTTP transaction may be restarted several times for the purposes | 
| 617   // of sending authorization information. Each time it restarts, we get | 617   // of sending authorization information. Each time it restarts, we get | 
| 618   // notified of the headers completion so that we can update the cookie store. | 618   // notified of the headers completion so that we can update the cookie store. | 
| 619   if (transaction_->IsReadyToRestartForAuth()) { | 619   if (transaction_->IsReadyToRestartForAuth()) { | 
| 620     DCHECK(!response_info_->auth_challenge.get()); | 620     DCHECK(!response_info_->auth_challenge.get()); | 
| 621     RestartTransactionWithAuth(string16(), string16()); | 621     RestartTransactionWithAuth(string16(), string16()); | 
| 622     return; | 622     return; | 
| 623   } | 623   } | 
| 624 | 624 | 
| 625   URLRequestJob::NotifyHeadersComplete(); | 625   net::URLRequestJob::NotifyHeadersComplete(); | 
| 626 } | 626 } | 
| 627 | 627 | 
| 628 void URLRequestHttpJob::DestroyTransaction() { | 628 void URLRequestHttpJob::DestroyTransaction() { | 
| 629   DCHECK(transaction_.get()); | 629   DCHECK(transaction_.get()); | 
| 630 | 630 | 
| 631   transaction_.reset(); | 631   transaction_.reset(); | 
| 632   response_info_ = NULL; | 632   response_info_ = NULL; | 
| 633   context_ = NULL; | 633   context_ = NULL; | 
| 634 } | 634 } | 
| 635 | 635 | 
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 946     HTTPSProberDelegate* delegate = | 946     HTTPSProberDelegate* delegate = | 
| 947         new HTTPSProberDelegate(request_info_.url.host(), max_age, | 947         new HTTPSProberDelegate(request_info_.url.host(), max_age, | 
| 948                                 include_subdomains, | 948                                 include_subdomains, | 
| 949                                 ctx->transport_security_state()); | 949                                 ctx->transport_security_state()); | 
| 950     if (!prober->ProbeHost(request_info_.url.host(), request()->context(), | 950     if (!prober->ProbeHost(request_info_.url.host(), request()->context(), | 
| 951                            delegate)) { | 951                            delegate)) { | 
| 952       delete delegate; | 952       delete delegate; | 
| 953     } | 953     } | 
| 954   } | 954   } | 
| 955 } | 955 } | 
| OLD | NEW | 
|---|