summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorlaforge@chromium.org <laforge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-16 19:07:10 +0000
committerlaforge@chromium.org <laforge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-16 19:07:10 +0000
commit682f714c3a4864858ff3eabf1f80d4c6fca71647 (patch)
treee25ec3ac0af8e5a014075b9640a66de23a29733d /chrome
parentd5820fa95a63530aacfbd83e42fa2f912262f396 (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc6
-rw-r--r--chrome/browser/renderer_host/render_view_host.h1
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h4
-rw-r--r--chrome/browser/tab_contents/navigation_controller.cc55
-rw-r--r--chrome/browser/tab_contents/navigation_controller.h20
-rw-r--r--chrome/browser/tab_contents/tab_contents.cc5
-rw-r--r--chrome/browser/tab_contents/tab_contents.h1
-rw-r--r--chrome/common/render_messages_internal.h3
-rw-r--r--chrome/renderer/render_view.cc2
-rw-r--r--chrome/test/data/History/history_length_test_page_1.html10
-rw-r--r--chrome/test/data/History/history_length_test_page_11.html35
-rw-r--r--chrome/test/data/History/history_length_test_page_12.html31
-rw-r--r--chrome/test/data/History/history_length_test_page_2.html7
-rw-r--r--chrome/test/data/History/history_length_test_page_21.html33
-rw-r--r--chrome/test/data/History/history_length_test_page_22.html31
-rw-r--r--chrome/test/data/History/history_length_test_page_3.html25
-rw-r--r--chrome/test/data/History/history_length_test_page_4.html18
-rw-r--r--chrome/test/ui/history_uitest.cc63
18 files changed, 33 insertions, 317 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index fec161a..9aa1d0a 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -775,8 +775,6 @@ void RenderViewHost::OnMessageReceived(const IPC::Message& msg) {
OnMsgDOMUISend)
IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardMessageToExternalHost,
OnMsgForwardMessageToExternalHost)
- IPC_MESSAGE_HANDLER(ViewHostMsg_DocumentLoadedInFrame,
- OnMsgDocumentLoadedInFrame)
IPC_MESSAGE_HANDLER(ViewHostMsg_GoToEntryAtOffset,
OnMsgGoToEntryAtOffset)
IPC_MESSAGE_HANDLER(ViewHostMsg_SetTooltipText, OnMsgSetTooltipText)
@@ -1154,10 +1152,6 @@ void RenderViewHost::OnMsgForwardMessageToExternalHost(
delegate_->ProcessExternalHostMessage(message, origin, target);
}
-void RenderViewHost::OnMsgDocumentLoadedInFrame() {
- delegate_->DocumentLoadedInFrame();
-}
-
void RenderViewHost::DisassociateFromPopupCount() {
Send(new ViewMsg_DisassociateFromPopupCount(routing_id()));
}
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 8773323..92b05b8 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -499,7 +499,6 @@ class RenderViewHost : public RenderWidgetHost {
void OnMsgForwardMessageToExternalHost(const std::string& message,
const std::string& origin,
const std::string& target);
- void OnMsgDocumentLoadedInFrame();
void OnMsgGoToEntryAtOffset(int offset);
void OnMsgSetTooltipText(const std::wstring& tooltip_text);
void OnMsgSelectionChanged(const std::string& text);
diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h
index 52a72c7..fb41a9c 100644
--- a/chrome/browser/renderer_host/render_view_host_delegate.h
+++ b/chrome/browser/renderer_host/render_view_host_delegate.h
@@ -288,10 +288,6 @@ class RenderViewHostDelegate {
const std::string& target) {
}
- // A document has been loaded in a frame.
- virtual void DocumentLoadedInFrame() {
- }
-
// Navigate to the history entry for the given offset from the current
// position within the NavigationController. Makes no change if offset is
// not valid.
diff --git a/chrome/browser/tab_contents/navigation_controller.cc b/chrome/browser/tab_contents/navigation_controller.cc
index b5ae80b..eb6441a 100644
--- a/chrome/browser/tab_contents/navigation_controller.cc
+++ b/chrome/browser/tab_contents/navigation_controller.cc
@@ -90,12 +90,6 @@ bool AreURLsInPageNavigation(const GURL& existing_url, const GURL& new_url) {
new_url.ReplaceComponents(replacements);
}
-// Navigation within this limit since the last document load is considered to
-// be automatic (i.e., machine-initiated) rather than user-initiated unless
-// a user gesture has been observed.
-const base::TimeDelta kMaxAutoNavigationTimeDelta =
- base::TimeDelta::FromSeconds(5);
-
} // namespace
// NavigationController ---------------------------------------------------
@@ -430,14 +424,6 @@ const SkBitmap& NavigationController::GetLazyFavIcon() const {
}
}
-void NavigationController::DocumentLoadedInFrame() {
- last_document_loaded_ = base::TimeTicks::Now();
-}
-
-void NavigationController::OnUserGesture() {
- user_gesture_observed_ = true;
-}
-
bool NavigationController::RendererDidNavigate(
const ViewHostMsg_FrameNavigate_Params& params,
LoadCommittedDetails* details) {
@@ -519,8 +505,6 @@ bool NavigationController::RendererDidNavigate(
details->http_status_code = params.http_status_code;
NotifyNavigationEntryCommitted(details);
- user_gesture_observed_ = false;
-
return true;
}
@@ -601,21 +585,6 @@ NavigationType::Type NavigationController::ClassifyNavigation(
return NavigationType::EXISTING_PAGE;
}
-bool NavigationController::IsRedirect(
- const ViewHostMsg_FrameNavigate_Params& params) {
- // For main frame transition, we judge by params.transition.
- // Otherwise, by params.redirects.
- if (PageTransition::IsMainFrame(params.transition)) {
- return PageTransition::IsRedirect(params.transition);
- }
- return params.redirects.size() > 1;
-}
-
-bool NavigationController::IsLikelyAutoNavigation(base::TimeTicks now) {
- return !user_gesture_observed_ &&
- (now - last_document_loaded_) < kMaxAutoNavigationTimeDelta;
-}
-
void NavigationController::RendererDidNavigateToNewPage(
const ViewHostMsg_FrameNavigate_Params& params) {
NavigationEntry* new_entry;
@@ -642,14 +611,11 @@ void NavigationController::RendererDidNavigateToNewPage(
new_entry->set_site_instance(tab_contents_->GetSiteInstance());
new_entry->set_has_post_data(params.is_post);
- // If the current entry is a redirection source and the redirection has
- // occurred within kMaxAutoNavigationTimeDelta since the last document load,
- // this is likely to be machine-initiated redirect and the entry needs to be
- // replaced with the new entry to avoid unwanted redirections in navigating
- // backward/forward.
- // Otherwise, just insert the new entry.
+ // If the current entry is a redirection source, it needs to be replaced with
+ // the new entry to avoid unwanted redirections in navigating backward /
+ // forward. Otherwise, just insert the new entry.
InsertOrReplaceEntry(new_entry,
- IsRedirect(params) && IsLikelyAutoNavigation(base::TimeTicks::Now()));
+ PageTransition::IsRedirect(new_entry->transition_type()));
}
void NavigationController::RendererDidNavigateToExistingPage(
@@ -721,22 +687,11 @@ void NavigationController::RendererDidNavigateInPage(
NavigationEntry* new_entry = new NavigationEntry(*existing_entry);
new_entry->set_page_id(params.page_id);
new_entry->set_url(params.url);
- InsertOrReplaceEntry(new_entry,
- IsRedirect(params) && IsLikelyAutoNavigation(base::TimeTicks::Now()));
+ InsertOrReplaceEntry(new_entry, false);
}
void NavigationController::RendererDidNavigateNewSubframe(
const ViewHostMsg_FrameNavigate_Params& params) {
- if (PageTransition::StripQualifier(params.transition) ==
- PageTransition::AUTO_SUBFRAME) {
- // This is not user-initiated. Ignore.
- return;
- }
- if (IsRedirect(params)) {
- // This is redirect. Ignore.
- return;
- }
-
// Manual subframe navigations just get the current entry cloned so the user
// can go back or forward to it. The actual subframe information will be
// stored in the page state for each of those entries. This happens out of
diff --git a/chrome/browser/tab_contents/navigation_controller.h b/chrome/browser/tab_contents/navigation_controller.h
index 8419e0b..5a7fba9 100644
--- a/chrome/browser/tab_contents/navigation_controller.h
+++ b/chrome/browser/tab_contents/navigation_controller.h
@@ -11,7 +11,6 @@
#include "base/linked_ptr.h"
#include "base/string16.h"
-#include "base/time.h"
#include "googleurl/src/gurl.h"
#include "chrome/browser/sessions/session_id.h"
#include "chrome/browser/ssl/ssl_manager.h"
@@ -289,12 +288,6 @@ class NavigationController {
return tab_contents_;
}
- // Called when a document has been loaded in a frame.
- void DocumentLoadedInFrame();
-
- // Called when the user presses the mouse, enter key or space bar.
- void OnUserGesture();
-
// For use by TabContents ----------------------------------------------------
// Handles updating the navigation state after the renderer has navigated.
@@ -439,13 +432,6 @@ class NavigationController {
// Discards the transient entry.
void DiscardTransientEntry();
- // Returns true if the navigation is redirect.
- bool IsRedirect(const ViewHostMsg_FrameNavigate_Params& params);
-
- // Returns true if the navigation is likley to be automatic rather than
- // user-initiated.
- bool IsLikelyAutoNavigation(base::TimeTicks now);
-
// ---------------------------------------------------------------------------
// The user profile associated with this controller
@@ -505,12 +491,6 @@ class NavigationController {
// Unique identifier of the window we're in. Used by session restore.
SessionID window_id_;
- // The time ticks at which the last document was loaded.
- base::TimeTicks last_document_loaded_;
-
- // Whether a user gesture has been observed since the last navigation.
- bool user_gesture_observed_;
-
// Should Reload check for post data? The default is true, but is set to false
// when testing.
static bool check_for_repost_;
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index ebea024..8965085 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -1841,10 +1841,6 @@ void TabContents::ProcessDOMUIMessage(const std::string& message,
render_manager_.dom_ui()->ProcessDOMUIMessage(message, content);
}
-void TabContents::DocumentLoadedInFrame() {
- controller_.DocumentLoadedInFrame();
-}
-
void TabContents::ProcessExternalHostMessage(const std::string& message,
const std::string& origin,
const std::string& target) {
@@ -2181,7 +2177,6 @@ void TabContents::OnUserGesture() {
if (drm)
drm->OnUserGesture(this);
#endif
- controller_.OnUserGesture();
}
void TabContents::OnFindReply(int request_id,
diff --git a/chrome/browser/tab_contents/tab_contents.h b/chrome/browser/tab_contents/tab_contents.h
index d57f221..f32bfb7 100644
--- a/chrome/browser/tab_contents/tab_contents.h
+++ b/chrome/browser/tab_contents/tab_contents.h
@@ -783,7 +783,6 @@ class TabContents : public PageNavigator,
int automation_id);
virtual void ProcessDOMUIMessage(const std::string& message,
const std::string& content);
- virtual void DocumentLoadedInFrame();
virtual void ProcessExternalHostMessage(const std::string& message,
const std::string& origin,
const std::string& target);
diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h
index 16d5fb9..abd7b7b 100644
--- a/chrome/common/render_messages_internal.h
+++ b/chrome/common/render_messages_internal.h
@@ -687,9 +687,6 @@ IPC_BEGIN_MESSAGES(ViewHost)
int32 /* page_id */,
std::string /* state */)
- // Notifies the browser that a document has been loaded in a frame.
- IPC_MESSAGE_ROUTED0(ViewHostMsg_DocumentLoadedInFrame)
-
// Changes the title for the page in the UI when the page is navigated or the
// title changes.
// TODO(darin): use a UTF-8 string to reduce data size
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index ebd4013..b99dc95 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -1347,8 +1347,6 @@ void RenderView::DidFailLoadWithError(WebView* webview,
void RenderView::DidFinishDocumentLoadForFrame(WebView* webview,
WebFrame* frame) {
- Send(new ViewHostMsg_DocumentLoadedInFrame(routing_id_));
-
// The document has now been fully loaded. Scan for password forms to be
// sent up to the browser.
SendPasswordForms(frame);
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());
-}