Index: content/browser/session_history_browsertest.cc |
=================================================================== |
--- content/browser/session_history_browsertest.cc (revision 133224) |
+++ content/browser/session_history_browsertest.cc (working copy) |
@@ -3,40 +3,31 @@ |
// found in the LICENSE file. |
#include "base/string_util.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/test/automation/automation_proxy.h" |
-#include "chrome/test/automation/browser_proxy.h" |
-#include "chrome/test/automation/tab_proxy.h" |
-#include "chrome/test/ui/ui_test.h" |
-#include "grit/generated_resources.h" |
-#include "net/base/net_util.h" |
+#include "base/utf_string_conversions.h" |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/test/base/in_process_browser_test.h" |
+#include "chrome/test/base/ui_test_utils.h" |
+#include "content/public/browser/notification_service.h" |
+#include "content/public/browser/notification_types.h" |
+#include "content/public/browser/web_contents.h" |
+#include "content/public/common/url_constants.h" |
#include "net/test/test_server.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
-namespace { |
- |
-class SessionHistoryTest : public UITest { |
+class SessionHistoryTest : public InProcessBrowserTest { |
protected: |
- SessionHistoryTest() |
- : test_server_(net::TestServer::TYPE_HTTP, |
- net::TestServer::kLocalhost, |
- FilePath(FILE_PATH_LITERAL("chrome/test/data"))) { |
- dom_automation_enabled_ = true; |
+ SessionHistoryTest() { |
+ EnableDOMAutomation(); |
} |
- virtual void SetUp() { |
- UITest::SetUp(); |
- |
- window_ = automation()->GetBrowserWindow(0); |
- ASSERT_TRUE(window_.get()); |
- |
- tab_ = window_->GetActiveTab(); |
- ASSERT_TRUE(tab_.get()); |
+ virtual void SetUpOnMainThread() { |
+ ASSERT_TRUE(test_server()->Start()); |
} |
// Simulate clicking a link. Only works on the frames.html testserver page. |
void ClickLink(std::string node_id) { |
GURL url("javascript:clickLink('" + node_id + "')"); |
- ASSERT_TRUE(tab_->NavigateToURL(url)); |
+ ui_test_utils::NavigateToURL(browser(), url); |
} |
// Simulate filling in form data. Only works on the frames.html page with |
@@ -46,229 +37,218 @@ |
// This will return immediately, but since the JS executes synchronously |
// on the renderer, it will complete before the next navigate message is |
// processed. |
- ASSERT_TRUE(tab_->NavigateToURLAsync(url)); |
+ ui_test_utils::NavigateToURLWithDisposition(browser(), url, CURRENT_TAB, 0); |
} |
// Simulate submitting a form. Only works on the frames.html page with |
// subframe = form.html, and on form.html itself. |
void SubmitForm(std::string node_id) { |
GURL url("javascript:submitForm('" + node_id + "')"); |
- ASSERT_TRUE(tab_->NavigateToURL(url)); |
+ ui_test_utils::NavigateToURL(browser(), url); |
} |
// Navigate session history using history.go(distance). |
void JavascriptGo(std::string distance) { |
GURL url("javascript:history.go('" + distance + "')"); |
- ASSERT_TRUE(tab_->NavigateToURL(url)); |
+ ui_test_utils::NavigateToURL(browser(), url); |
} |
- std::wstring GetTabTitle() { |
- std::wstring title; |
- EXPECT_TRUE(tab_->GetTabTitle(&title)); |
- return title; |
+ std::string GetTabTitle() { |
+ return UTF16ToASCII(browser()->GetSelectedWebContents()->GetTitle()); |
} |
GURL GetTabURL() { |
- GURL url; |
- EXPECT_TRUE(tab_->GetCurrentURL(&url)); |
- return url; |
+ return browser()->GetSelectedWebContents()->GetURL(); |
} |
- protected: |
- scoped_refptr<BrowserProxy> window_; |
- scoped_refptr<TabProxy> tab_; |
+ GURL GetURL(const std::string file) { |
+ return test_server()->GetURL(std::string("files/session_history/") + file); |
+ } |
- net::TestServer test_server_; |
-}; |
+ void NavigateAndCheckTitle(const char* filename, |
+ const std::string& expected_title) { |
+ string16 expected_title16(ASCIIToUTF16(expected_title)); |
+ ui_test_utils::TitleWatcher title_watcher( |
+ browser()->GetSelectedWebContents(), expected_title16); |
+ ui_test_utils::NavigateToURL(browser(), GetURL(filename)); |
+ ASSERT_EQ(expected_title16, title_watcher.WaitAndGetTitle()); |
+ } |
-#if defined(OS_WIN) || defined(OS_MACOSX) |
-// See http://crbug.com/61619 on windows. |
-// See http://crbug.com/102094 on mac. |
-#define MAYBE_BasicBackForward DISABLED_BasicBackForward |
-#else |
-#define MAYBE_BasicBackForward BasicBackForward |
-#endif |
+ void GoBack() { |
+ ui_test_utils::WindowedNotificationObserver load_stop_observer( |
+ content::NOTIFICATION_LOAD_STOP, |
+ content::NotificationService::AllSources()); |
+ browser()->GoBack(CURRENT_TAB); |
+ load_stop_observer.Wait(); |
+ } |
-TEST_F(SessionHistoryTest, MAYBE_BasicBackForward) { |
- ASSERT_TRUE(test_server_.Start()); |
+ void GoForward() { |
+ ui_test_utils::WindowedNotificationObserver load_stop_observer( |
+ content::NOTIFICATION_LOAD_STOP, |
+ content::NotificationService::AllSources()); |
+ browser()->GoForward(CURRENT_TAB); |
+ load_stop_observer.Wait(); |
+ } |
+}; |
+// If this flakes, use http://crbug.com/61619 on windows and |
+// http://crbug.com/102094 on mac. |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, BasicBackForward) { |
// about:blank should be loaded first. |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot1.html"))); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot1.html", "bot1")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot2.html", "bot2")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot3.html", "bot3")); |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot2.html"))); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
- |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot3.html"))); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
- |
// history is [blank, bot1, bot2, *bot3] |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
- ASSERT_TRUE(tab_->GoForward()); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ GoForward(); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot3.html"))); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot3.html", "bot3")); |
// history is [blank, bot1, *bot3] |
- ASSERT_FALSE(tab_->GoForward()); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoForward()); |
+ EXPECT_EQ("bot3", GetTabTitle()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- ASSERT_TRUE(tab_->GoForward()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GoForward(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
- ASSERT_TRUE(tab_->GoForward()); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ GoForward(); |
+ EXPECT_EQ("bot3", GetTabTitle()); |
} |
// Test that back/forward works when navigating in subframes. |
-#if defined(OS_WIN) |
-// http://crbug.com/48833 |
-#define FrameBackForward DISABLED_FrameBackForward |
-#endif |
-TEST_F(SessionHistoryTest, FrameBackForward) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
+// If this flakes, use http://crbug.com/48833 |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, FrameBackForward) { |
// about:blank should be loaded first. |
- GURL home(homepage()); |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
- EXPECT_EQ(home, GetTabURL()); |
+ GURL home(chrome::kAboutBlankURL); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
+ EXPECT_EQ(GURL(chrome::kAboutBlankURL), GetTabURL()); |
- GURL frames(test_server_.GetURL("files/session_history/frames.html")); |
- ASSERT_TRUE(tab_->NavigateToURL(frames)); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
- EXPECT_EQ(frames, GetTabURL()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("frames.html", "bot1")); |
ClickLink("abot2"); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
+ GURL frames(GetURL("frames.html")); |
EXPECT_EQ(frames, GetTabURL()); |
ClickLink("abot3"); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ EXPECT_EQ("bot3", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
// history is [blank, bot1, bot2, *bot3] |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
EXPECT_EQ(home, GetTabURL()); |
- ASSERT_TRUE(tab_->GoForward()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GoForward(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoForward()); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ GoForward(); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
ClickLink("abot1"); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
// history is [blank, bot1, bot2, *bot1] |
- ASSERT_FALSE(tab_->GoForward()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoForward()); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
} |
-// See http://crbug.com/61619 |
// Test that back/forward preserves POST data and document state in subframes. |
-TEST_F(SessionHistoryTest, DISABLED_FrameFormBackForward) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
+// If this flakes use http://crbug.com/61619 |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, FrameFormBackForward) { |
// about:blank should be loaded first. |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- GURL frames(test_server_.GetURL("files/session_history/frames.html")); |
- ASSERT_TRUE(tab_->NavigateToURL(frames)); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("frames.html", "bot1")); |
ClickLink("aform"); |
- EXPECT_EQ(L"form", GetTabTitle()); |
+ EXPECT_EQ("form", GetTabTitle()); |
+ GURL frames(GetURL("frames.html")); |
EXPECT_EQ(frames, GetTabURL()); |
SubmitForm("isubmit"); |
- EXPECT_EQ(L"text=&select=a", GetTabTitle()); |
+ EXPECT_EQ("text=&select=a", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"form", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("form", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
// history is [blank, bot1, *form, post] |
ClickLink("abot2"); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
// history is [blank, bot1, form, *bot2] |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"form", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("form", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
SubmitForm("isubmit"); |
- EXPECT_EQ(L"text=&select=a", GetTabTitle()); |
+ EXPECT_EQ("text=&select=a", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
// history is [blank, bot1, form, *post] |
- if (false) { |
- // TODO(mpcomplete): reenable this when WebKit bug 10199 is fixed: |
- // "returning to a POST result within a frame does a GET instead of a POST" |
- ClickLink("abot2"); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
- EXPECT_EQ(frames, GetTabURL()); |
+ // TODO(mpcomplete): reenable this when WebKit bug 10199 is fixed: |
+ // "returning to a POST result within a frame does a GET instead of a POST" |
+ ClickLink("abot2"); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
+ EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"text=&select=a", GetTabTitle()); |
- EXPECT_EQ(frames, GetTabURL()); |
- } |
+ GoBack(); |
+ EXPECT_EQ("text=&select=a", GetTabTitle()); |
+ EXPECT_EQ(frames, GetTabURL()); |
} |
// TODO(mpcomplete): enable this when Bug 734372 is fixed: |
@@ -277,119 +257,82 @@ |
// Test that back/forward preserves POST data and document state when navigating |
// across frames (ie, from frame -> nonframe). |
// Hangs, see http://crbug.com/45058. |
-TEST_F(SessionHistoryTest, DISABLED_CrossFrameFormBackForward) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, CrossFrameFormBackForward) { |
// about:blank should be loaded first. |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- GURL frames(test_server_.GetURL("files/session_history/frames.html")); |
- ASSERT_TRUE(tab_->NavigateToURL(frames)); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ GURL frames(GetURL("frames.html")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("frames.html", "bot1")); |
ClickLink("aform"); |
- EXPECT_EQ(L"form", GetTabTitle()); |
+ EXPECT_EQ("form", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
SubmitForm("isubmit"); |
- EXPECT_EQ(L"text=&select=a", GetTabTitle()); |
+ EXPECT_EQ("text=&select=a", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"form", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("form", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
// history is [blank, bot1, *form, post] |
- // ClickLink(L"abot2"); |
- GURL bot2("files/session_history/bot2.html"); |
- ASSERT_TRUE(tab_->NavigateToURL(bot2)); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
- EXPECT_EQ(bot2, GetTabURL()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot2.html", "bot2")); |
// history is [blank, bot1, form, *bot2] |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"form", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
SubmitForm("isubmit"); |
- EXPECT_EQ(L"text=&select=a", GetTabTitle()); |
+ EXPECT_EQ("text=&select=a", GetTabTitle()); |
EXPECT_EQ(frames, GetTabURL()); |
} |
- |
-#if defined(OS_WIN) |
-// See http://crbug.com/61619 |
-#define MAYBE_FragmentBackForward DISABLED_FragmentBackForward |
-#else |
-#define MAYBE_FragmentBackForward FragmentBackForward |
-#endif |
- |
// Test that back/forward entries are created for reference fragment |
// navigations. Bug 730379. |
-TEST_F(SessionHistoryTest, MAYBE_FragmentBackForward) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
+// If this flakes use http://crbug.com/61619. |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, FragmentBackForward) { |
// about:blank should be loaded first. |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- GURL fragment(test_server_.GetURL("files/session_history/fragment.html")); |
- ASSERT_TRUE(tab_->NavigateToURL(fragment)); |
- EXPECT_EQ(L"fragment", GetTabTitle()); |
- EXPECT_EQ(fragment, GetTabURL()); |
+ GURL fragment(GetURL("fragment.html")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("fragment.html", "fragment")); |
- GURL::Replacements ref_params; |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("fragment.html#a", "fragment")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("fragment.html#b", "fragment")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("fragment.html#c", "fragment")); |
- ref_params.SetRef("a", url_parse::Component(0, 1)); |
- GURL fragment_a(fragment.ReplaceComponents(ref_params)); |
- ASSERT_TRUE(tab_->NavigateToURL(fragment_a)); |
- EXPECT_EQ(L"fragment", GetTabTitle()); |
- EXPECT_EQ(fragment_a, GetTabURL()); |
- |
- ref_params.SetRef("b", url_parse::Component(0, 1)); |
- GURL fragment_b(fragment.ReplaceComponents(ref_params)); |
- ASSERT_TRUE(tab_->NavigateToURL(fragment_b)); |
- EXPECT_EQ(L"fragment", GetTabTitle()); |
- EXPECT_EQ(fragment_b, GetTabURL()); |
- |
- ref_params.SetRef("c", url_parse::Component(0, 1)); |
- GURL fragment_c(fragment.ReplaceComponents(ref_params)); |
- ASSERT_TRUE(tab_->NavigateToURL(fragment_c)); |
- EXPECT_EQ(L"fragment", GetTabTitle()); |
- EXPECT_EQ(fragment_c, GetTabURL()); |
- |
// history is [blank, fragment, fragment#a, fragment#b, *fragment#c] |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(fragment_b, GetTabURL()); |
+ GoBack(); |
+ EXPECT_EQ(GetURL("fragment.html#b"), GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(fragment_a, GetTabURL()); |
+ GoBack(); |
+ EXPECT_EQ(GetURL("fragment.html#a"), GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(fragment, GetTabURL()); |
+ GoBack(); |
+ EXPECT_EQ(GetURL("fragment.html"), GetTabURL()); |
- ASSERT_TRUE(tab_->GoForward()); |
- EXPECT_EQ(fragment_a, GetTabURL()); |
+ GoForward(); |
+ EXPECT_EQ(GetURL("fragment.html#a"), GetTabURL()); |
- GURL bot3(test_server_.GetURL("files/session_history/bot3.html")); |
- ASSERT_TRUE(tab_->NavigateToURL(bot3)); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
- EXPECT_EQ(bot3, GetTabURL()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot3.html", "bot3")); |
// history is [blank, fragment, fragment#a, bot3] |
- ASSERT_FALSE(tab_->GoForward()); |
- EXPECT_EQ(bot3, GetTabURL()); |
+ ASSERT_FALSE(browser()->CanGoForward()); |
+ EXPECT_EQ(GetURL("bot3.html"), GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(fragment_a, GetTabURL()); |
+ GoBack(); |
+ EXPECT_EQ(GetURL("fragment.html#a"), GetTabURL()); |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(fragment, GetTabURL()); |
+ GoBack(); |
+ EXPECT_EQ(GetURL("fragment.html"), GetTabURL()); |
} |
// Test that the javascript window.history object works. |
@@ -400,76 +343,64 @@ |
// |
// TODO(brettw) bug 50648: fix flakyness. This test seems like it was failing |
// about 1/4 of the time on Vista by failing to execute JavascriptGo (see bug). |
-TEST_F(SessionHistoryTest, DISABLED_JavascriptHistory) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, JavascriptHistory) { |
// about:blank should be loaded first. |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot1.html"))); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot1.html", "bot1")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot2.html", "bot2")); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot3.html", "bot3")); |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot2.html"))); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
- |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot3.html"))); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
- |
// history is [blank, bot1, bot2, *bot3] |
JavascriptGo("-1"); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
JavascriptGo("-1"); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
JavascriptGo("1"); |
- EXPECT_EQ(L"bot2", GetTabTitle()); |
+ EXPECT_EQ("bot2", GetTabTitle()); |
JavascriptGo("-1"); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
JavascriptGo("2"); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ EXPECT_EQ("bot3", GetTabTitle()); |
// history is [blank, bot1, bot2, *bot3] |
JavascriptGo("-3"); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
JavascriptGo("1"); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
- ASSERT_TRUE(tab_->NavigateToURL( |
- test_server_.GetURL("files/session_history/bot3.html"))); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle("bot3.html", "bot3")); |
// history is [blank, bot1, *bot3] |
- ASSERT_FALSE(tab_->GoForward()); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoForward()); |
+ EXPECT_EQ("bot3", GetTabTitle()); |
JavascriptGo("-1"); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
JavascriptGo("-1"); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+ ASSERT_FALSE(browser()->CanGoBack()); |
+ EXPECT_EQ("about:blank", GetTabTitle()); |
JavascriptGo("1"); |
- EXPECT_EQ(L"bot1", GetTabTitle()); |
+ EXPECT_EQ("bot1", GetTabTitle()); |
JavascriptGo("1"); |
- EXPECT_EQ(L"bot3", GetTabTitle()); |
+ EXPECT_EQ("bot3", GetTabTitle()); |
// TODO(creis): Test that JavaScript history navigations work across tab |
// types. For example, load about:network in a tab, then a real page, then |
@@ -480,88 +411,56 @@ |
} |
// This test is failing consistently. See http://crbug.com/22560 |
-TEST_F(SessionHistoryTest, FAILS_LocationReplace) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, LocationReplace) { |
// Test that using location.replace doesn't leave the title of the old page |
// visible. |
- ASSERT_TRUE(tab_->NavigateToURL(test_server_.GetURL( |
- "files/session_history/replace.html?no-title.html"))); |
- EXPECT_EQ(L"", GetTabTitle()); |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle( |
+ "replace.html?bot1.html", "bot1")); |
} |
-// This test is flaky. See bug 22111. |
-TEST_F(SessionHistoryTest, DISABLED_HistorySearchXSS) { |
- // about:blank should be loaded first. |
- ASSERT_FALSE(tab_->GoBack()); |
- EXPECT_EQ(L"about:blank", GetTabTitle()); |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, LocationChangeInSubframe) { |
+ ASSERT_NO_FATAL_FAILURE(NavigateAndCheckTitle( |
+ "location_redirect.html", "Default Title")); |
- GURL url(std::string(chrome::kChromeUIHistoryURL) + |
- "#q=%3Cimg%20src%3Dx%3Ax%20onerror%3D%22document.title%3D'XSS'%22%3E"); |
- ASSERT_TRUE(tab_->NavigateToURL(url)); |
- // Mainly, this is to ensure we send a synchronous message to the renderer |
- // so that we're not susceptible (less susceptible?) to a race condition. |
- // Should a race condition ever trigger, it won't result in flakiness. |
- int num = tab_->FindInPage(L"<img", FWD, CASE_SENSITIVE, false, NULL); |
- EXPECT_GT(num, 0); |
- EXPECT_EQ(L"History", GetTabTitle()); |
-} |
+ ui_test_utils::NavigateToURL( |
+ browser(), GURL("javascript:void(frames[0].navigate())")); |
+ EXPECT_EQ("foo", GetTabTitle()); |
-#if defined(OS_WIN) |
-// See http://crbug.com/61619 |
-#define MAYBE_LocationChangeInSubframe DISABLED_LocationChangeInSubframe |
-#else |
-#define MAYBE_LocationChangeInSubframe LocationChangeInSubframe |
-#endif |
- |
-TEST_F(SessionHistoryTest, MAYBE_LocationChangeInSubframe) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
- ASSERT_TRUE(tab_->NavigateToURL(test_server_.GetURL( |
- "files/session_history/location_redirect.html"))); |
- EXPECT_EQ(L"Default Title", GetTabTitle()); |
- |
- ASSERT_TRUE(tab_->NavigateToURL(GURL( |
- "javascript:void(frames[0].navigate())"))); |
- EXPECT_EQ(L"foo", GetTabTitle()); |
- |
- ASSERT_TRUE(tab_->GoBack()); |
- EXPECT_EQ(L"Default Title", GetTabTitle()); |
+ GoBack(); |
+ EXPECT_EQ("Default Title", GetTabTitle()); |
} |
// http://code.google.com/p/chromium/issues/detail?id=56267 |
-TEST_F(SessionHistoryTest, DISABLED_HistoryLength) { |
- ASSERT_TRUE(test_server_.Start()); |
- |
+IN_PROC_BROWSER_TEST_F(SessionHistoryTest, HistoryLength) { |
int length; |
- ASSERT_TRUE(tab_->ExecuteAndExtractInt( |
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractInt( |
+ browser()->GetSelectedWebContents()->GetRenderViewHost(), |
L"", L"domAutomationController.send(history.length)", &length)); |
EXPECT_EQ(1, length); |
- ASSERT_TRUE(tab_->NavigateToURL(test_server_.GetURL("files/title1.html"))); |
+ ui_test_utils::NavigateToURL(browser(), GetURL("title1.html")); |
- ASSERT_TRUE(tab_->ExecuteAndExtractInt( |
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractInt( |
+ browser()->GetSelectedWebContents()->GetRenderViewHost(), |
L"", L"domAutomationController.send(history.length)", &length)); |
EXPECT_EQ(2, length); |
// Now test that history.length is updated when the navigation is committed. |
- ASSERT_TRUE(tab_->NavigateToURL(test_server_.GetURL( |
- "files/session_history/record_length.html"))); |
- ASSERT_TRUE(tab_->ExecuteAndExtractInt( |
+ ui_test_utils::NavigateToURL(browser(), GetURL("record_length.html")); |
+ |
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractInt( |
+ browser()->GetSelectedWebContents()->GetRenderViewHost(), |
L"", L"domAutomationController.send(history.length)", &length)); |
EXPECT_EQ(3, length); |
- ASSERT_TRUE(tab_->ExecuteAndExtractInt( |
- L"", L"domAutomationController.send(history_length)", &length)); |
- EXPECT_EQ(3, length); |
- ASSERT_TRUE(tab_->GoBack()); |
- ASSERT_TRUE(tab_->GoBack()); |
+ GoBack(); |
+ GoBack(); |
// Ensure history.length is properly truncated. |
- ASSERT_TRUE(tab_->NavigateToURL(test_server_.GetURL("files/title2.html"))); |
- ASSERT_TRUE(tab_->ExecuteAndExtractInt( |
+ ui_test_utils::NavigateToURL(browser(), GetURL("title2.html")); |
+ |
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractInt( |
+ browser()->GetSelectedWebContents()->GetRenderViewHost(), |
L"", L"domAutomationController.send(history.length)", &length)); |
EXPECT_EQ(2, length); |
} |
- |
-} // namespace |