| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "base/macros.h" | 5 #include "base/macros.h" |
| 6 #include "content/browser/frame_host/navigation_handle_impl.h" | 6 #include "content/browser/frame_host/navigation_handle_impl.h" |
| 7 #include "content/public/browser/navigation_throttle.h" | 7 #include "content/public/browser/navigation_throttle.h" |
| 8 #include "content/public/common/request_context_type.h" |
| 8 #include "content/test/test_render_frame_host.h" | 9 #include "content/test/test_render_frame_host.h" |
| 9 | 10 |
| 10 namespace content { | 11 namespace content { |
| 11 | 12 |
| 12 // Test version of a NavigationThrottle. It will always return the current | 13 // Test version of a NavigationThrottle. It will always return the current |
| 13 // NavigationThrottle::ThrottleCheckResult |result_|, It also monitors the | 14 // NavigationThrottle::ThrottleCheckResult |result_|, It also monitors the |
| 14 // number of times WillStartRequest, WillRedirectRequest, and | 15 // number of times WillStartRequest, WillRedirectRequest, and |
| 15 // WillProcessResponse were called. | 16 // WillProcessResponse were called. |
| 16 class TestNavigationThrottle : public NavigationThrottle { | 17 class TestNavigationThrottle : public NavigationThrottle { |
| 17 public: | 18 public: |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 // returns DEFER, |callback_result_| will be set to the actual result of | 97 // returns DEFER, |callback_result_| will be set to the actual result of |
| 97 // the throttle checks when they are finished. | 98 // the throttle checks when they are finished. |
| 98 void SimulateWillStartRequest() { | 99 void SimulateWillStartRequest() { |
| 99 was_callback_called_ = false; | 100 was_callback_called_ = false; |
| 100 callback_result_ = NavigationThrottle::DEFER; | 101 callback_result_ = NavigationThrottle::DEFER; |
| 101 | 102 |
| 102 // It's safe to use base::Unretained since the NavigationHandle is owned by | 103 // It's safe to use base::Unretained since the NavigationHandle is owned by |
| 103 // the NavigationHandleImplTest. | 104 // the NavigationHandleImplTest. |
| 104 test_handle_->WillStartRequest( | 105 test_handle_->WillStartRequest( |
| 105 "GET", nullptr, Referrer(), false, ui::PAGE_TRANSITION_LINK, false, | 106 "GET", nullptr, Referrer(), false, ui::PAGE_TRANSITION_LINK, false, |
| 107 REQUEST_CONTEXT_TYPE_LOCATION, |
| 106 base::Bind(&NavigationHandleImplTest::UpdateThrottleCheckResult, | 108 base::Bind(&NavigationHandleImplTest::UpdateThrottleCheckResult, |
| 107 base::Unretained(this))); | 109 base::Unretained(this))); |
| 108 } | 110 } |
| 109 | 111 |
| 110 // Helper function to call WillRedirectRequest on |handle|. If this function | 112 // Helper function to call WillRedirectRequest on |handle|. If this function |
| 111 // returns DEFER, |callback_result_| will be set to the actual result of the | 113 // returns DEFER, |callback_result_| will be set to the actual result of the |
| 112 // throttle checks when they are finished. | 114 // throttle checks when they are finished. |
| 113 // TODO(clamy): this should also simulate that WillStartRequest was called if | 115 // TODO(clamy): this should also simulate that WillStartRequest was called if |
| 114 // it has not been called before. | 116 // it has not been called before. |
| 115 void SimulateWillRedirectRequest() { | 117 void SimulateWillRedirectRequest() { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 NavigationThrottle::ThrottleCheckResult result) { | 173 NavigationThrottle::ThrottleCheckResult result) { |
| 172 callback_result_ = result; | 174 callback_result_ = result; |
| 173 was_callback_called_ = true; | 175 was_callback_called_ = true; |
| 174 } | 176 } |
| 175 | 177 |
| 176 std::unique_ptr<NavigationHandleImpl> test_handle_; | 178 std::unique_ptr<NavigationHandleImpl> test_handle_; |
| 177 bool was_callback_called_; | 179 bool was_callback_called_; |
| 178 NavigationThrottle::ThrottleCheckResult callback_result_; | 180 NavigationThrottle::ThrottleCheckResult callback_result_; |
| 179 }; | 181 }; |
| 180 | 182 |
| 183 // Checks that the fetch_request_context_type is properly set. |
| 184 // Note: can be extended to cover more internal members. |
| 185 TEST_F(NavigationHandleImplTest, SimpleDataChecks) { |
| 186 EXPECT_EQ(REQUEST_CONTEXT_TYPE_UNSPECIFIED, |
| 187 test_handle()->fetch_request_context_type()); |
| 188 |
| 189 SimulateWillStartRequest(); |
| 190 EXPECT_EQ(REQUEST_CONTEXT_TYPE_LOCATION, |
| 191 test_handle()->fetch_request_context_type()); |
| 192 |
| 193 test_handle()->Resume(); |
| 194 SimulateWillRedirectRequest(); |
| 195 EXPECT_EQ(REQUEST_CONTEXT_TYPE_LOCATION, |
| 196 test_handle()->fetch_request_context_type()); |
| 197 |
| 198 test_handle()->Resume(); |
| 199 SimulateWillProcessResponse(); |
| 200 EXPECT_EQ(REQUEST_CONTEXT_TYPE_LOCATION, |
| 201 test_handle()->fetch_request_context_type()); |
| 202 } |
| 203 |
| 181 // Checks that a deferred navigation can be properly resumed. | 204 // Checks that a deferred navigation can be properly resumed. |
| 182 TEST_F(NavigationHandleImplTest, ResumeDeferred) { | 205 TEST_F(NavigationHandleImplTest, ResumeDeferred) { |
| 183 TestNavigationThrottle* test_throttle = | 206 TestNavigationThrottle* test_throttle = |
| 184 CreateTestNavigationThrottle(NavigationThrottle::DEFER); | 207 CreateTestNavigationThrottle(NavigationThrottle::DEFER); |
| 185 EXPECT_FALSE(IsDeferringStart()); | 208 EXPECT_FALSE(IsDeferringStart()); |
| 186 EXPECT_FALSE(IsDeferringRedirect()); | 209 EXPECT_FALSE(IsDeferringRedirect()); |
| 187 EXPECT_FALSE(IsDeferringResponse()); | 210 EXPECT_FALSE(IsDeferringResponse()); |
| 188 EXPECT_EQ(0, test_throttle->will_start_calls()); | 211 EXPECT_EQ(0, test_throttle->will_start_calls()); |
| 189 EXPECT_EQ(0, test_throttle->will_redirect_calls()); | 212 EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
| 190 EXPECT_EQ(0, test_throttle->will_process_response_calls()); | 213 EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); | 662 EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
| 640 EXPECT_EQ(0, cancel_throttle->will_start_calls()); | 663 EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
| 641 EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); | 664 EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
| 642 EXPECT_EQ(1, cancel_throttle->will_process_response_calls()); | 665 EXPECT_EQ(1, cancel_throttle->will_process_response_calls()); |
| 643 EXPECT_EQ(0, proceed_throttle->will_start_calls()); | 666 EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
| 644 EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); | 667 EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
| 645 EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); | 668 EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); |
| 646 } | 669 } |
| 647 | 670 |
| 648 } // namespace content | 671 } // namespace content |
| OLD | NEW |