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 |