Index: content/browser/frame_host/navigation_handle_impl_unittest.cc |
diff --git a/content/browser/frame_host/navigation_handle_impl_unittest.cc b/content/browser/frame_host/navigation_handle_impl_unittest.cc |
index ee999cb31b06a0f9fcfb7c50ab0f75e92fe0ef67..950ee993b6e3bafc9ab8dc7735deef29bf01dabd 100644 |
--- a/content/browser/frame_host/navigation_handle_impl_unittest.cc |
+++ b/content/browser/frame_host/navigation_handle_impl_unittest.cc |
@@ -9,9 +9,10 @@ |
namespace content { |
-// Test version of a NavigationThrottle. It will always return the same |
+// Test version of a NavigationThrottle. It will always return the current |
// NavigationThrottle::ThrottleCheckResult |result_|, It also monitors the |
-// number of times WillStartRequest and WillRedirectRequest were called. |
+// number of times WillStartRequest, WillRedirectRequest, and |
+// WillProcessResponse were called. |
class TestNavigationThrottle : public NavigationThrottle { |
public: |
TestNavigationThrottle(NavigationHandle* handle, |
@@ -19,7 +20,8 @@ class TestNavigationThrottle : public NavigationThrottle { |
: NavigationThrottle(handle), |
result_(result), |
will_start_calls_(0), |
- will_redirect_calls_(0) {} |
+ will_redirect_calls_(0), |
+ will_process_response_calls_(0) {} |
~TestNavigationThrottle() override {} |
@@ -33,16 +35,25 @@ class TestNavigationThrottle : public NavigationThrottle { |
return result_; |
} |
+ NavigationThrottle::ThrottleCheckResult WillProcessResponse() override { |
+ ++will_process_response_calls_; |
+ return result_; |
+ } |
+ |
int will_start_calls() const { return will_start_calls_; } |
int will_redirect_calls() const { return will_redirect_calls_; } |
+ int will_process_response_calls() const { |
+ return will_process_response_calls_; |
+ } |
private: |
// The result returned by the TestNavigationThrottle. |
NavigationThrottle::ThrottleCheckResult result_; |
- // The number of times WillStartRequest and WillRedirectRequest were called. |
+ // The number of times each handler was called. |
int will_start_calls_; |
int will_redirect_calls_; |
+ int will_process_response_calls_; |
}; |
class NavigationHandleImplTest : public RenderViewHostImplTestHarness { |
@@ -72,6 +83,10 @@ class NavigationHandleImplTest : public RenderViewHostImplTestHarness { |
return test_handle_->state() == NavigationHandleImpl::DEFERRING_REDIRECT; |
} |
+ bool IsDeferringResponse() { |
+ return test_handle_->state() == NavigationHandleImpl::DEFERRING_RESPONSE; |
+ } |
+ |
bool IsCanceling() { |
return test_handle_->state() == NavigationHandleImpl::CANCELING; |
} |
@@ -108,6 +123,24 @@ class NavigationHandleImplTest : public RenderViewHostImplTestHarness { |
base::Unretained(this))); |
} |
+ // Helper function to call WillProcessResponse on |handle|. If this function |
+ // returns DEFER, |callback_result_| will be set to the actual result of the |
+ // throttle checks when they are finished. |
+ // TODO(clamy): this should also simulate that WillStartRequest was called if |
+ // it has not been called before. |
+ void SimulateWillProcessResponse() { |
+ was_callback_called_ = false; |
+ callback_result_ = NavigationThrottle::DEFER; |
+ |
+ // It's safe to use base::Unretained since the NavigationHandle is owned by |
+ // the NavigationHandleImplTest. |
+ test_handle_->WillProcessResponse( |
+ main_test_rfh(), |
+ scoped_refptr<net::HttpResponseHeaders>(), |
+ base::Bind(&NavigationHandleImplTest::UpdateThrottleCheckResult, |
+ base::Unretained(this))); |
+ } |
+ |
// Returns the handle used in tests. |
NavigationHandleImpl* test_handle() const { return test_handle_.get(); } |
@@ -150,46 +183,80 @@ TEST_F(NavigationHandleImplTest, ResumeDeferred) { |
CreateTestNavigationThrottle(NavigationThrottle::DEFER); |
EXPECT_FALSE(IsDeferringStart()); |
EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_FALSE(IsDeferringResponse()); |
EXPECT_EQ(0, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Simulate WillStartRequest. The request should be deferred. The callback |
// should not have been called. |
SimulateWillStartRequest(); |
EXPECT_TRUE(IsDeferringStart()); |
EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_FALSE(IsDeferringResponse()); |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Resume the request. It should no longer be deferred and the callback |
// should have been called. |
test_handle()->Resume(); |
EXPECT_FALSE(IsDeferringStart()); |
EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_FALSE(IsDeferringResponse()); |
EXPECT_TRUE(was_callback_called()); |
EXPECT_EQ(NavigationThrottle::PROCEED, callback_result()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Simulate WillRedirectRequest. The request should be deferred. The callback |
// should not have been called. |
SimulateWillRedirectRequest(); |
EXPECT_FALSE(IsDeferringStart()); |
EXPECT_TRUE(IsDeferringRedirect()); |
+ EXPECT_FALSE(IsDeferringResponse()); |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(1, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Resume the request. It should no longer be deferred and the callback |
// should have been called. |
test_handle()->Resume(); |
EXPECT_FALSE(IsDeferringStart()); |
EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_FALSE(IsDeferringResponse()); |
EXPECT_TRUE(was_callback_called()); |
EXPECT_EQ(NavigationThrottle::PROCEED, callback_result()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(1, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
+ |
+ // Simulate WillProcessResponse. It will be deferred. The callback should not |
+ // have been called. |
+ SimulateWillProcessResponse(); |
+ EXPECT_FALSE(IsDeferringStart()); |
+ EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_TRUE(IsDeferringResponse()); |
+ EXPECT_FALSE(was_callback_called()); |
+ EXPECT_EQ(1, test_throttle->will_start_calls()); |
+ EXPECT_EQ(1, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(1, test_throttle->will_process_response_calls()); |
+ |
+ // Resume the request. It should no longer be deferred and the callback should |
+ // have been called. |
+ test_handle()->Resume(); |
+ EXPECT_FALSE(IsDeferringStart()); |
+ EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_FALSE(IsDeferringResponse()); |
+ EXPECT_TRUE(was_callback_called()); |
+ EXPECT_EQ(NavigationThrottle::PROCEED, callback_result()); |
+ EXPECT_EQ(1, test_throttle->will_start_calls()); |
+ EXPECT_EQ(1, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(1, test_throttle->will_process_response_calls()); |
+ EXPECT_TRUE(test_handle()->GetRenderFrameHost()); |
} |
// Checks that a navigation deferred during WillStartRequest can be properly |
@@ -201,6 +268,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredWillStart) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Simulate WillStartRequest. The request should be deferred. The callback |
// should not have been called. |
@@ -210,6 +278,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredWillStart) { |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Cancel the request. The callback should have been called. |
test_handle()->CancelDeferredNavigation( |
@@ -221,6 +290,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredWillStart) { |
EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
} |
// Checks that a navigation deferred during WillRedirectRequest can be properly |
@@ -232,6 +302,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredWillRedirect) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Simulate WillRedirectRequest. The request should be deferred. The callback |
// should not have been called. |
@@ -241,6 +312,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredWillRedirect) { |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(0, test_throttle->will_start_calls()); |
EXPECT_EQ(1, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Cancel the request. The callback should have been called. |
test_handle()->CancelDeferredNavigation( |
@@ -252,6 +324,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredWillRedirect) { |
EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
EXPECT_EQ(0, test_throttle->will_start_calls()); |
EXPECT_EQ(1, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
} |
// Checks that a navigation deferred can be canceled and not ignored. |
@@ -262,6 +335,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredNoIgnore) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Simulate WillRedirectRequest. The request should be deferred. The callback |
// should not have been called. |
@@ -271,6 +345,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredNoIgnore) { |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
// Cancel the request. The callback should have been called with CANCEL, and |
// not CANCEL_AND_IGNORE. |
@@ -282,6 +357,7 @@ TEST_F(NavigationHandleImplTest, CancelDeferredNoIgnore) { |
EXPECT_EQ(NavigationThrottle::CANCEL, callback_result()); |
EXPECT_EQ(1, test_throttle->will_start_calls()); |
EXPECT_EQ(0, test_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, test_throttle->will_process_response_calls()); |
} |
// Checks that a NavigationThrottle asking to defer followed by a |
@@ -295,8 +371,10 @@ TEST_F(NavigationHandleImplTest, DeferThenProceed) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, defer_throttle->will_start_calls()); |
EXPECT_EQ(0, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); |
// Simulate WillStartRequest. The request should be deferred. The callback |
// should not have been called. The second throttle should not have been |
@@ -307,6 +385,7 @@ TEST_F(NavigationHandleImplTest, DeferThenProceed) { |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(1, defer_throttle->will_start_calls()); |
EXPECT_EQ(0, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
@@ -319,6 +398,7 @@ TEST_F(NavigationHandleImplTest, DeferThenProceed) { |
EXPECT_EQ(NavigationThrottle::PROCEED, callback_result()); |
EXPECT_EQ(1, defer_throttle->will_start_calls()); |
EXPECT_EQ(0, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(1, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
@@ -331,6 +411,7 @@ TEST_F(NavigationHandleImplTest, DeferThenProceed) { |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(1, defer_throttle->will_start_calls()); |
EXPECT_EQ(1, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(1, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
@@ -343,6 +424,7 @@ TEST_F(NavigationHandleImplTest, DeferThenProceed) { |
EXPECT_EQ(NavigationThrottle::PROCEED, callback_result()); |
EXPECT_EQ(1, defer_throttle->will_start_calls()); |
EXPECT_EQ(1, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(1, proceed_throttle->will_start_calls()); |
EXPECT_EQ(1, proceed_throttle->will_redirect_calls()); |
} |
@@ -358,6 +440,7 @@ TEST_F(NavigationHandleImplTest, DeferThenCancelWillStartRequest) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, defer_throttle->will_start_calls()); |
EXPECT_EQ(0, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
@@ -370,6 +453,7 @@ TEST_F(NavigationHandleImplTest, DeferThenCancelWillStartRequest) { |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(1, defer_throttle->will_start_calls()); |
EXPECT_EQ(0, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
@@ -383,6 +467,7 @@ TEST_F(NavigationHandleImplTest, DeferThenCancelWillStartRequest) { |
EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
EXPECT_EQ(1, defer_throttle->will_start_calls()); |
EXPECT_EQ(0, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(1, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
} |
@@ -398,6 +483,7 @@ TEST_F(NavigationHandleImplTest, DeferThenCancelWillRedirectRequest) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, defer_throttle->will_start_calls()); |
EXPECT_EQ(0, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
@@ -410,6 +496,7 @@ TEST_F(NavigationHandleImplTest, DeferThenCancelWillRedirectRequest) { |
EXPECT_FALSE(was_callback_called()); |
EXPECT_EQ(0, defer_throttle->will_start_calls()); |
EXPECT_EQ(1, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
@@ -423,6 +510,7 @@ TEST_F(NavigationHandleImplTest, DeferThenCancelWillRedirectRequest) { |
EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
EXPECT_EQ(0, defer_throttle->will_start_calls()); |
EXPECT_EQ(1, defer_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, defer_throttle->will_process_response_calls()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(1, cancel_throttle->will_redirect_calls()); |
} |
@@ -440,6 +528,7 @@ TEST_F(NavigationHandleImplTest, CancelThenProceedWillStartRequest) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_process_response_calls()); |
EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
@@ -453,6 +542,7 @@ TEST_F(NavigationHandleImplTest, CancelThenProceedWillStartRequest) { |
EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
EXPECT_EQ(1, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_process_response_calls()); |
EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
} |
@@ -470,6 +560,7 @@ TEST_F(NavigationHandleImplTest, CancelThenProceedWillRedirectRequest) { |
EXPECT_FALSE(IsDeferringRedirect()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_process_response_calls()); |
EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
@@ -483,8 +574,74 @@ TEST_F(NavigationHandleImplTest, CancelThenProceedWillRedirectRequest) { |
EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
EXPECT_EQ(1, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_process_response_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
+} |
+ |
+// Checks that a NavigationThrottle asking to proceed followed by a |
+// NavigationThrottle asking to cancel behave correctly in WillProcessResponse. |
+// Both throttles will be called, and the request will be cancelled. |
+TEST_F(NavigationHandleImplTest, ProceedThenCancelWillProcessResponse) { |
+ TestNavigationThrottle* proceed_throttle = |
+ CreateTestNavigationThrottle(NavigationThrottle::PROCEED); |
+ TestNavigationThrottle* cancel_throttle = |
+ CreateTestNavigationThrottle(NavigationThrottle::CANCEL_AND_IGNORE); |
+ EXPECT_FALSE(IsDeferringStart()); |
+ EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_process_response_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); |
+ |
+ // Simulate WillRedirectRequest. The request should not be deferred. The |
+ // callback should have been called. |
+ SimulateWillProcessResponse(); |
+ EXPECT_FALSE(IsDeferringStart()); |
+ EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_TRUE(was_callback_called()); |
+ EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
+ EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(1, cancel_throttle->will_process_response_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
+ EXPECT_EQ(1, proceed_throttle->will_process_response_calls()); |
+} |
+ |
+// Checks that a NavigationThrottle asking to cancel followed by a |
+// NavigationThrottle asking to proceed behave correctly in WillProcessResponse. |
+// The navigation will be canceled directly, and the second throttle will not |
+// be called. |
+TEST_F(NavigationHandleImplTest, CancelThenProceedWillProcessResponse) { |
+ TestNavigationThrottle* cancel_throttle = |
+ CreateTestNavigationThrottle(NavigationThrottle::CANCEL_AND_IGNORE); |
+ TestNavigationThrottle* proceed_throttle = |
+ CreateTestNavigationThrottle(NavigationThrottle::PROCEED); |
+ EXPECT_FALSE(IsDeferringStart()); |
+ EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_process_response_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
+ |
+ // Simulate WillRedirectRequest. The request should not be deferred. The |
+ // callback should have been called. The second throttle should not have |
+ // been notified. |
+ SimulateWillProcessResponse(); |
+ EXPECT_FALSE(IsDeferringStart()); |
+ EXPECT_FALSE(IsDeferringRedirect()); |
+ EXPECT_TRUE(was_callback_called()); |
+ EXPECT_EQ(NavigationThrottle::CANCEL_AND_IGNORE, callback_result()); |
+ EXPECT_EQ(0, cancel_throttle->will_start_calls()); |
+ EXPECT_EQ(0, cancel_throttle->will_redirect_calls()); |
+ EXPECT_EQ(1, cancel_throttle->will_process_response_calls()); |
EXPECT_EQ(0, proceed_throttle->will_start_calls()); |
EXPECT_EQ(0, proceed_throttle->will_redirect_calls()); |
+ EXPECT_EQ(0, proceed_throttle->will_process_response_calls()); |
} |
} // namespace content |