url_fetcher_impl.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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::SetUploadFilePath( 33 const std::string& upload_content_type, 34 const base::FilePath& file_path, 35 scoped_refptr<base::TaskRunner> file_task_runner) { 36 core_->SetUploadFilePath(upload_content_type, file_path, file_task_runner); 37} 38 39void URLFetcherImpl::SetChunkedUpload(const std::string& content_type) { 40 core_->SetChunkedUpload(content_type); 41} 42 43void URLFetcherImpl::AppendChunkToUpload(const std::string& data, 44 bool is_last_chunk) { 45 DCHECK(data.length()); 46 core_->AppendChunkToUpload(data, is_last_chunk); 47} 48 49void URLFetcherImpl::SetReferrer(const std::string& referrer) { 50 core_->SetReferrer(referrer); 51} 52 53void URLFetcherImpl::SetLoadFlags(int load_flags) { 54 core_->SetLoadFlags(load_flags); 55} 56 57int URLFetcherImpl::GetLoadFlags() const { 58 return core_->GetLoadFlags(); 59} 60 61void URLFetcherImpl::SetExtraRequestHeaders( 62 const std::string& extra_request_headers) { 63 core_->SetExtraRequestHeaders(extra_request_headers); 64} 65 66void URLFetcherImpl::AddExtraRequestHeader(const std::string& header_line) { 67 core_->AddExtraRequestHeader(header_line); 68} 69 70void URLFetcherImpl::GetExtraRequestHeaders( 71 HttpRequestHeaders* headers) const { 72 GetExtraRequestHeaders(headers); 73} 74 75void URLFetcherImpl::SetRequestContext( 76 URLRequestContextGetter* request_context_getter) { 77 core_->SetRequestContext(request_context_getter); 78} 79 80void URLFetcherImpl::SetFirstPartyForCookies( 81 const GURL& first_party_for_cookies) { 82 core_->SetFirstPartyForCookies(first_party_for_cookies); 83} 84 85void URLFetcherImpl::SetURLRequestUserData( 86 const void* key, 87 const CreateDataCallback& create_data_callback) { 88 core_->SetURLRequestUserData(key, create_data_callback); 89} 90 91void URLFetcherImpl::SetStopOnRedirect(bool stop_on_redirect) { 92 core_->SetStopOnRedirect(stop_on_redirect); 93} 94 95void URLFetcherImpl::SetAutomaticallyRetryOn5xx(bool retry) { 96 core_->SetAutomaticallyRetryOn5xx(retry); 97} 98 99void URLFetcherImpl::SetMaxRetriesOn5xx(int max_retries) { 100 core_->SetMaxRetriesOn5xx(max_retries); 101} 102 103int URLFetcherImpl::GetMaxRetriesOn5xx() const { 104 return core_->GetMaxRetriesOn5xx(); 105} 106 107 108base::TimeDelta URLFetcherImpl::GetBackoffDelay() const { 109 return core_->GetBackoffDelay(); 110} 111 112void URLFetcherImpl::SetAutomaticallyRetryOnNetworkChanges(int max_retries) { 113 core_->SetAutomaticallyRetryOnNetworkChanges(max_retries); 114} 115 116void URLFetcherImpl::SaveResponseToFileAtPath( 117 const base::FilePath& file_path, 118 scoped_refptr<base::TaskRunner> file_task_runner) { 119 core_->SaveResponseToFileAtPath(file_path, file_task_runner); 120} 121 122void URLFetcherImpl::SaveResponseToTemporaryFile( 123 scoped_refptr<base::TaskRunner> file_task_runner) { 124 core_->SaveResponseToTemporaryFile(file_task_runner); 125} 126 127HttpResponseHeaders* URLFetcherImpl::GetResponseHeaders() const { 128 return core_->GetResponseHeaders(); 129} 130 131HostPortPair URLFetcherImpl::GetSocketAddress() const { 132 return core_->GetSocketAddress(); 133} 134 135bool URLFetcherImpl::WasFetchedViaProxy() const { 136 return core_->WasFetchedViaProxy(); 137} 138 139void URLFetcherImpl::Start() { 140 core_->Start(); 141} 142 143const GURL& URLFetcherImpl::GetOriginalURL() const { 144 return core_->GetOriginalURL(); 145} 146 147const GURL& URLFetcherImpl::GetURL() const { 148 return core_->GetURL(); 149} 150 151const URLRequestStatus& URLFetcherImpl::GetStatus() const { 152 return core_->GetStatus(); 153} 154 155int URLFetcherImpl::GetResponseCode() const { 156 return core_->GetResponseCode(); 157} 158 159const ResponseCookies& URLFetcherImpl::GetCookies() const { 160 return core_->GetCookies(); 161} 162 163bool URLFetcherImpl::FileErrorOccurred(int* out_error_code) const { 164 return core_->FileErrorOccurred(out_error_code); 165} 166 167void URLFetcherImpl::ReceivedContentWasMalformed() { 168 core_->ReceivedContentWasMalformed(); 169} 170 171bool URLFetcherImpl::GetResponseAsString( 172 std::string* out_response_string) const { 173 return core_->GetResponseAsString(out_response_string); 174} 175 176bool URLFetcherImpl::GetResponseAsFilePath( 177 bool take_ownership, 178 base::FilePath* out_response_path) const { 179 return core_->GetResponseAsFilePath(take_ownership, out_response_path); 180} 181 182// static 183void URLFetcherImpl::CancelAll() { 184 URLFetcherCore::CancelAll(); 185} 186 187// static 188void URLFetcherImpl::SetEnableInterceptionForTests(bool enabled) { 189 URLFetcherCore::SetEnableInterceptionForTests(enabled); 190} 191 192// static 193void URLFetcherImpl::SetIgnoreCertificateRequests(bool ignored) { 194 URLFetcherCore::SetIgnoreCertificateRequests(ignored); 195} 196 197// static 198int URLFetcherImpl::GetNumFetcherCores() { 199 return URLFetcherCore::GetNumFetcherCores(); 200} 201 202URLFetcherDelegate* URLFetcherImpl::delegate() const { 203 return core_->delegate(); 204} 205 206// static 207URLFetcherFactory* URLFetcherImpl::factory() { 208 return g_factory; 209} 210 211// static 212void URLFetcherImpl::set_factory(URLFetcherFactory* factory) { 213 g_factory = factory; 214} 215 216} // namespace net 217