Index: blimp/engine/browser_tests/engine_browsertest.cc |
diff --git a/blimp/engine/browser_tests/engine_browsertest.cc b/blimp/engine/browser_tests/engine_browsertest.cc |
index 0128d9e9eeedb517e4454f85d62e9cfb540dd2bb..ac9cec97707e9c9328a22084310b0930f0efe2ac 100644 |
--- a/blimp/engine/browser_tests/engine_browsertest.cc |
+++ b/blimp/engine/browser_tests/engine_browsertest.cc |
@@ -48,40 +48,88 @@ class EngineBrowserTest : public BlimpBrowserTest { |
kDummyTabId, &client_rw_feature_delegate_); |
client_session_->GetImeFeature()->set_delegate( |
&client_ime_feature_delegate_); |
+ |
+ // Skip assigner. Engine info is already available. |
+ client_session_->ConnectWithAssignment(client::ASSIGNMENT_REQUEST_RESULT_OK, |
+ GetAssignment()); |
+ client_session_->GetTabControlFeature()->SetSizeAndScale( |
+ gfx::Size(100, 100), 1); |
+ client_session_->GetTabControlFeature()->CreateTab(kDummyTabId); |
+ |
+ // Record the last page title known to the client. Page loads will sometimes |
+ // involve multiple title changes in transition, including the requested |
+ // URL. When a page is done loading, the last title should be the one from |
+ // the <title> tag. |
+ ON_CALL(client_nav_feature_delegate_, |
+ OnTitleChanged(kDummyTabId, testing::_)) |
+ .WillByDefault(testing::SaveArg<1>(&last_page_title_)); |
+ |
+ EXPECT_TRUE(embedded_test_server()->Start()); |
+ } |
+ |
+ // Given a path on the embedded local server, tell the client to navigate to |
+ // that page by URL. |
+ void NavigateToLocalUrl(const std::string& path) { |
+ GURL url = embedded_test_server()->GetURL(path); |
+ client_session_->GetNavigationFeature()->NavigateToUrlText(kDummyTabId, |
+ url.spec()); |
+ } |
+ |
+ // Set mock expectations that a page will load. A page has loaded when the |
+ // page load status changes to true, and then to false. |
+ void ExpectPageLoad() { |
+ testing::InSequence s; |
+ |
+ // There may be redundant events indicating the page load status is true, |
+ // so allow more than one. |
+ EXPECT_CALL(client_nav_feature_delegate_, |
+ OnLoadingChanged(kDummyTabId, true)) |
+ .Times(testing::AtLeast(1)); |
+ EXPECT_CALL(client_nav_feature_delegate_, |
+ OnLoadingChanged(kDummyTabId, false)) |
+ .WillOnce( |
+ InvokeWithoutArgs(this, &EngineBrowserTest::SignalCompletion)); |
+ } |
+ |
+ void RunAndVerify() { |
+ RunUntilCompletion(); |
+ testing::Mock::VerifyAndClearExpectations(&client_rw_feature_delegate_); |
+ testing::Mock::VerifyAndClearExpectations(&client_nav_feature_delegate_); |
} |
client::MockNavigationFeatureDelegate client_nav_feature_delegate_; |
client::MockRenderWidgetFeatureDelegate client_rw_feature_delegate_; |
client::MockImeFeatureDelegate client_ime_feature_delegate_; |
std::unique_ptr<client::TestClientSession> client_session_; |
+ std::string last_page_title_; |
private: |
DISALLOW_COPY_AND_ASSIGN(EngineBrowserTest); |
}; |
IN_PROC_BROWSER_TEST_F(EngineBrowserTest, LoadUrl) { |
- testing::InSequence s; |
- |
- EXPECT_TRUE(embedded_test_server()->Start()); |
- GURL url = embedded_test_server()->GetURL("/hello.html"); |
- |
EXPECT_CALL(client_rw_feature_delegate_, OnRenderWidgetCreated(1)); |
- EXPECT_CALL(client_nav_feature_delegate_, |
- OnTitleChanged(kDummyTabId, url.GetContent())); |
- EXPECT_CALL(client_nav_feature_delegate_, |
- OnTitleChanged(kDummyTabId, "hello")) |
- .WillOnce(InvokeWithoutArgs(this, &EngineBrowserTest::SignalCompletion)); |
- |
- // Skip assigner. Engine info is already available. |
- client_session_->ConnectWithAssignment(client::ASSIGNMENT_REQUEST_RESULT_OK, |
- GetAssignment()); |
- client_session_->GetTabControlFeature()->SetSizeAndScale(gfx::Size(100, 100), |
- 1); |
- client_session_->GetTabControlFeature()->CreateTab(kDummyTabId); |
- client_session_->GetNavigationFeature()->NavigateToUrlText(kDummyTabId, |
- url.spec()); |
- |
- RunUntilCompletion(); |
+ ExpectPageLoad(); |
+ NavigateToLocalUrl("/page1.html"); |
+ RunAndVerify(); |
+ EXPECT_EQ("page1", last_page_title_); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(EngineBrowserTest, GoBack) { |
+ ExpectPageLoad(); |
+ NavigateToLocalUrl("/page1.html"); |
+ RunAndVerify(); |
+ EXPECT_EQ("page1", last_page_title_); |
+ |
+ ExpectPageLoad(); |
+ NavigateToLocalUrl("/page2.html"); |
+ RunAndVerify(); |
+ EXPECT_EQ("page2", last_page_title_); |
+ |
+ ExpectPageLoad(); |
+ client_session_->GetNavigationFeature()->GoBack(kDummyTabId); |
+ RunAndVerify(); |
+ EXPECT_EQ("page1", last_page_title_); |
} |
} // namespace |