Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(518)

Side by Side Diff: chrome/common/net/url_fetcher.cc

Issue 5384002: net: Remove typedef net::URLRequest URLRequest; (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chrome/common/net/url_fetcher.h" 5 #include "chrome/common/net/url_fetcher.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 13 matching lines...) Expand all
24 #include "net/url_request/url_request.h" 24 #include "net/url_request/url_request.h"
25 #include "net/url_request/url_request_context.h" 25 #include "net/url_request/url_request_context.h"
26 #include "net/url_request/url_request_throttler_manager.h" 26 #include "net/url_request/url_request_throttler_manager.h"
27 27
28 static const int kBufferSize = 4096; 28 static const int kBufferSize = 4096;
29 29
30 bool URLFetcher::g_interception_enabled = false; 30 bool URLFetcher::g_interception_enabled = false;
31 31
32 class URLFetcher::Core 32 class URLFetcher::Core
33 : public base::RefCountedThreadSafe<URLFetcher::Core>, 33 : public base::RefCountedThreadSafe<URLFetcher::Core>,
34 public URLRequest::Delegate { 34 public net::URLRequest::Delegate {
35 public: 35 public:
36 // For POST requests, set |content_type| to the MIME type of the content 36 // For POST requests, set |content_type| to the MIME type of the content
37 // and set |content| to the data to upload. |flags| are flags to apply to 37 // and set |content| to the data to upload. |flags| are flags to apply to
38 // the load operation--these should be one or more of the LOAD_* flags 38 // the load operation--these should be one or more of the LOAD_* flags
39 // defined in url_request.h. 39 // defined in url_request.h.
40 Core(URLFetcher* fetcher, 40 Core(URLFetcher* fetcher,
41 const GURL& original_url, 41 const GURL& original_url,
42 RequestType request_type, 42 RequestType request_type,
43 URLFetcher::Delegate* d); 43 URLFetcher::Delegate* d);
44 44
45 // Starts the load. It's important that this not happen in the constructor 45 // Starts the load. It's important that this not happen in the constructor
46 // because it causes the IO thread to begin AddRef()ing and Release()ing 46 // because it causes the IO thread to begin AddRef()ing and Release()ing
47 // us. If our caller hasn't had time to fully construct us and take a 47 // us. If our caller hasn't had time to fully construct us and take a
48 // reference, the IO thread could interrupt things, run a task, Release() 48 // reference, the IO thread could interrupt things, run a task, Release()
49 // us, and destroy us, leaving the caller with an already-destroyed object 49 // us, and destroy us, leaving the caller with an already-destroyed object
50 // when construction finishes. 50 // when construction finishes.
51 void Start(); 51 void Start();
52 52
53 // Stops any in-progress load and ensures no callback will happen. It is 53 // Stops any in-progress load and ensures no callback will happen. It is
54 // safe to call this multiple times. 54 // safe to call this multiple times.
55 void Stop(); 55 void Stop();
56 56
57 // Reports that the received content was malformed. 57 // Reports that the received content was malformed.
58 void ReceivedContentWasMalformed(); 58 void ReceivedContentWasMalformed();
59 59
60 // URLRequest::Delegate implementation. 60 // Overridden from net::URLRequest::Delegate:
61 virtual void OnResponseStarted(URLRequest* request); 61 virtual void OnResponseStarted(net::URLRequest* request);
62 virtual void OnReadCompleted(URLRequest* request, int bytes_read); 62 virtual void OnReadCompleted(net::URLRequest* request, int bytes_read);
63 63
64 URLFetcher::Delegate* delegate() const { return delegate_; } 64 URLFetcher::Delegate* delegate() const { return delegate_; }
65 65
66 static void CancelAll(); 66 static void CancelAll();
67 67
68 private: 68 private:
69 friend class base::RefCountedThreadSafe<URLFetcher::Core>; 69 friend class base::RefCountedThreadSafe<URLFetcher::Core>;
70 70
71 class Registry { 71 class Registry {
72 public: 72 public:
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 GURL original_url_; // The URL we were asked to fetch 106 GURL original_url_; // The URL we were asked to fetch
107 GURL url_; // The URL we eventually wound up at 107 GURL url_; // The URL we eventually wound up at
108 RequestType request_type_; // What type of request is this? 108 RequestType request_type_; // What type of request is this?
109 URLFetcher::Delegate* delegate_; // Object to notify on completion 109 URLFetcher::Delegate* delegate_; // Object to notify on completion
110 scoped_refptr<base::MessageLoopProxy> delegate_loop_proxy_; 110 scoped_refptr<base::MessageLoopProxy> delegate_loop_proxy_;
111 // Message loop proxy of the creating 111 // Message loop proxy of the creating
112 // thread. 112 // thread.
113 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; 113 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_;
114 // The message loop proxy for the thread 114 // The message loop proxy for the thread
115 // on which the request IO happens. 115 // on which the request IO happens.
116 scoped_ptr<URLRequest> request_; // The actual request this wraps 116 scoped_ptr<net::URLRequest> request_; // The actual request this wraps
117 int load_flags_; // Flags for the load operation 117 int load_flags_; // Flags for the load operation
118 int response_code_; // HTTP status code for the request 118 int response_code_; // HTTP status code for the request
119 std::string data_; // Results of the request 119 std::string data_; // Results of the request
120 scoped_refptr<net::IOBuffer> buffer_; 120 scoped_refptr<net::IOBuffer> buffer_;
121 // Read buffer 121 // Read buffer
122 scoped_refptr<URLRequestContextGetter> request_context_getter_; 122 scoped_refptr<URLRequestContextGetter> request_context_getter_;
123 // Cookie/cache info for the request 123 // Cookie/cache info for the request
124 ResponseCookies cookies_; // Response cookies 124 ResponseCookies cookies_; // Response cookies
125 net::HttpRequestHeaders extra_request_headers_; 125 net::HttpRequestHeaders extra_request_headers_;
126 scoped_refptr<net::HttpResponseHeaders> response_headers_; 126 scoped_refptr<net::HttpResponseHeaders> response_headers_;
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 if (io_message_loop_proxy_.get()) { 257 if (io_message_loop_proxy_.get()) {
258 io_message_loop_proxy_->PostTask( 258 io_message_loop_proxy_->PostTask(
259 FROM_HERE, NewRunnableMethod(this, &Core::NotifyMalformedContent)); 259 FROM_HERE, NewRunnableMethod(this, &Core::NotifyMalformedContent));
260 } 260 }
261 } 261 }
262 262
263 void URLFetcher::Core::CancelAll() { 263 void URLFetcher::Core::CancelAll() {
264 g_registry.Get().CancelAll(); 264 g_registry.Get().CancelAll();
265 } 265 }
266 266
267 void URLFetcher::Core::OnResponseStarted(URLRequest* request) { 267 void URLFetcher::Core::OnResponseStarted(net::URLRequest* request) {
268 DCHECK_EQ(request, request_.get()); 268 DCHECK_EQ(request, request_.get());
269 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); 269 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
270 if (request_->status().is_success()) { 270 if (request_->status().is_success()) {
271 response_code_ = request_->GetResponseCode(); 271 response_code_ = request_->GetResponseCode();
272 response_headers_ = request_->response_headers(); 272 response_headers_ = request_->response_headers();
273 } 273 }
274 274
275 int bytes_read = 0; 275 int bytes_read = 0;
276 // Some servers may treat HEAD requests as GET requests. To free up the 276 // Some servers may treat HEAD requests as GET requests. To free up the
277 // network connection as soon as possible, signal that the request has 277 // network connection as soon as possible, signal that the request has
278 // completed immediately, without trying to read any data back (all we care 278 // completed immediately, without trying to read any data back (all we care
279 // about is the response code and headers, which we already have). 279 // about is the response code and headers, which we already have).
280 if (request_->status().is_success() && (request_type_ != HEAD)) 280 if (request_->status().is_success() && (request_type_ != HEAD))
281 request_->Read(buffer_, kBufferSize, &bytes_read); 281 request_->Read(buffer_, kBufferSize, &bytes_read);
282 OnReadCompleted(request_.get(), bytes_read); 282 OnReadCompleted(request_.get(), bytes_read);
283 } 283 }
284 284
285 void URLFetcher::Core::OnReadCompleted(URLRequest* request, int bytes_read) { 285 void URLFetcher::Core::OnReadCompleted(net::URLRequest* request,
286 int bytes_read) {
286 DCHECK(request == request_); 287 DCHECK(request == request_);
287 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread()); 288 DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
288 289
289 url_ = request->url(); 290 url_ = request->url();
290 url_throttler_entry_ = 291 url_throttler_entry_ =
291 net::URLRequestThrottlerManager::GetInstance()->RegisterRequestUrl(url_); 292 net::URLRequestThrottlerManager::GetInstance()->RegisterRequestUrl(url_);
292 293
293 do { 294 do {
294 if (!request_->status().is_success() || bytes_read <= 0) 295 if (!request_->status().is_success() || bytes_read <= 0)
295 break; 296 break;
(...skipping 25 matching lines...) Expand all
321 if (was_cancelled_) { 322 if (was_cancelled_) {
322 // Since StartURLRequest() is posted as a *delayed* task, it may 323 // Since StartURLRequest() is posted as a *delayed* task, it may
323 // run after the URLFetcher was already stopped. 324 // run after the URLFetcher was already stopped.
324 return; 325 return;
325 } 326 }
326 327
327 CHECK(request_context_getter_); 328 CHECK(request_context_getter_);
328 DCHECK(!request_.get()); 329 DCHECK(!request_.get());
329 330
330 g_registry.Get().AddURLFetcherCore(this); 331 g_registry.Get().AddURLFetcherCore(this);
331 request_.reset(new URLRequest(original_url_, this)); 332 request_.reset(new net::URLRequest(original_url_, this));
332 int flags = request_->load_flags() | load_flags_; 333 int flags = request_->load_flags() | load_flags_;
333 if (!g_interception_enabled) { 334 if (!g_interception_enabled) {
334 flags = flags | net::LOAD_DISABLE_INTERCEPT; 335 flags = flags | net::LOAD_DISABLE_INTERCEPT;
335 } 336 }
336 request_->set_load_flags(flags); 337 request_->set_load_flags(flags);
337 request_->set_context(request_context_getter_->GetURLRequestContext()); 338 request_->set_context(request_context_getter_->GetURLRequestContext());
338 339
339 switch (request_type_) { 340 switch (request_type_) {
340 case GET: 341 case GET:
341 break; 342 break;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 } 517 }
517 518
518 // static 519 // static
519 void URLFetcher::CancelAll() { 520 void URLFetcher::CancelAll() {
520 Core::CancelAll(); 521 Core::CancelAll();
521 } 522 }
522 523
523 URLFetcher::Delegate* URLFetcher::delegate() const { 524 URLFetcher::Delegate* URLFetcher::delegate() const {
524 return core_->delegate(); 525 return core_->delegate();
525 } 526 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698