url_fetcher_impl.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "net/url_request/url_fetcher_impl.h" 6 7#include "base/bind.h" 8#include "base/message_loop_proxy.h" 9#include "net/url_request/url_fetcher_core.h" 10#include "net/url_request/url_fetcher_factory.h" 11 12namespace net { 13 14static URLFetcherFactory* g_factory = NULL; 15 16URLFetcherImpl::URLFetcherImpl(const GURL& url, 17 RequestType request_type, 18 URLFetcherDelegate* d) 19 : ALLOW_THIS_IN_INITIALIZER_LIST( 20 core_(new URLFetcherCore(this, url, request_type, d))) { 21} 22 23URLFetcherImpl::~URLFetcherImpl() { 24 core_->Stop(); 25} 26 27void URLFetcherImpl::SetUploadData(const std::string& upload_content_type, 28 const std::string& upload_content) { 29 core_->SetUploadData(upload_content_type, upload_content); 30} 31 32void URLFetcherImpl::SetChunkedUpload(const std::string& content_type) { 33 core_->SetChunkedUpload(content_type); 34} 35 36void URLFetcherImpl::AppendChunkToUpload(const std::string& data, 37 bool is_last_chunk) { 38 DCHECK(data.length()); 39 core_->AppendChunkToUpload(data, is_last_chunk); 40} 41 42void URLFetcherImpl::SetReferrer(const std::string& referrer) { 43 core_->SetReferrer(referrer); 44} 45 46void URLFetcherImpl::SetLoadFlags(int load_flags) { 47 core_->SetLoadFlags(load_flags); 48} 49 50int URLFetcherImpl::GetLoadFlags() const { 51 return core_->GetLoadFlags(); 52} 53 54void URLFetcherImpl::SetExtraRequestHeaders( 55 const std::string& extra_request_headers) { 56 core_->SetExtraRequestHeaders(extra_request_headers); 57} 58 59void URLFetcherImpl::AddExtraRequestHeader(const std::string& header_line) { 60 core_->AddExtraRequestHeader(header_line); 61} 62 63void URLFetcherImpl::GetExtraRequestHeaders( 64 HttpRequestHeaders* headers) const { 65 GetExtraRequestHeaders(headers); 66} 67 68void URLFetcherImpl::SetRequestContext( 69 URLRequestContextGetter* request_context_getter) { 70 core_->SetRequestContext(request_context_getter); 71} 72 73void URLFetcherImpl::SetFirstPartyForCookies( 74 const GURL& first_party_for_cookies) { 75 core_->SetFirstPartyForCookies(first_party_for_cookies); 76} 77 78void URLFetcherImpl::SetURLRequestUserData( 79 const void* key, 80 const CreateDataCallback& create_data_callback) { 81 core_->SetURLRequestUserData(key, create_data_callback); 82} 83 84void URLFetcherImpl::SetStopOnRedirect(bool stop_on_redirect) { 85 core_->SetStopOnRedirect(stop_on_redirect); 86} 87 88void URLFetcherImpl::SetAutomaticallyRetryOn5xx(bool retry) { 89 core_->SetAutomaticallyRetryOn5xx(retry); 90} 91 92void URLFetcherImpl::SetMaxRetries(int max_retries) { 93 core_->SetMaxRetries(max_retries); 94} 95 96int URLFetcherImpl::GetMaxRetries() const { 97 return core_->GetMaxRetries(); 98} 99 100 101base::TimeDelta URLFetcherImpl::GetBackoffDelay() const { 102 return core_->GetBackoffDelay(); 103} 104 105void URLFetcherImpl::SaveResponseToFileAtPath( 106 const FilePath& file_path, 107 scoped_refptr<base::TaskRunner> file_task_runner) { 108 core_->SaveResponseToFileAtPath(file_path, file_task_runner); 109} 110 111void URLFetcherImpl::SaveResponseToTemporaryFile( 112 scoped_refptr<base::TaskRunner> file_task_runner) { 113 core_->SaveResponseToTemporaryFile(file_task_runner); 114} 115 116HttpResponseHeaders* URLFetcherImpl::GetResponseHeaders() const { 117 return core_->GetResponseHeaders(); 118} 119 120HostPortPair URLFetcherImpl::GetSocketAddress() const { 121 return core_->GetSocketAddress(); 122} 123 124bool URLFetcherImpl::WasFetchedViaProxy() const { 125 return core_->WasFetchedViaProxy(); 126} 127 128void URLFetcherImpl::Start() { 129 core_->Start(); 130} 131 132const GURL& URLFetcherImpl::GetOriginalURL() const { 133 return core_->GetOriginalURL(); 134} 135 136const GURL& URLFetcherImpl::GetURL() const { 137 return core_->GetURL(); 138} 139 140const URLRequestStatus& URLFetcherImpl::GetStatus() const { 141 return core_->GetStatus(); 142} 143 144int URLFetcherImpl::GetResponseCode() const { 145 return core_->GetResponseCode(); 146} 147 148const ResponseCookies& URLFetcherImpl::GetCookies() const { 149 return core_->GetCookies(); 150} 151 152bool URLFetcherImpl::FileErrorOccurred( 153 base::PlatformFileError* out_error_code) const { 154 return core_->FileErrorOccurred(out_error_code); 155} 156 157void URLFetcherImpl::ReceivedContentWasMalformed() { 158 core_->ReceivedContentWasMalformed(); 159} 160 161bool URLFetcherImpl::GetResponseAsString( 162 std::string* out_response_string) const { 163 return core_->GetResponseAsString(out_response_string); 164} 165 166bool URLFetcherImpl::GetResponseAsFilePath( 167 bool take_ownership, 168 FilePath* out_response_path) const { 169 return core_->GetResponseAsFilePath(take_ownership, out_response_path); 170} 171 172// static 173void URLFetcherImpl::CancelAll() { 174 URLFetcherCore::CancelAll(); 175} 176 177// static 178void URLFetcherImpl::SetEnableInterceptionForTests(bool enabled) { 179 URLFetcherCore::SetEnableInterceptionForTests(enabled); 180} 181 182// static 183int URLFetcherImpl::GetNumFetcherCores() { 184 return URLFetcherCore::GetNumFetcherCores(); 185} 186 187URLFetcherDelegate* URLFetcherImpl::delegate() const { 188 return core_->delegate(); 189} 190 191// static 192URLFetcherFactory* URLFetcherImpl::factory() { 193 return g_factory; 194} 195 196// static 197void URLFetcherImpl::set_factory(URLFetcherFactory* factory) { 198 g_factory = factory; 199} 200 201} // namespace net 202