Commit 97f9353c authored by Danyao Wang's avatar Danyao Wang Committed by Commit Bot

[Nav Experiment] Parameterize NavigationAndLoadCallbacksTest.

This allows testing of both navigation manager implementations on bots.
Temporarily disabled currently failing tests.

Bug: 851119
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I3ed3d60479aa180101571ce56e78b66c95d5d4f4
Reviewed-on: https://chromium-review.googlesource.com/1110999
Commit-Queue: Danyao Wang <danyao@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572382}
parent c965d521
...@@ -5,8 +5,10 @@ ...@@ -5,8 +5,10 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include "base/ios/ios_util.h"
#include "base/scoped_observer.h" #include "base/scoped_observer.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/test/scoped_feature_list.h"
#include "ios/testing/embedded_test_server_handlers.h" #include "ios/testing/embedded_test_server_handlers.h"
#import "ios/testing/wait_util.h" #import "ios/testing/wait_util.h"
#include "ios/web/public/features.h" #include "ios/web/public/features.h"
...@@ -51,6 +53,13 @@ const char kExpectedMimeType[] = "text/html"; ...@@ -51,6 +53,13 @@ const char kExpectedMimeType[] = "text/html";
const char kDownloadMimeType[] = "application/vnd.test"; const char kDownloadMimeType[] = "application/vnd.test";
// NavigationAndLoadCallbacksTest is parameterized on this enum to test both
// LegacyNavigationManagerImpl and WKBasedNavigationManagerImpl.
enum NavigationManagerChoice {
TEST_LEGACY_NAVIGATION_MANAGER,
TEST_WK_BASED_NAVIGATION_MANAGER,
};
// Verifies correctness of |NavigationContext| (|arg1|) for new page navigation // Verifies correctness of |NavigationContext| (|arg1|) for new page navigation
// passed to |DidStartNavigation|. Stores |NavigationContext| in |context| // passed to |DidStartNavigation|. Stores |NavigationContext| in |context|
// pointer. // pointer.
...@@ -531,11 +540,21 @@ using test::WaitForWebViewContainingText; ...@@ -531,11 +540,21 @@ using test::WaitForWebViewContainingText;
// Test fixture to test navigation and load callbacks from WebStateObserver and // Test fixture to test navigation and load callbacks from WebStateObserver and
// WebStatePolicyDecider. // WebStatePolicyDecider.
class NavigationAndLoadCallbacksTest : public WebIntTest { class NavigationAndLoadCallbacksTest
: public WebIntTest,
public ::testing::WithParamInterface<NavigationManagerChoice> {
public: public:
NavigationAndLoadCallbacksTest() : scoped_observer_(&observer_) {} NavigationAndLoadCallbacksTest() : scoped_observer_(&observer_) {}
void SetUp() override { void SetUp() override {
if (GetParam() == TEST_LEGACY_NAVIGATION_MANAGER) {
scoped_feature_list_.InitAndDisableFeature(
features::kSlimNavigationManager);
} else {
scoped_feature_list_.InitAndEnableFeature(
features::kSlimNavigationManager);
}
WebIntTest::SetUp(); WebIntTest::SetUp();
decider_ = std::make_unique<StrictMock<PolicyDeciderMock>>(web_state()); decider_ = std::make_unique<StrictMock<PolicyDeciderMock>>(web_state());
scoped_observer_.Add(web_state()); scoped_observer_.Add(web_state());
...@@ -573,6 +592,7 @@ class NavigationAndLoadCallbacksTest : public WebIntTest { ...@@ -573,6 +592,7 @@ class NavigationAndLoadCallbacksTest : public WebIntTest {
std::unique_ptr<net::test_server::EmbeddedTestServer> test_server_; std::unique_ptr<net::test_server::EmbeddedTestServer> test_server_;
private: private:
base::test::ScopedFeatureList scoped_feature_list_;
ScopedObserver<WebState, WebStateObserver> scoped_observer_; ScopedObserver<WebState, WebStateObserver> scoped_observer_;
testing::InSequence callbacks_sequence_checker_; testing::InSequence callbacks_sequence_checker_;
...@@ -580,7 +600,7 @@ class NavigationAndLoadCallbacksTest : public WebIntTest { ...@@ -580,7 +600,7 @@ class NavigationAndLoadCallbacksTest : public WebIntTest {
}; };
// Tests successful navigation to a new page. // Tests successful navigation to a new page.
TEST_F(NavigationAndLoadCallbacksTest, NewPageNavigation) { TEST_P(NavigationAndLoadCallbacksTest, NewPageNavigation) {
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -611,7 +631,7 @@ TEST_F(NavigationAndLoadCallbacksTest, NewPageNavigation) { ...@@ -611,7 +631,7 @@ TEST_F(NavigationAndLoadCallbacksTest, NewPageNavigation) {
// Tests that if web usage is already enabled, enabling it again would not cause // Tests that if web usage is already enabled, enabling it again would not cause
// any page loads (related to restoring cached session). This is a regression // any page loads (related to restoring cached session). This is a regression
// test for crbug.com/781916. // test for crbug.com/781916.
TEST_F(NavigationAndLoadCallbacksTest, EnableWebUsageTwice) { TEST_P(NavigationAndLoadCallbacksTest, EnableWebUsageTwice) {
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Only expect one set of load events from the first LoadUrl(), not subsequent // Only expect one set of load events from the first LoadUrl(), not subsequent
...@@ -645,7 +665,12 @@ TEST_F(NavigationAndLoadCallbacksTest, EnableWebUsageTwice) { ...@@ -645,7 +665,12 @@ TEST_F(NavigationAndLoadCallbacksTest, EnableWebUsageTwice) {
} }
// Tests failed navigation to a new page. // Tests failed navigation to a new page.
TEST_F(NavigationAndLoadCallbacksTest, FailedNavigation) { TEST_P(NavigationAndLoadCallbacksTest, FailedNavigation) {
// TODO(crbug.com/851119): temporarily disable this failing test.
if (GetParam() == TEST_WK_BASED_NAVIGATION_MANAGER) {
return;
}
const GURL url = test_server_->GetURL("/close-socket"); const GURL url = test_server_->GetURL("/close-socket");
// Perform a navigation to url with unsupported scheme, which will fail. // Perform a navigation to url with unsupported scheme, which will fail.
...@@ -683,7 +708,7 @@ TEST_F(NavigationAndLoadCallbacksTest, FailedNavigation) { ...@@ -683,7 +708,7 @@ TEST_F(NavigationAndLoadCallbacksTest, FailedNavigation) {
} }
// Tests web page reload navigation. // Tests web page reload navigation.
TEST_F(NavigationAndLoadCallbacksTest, WebPageReloadNavigation) { TEST_P(NavigationAndLoadCallbacksTest, WebPageReloadNavigation) {
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -737,7 +762,11 @@ TEST_F(NavigationAndLoadCallbacksTest, WebPageReloadNavigation) { ...@@ -737,7 +762,11 @@ TEST_F(NavigationAndLoadCallbacksTest, WebPageReloadNavigation) {
} }
// Tests web page reload with user agent override. // Tests web page reload with user agent override.
TEST_F(NavigationAndLoadCallbacksTest, ReloadWithUserAgentType) { TEST_P(NavigationAndLoadCallbacksTest, ReloadWithUserAgentType) {
// TODO(crbug.com/851119): temporarily disable this failing test.
if (GetParam() == TEST_WK_BASED_NAVIGATION_MANAGER) {
return;
}
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -782,7 +811,11 @@ TEST_F(NavigationAndLoadCallbacksTest, ReloadWithUserAgentType) { ...@@ -782,7 +811,11 @@ TEST_F(NavigationAndLoadCallbacksTest, ReloadWithUserAgentType) {
} }
// Tests user-initiated hash change. // Tests user-initiated hash change.
TEST_F(NavigationAndLoadCallbacksTest, UserInitiatedHashChangeNavigation) { TEST_P(NavigationAndLoadCallbacksTest, UserInitiatedHashChangeNavigation) {
// TODO(crbug.com/851119): temporarily disable this failing test.
if (GetParam() == TEST_WK_BASED_NAVIGATION_MANAGER) {
return;
}
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -860,7 +893,7 @@ TEST_F(NavigationAndLoadCallbacksTest, UserInitiatedHashChangeNavigation) { ...@@ -860,7 +893,7 @@ TEST_F(NavigationAndLoadCallbacksTest, UserInitiatedHashChangeNavigation) {
} }
// Tests renderer-initiated hash change. // Tests renderer-initiated hash change.
TEST_F(NavigationAndLoadCallbacksTest, RendererInitiatedHashChangeNavigation) { TEST_P(NavigationAndLoadCallbacksTest, RendererInitiatedHashChangeNavigation) {
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -914,7 +947,7 @@ TEST_F(NavigationAndLoadCallbacksTest, RendererInitiatedHashChangeNavigation) { ...@@ -914,7 +947,7 @@ TEST_F(NavigationAndLoadCallbacksTest, RendererInitiatedHashChangeNavigation) {
} }
// Tests state change. // Tests state change.
TEST_F(NavigationAndLoadCallbacksTest, StateNavigation) { TEST_P(NavigationAndLoadCallbacksTest, StateNavigation) {
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -978,7 +1011,7 @@ TEST_F(NavigationAndLoadCallbacksTest, StateNavigation) { ...@@ -978,7 +1011,7 @@ TEST_F(NavigationAndLoadCallbacksTest, StateNavigation) {
} }
// Tests native content navigation. // Tests native content navigation.
TEST_F(NavigationAndLoadCallbacksTest, NativeContentNavigation) { TEST_P(NavigationAndLoadCallbacksTest, NativeContentNavigation) {
GURL url(url::SchemeHostPort(kTestNativeContentScheme, "ui", 0).Serialize()); GURL url(url::SchemeHostPort(kTestNativeContentScheme, "ui", 0).Serialize());
NavigationContext* context = nullptr; NavigationContext* context = nullptr;
int32_t nav_id = 0; int32_t nav_id = 0;
...@@ -999,7 +1032,7 @@ TEST_F(NavigationAndLoadCallbacksTest, NativeContentNavigation) { ...@@ -999,7 +1032,7 @@ TEST_F(NavigationAndLoadCallbacksTest, NativeContentNavigation) {
} }
// Tests native content reload navigation. // Tests native content reload navigation.
TEST_F(NavigationAndLoadCallbacksTest, NativeContentReload) { TEST_P(NavigationAndLoadCallbacksTest, NativeContentReload) {
GURL url(url::SchemeHostPort(kTestNativeContentScheme, "ui", 0).Serialize()); GURL url(url::SchemeHostPort(kTestNativeContentScheme, "ui", 0).Serialize());
EXPECT_CALL(observer_, DidStartLoading(web_state())); EXPECT_CALL(observer_, DidStartLoading(web_state()));
EXPECT_CALL(observer_, DidStartNavigation(web_state(), _)); EXPECT_CALL(observer_, DidStartNavigation(web_state(), _));
...@@ -1032,7 +1065,47 @@ TEST_F(NavigationAndLoadCallbacksTest, NativeContentReload) { ...@@ -1032,7 +1065,47 @@ TEST_F(NavigationAndLoadCallbacksTest, NativeContentReload) {
} }
// Tests successful navigation to a new page with post HTTP method. // Tests successful navigation to a new page with post HTTP method.
TEST_F(NavigationAndLoadCallbacksTest, UserInitiatedPostNavigation) { TEST_P(NavigationAndLoadCallbacksTest, UserInitiatedPostNavigation) {
// Prior to iOS 11, POST navigation is implemented as an XMLHttpRequest in
// JavaScript. This doesn't create a WKBackForwardListItem in WKWebView on
// which to attach the pending NavigationItem, if WKBasedNavigationManager is
// used. When POST is the first navigation in an empty web view, this causes a
// DCHECK in WKBasedNavigationManagerImpl::CommitPendingItem(). When it is not
// the first navigation, it attaches the pending NavigationItem to the wrong
// WKBackForwardListItem. However, this is not worth fixing now. Load an
// initial request to the web view to stop this test from crashing, even
// though this doesn't fix the underlying bug.
// TODO(crbug.com/740987): remove this hack once support for iOS10 is dropped.
if (!base::ios::IsRunningOnIOS11OrLater() &&
GetParam() == TEST_WK_BASED_NAVIGATION_MANAGER) {
const GURL url = test_server_->GetURL("/echoall?bar");
// Perform new page navigation.
NavigationContext* context = nullptr;
int32_t nav_id = 0;
EXPECT_CALL(observer_, DidStartLoading(web_state()));
WebStatePolicyDecider::RequestInfo expected_request_info(
ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, url,
/*target_main_frame=*/true, /*has_user_gesture=*/false);
EXPECT_CALL(*decider_,
ShouldAllowRequest(_, RequestInfoMatch(expected_request_info)))
.WillOnce(Return(true));
EXPECT_CALL(observer_, DidStartNavigation(web_state(), _))
.WillOnce(VerifyPageStartedContext(
web_state(), url, ui::PageTransition::PAGE_TRANSITION_TYPED,
&context, &nav_id));
EXPECT_CALL(*decider_, ShouldAllowResponse(_, /*for_main_frame=*/true))
.WillOnce(Return(true));
EXPECT_CALL(observer_, DidFinishNavigation(web_state(), _))
.WillOnce(VerifyNewPageFinishedContext(
web_state(), url, kExpectedMimeType, &context, &nav_id));
EXPECT_CALL(observer_, DidStopLoading(web_state()));
EXPECT_CALL(observer_,
PageLoaded(web_state(), PageLoadCompletionStatus::SUCCESS));
ASSERT_TRUE(LoadUrl(url));
ASSERT_TRUE(WaitForWebViewContainingText(web_state(), "bar"));
}
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -1070,7 +1143,7 @@ TEST_F(NavigationAndLoadCallbacksTest, UserInitiatedPostNavigation) { ...@@ -1070,7 +1143,7 @@ TEST_F(NavigationAndLoadCallbacksTest, UserInitiatedPostNavigation) {
} }
// Tests successful navigation to a new page with post HTTP method. // Tests successful navigation to a new page with post HTTP method.
TEST_F(NavigationAndLoadCallbacksTest, RendererInitiatedPostNavigation) { TEST_P(NavigationAndLoadCallbacksTest, RendererInitiatedPostNavigation) {
const GURL url = test_server_->GetURL("/form?echo"); const GURL url = test_server_->GetURL("/form?echo");
const GURL action = test_server_->GetURL("/echo"); const GURL action = test_server_->GetURL("/echo");
...@@ -1125,7 +1198,7 @@ TEST_F(NavigationAndLoadCallbacksTest, RendererInitiatedPostNavigation) { ...@@ -1125,7 +1198,7 @@ TEST_F(NavigationAndLoadCallbacksTest, RendererInitiatedPostNavigation) {
} }
// Tests successful reload of a page returned for post request. // Tests successful reload of a page returned for post request.
TEST_F(NavigationAndLoadCallbacksTest, ReloadPostNavigation) { TEST_P(NavigationAndLoadCallbacksTest, ReloadPostNavigation) {
const GURL url = test_server_->GetURL("/form?echo"); const GURL url = test_server_->GetURL("/form?echo");
const GURL action = test_server_->GetURL("/echo"); const GURL action = test_server_->GetURL("/echo");
...@@ -1219,7 +1292,11 @@ TEST_F(NavigationAndLoadCallbacksTest, ReloadPostNavigation) { ...@@ -1219,7 +1292,11 @@ TEST_F(NavigationAndLoadCallbacksTest, ReloadPostNavigation) {
} }
// Tests going forward to a page rendered from post response. // Tests going forward to a page rendered from post response.
TEST_F(NavigationAndLoadCallbacksTest, ForwardPostNavigation) { TEST_P(NavigationAndLoadCallbacksTest, ForwardPostNavigation) {
// TODO(crbug.com/851119): temporarily disable this failing test.
if (GetParam() == TEST_WK_BASED_NAVIGATION_MANAGER) {
return;
}
const GURL url = test_server_->GetURL("/form?echo"); const GURL url = test_server_->GetURL("/form?echo");
const GURL action = test_server_->GetURL("/echo"); const GURL action = test_server_->GetURL("/echo");
...@@ -1334,7 +1411,7 @@ TEST_F(NavigationAndLoadCallbacksTest, ForwardPostNavigation) { ...@@ -1334,7 +1411,7 @@ TEST_F(NavigationAndLoadCallbacksTest, ForwardPostNavigation) {
} }
// Tests server redirect navigation. // Tests server redirect navigation.
TEST_F(NavigationAndLoadCallbacksTest, RedirectNavigation) { TEST_P(NavigationAndLoadCallbacksTest, RedirectNavigation) {
const GURL url = test_server_->GetURL("/server-redirect?echo"); const GURL url = test_server_->GetURL("/server-redirect?echo");
const GURL redirect_url = test_server_->GetURL("/echo"); const GURL redirect_url = test_server_->GetURL("/echo");
...@@ -1368,7 +1445,7 @@ TEST_F(NavigationAndLoadCallbacksTest, RedirectNavigation) { ...@@ -1368,7 +1445,7 @@ TEST_F(NavigationAndLoadCallbacksTest, RedirectNavigation) {
} }
// Tests download navigation. // Tests download navigation.
TEST_F(NavigationAndLoadCallbacksTest, DownloadNavigation) { TEST_P(NavigationAndLoadCallbacksTest, DownloadNavigation) {
GURL url = test_server_->GetURL("/download"); GURL url = test_server_->GetURL("/download");
// Perform download navigation. // Perform download navigation.
...@@ -1403,7 +1480,7 @@ TEST_F(NavigationAndLoadCallbacksTest, DownloadNavigation) { ...@@ -1403,7 +1480,7 @@ TEST_F(NavigationAndLoadCallbacksTest, DownloadNavigation) {
#else #else
#define MAYBE_FailedLoad FLAKY_FailedLoad #define MAYBE_FailedLoad FLAKY_FailedLoad
#endif #endif
TEST_F(NavigationAndLoadCallbacksTest, FLAKY_FailedLoad) { TEST_P(NavigationAndLoadCallbacksTest, FLAKY_FailedLoad) {
GURL url = test_server_->GetURL("/exabyte_response"); GURL url = test_server_->GetURL("/exabyte_response");
NavigationContext* context = nullptr; NavigationContext* context = nullptr;
...@@ -1442,7 +1519,7 @@ TEST_F(NavigationAndLoadCallbacksTest, FLAKY_FailedLoad) { ...@@ -1442,7 +1519,7 @@ TEST_F(NavigationAndLoadCallbacksTest, FLAKY_FailedLoad) {
// Tests rejecting the navigation from ShouldAllowRequest. The load should stop, // Tests rejecting the navigation from ShouldAllowRequest. The load should stop,
// but no other callbacks are called. // but no other callbacks are called.
TEST_F(NavigationAndLoadCallbacksTest, DisallowRequest) { TEST_P(NavigationAndLoadCallbacksTest, DisallowRequest) {
EXPECT_CALL(observer_, DidStartLoading(web_state())); EXPECT_CALL(observer_, DidStartLoading(web_state()));
WebStatePolicyDecider::RequestInfo expected_request_info( WebStatePolicyDecider::RequestInfo expected_request_info(
ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT, ui::PageTransition::PAGE_TRANSITION_CLIENT_REDIRECT,
...@@ -1458,7 +1535,7 @@ TEST_F(NavigationAndLoadCallbacksTest, DisallowRequest) { ...@@ -1458,7 +1535,7 @@ TEST_F(NavigationAndLoadCallbacksTest, DisallowRequest) {
// Tests rejecting the navigation from ShouldAllowResponse. PageLoaded callback // Tests rejecting the navigation from ShouldAllowResponse. PageLoaded callback
// is not called. // is not called.
TEST_F(NavigationAndLoadCallbacksTest, DisallowResponse) { TEST_P(NavigationAndLoadCallbacksTest, DisallowResponse) {
const GURL url = test_server_->GetURL("/echo"); const GURL url = test_server_->GetURL("/echo");
// Perform new page navigation. // Perform new page navigation.
...@@ -1487,7 +1564,7 @@ TEST_F(NavigationAndLoadCallbacksTest, DisallowResponse) { ...@@ -1487,7 +1564,7 @@ TEST_F(NavigationAndLoadCallbacksTest, DisallowResponse) {
// Tests stopping a navigation. Did FinishLoading and PageLoaded are never // Tests stopping a navigation. Did FinishLoading and PageLoaded are never
// called. // called.
TEST_F(NavigationAndLoadCallbacksTest, StopNavigation) { TEST_P(NavigationAndLoadCallbacksTest, StopNavigation) {
EXPECT_CALL(observer_, DidStartLoading(web_state())); EXPECT_CALL(observer_, DidStartLoading(web_state()));
EXPECT_CALL(observer_, DidStopLoading(web_state())); EXPECT_CALL(observer_, DidStopLoading(web_state()));
WebStatePolicyDecider::RequestInfo expected_request_info( WebStatePolicyDecider::RequestInfo expected_request_info(
...@@ -1503,7 +1580,7 @@ TEST_F(NavigationAndLoadCallbacksTest, StopNavigation) { ...@@ -1503,7 +1580,7 @@ TEST_F(NavigationAndLoadCallbacksTest, StopNavigation) {
} }
// Tests stopping a finished navigation. PageLoaded is never called. // Tests stopping a finished navigation. PageLoaded is never called.
TEST_F(NavigationAndLoadCallbacksTest, StopFinishedNavigation) { TEST_P(NavigationAndLoadCallbacksTest, StopFinishedNavigation) {
GURL url = test_server_->GetURL("/exabyte_response"); GURL url = test_server_->GetURL("/exabyte_response");
NavigationContext* context = nullptr; NavigationContext* context = nullptr;
...@@ -1539,11 +1616,16 @@ TEST_F(NavigationAndLoadCallbacksTest, StopFinishedNavigation) { ...@@ -1539,11 +1616,16 @@ TEST_F(NavigationAndLoadCallbacksTest, StopFinishedNavigation) {
} }
// Tests that iframe navigation triggers DidChangeBackForwardState. // Tests that iframe navigation triggers DidChangeBackForwardState.
TEST_F(NavigationAndLoadCallbacksTest, IframeNavigation) { TEST_P(NavigationAndLoadCallbacksTest, IframeNavigation) {
// LegacyNavigationManager doesn't support iframe navigation history. // LegacyNavigationManager doesn't support iframe navigation history.
if (!GetWebClient()->IsSlimNavigationManagerEnabled()) if (!GetWebClient()->IsSlimNavigationManagerEnabled())
return; return;
// TODO(crbug.com/851119): temporarily disable this failing test.
if (GetParam() == TEST_WK_BASED_NAVIGATION_MANAGER) {
return;
}
GURL url = test_server_->GetURL("/iframe_host.html"); GURL url = test_server_->GetURL("/iframe_host.html");
// Callbacks due to loading of the main frame. // Callbacks due to loading of the main frame.
...@@ -1617,4 +1699,11 @@ TEST_F(NavigationAndLoadCallbacksTest, IframeNavigation) { ...@@ -1617,4 +1699,11 @@ TEST_F(NavigationAndLoadCallbacksTest, IframeNavigation) {
EXPECT_FALSE(web_state()->GetNavigationManager()->CanGoForward()); EXPECT_FALSE(web_state()->GetNavigationManager()->CanGoForward());
} }
INSTANTIATE_TEST_CASE_P(
ProgrammaticNavigationAndLoadCallbacksTest,
NavigationAndLoadCallbacksTest,
::testing::Values(
NavigationManagerChoice::TEST_LEGACY_NAVIGATION_MANAGER,
NavigationManagerChoice::TEST_WK_BASED_NAVIGATION_MANAGER));
} // namespace web } // namespace web
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment