diff options
author | laforge@chromium.org <laforge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-16 19:07:10 +0000 |
---|---|---|
committer | laforge@chromium.org <laforge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-16 19:07:10 +0000 |
commit | 682f714c3a4864858ff3eabf1f80d4c6fca71647 (patch) | |
tree | e25ec3ac0af8e5a014075b9640a66de23a29733d /chrome/test/ui/history_uitest.cc | |
parent | d5820fa95a63530aacfbd83e42fa2f912262f396 (diff) | |
download | chromium_src-682f714c3a4864858ff3eabf1f80d4c6fca71647.zip chromium_src-682f714c3a4864858ff3eabf1f80d4c6fca71647.tar.gz chromium_src-682f714c3a4864858ff3eabf1f80d4c6fca71647.tar.bz2 |
Revert 18373 - Consider a redirect following user gesture as userinitiated in maintaining
navigation entries. Also, ignore redirect or machineinitiated new subframe
navigations.
The current code treats all redirects as machineinitiated in processing
navigation to a new page (to fix Bugs 9663 and 10531). This is not always
appropriate, because some sites, e.g., www.google.com/ig, use redirect to
implement userinitiated navigation (Bug 11896).
This change assumes that a machineinitiated redirect happens within 300ms
since the last document load was completed, while a userinitiated one
happens later.
This assumption is not always correct, e.g., a user may cause transition within
300ms. But I cannot think of any better ways to tell if a redirect is machine
initiated or userinitiated.
I believe this change works good enough, at least better than the status quo.
Review URL: http://codereview.chromium.org/115919
TEST=Open http://www.hp.com and observe it redirects to
http://www.hp.com/#Product . Hit Back button and observe
the former URL is not visited. Open http://www.google.com/ig and
click tabs inside the page, and try hitting Back and Forward to see if the
navigation is right. Open http://www.google.com/codesearch, search for
something, click on a result item, and try hitting Back.
BUG=11896,12820
TBR=yuzo@chromium.org
Review URL: http://codereview.chromium.org/125202
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18512 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/ui/history_uitest.cc')
-rw-r--r-- | chrome/test/ui/history_uitest.cc | 63 |
1 files changed, 2 insertions, 61 deletions
diff --git a/chrome/test/ui/history_uitest.cc b/chrome/test/ui/history_uitest.cc index e2ba8a4..11be6ff 100644 --- a/chrome/test/ui/history_uitest.cc +++ b/chrome/test/ui/history_uitest.cc @@ -30,16 +30,10 @@ // History UI tests #include "base/file_util.h" -#include "base/gfx/point.h" -#include "base/gfx/rect.h" -#include "chrome/browser/view_ids.h" #include "chrome/common/chrome_paths.h" -#include "chrome/test/automation/browser_proxy.h" #include "chrome/test/automation/tab_proxy.h" -#include "chrome/test/automation/window_proxy.h" #include "chrome/test/ui/ui_test.h" #include "net/base/net_util.h" -#include "views/event.h" const char kTestCompleteCookie[] = "status"; const char kTestCompleteSuccess[] = "OK"; @@ -54,11 +48,7 @@ class HistoryTester : public UITest { } }; -// TODO(yuzo): Fix the following flaky (hence disabled) tests. -// These tests are flaky because automatic and user-initiated transitions are -// distinguished based on the interval between page load and redirect. - -TEST_F(HistoryTester, DISABLED_VerifyHistoryLength) { +TEST_F(HistoryTester, VerifyHistoryLength) { // Test the history length for the following page transitions. // // Test case 1: @@ -76,7 +66,7 @@ TEST_F(HistoryTester, DISABLED_VerifyHistoryLength) { GURL url_1 = GetTestUrl(L"History", test_case_1); NavigateToURL(url_1); WaitForFinish("History_Length_Test_1", "1", url_1, kTestCompleteCookie, - kTestCompleteSuccess, action_max_timeout_ms()); + kTestCompleteSuccess, action_max_timeout_ms()); // Test case 2 std::wstring test_case_2 = L"history_length_test_page_2.html"; @@ -92,52 +82,3 @@ TEST_F(HistoryTester, DISABLED_VerifyHistoryLength) { WaitForFinish("History_Length_Test_3", "1", url_3, kTestCompleteCookie, kTestCompleteSuccess, action_max_timeout_ms()); } - -#if defined(OS_WIN) -// This test requires simulated mouse click, which is possible only for Windows. -TEST_F(HistoryTester, DISABLED_ConsiderRedirectAfterGestureAsUserInitiated) { - // Test the history length for the following page transition. - // - // -open-> Page 11 -slow_redirect-> Page 12. - // - // If redirect occurs after a user gesture, e.g., mouse click, the - // redirect is more likely to be user-initiated rather than automatic. - // Therefore, Page 11 should be in the history in addition to Page 12. - - std::wstring test_case = L"history_length_test_page_11.html"; - GURL url = GetTestUrl(L"History", test_case); - NavigateToURL(url); - WaitForFinish("History_Length_Test_11", "1", url, kTestCompleteCookie, - kTestCompleteSuccess, action_max_timeout_ms()); - - // Simulate click. This only works for Windows. - scoped_refptr<BrowserProxy> browser = automation()->GetBrowserWindow(0); - scoped_refptr<WindowProxy> window = browser->GetWindow(); - gfx::Rect tab_view_bounds; - ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER, &tab_view_bounds, - true)); - POINT point(tab_view_bounds.CenterPoint().ToPOINT()); - ASSERT_TRUE( - window->SimulateOSClick(point, views::Event::EF_LEFT_BUTTON_DOWN)); - - NavigateToURL(GURL("javascript:redirectToPage12()")); - WaitForFinish("History_Length_Test_12", "1", url, kTestCompleteCookie, - kTestCompleteSuccess, action_max_timeout_ms()); -} -#endif // defined(OS_WIN) - -TEST_F(HistoryTester, DISABLED_ConsiderSlowRedirectAsUserInitiated) { - // Test the history length for the following page transition. - // - // -open-> Page 21 -redirect-> Page 22. - // - // If redirect occurs more than 5 seconds later after the page is loaded, - // the redirect is likely to be user-initiated. - // Therefore, Page 21 should be in the history in addition to Page 22. - - std::wstring test_case = L"history_length_test_page_21.html"; - GURL url = GetTestUrl(L"History", test_case); - NavigateToURL(url); - WaitForFinish("History_Length_Test_21", "1", url, kTestCompleteCookie, - kTestCompleteSuccess, action_max_timeout_ms()); -} |