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

Side by Side Diff: net/url_request/url_request_unittest.cc

Issue 398903002: Plumb redirect info out of net, through content, and into child processes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add a TODO Created 6 years, 5 months 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) 2012 The Chromium Authors. All rights reserved. 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 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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <shlobj.h> 9 #include <shlobj.h>
10 #endif 10 #endif
(...skipping 4060 matching lines...) Expand 10 before | Expand all | Expand 10 after
4071 set_cancel_in_received_redirect(true); 4071 set_cancel_in_received_redirect(true);
4072 else if (cancel_stage == CANCEL_ON_RESPONSE_STARTED) 4072 else if (cancel_stage == CANCEL_ON_RESPONSE_STARTED)
4073 set_cancel_in_response_started(true); 4073 set_cancel_in_response_started(true);
4074 else if (cancel_stage == CANCEL_ON_READ_COMPLETED) 4074 else if (cancel_stage == CANCEL_ON_READ_COMPLETED)
4075 set_cancel_in_received_data(true); 4075 set_cancel_in_received_data(true);
4076 } 4076 }
4077 virtual ~AsyncLoggingUrlRequestDelegate() {} 4077 virtual ~AsyncLoggingUrlRequestDelegate() {}
4078 4078
4079 // URLRequest::Delegate implementation: 4079 // URLRequest::Delegate implementation:
4080 void virtual OnReceivedRedirect(URLRequest* request, 4080 void virtual OnReceivedRedirect(URLRequest* request,
4081 const GURL& new_url, 4081 const RedirectInfo& redirect_info,
4082 bool* defer_redirect) OVERRIDE { 4082 bool* defer_redirect) OVERRIDE {
4083 *defer_redirect = true; 4083 *defer_redirect = true;
4084 AsyncDelegateLogger::Run( 4084 AsyncDelegateLogger::Run(
4085 request, 4085 request,
4086 LOAD_STATE_WAITING_FOR_DELEGATE, 4086 LOAD_STATE_WAITING_FOR_DELEGATE,
4087 LOAD_STATE_WAITING_FOR_DELEGATE, 4087 LOAD_STATE_WAITING_FOR_DELEGATE,
4088 LOAD_STATE_WAITING_FOR_DELEGATE, 4088 LOAD_STATE_WAITING_FOR_DELEGATE,
4089 base::Bind( 4089 base::Bind(
4090 &AsyncLoggingUrlRequestDelegate::OnReceivedRedirectLoggingComplete, 4090 &AsyncLoggingUrlRequestDelegate::OnReceivedRedirectLoggingComplete,
4091 base::Unretained(this), request, new_url)); 4091 base::Unretained(this), request, redirect_info));
4092 } 4092 }
4093 4093
4094 virtual void OnResponseStarted(URLRequest* request) OVERRIDE { 4094 virtual void OnResponseStarted(URLRequest* request) OVERRIDE {
4095 AsyncDelegateLogger::Run( 4095 AsyncDelegateLogger::Run(
4096 request, 4096 request,
4097 LOAD_STATE_WAITING_FOR_DELEGATE, 4097 LOAD_STATE_WAITING_FOR_DELEGATE,
4098 LOAD_STATE_WAITING_FOR_DELEGATE, 4098 LOAD_STATE_WAITING_FOR_DELEGATE,
4099 LOAD_STATE_WAITING_FOR_DELEGATE, 4099 LOAD_STATE_WAITING_FOR_DELEGATE,
4100 base::Bind( 4100 base::Bind(
4101 &AsyncLoggingUrlRequestDelegate::OnResponseStartedLoggingComplete, 4101 &AsyncLoggingUrlRequestDelegate::OnResponseStartedLoggingComplete,
4102 base::Unretained(this), request)); 4102 base::Unretained(this), request));
4103 } 4103 }
4104 4104
4105 virtual void OnReadCompleted(URLRequest* request, 4105 virtual void OnReadCompleted(URLRequest* request,
4106 int bytes_read) OVERRIDE { 4106 int bytes_read) OVERRIDE {
4107 AsyncDelegateLogger::Run( 4107 AsyncDelegateLogger::Run(
4108 request, 4108 request,
4109 LOAD_STATE_IDLE, 4109 LOAD_STATE_IDLE,
4110 LOAD_STATE_IDLE, 4110 LOAD_STATE_IDLE,
4111 LOAD_STATE_IDLE, 4111 LOAD_STATE_IDLE,
4112 base::Bind( 4112 base::Bind(
4113 &AsyncLoggingUrlRequestDelegate::AfterReadCompletedLoggingComplete, 4113 &AsyncLoggingUrlRequestDelegate::AfterReadCompletedLoggingComplete,
4114 base::Unretained(this), request, bytes_read)); 4114 base::Unretained(this), request, bytes_read));
4115 } 4115 }
4116 4116
4117 private: 4117 private:
4118 void OnReceivedRedirectLoggingComplete(URLRequest* request, 4118 void OnReceivedRedirectLoggingComplete(URLRequest* request,
4119 const GURL& new_url) { 4119 const RedirectInfo& redirect_info) {
4120 bool defer_redirect = false; 4120 bool defer_redirect = false;
4121 TestDelegate::OnReceivedRedirect(request, new_url, &defer_redirect); 4121 TestDelegate::OnReceivedRedirect(request, redirect_info, &defer_redirect);
4122 // FollowDeferredRedirect should not be called after cancellation. 4122 // FollowDeferredRedirect should not be called after cancellation.
4123 if (cancel_stage_ == CANCEL_ON_RECEIVED_REDIRECT) 4123 if (cancel_stage_ == CANCEL_ON_RECEIVED_REDIRECT)
4124 return; 4124 return;
4125 if (!defer_redirect) 4125 if (!defer_redirect)
4126 request->FollowDeferredRedirect(); 4126 request->FollowDeferredRedirect();
4127 } 4127 }
4128 4128
4129 void OnResponseStartedLoggingComplete(URLRequest* request) { 4129 void OnResponseStartedLoggingComplete(URLRequest* request) {
4130 // The parent class continues the request. 4130 // The parent class continues the request.
4131 TestDelegate::OnResponseStarted(request); 4131 TestDelegate::OnResponseStarted(request);
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
4570 } 4570 }
4571 } 4571 }
4572 4572
4573 namespace { 4573 namespace {
4574 4574
4575 const char kExtraHeader[] = "Allow-Snafu"; 4575 const char kExtraHeader[] = "Allow-Snafu";
4576 const char kExtraValue[] = "fubar"; 4576 const char kExtraValue[] = "fubar";
4577 4577
4578 class RedirectWithAdditionalHeadersDelegate : public TestDelegate { 4578 class RedirectWithAdditionalHeadersDelegate : public TestDelegate {
4579 virtual void OnReceivedRedirect(net::URLRequest* request, 4579 virtual void OnReceivedRedirect(net::URLRequest* request,
4580 const GURL& new_url, 4580 const RedirectInfo& redirect_info,
4581 bool* defer_redirect) OVERRIDE { 4581 bool* defer_redirect) OVERRIDE {
4582 TestDelegate::OnReceivedRedirect(request, new_url, defer_redirect); 4582 TestDelegate::OnReceivedRedirect(request, redirect_info, defer_redirect);
4583 request->SetExtraRequestHeaderByName(kExtraHeader, kExtraValue, false); 4583 request->SetExtraRequestHeaderByName(kExtraHeader, kExtraValue, false);
4584 } 4584 }
4585 }; 4585 };
4586 4586
4587 } // namespace 4587 } // namespace
4588 4588
4589 TEST_F(URLRequestTestHTTP, RedirectWithAdditionalHeadersTest) { 4589 TEST_F(URLRequestTestHTTP, RedirectWithAdditionalHeadersTest) {
4590 ASSERT_TRUE(test_server_.Start()); 4590 ASSERT_TRUE(test_server_.Start());
4591 4591
4592 GURL destination_url = test_server_.GetURL( 4592 GURL destination_url = test_server_.GetURL(
(...skipping 12 matching lines...) Expand all
4605 EXPECT_FALSE(req.is_pending()); 4605 EXPECT_FALSE(req.is_pending());
4606 EXPECT_FALSE(req.is_redirecting()); 4606 EXPECT_FALSE(req.is_redirecting());
4607 EXPECT_EQ(kExtraValue, d.data_received()); 4607 EXPECT_EQ(kExtraValue, d.data_received());
4608 } 4608 }
4609 4609
4610 namespace { 4610 namespace {
4611 4611
4612 const char kExtraHeaderToRemove[] = "To-Be-Removed"; 4612 const char kExtraHeaderToRemove[] = "To-Be-Removed";
4613 4613
4614 class RedirectWithHeaderRemovalDelegate : public TestDelegate { 4614 class RedirectWithHeaderRemovalDelegate : public TestDelegate {
4615 virtual void OnReceivedRedirect(net::URLRequest* request, 4615 virtual void OnReceivedRedirect(net::URLRequest* request,
mmenke 2014/07/17 16:55:09 While you're here, mind getting rid of these net::
davidben 2014/07/17 22:03:55 Done.
4616 const GURL& new_url, 4616 const RedirectInfo& redirect_info,
4617 bool* defer_redirect) OVERRIDE { 4617 bool* defer_redirect) OVERRIDE {
4618 TestDelegate::OnReceivedRedirect(request, new_url, defer_redirect); 4618 TestDelegate::OnReceivedRedirect(request, redirect_info, defer_redirect);
4619 request->RemoveRequestHeaderByName(kExtraHeaderToRemove); 4619 request->RemoveRequestHeaderByName(kExtraHeaderToRemove);
4620 } 4620 }
4621 }; 4621 };
4622 4622
4623 } // namespace 4623 } // namespace
4624 4624
4625 TEST_F(URLRequestTestHTTP, RedirectWithHeaderRemovalTest) { 4625 TEST_F(URLRequestTestHTTP, RedirectWithHeaderRemovalTest) {
4626 ASSERT_TRUE(test_server_.Start()); 4626 ASSERT_TRUE(test_server_.Start());
4627 4627
4628 GURL destination_url = test_server_.GetURL( 4628 GURL destination_url = test_server_.GetURL(
(...skipping 3478 matching lines...) Expand 10 before | Expand all | Expand 10 after
8107 8107
8108 EXPECT_FALSE(r.is_pending()); 8108 EXPECT_FALSE(r.is_pending());
8109 EXPECT_EQ(1, d->response_started_count()); 8109 EXPECT_EQ(1, d->response_started_count());
8110 EXPECT_FALSE(d->received_data_before_response()); 8110 EXPECT_FALSE(d->received_data_before_response());
8111 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); 8111 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size));
8112 } 8112 }
8113 } 8113 }
8114 #endif // !defined(DISABLE_FTP_SUPPORT) 8114 #endif // !defined(DISABLE_FTP_SUPPORT)
8115 8115
8116 } // namespace net 8116 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698