From b80286215906c1bace028eace8176242ec873deb Mon Sep 17 00:00:00 2001 From: "yuzo@chromium.org" Date: Mon, 15 Jun 2009 08:20:17 +0000 Subject: Consider a redirect following user gesture as user-initiated in maintaining navigation entries. Also, ignore redirect- or machine-initiated- new subframe navigations. The current code treats all redirects as machine-initiated 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 user-initiated navigation (Bug 11896). This change assumes that a machine-initiated redirect happens within 300ms since the last document load was completed, while a user-initiated 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 user-initiated. 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 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18373 0039d316-1c4b-4281-b951-d872f2087c98 --- .../data/History/history_length_test_page_1.html | 10 ++++--- .../data/History/history_length_test_page_11.html | 35 ++++++++++++++++++++++ .../data/History/history_length_test_page_12.html | 31 +++++++++++++++++++ .../data/History/history_length_test_page_2.html | 7 +++-- .../data/History/history_length_test_page_21.html | 33 ++++++++++++++++++++ .../data/History/history_length_test_page_22.html | 31 +++++++++++++++++++ .../data/History/history_length_test_page_3.html | 25 +++++++++------- .../data/History/history_length_test_page_4.html | 18 ++++++----- 8 files changed, 164 insertions(+), 26 deletions(-) create mode 100644 chrome/test/data/History/history_length_test_page_11.html create mode 100644 chrome/test/data/History/history_length_test_page_12.html create mode 100644 chrome/test/data/History/history_length_test_page_21.html create mode 100644 chrome/test/data/History/history_length_test_page_22.html (limited to 'chrome/test/data/History') 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 b0bfdaf..34fa74b 100644 --- a/chrome/test/data/History/history_length_test_page_1.html +++ b/chrome/test/data/History/history_length_test_page_1.html @@ -13,17 +13,18 @@ History Test Page 1.... function onLoad() { if (readCookie(navigate_backward_cookie) != null) { - setTimeout(OnNavigateBackward, 100); + setTimeout(OnNavigateBackward, 50); return true; } - setTimeout(OnInitialLoad, 100); + setTimeout(OnInitialLoad, 50); return true; } function OnNavigateBackward() { if (window.history.length != 2) { onFailure("History_Length_Test_3", 1, - "History length mismatch on navigate backward at page 1"); + "History length mismatch on navigate backward at page 1: " + + window.history.length); return false; } // Navigate forward from this point on. @@ -35,7 +36,8 @@ function OnNavigateBackward() { function OnInitialLoad() { if (window.history.length != 2) { onFailure("History_Length_Test_1", 1, - "History length mismatch on initial load at page 1"); + "History length mismatch on initial load at page 1: " + + window.history.length); 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 new file mode 100644 index 0000000..8e2d4ba --- /dev/null +++ b/chrome/test/data/History/history_length_test_page_11.html @@ -0,0 +1,35 @@ + +History Test Page 11 + + + + +
+History Test Page 11.... +
+ + + + diff --git a/chrome/test/data/History/history_length_test_page_12.html b/chrome/test/data/History/history_length_test_page_12.html new file mode 100644 index 0000000..65c8171 --- /dev/null +++ b/chrome/test/data/History/history_length_test_page_12.html @@ -0,0 +1,31 @@ + +History Test Page 12 + + + + +
+History Test Page 12.... +
+ + + + 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 edcecfe..b40912e 100644 --- a/chrome/test/data/History/history_length_test_page_2.html +++ b/chrome/test/data/History/history_length_test_page_2.html @@ -18,19 +18,20 @@ function onLoad() { "Page 2 must not be visited in navigating backward/forward"); return false; } - setTimeout(OnInitialLoad, 100); + setTimeout(OnInitialLoad, 50); return true; } function OnInitialLoad() { if (window.history.length != 3) { onFailure("History_Length_Test_2", 1, - "History length mismatch on initial load at page 2"); + "History length mismatch on initial load at page 2: " + + window.history.length); return false; } // Redirect to page 3. window.location.href = "history_length_test_page_3.html"; - return true; + return true; } diff --git a/chrome/test/data/History/history_length_test_page_21.html b/chrome/test/data/History/history_length_test_page_21.html new file mode 100644 index 0000000..f9a14c1 --- /dev/null +++ b/chrome/test/data/History/history_length_test_page_21.html @@ -0,0 +1,33 @@ + +History Test Page 21 + + + + +
+History Test Page 21.... +
+ + + + \ 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 new file mode 100644 index 0000000..8b4ed67 --- /dev/null +++ b/chrome/test/data/History/history_length_test_page_22.html @@ -0,0 +1,31 @@ + +History Test Page 22 + + + + +
+History Test Page 22.... +
+ + + + \ 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 4c9a0a0..32de5aa 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 @@ History Test Page 3 - + @@ -13,45 +13,48 @@ History Test Page 3.... function onLoad() { if (readCookie(navigate_forward_cookie) != null) { - setTimeout(OnNavigateForward, 100); + setTimeout(OnNavigateForward, 50); return true; } - if (readCookie(navigate_backward_cookie)) { - setTimeout(OnNavigateBackward, 100); + if (readCookie(navigate_backward_cookie) != null) { + setTimeout(OnNavigateBackward, 50); return true; } - setTimeout(OnInitialLoad, 100); + setTimeout(OnInitialLoad, 50); return true; } function OnInitialLoad() { if (window.history.length != 3) { onFailure("History_Length_Test_2", 1, - "History length mismatch on initial load at page 3"); + "History length mismatch on initial load at page 3: " + + window.history.length); 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"); + "History length mismatch on navigating backward at page 3: " + + window.history.length); 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"); + "History length mismatch on navigating forward at page 3: " + + window.history.length); return false; } window.history.forward(); - return true; + return true; } 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 a72889c..3e6b8a0 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 @@ History Test Page 4 - + @@ -9,33 +9,35 @@ History Test Page 4.... - + \ No newline at end of file -- cgit v1.1