| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // This file contains an implementation of the ResourceLoaderBridge class. | 5 // This file contains an implementation of the ResourceLoaderBridge class. |
| 6 // The class is implemented using net::URLRequest, meaning it is a "simple" | 6 // The class is implemented using net::URLRequest, meaning it is a "simple" |
| 7 // version that directly issues requests. The more complicated one used in the | 7 // version that directly issues requests. The more complicated one used in the |
| 8 // browser uses IPC. | 8 // browser uses IPC. |
| 9 // | 9 // |
| 10 // Because net::URLRequest only provides an asynchronous resource loading API, | 10 // Because net::URLRequest only provides an asynchronous resource loading API, |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 &has_new_first_party_for_cookies, | 243 &has_new_first_party_for_cookies, |
| 244 &new_first_party_for_cookies)) { | 244 &new_first_party_for_cookies)) { |
| 245 g_io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( | 245 g_io_thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
| 246 this, &RequestProxy::AsyncFollowDeferredRedirect, | 246 this, &RequestProxy::AsyncFollowDeferredRedirect, |
| 247 has_new_first_party_for_cookies, new_first_party_for_cookies)); | 247 has_new_first_party_for_cookies, new_first_party_for_cookies)); |
| 248 } else { | 248 } else { |
| 249 Cancel(); | 249 Cancel(); |
| 250 } | 250 } |
| 251 } | 251 } |
| 252 | 252 |
| 253 void NotifyReceivedResponse(const ResourceResponseInfo& info, | 253 void NotifyReceivedResponse(const ResourceResponseInfo& info) { |
| 254 bool content_filtered) { | |
| 255 if (peer_) | 254 if (peer_) |
| 256 peer_->OnReceivedResponse(info, content_filtered); | 255 peer_->OnReceivedResponse(info); |
| 257 } | 256 } |
| 258 | 257 |
| 259 void NotifyReceivedData(int bytes_read) { | 258 void NotifyReceivedData(int bytes_read) { |
| 260 if (!peer_) | 259 if (!peer_) |
| 261 return; | 260 return; |
| 262 | 261 |
| 263 // Make a local copy of buf_, since AsyncReadData reuses it. | 262 // Make a local copy of buf_, since AsyncReadData reuses it. |
| 264 scoped_array<char> buf_copy(new char[bytes_read]); | 263 scoped_array<char> buf_copy(new char[bytes_read]); |
| 265 memcpy(buf_copy.get(), buf_->data(), bytes_read); | 264 memcpy(buf_copy.get(), buf_->data(), bytes_read); |
| 266 | 265 |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 virtual void OnReceivedRedirect( | 394 virtual void OnReceivedRedirect( |
| 396 const GURL& new_url, | 395 const GURL& new_url, |
| 397 const ResourceResponseInfo& info, | 396 const ResourceResponseInfo& info, |
| 398 bool* defer_redirect) { | 397 bool* defer_redirect) { |
| 399 *defer_redirect = true; // See AsyncFollowDeferredRedirect | 398 *defer_redirect = true; // See AsyncFollowDeferredRedirect |
| 400 owner_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 399 owner_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
| 401 this, &RequestProxy::NotifyReceivedRedirect, new_url, info)); | 400 this, &RequestProxy::NotifyReceivedRedirect, new_url, info)); |
| 402 } | 401 } |
| 403 | 402 |
| 404 virtual void OnReceivedResponse( | 403 virtual void OnReceivedResponse( |
| 405 const ResourceResponseInfo& info, | 404 const ResourceResponseInfo& info) { |
| 406 bool content_filtered) { | |
| 407 owner_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 405 owner_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
| 408 this, &RequestProxy::NotifyReceivedResponse, info, content_filtered)); | 406 this, &RequestProxy::NotifyReceivedResponse, info)); |
| 409 } | 407 } |
| 410 | 408 |
| 411 virtual void OnReceivedData(int bytes_read) { | 409 virtual void OnReceivedData(int bytes_read) { |
| 412 if (download_to_file_) { | 410 if (download_to_file_) { |
| 413 file_stream_.Write(buf_->data(), bytes_read, NULL); | 411 file_stream_.Write(buf_->data(), bytes_read, NULL); |
| 414 owner_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 412 owner_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
| 415 this, &RequestProxy::NotifyDownloadedData, bytes_read)); | 413 this, &RequestProxy::NotifyDownloadedData, bytes_read)); |
| 416 return; | 414 return; |
| 417 } | 415 } |
| 418 | 416 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 442 DCHECK(request->status().is_success()); | 440 DCHECK(request->status().is_success()); |
| 443 ResourceResponseInfo info; | 441 ResourceResponseInfo info; |
| 444 PopulateResponseInfo(request, &info); | 442 PopulateResponseInfo(request, &info); |
| 445 OnReceivedRedirect(new_url, info, defer_redirect); | 443 OnReceivedRedirect(new_url, info, defer_redirect); |
| 446 } | 444 } |
| 447 | 445 |
| 448 virtual void OnResponseStarted(net::URLRequest* request) { | 446 virtual void OnResponseStarted(net::URLRequest* request) { |
| 449 if (request->status().is_success()) { | 447 if (request->status().is_success()) { |
| 450 ResourceResponseInfo info; | 448 ResourceResponseInfo info; |
| 451 PopulateResponseInfo(request, &info); | 449 PopulateResponseInfo(request, &info); |
| 452 OnReceivedResponse(info, false); | 450 OnReceivedResponse(info); |
| 453 AsyncReadData(); // start reading | 451 AsyncReadData(); // start reading |
| 454 } else { | 452 } else { |
| 455 Done(); | 453 Done(); |
| 456 } | 454 } |
| 457 } | 455 } |
| 458 | 456 |
| 459 virtual void OnSSLCertificateError(net::URLRequest* request, | 457 virtual void OnSSLCertificateError(net::URLRequest* request, |
| 460 int cert_error, | 458 int cert_error, |
| 461 net::X509Certificate* cert) { | 459 net::X509Certificate* cert) { |
| 462 // Allow all certificate errors. | 460 // Allow all certificate errors. |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 // doing so requires API changes at all levels. Similar code exists in | 585 // doing so requires API changes at all levels. Similar code exists in |
| 588 // WebCore/platform/network/cf/ResourceHandleCFNet.cpp :-( | 586 // WebCore/platform/network/cf/ResourceHandleCFNet.cpp :-( |
| 589 if (new_url.GetOrigin() != result_->url.GetOrigin()) { | 587 if (new_url.GetOrigin() != result_->url.GetOrigin()) { |
| 590 DLOG(WARNING) << "Cross origin redirect denied"; | 588 DLOG(WARNING) << "Cross origin redirect denied"; |
| 591 Cancel(); | 589 Cancel(); |
| 592 return; | 590 return; |
| 593 } | 591 } |
| 594 result_->url = new_url; | 592 result_->url = new_url; |
| 595 } | 593 } |
| 596 | 594 |
| 597 virtual void OnReceivedResponse( | 595 virtual void OnReceivedResponse(const ResourceResponseInfo& info) { |
| 598 const ResourceResponseInfo& info, | |
| 599 bool content_filtered) { | |
| 600 *static_cast<ResourceResponseInfo*>(result_) = info; | 596 *static_cast<ResourceResponseInfo*>(result_) = info; |
| 601 } | 597 } |
| 602 | 598 |
| 603 virtual void OnReceivedData(int bytes_read) { | 599 virtual void OnReceivedData(int bytes_read) { |
| 604 if (download_to_file_) | 600 if (download_to_file_) |
| 605 file_stream_.Write(buf_->data(), bytes_read, NULL); | 601 file_stream_.Write(buf_->data(), bytes_read, NULL); |
| 606 else | 602 else |
| 607 result_->data.append(buf_->data(), bytes_read); | 603 result_->data.append(buf_->data(), bytes_read); |
| 608 AsyncReadData(); // read more (may recurse) | 604 AsyncReadData(); // read more (may recurse) |
| 609 } | 605 } |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 919 | 915 |
| 920 // static | 916 // static |
| 921 scoped_refptr<base::MessageLoopProxy> | 917 scoped_refptr<base::MessageLoopProxy> |
| 922 SimpleResourceLoaderBridge::GetIoThread() { | 918 SimpleResourceLoaderBridge::GetIoThread() { |
| 923 if (!EnsureIOThread()) { | 919 if (!EnsureIOThread()) { |
| 924 LOG(DFATAL) << "Failed to create IO thread."; | 920 LOG(DFATAL) << "Failed to create IO thread."; |
| 925 return NULL; | 921 return NULL; |
| 926 } | 922 } |
| 927 return g_io_thread->message_loop_proxy(); | 923 return g_io_thread->message_loop_proxy(); |
| 928 } | 924 } |
| OLD | NEW |