Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |