Index: content/test/navigation_simulator_unittest.cc |
diff --git a/content/test/navigation_simulator_unittest.cc b/content/test/navigation_simulator_unittest.cc |
index 55a20c3b81acb1ed8f328a88861578b68a04ea88..56b602cf401009609b7bcc7142892adb5f6e963a 100644 |
--- a/content/test/navigation_simulator_unittest.cc |
+++ b/content/test/navigation_simulator_unittest.cc |
@@ -15,6 +15,7 @@ |
#include "content/public/browser/navigation_handle.h" |
#include "content/public/browser/navigation_throttle.h" |
#include "content/public/browser/web_contents_observer.h" |
+#include "content/public/test/cancelling_navigation_throttle.h" |
#include "content/test/test_render_frame_host.h" |
#include "content/test/test_render_view_host.h" |
#include "content/test/test_web_contents.h" |
@@ -23,97 +24,12 @@ |
namespace content { |
-enum CancelTime { |
- WILL_SEND_REQUEST, |
- WILL_REDIRECT_REQUEST, |
- WILL_PROCESS_RESPONSE, |
- NEVER, |
-}; |
- |
-enum ResultSynchrony { |
- SYNCHRONOUS, |
- ASYNCHRONOUS, |
-}; |
- |
-std::string CancelTimeToString(CancelTime cancel_time) { |
- switch (cancel_time) { |
- case WILL_SEND_REQUEST: |
- return "WILL_SEND_REQUEST"; |
- case WILL_REDIRECT_REQUEST: |
- return "WILL_REDIRECT_REQUEST"; |
- case WILL_PROCESS_RESPONSE: |
- return "WILL_PROCESS_RESPONSE"; |
- case NEVER: |
- return "NEVER"; |
- } |
- NOTREACHED(); |
- return ""; |
-} |
- |
-std::string ResultSynchronyToString(ResultSynchrony sync) { |
- return sync == SYNCHRONOUS ? "SYNCHRONOUS" : "ASYNCHRONOUS"; |
-} |
- |
-// TODO(csharrison): Expose this class in the content public API. |
-class CancellingNavigationThrottle : public NavigationThrottle { |
- public: |
- CancellingNavigationThrottle(NavigationHandle* handle, |
- CancelTime cancel_time, |
- ResultSynchrony sync) |
- : NavigationThrottle(handle), |
- cancel_time_(cancel_time), |
- sync_(sync), |
- weak_ptr_factory_(this) {} |
- |
- ~CancellingNavigationThrottle() override {} |
- |
- NavigationThrottle::ThrottleCheckResult WillStartRequest() override { |
- return ProcessState(cancel_time_ == WILL_SEND_REQUEST); |
- } |
- |
- NavigationThrottle::ThrottleCheckResult WillRedirectRequest() override { |
- return ProcessState(cancel_time_ == WILL_REDIRECT_REQUEST); |
- } |
- |
- NavigationThrottle::ThrottleCheckResult WillProcessResponse() override { |
- return ProcessState(cancel_time_ == WILL_PROCESS_RESPONSE); |
- } |
- |
- const char* GetNameForLogging() override { |
- return "CancellingNavigationThrottle"; |
- } |
- |
- NavigationThrottle::ThrottleCheckResult ProcessState(bool should_cancel) { |
- if (sync_ == ASYNCHRONOUS) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&CancellingNavigationThrottle::MaybeCancel, |
- weak_ptr_factory_.GetWeakPtr(), should_cancel)); |
- return NavigationThrottle::DEFER; |
- } |
- return should_cancel ? NavigationThrottle::CANCEL |
- : NavigationThrottle::PROCEED; |
- } |
- |
- void MaybeCancel(bool cancel) { |
- if (cancel) |
- navigation_handle()->CancelDeferredNavigation(NavigationThrottle::CANCEL); |
- else |
- navigation_handle()->Resume(); |
- } |
- |
- private: |
- const CancelTime cancel_time_; |
- const ResultSynchrony sync_; |
- base::WeakPtrFactory<CancellingNavigationThrottle> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CancellingNavigationThrottle); |
-}; |
- |
-class NavigationSimulatorTest : public RenderViewHostImplTestHarness, |
- public WebContentsObserver, |
- public testing::WithParamInterface< |
- std::tuple<CancelTime, ResultSynchrony>> { |
+class NavigationSimulatorTest |
+ : public RenderViewHostImplTestHarness, |
+ public WebContentsObserver, |
+ public testing::WithParamInterface< |
+ std::tuple<CancellingNavigationThrottle::CancelTime, |
+ CancellingNavigationThrottle::ResultSynchrony>> { |
public: |
NavigationSimulatorTest() {} |
~NavigationSimulatorTest() override {} |
@@ -142,8 +58,8 @@ class NavigationSimulatorTest : public RenderViewHostImplTestHarness, |
did_finish_navigation_ = true; |
} |
- CancelTime cancel_time_; |
- ResultSynchrony sync_; |
+ CancellingNavigationThrottle::CancelTime cancel_time_; |
+ CancellingNavigationThrottle::ResultSynchrony sync_; |
std::unique_ptr<NavigationSimulator> simulator_; |
bool did_finish_navigation_ = false; |
@@ -155,11 +71,10 @@ class NavigationSimulatorTest : public RenderViewHostImplTestHarness, |
// the navigation at various points in the flow, both synchronously and |
// asynchronously. |
TEST_P(NavigationSimulatorTest, Cancel) { |
- SCOPED_TRACE(::testing::Message() |
- << "CancelTime: " << CancelTimeToString(cancel_time_) |
- << " ResultSynchrony: " << ResultSynchronyToString(sync_)); |
+ SCOPED_TRACE(::testing::Message() << "CancelTime: " << cancel_time_ |
+ << " ResultSynchrony: " << sync_); |
simulator_->Start(); |
- if (cancel_time_ == WILL_SEND_REQUEST) { |
+ if (cancel_time_ == CancellingNavigationThrottle::WILL_START_REQUEST) { |
EXPECT_EQ(NavigationThrottle::CANCEL, |
simulator_->GetLastThrottleCheckResult()); |
return; |
@@ -167,7 +82,7 @@ TEST_P(NavigationSimulatorTest, Cancel) { |
EXPECT_EQ(NavigationThrottle::PROCEED, |
simulator_->GetLastThrottleCheckResult()); |
simulator_->Redirect(GURL("https://example.redirect")); |
- if (cancel_time_ == WILL_REDIRECT_REQUEST) { |
+ if (cancel_time_ == CancellingNavigationThrottle::WILL_REDIRECT_REQUEST) { |
EXPECT_EQ(NavigationThrottle::CANCEL, |
simulator_->GetLastThrottleCheckResult()); |
return; |
@@ -175,7 +90,7 @@ TEST_P(NavigationSimulatorTest, Cancel) { |
EXPECT_EQ(NavigationThrottle::PROCEED, |
simulator_->GetLastThrottleCheckResult()); |
simulator_->Commit(); |
- if (cancel_time_ == WILL_PROCESS_RESPONSE) { |
+ if (cancel_time_ == CancellingNavigationThrottle::WILL_PROCESS_RESPONSE) { |
EXPECT_EQ(NavigationThrottle::CANCEL, |
simulator_->GetLastThrottleCheckResult()); |
return; |
@@ -187,13 +102,12 @@ TEST_P(NavigationSimulatorTest, Cancel) { |
INSTANTIATE_TEST_CASE_P( |
CancelMethod, |
NavigationSimulatorTest, |
- ::testing::Values(std::make_tuple(WILL_SEND_REQUEST, SYNCHRONOUS), |
- std::make_tuple(WILL_SEND_REQUEST, ASYNCHRONOUS), |
- std::make_tuple(WILL_REDIRECT_REQUEST, SYNCHRONOUS), |
- std::make_tuple(WILL_REDIRECT_REQUEST, ASYNCHRONOUS), |
- std::make_tuple(WILL_PROCESS_RESPONSE, SYNCHRONOUS), |
- std::make_tuple(WILL_PROCESS_RESPONSE, ASYNCHRONOUS), |
- std::make_tuple(NEVER, SYNCHRONOUS), |
- std::make_tuple(NEVER, ASYNCHRONOUS))); |
+ ::testing::Combine( |
+ ::testing::Values(CancellingNavigationThrottle::WILL_START_REQUEST, |
+ CancellingNavigationThrottle::WILL_REDIRECT_REQUEST, |
+ CancellingNavigationThrottle::WILL_PROCESS_RESPONSE, |
+ CancellingNavigationThrottle::NEVER), |
+ ::testing::Values(CancellingNavigationThrottle::SYNCHRONOUS, |
+ CancellingNavigationThrottle::ASYNCHRONOUS))); |
} // namespace content |