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 | |
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')
9 files changed, 28 insertions, 225 deletions
diff --git a/chrome/test/data/History/history_length_test_page_1.html b/chrome/test/data/History/history_length_test_page_1.html index 34fa74b..b0bfdaf 100644 --- a/chrome/test/data/History/history_length_test_page_1.html +++ b/chrome/test/data/History/history_length_test_page_1.html @@ -13,18 +13,17 @@ History Test Page 1.... function onLoad() { if (readCookie(navigate_backward_cookie) != null) { - setTimeout(OnNavigateBackward, 50); + setTimeout(OnNavigateBackward, 100); return true; } - setTimeout(OnInitialLoad, 50); + setTimeout(OnInitialLoad, 100); return true; } function OnNavigateBackward() { if (window.history.length != 2) { onFailure("History_Length_Test_3", 1, - "History length mismatch on navigate backward at page 1: " + - window.history.length); + "History length mismatch on navigate backward at page 1"); return false; } // Navigate forward from this point on. @@ -36,8 +35,7 @@ function OnNavigateBackward() { function OnInitialLoad() { if (window.history.length != 2) { onFailure("History_Length_Test_1", 1, - "History length mismatch on initial load at page 1: " + - window.history.length); + "History length mismatch on initial load at page 1"); return false; } onSuccess("History_Length_Test_1", 1); diff --git a/chrome/test/data/History/history_length_test_page_11.html b/chrome/test/data/History/history_length_test_page_11.html deleted file mode 100644 index 8e2d4ba..0000000 --- a/chrome/test/data/History/history_length_test_page_11.html +++ /dev/null @@ -1,35 +0,0 @@ -<html xmlns="http://www.w3.org/1999/xhtml"> -<head><title>History Test Page 11</title> -<script type="text/javascript" src="HistoryHelper.js"></script> -</head> - -<body onload="onLoad();"> -<div id="statusPanel" style="border: 1px solid red; width: 100%"> -History Test Page 11.... -</div> -</body> - -<script type="text/javascript"> - -function onLoad() { - setTimeout(OnInitialLoad, 50); - return true; -} - -function OnInitialLoad() { - if (window.history.length != 2) { - onFailure("History_Length_Test_11", 1, - "History length mismatch on initial load at page 11: " + - window.history.length); - return false; - } - onSuccess("History_Length_Test_11", 1); - return true; -} - -function redirectToPage12() { - window.location.href = "history_length_test_page_12.html"; -} - -</script> -</html> diff --git a/chrome/test/data/History/history_length_test_page_12.html b/chrome/test/data/History/history_length_test_page_12.html deleted file mode 100644 index 65c8171..0000000 --- a/chrome/test/data/History/history_length_test_page_12.html +++ /dev/null @@ -1,31 +0,0 @@ -<html xmlns="http://www.w3.org/1999/xhtml"> -<head><title>History Test Page 12</title> -<script type="text/javascript" src="HistoryHelper.js"></script> -</head> - -<body onload="onLoad();"> -<div id="statusPanel" style="border: 1px solid red; width: 100%"> -History Test Page 12.... -</div> -</body> - -<script type="text/javascript"> - -function onLoad() { - setTimeout(OnInitialLoad, 50); - return true; -} - -function OnInitialLoad() { - if (window.history.length != 3) { - onFailure("History_Length_Test_12", 1, - "History length mismatch on initial load at page 12: " + - window.history.length); - return false; - } - onSuccess("History_Length_Test_12", 1); - return true; -} - -</script> -</html> diff --git a/chrome/test/data/History/history_length_test_page_2.html b/chrome/test/data/History/history_length_test_page_2.html index b40912e..edcecfe 100644 --- a/chrome/test/data/History/history_length_test_page_2.html +++ b/chrome/test/data/History/history_length_test_page_2.html @@ -18,20 +18,19 @@ function onLoad() { "Page 2 must not be visited in navigating backward/forward"); return false; } - setTimeout(OnInitialLoad, 50); + setTimeout(OnInitialLoad, 100); return true; } function OnInitialLoad() { if (window.history.length != 3) { onFailure("History_Length_Test_2", 1, - "History length mismatch on initial load at page 2: " + - window.history.length); + "History length mismatch on initial load at page 2"); return false; } // Redirect to page 3. window.location.href = "history_length_test_page_3.html"; - return true; + return true; } </script> diff --git a/chrome/test/data/History/history_length_test_page_21.html b/chrome/test/data/History/history_length_test_page_21.html deleted file mode 100644 index f9a14c1..0000000 --- a/chrome/test/data/History/history_length_test_page_21.html +++ /dev/null @@ -1,33 +0,0 @@ -<html xmlns="http://www.w3.org/1999/xhtml"> -<head><title>History Test Page 21</title> -<script type="text/javascript" src="HistoryHelper.js"></script> -</head> - -<body onload="onLoad();"> -<div id="statusPanel" style="border: 1px solid red; width: 100%"> -History Test Page 21.... -</div> -</body> - -<script type="text/javascript"> - -function onLoad() { - // Move to page 22 after 6 sec, to mimic user-initiated navigation. - setTimeout(OnInitialLoad, 6000); - return true; -} - -function OnInitialLoad() { - if (window.history.length != 2) { - onFailure("History_Length_Test_21", 1, - "History length mismatch on initial load at page 21: " + - window.history.length); - return false; - } - // Redirect to page 22. - window.location.href = "history_length_test_page_22.html"; - return true; -} - -</script> -</html>
\ No newline at end of file diff --git a/chrome/test/data/History/history_length_test_page_22.html b/chrome/test/data/History/history_length_test_page_22.html deleted file mode 100644 index 8b4ed67..0000000 --- a/chrome/test/data/History/history_length_test_page_22.html +++ /dev/null @@ -1,31 +0,0 @@ -<html xmlns="http://www.w3.org/1999/xhtml"> -<head><title>History Test Page 22</title> -<script type="text/javascript" src="HistoryHelper.js"></script> -</head> - -<body onload="onLoad();"> -<div id="statusPanel" style="border: 1px solid red; width: 100%"> -History Test Page 22.... -</div> -</body> - -<script type="text/javascript"> - -function onLoad() { - setTimeout(OnInitialLoad, 50); - return true; -} - -function OnInitialLoad() { - if (window.history.length != 3) { - onFailure("History_Length_Test_21", 1, - "History length mismatch on initial load at page 22: " + - window.history.length); - return false; - } - onSuccess("History_Length_Test_21", 1); - return true; -} - -</script> -</html>
\ No newline at end of file diff --git a/chrome/test/data/History/history_length_test_page_3.html b/chrome/test/data/History/history_length_test_page_3.html index 32de5aa..4c9a0a0 100644 --- a/chrome/test/data/History/history_length_test_page_3.html +++ b/chrome/test/data/History/history_length_test_page_3.html @@ -1,6 +1,6 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>History Test Page 3</title> -<script type="text/javascript" src="HistoryHelper.js"></script> +<script src="HistoryHelper.js"></script> </head> <body onload="onLoad();"> @@ -13,48 +13,45 @@ History Test Page 3.... function onLoad() { if (readCookie(navigate_forward_cookie) != null) { - setTimeout(OnNavigateForward, 50); + setTimeout(OnNavigateForward, 100); return true; } - if (readCookie(navigate_backward_cookie) != null) { - setTimeout(OnNavigateBackward, 50); + if (readCookie(navigate_backward_cookie)) { + setTimeout(OnNavigateBackward, 100); return true; } - setTimeout(OnInitialLoad, 50); + setTimeout(OnInitialLoad, 100); return true; } function OnInitialLoad() { if (window.history.length != 3) { onFailure("History_Length_Test_2", 1, - "History length mismatch on initial load at page 3: " + - window.history.length); + "History length mismatch on initial load at page 3"); return false; } onSuccess("History_Length_Test_2", 1); - return true; + return true; } function OnNavigateBackward() { if (window.history.length != 3) { onFailure("History_Length_Test_3", 1, - "History length mismatch on navigating backward at page 3: " + - window.history.length); + "History length mismatch on navigating backward at page 3"); return false; } window.history.back(); - return true; + return true; } function OnNavigateForward() { if (window.history.length != 3) { onFailure("History_Length_Test_3", 1, - "History length mismatch on navigating forward at page 3: " + - window.history.length); + "History length mismatch on navigating forward at page 3"); return false; } window.history.forward(); - return true; + return true; } </script> diff --git a/chrome/test/data/History/history_length_test_page_4.html b/chrome/test/data/History/history_length_test_page_4.html index 3e6b8a0..a72889c 100644 --- a/chrome/test/data/History/history_length_test_page_4.html +++ b/chrome/test/data/History/history_length_test_page_4.html @@ -1,6 +1,6 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>History Test Page 4</title> -<script type="text/javascript" src="HistoryHelper.js"></script> +<script src="HistoryHelper.js"></script> </head> <body onload="onLoad();"> @@ -9,35 +9,33 @@ History Test Page 4.... </div> </body> -<script type="text/javascript"> +<SCRIPT type="text/javascript"> function onLoad() { if (readCookie(navigate_forward_cookie) != null) { - setTimeout(OnNavigateForward, 50); + setTimeout(OnNavigateForward, 100); return true; } - setTimeout(OnInitialLoad, 50); + setTimeout(OnInitialLoad, 100); return true; } function OnInitialLoad() { if (window.history.length != 4) { onFailure("History_Length_Test_3", 1, - "History length mismatch on initial load at page 4: " + - window.history.length); + "History length mismatch on initial load at page 4"); return false; } // Navigate backward from this point on. createCookie(navigate_backward_cookie, "1", "1"); window.history.back(); - return true; + return true; } function OnNavigateForward() { if (window.history.length != 4) { onFailure("History_Length_Test_3", 1, - "History length mismatch on navigating forward at page 4: " + - window.history.length); + "History length mismatch on navigating forward at page 4"); return false; } eraseCookie(navigate_forward_cookie); @@ -46,5 +44,5 @@ function OnNavigateForward() { return true; } -</script> +</SCRIPT> </html>
\ No newline at end of file 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()); -} |