0

More Blimp browser tests for navigation

The Blimp browser tests now cover every action of NavigationFeature.

GoForward is an additional step in the existing GoBack test, rather than a new test, because you can't test GoForward without GoBack.

Also adds no-op behavior on the engine for when the client requests GoBack or GoForward but those operations aren't valid, and tests for those cases.

Tested log output for the invalid GoBack and GoForward cases with the following:
blimp_browsertests --single_process --gtest_filter=EngineBrowserTest.InvalidGoBack | grep Ignoring
blimp_browsertests --single_process --gtest_filter=EngineBrowserTest.InvalidGoForward | grep Ignoring

BUG=

Review-Url: https://codereview.chromium.org/2295543002
Cr-Commit-Position: refs/heads/master@{#415368}
This commit is contained in:
bgoldman
2016-08-30 11:41:53 -07:00
committed by Commit bot
parent 3c2c00cc8a
commit be8b5afc75
2 changed files with 62 additions and 8 deletions
blimp/engine
browser_tests
session

@ -28,6 +28,10 @@ namespace blimp {
namespace {
const int kDummyTabId = 0;
const char kPage1Path[] = "/page1.html";
const char kPage2Path[] = "/page2.html";
const char kPage1Title[] = "page1";
const char kPage2Title[] = "page2";
// Uses a headless client session to test a full engine.
class EngineBrowserTest : public BlimpBrowserTest {
@ -110,26 +114,68 @@ class EngineBrowserTest : public BlimpBrowserTest {
IN_PROC_BROWSER_TEST_F(EngineBrowserTest, LoadUrl) {
EXPECT_CALL(client_rw_feature_delegate_, OnRenderWidgetCreated(1));
ExpectPageLoad();
NavigateToLocalUrl("/page1.html");
NavigateToLocalUrl(kPage1Path);
RunAndVerify();
EXPECT_EQ("page1", last_page_title_);
EXPECT_EQ(kPage1Title, last_page_title_);
}
IN_PROC_BROWSER_TEST_F(EngineBrowserTest, GoBack) {
IN_PROC_BROWSER_TEST_F(EngineBrowserTest, Reload) {
ExpectPageLoad();
NavigateToLocalUrl("/page1.html");
NavigateToLocalUrl(kPage1Path);
RunAndVerify();
EXPECT_EQ("page1", last_page_title_);
EXPECT_EQ(kPage1Title, last_page_title_);
ExpectPageLoad();
NavigateToLocalUrl("/page2.html");
client_session_->GetNavigationFeature()->Reload(kDummyTabId);
RunAndVerify();
EXPECT_EQ("page2", last_page_title_);
EXPECT_EQ(kPage1Title, last_page_title_);
}
IN_PROC_BROWSER_TEST_F(EngineBrowserTest, GoBackAndGoForward) {
ExpectPageLoad();
NavigateToLocalUrl(kPage1Path);
RunAndVerify();
EXPECT_EQ(kPage1Title, last_page_title_);
ExpectPageLoad();
NavigateToLocalUrl(kPage2Path);
RunAndVerify();
EXPECT_EQ(kPage2Title, last_page_title_);
ExpectPageLoad();
client_session_->GetNavigationFeature()->GoBack(kDummyTabId);
RunAndVerify();
EXPECT_EQ("page1", last_page_title_);
EXPECT_EQ(kPage1Title, last_page_title_);
ExpectPageLoad();
client_session_->GetNavigationFeature()->GoForward(kDummyTabId);
RunAndVerify();
EXPECT_EQ(kPage2Title, last_page_title_);
}
IN_PROC_BROWSER_TEST_F(EngineBrowserTest, InvalidGoBack) {
// Try an invalid GoBack before loading a page, and assert that the page still
// loads correctly.
ExpectPageLoad();
client_session_->GetNavigationFeature()->GoBack(kDummyTabId);
NavigateToLocalUrl(kPage1Path);
RunAndVerify();
EXPECT_EQ(kPage1Title, last_page_title_);
}
IN_PROC_BROWSER_TEST_F(EngineBrowserTest, InvalidGoForward) {
ExpectPageLoad();
NavigateToLocalUrl(kPage1Path);
RunAndVerify();
EXPECT_EQ(kPage1Title, last_page_title_);
// Try an invalid GoForward before loading a different page, and
// assert that the page still loads correctly.
ExpectPageLoad();
client_session_->GetNavigationFeature()->GoForward(kDummyTabId);
NavigateToLocalUrl(kPage2Path);
RunAndVerify();
EXPECT_EQ(kPage2Title, last_page_title_);
}
} // namespace

@ -75,11 +75,19 @@ void Tab::LoadUrl(const GURL& url) {
}
void Tab::GoBack() {
if (!web_contents_->GetController().CanGoBack()) {
DLOG(ERROR) << "Ignoring back in tab " << tab_id_;
return;
}
DVLOG(1) << "Back in tab " << tab_id_;
web_contents_->GetController().GoBack();
}
void Tab::GoForward() {
if (!web_contents_->GetController().CanGoForward()) {
DLOG(ERROR) << "Ignoring forward in tab " << tab_id_;
return;
}
DVLOG(1) << "Forward in tab " << tab_id_;
web_contents_->GetController().GoForward();
}