Consider a redirect following user gesture as user-initiated in maintaining
navigation entries. Also, ignore redirect- or machine-initiated- new subframe

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.,, 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:

TEST=Open and observe it redirects to . Hit Back button and observe
the former URL is not visited. Open and
click tabs inside the page, and try hitting Back and Forward to see if the
navigation is right. Open, search for
something, click on a result item, and try hitting Back.


git-svn-id: svn:// 0039d316-1c4b-4281-b951-d872f2087c98
18 files changed