Chrome Version: 57.0.2973.0
OS: Win10, Linux
What steps will reproduce the problem?
(1) Start Chrome with --site-per-process and run the testserver.
(2) Visit http://127.0.0.1:8080/
(3) In DevTools, run:
history.replaceState({}, "", "http://127.0.0.1:8080/server-redirect?https://csreis.github.io")
(4) Visit http://127.0.0.1:8080/foo
(5) Go back, which causes a cross-site redirect to https://csreis.github.io.
What is the expected result?
The forward button should be enabled and allow you to go forward to http://127.0.0.1:8080/foo. (This is what happens without --site-per-process.)
What happens instead?
The forward history is cleared and you can't go forward. (It does correctly swap processes on the redirect, though.)
This happens because the navigation is incorrectly classified as NAVIGATION_TYPE_NEW_PAGE after the redirect, rather than NAVIGATION_TYPE_EXISTING_PAGE. (That also means we don't hit the DCHECK in RendererDidNavigateToExistingPage which says the SiteInstance of the NavigationEntry shouldn't change, but jam@ just fixed that DCHECK in r442053.)
Comment 1 by creis@chromium.org
, Nov 10 2017