| Index: content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| diff --git a/content/browser/frame_host/navigation_controller_impl_browsertest.cc b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| index c9fa5bdc0db9d7ed2c65fe6bed4fbb383cfe99c2..b3f5fa830151fab9f205141c99cfb29f418e4bc9 100644
|
| --- a/content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| +++ b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
|
| @@ -209,6 +209,7 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, UniqueIDsOnFrames) {
|
| // The main frame's nav_entry_id should match the last committed entry.
|
| int unique_id = controller.GetLastCommittedEntry()->GetUniqueID();
|
| EXPECT_EQ(unique_id, root->current_frame_host()->nav_entry_id());
|
| + EXPECT_EQ(1, controller.GetEntryCount());
|
|
|
| // The about:blank iframe should have inherited the same nav_entry_id.
|
| EXPECT_EQ(unique_id, root->child_at(0)->current_frame_host()->nav_entry_id());
|
| @@ -218,25 +219,29 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, UniqueIDsOnFrames) {
|
| "foo.com", "/navigation_controller/simple_page_1.html"));
|
| NavigateFrameToURL(root->child_at(0), foo_url);
|
| EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
|
| + EXPECT_EQ(1, controller.GetEntryCount());
|
|
|
| - // The unique ID should have stayed the same for the auto-subframe navigation,
|
| - // since the new page replaces the initial about:blank page in the subframe.
|
| - EXPECT_EQ(unique_id, controller.GetLastCommittedEntry()->GetUniqueID());
|
| - EXPECT_EQ(unique_id, root->current_frame_host()->nav_entry_id());
|
| - EXPECT_EQ(unique_id, root->child_at(0)->current_frame_host()->nav_entry_id());
|
| + // The unique ID should have updated for the new subframe navigation, even
|
| + // though new page replaces the initial about:blank page in the subframe.
|
| + int unique_id2 = controller.GetLastCommittedEntry()->GetUniqueID();
|
| + EXPECT_NE(unique_id, unique_id2);
|
| + EXPECT_EQ(unique_id2, root->current_frame_host()->nav_entry_id());
|
| + EXPECT_EQ(unique_id2,
|
| + root->child_at(0)->current_frame_host()->nav_entry_id());
|
|
|
| // Navigating in the subframe again should create a new entry.
|
| GURL foo_url2(embedded_test_server()->GetURL(
|
| "foo.com", "/navigation_controller/simple_page_2.html"));
|
| NavigateFrameToURL(root->child_at(0), foo_url2);
|
| EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
|
| - int unique_id2 = controller.GetLastCommittedEntry()->GetUniqueID();
|
| - EXPECT_NE(unique_id, unique_id2);
|
| + EXPECT_EQ(2, controller.GetEntryCount());
|
| + int unique_id3 = controller.GetLastCommittedEntry()->GetUniqueID();
|
| + EXPECT_NE(unique_id2, unique_id3);
|
|
|
| // The unique ID should have updated for the current RenderFrameHost in both
|
| // frames, not just the subframe.
|
| - EXPECT_EQ(unique_id2, root->current_frame_host()->nav_entry_id());
|
| - EXPECT_EQ(unique_id2,
|
| + EXPECT_EQ(unique_id3, root->current_frame_host()->nav_entry_id());
|
| + EXPECT_EQ(unique_id3,
|
| root->child_at(0)->current_frame_host()->nav_entry_id());
|
| }
|
|
|
| @@ -634,15 +639,16 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| }
|
|
|
| // Navigate again to the page that fails to load. It must result in an error
|
| - // page, the EXISTING_PAGE navigation type, and no addition to the history
|
| - // list. We do not use SAME_PAGE here; that case only differs in that it
|
| - // clears the pending entry, and there is no pending entry after a load
|
| - // failure.
|
| + // page, the NEW_PAGE navigation type with did_replace_entry, and no addition
|
| + // to the history list. We do not use SAME_PAGE here; that case differs in
|
| + // that it clears the pending entry, and there is no pending entry after a
|
| + // load failure.
|
| {
|
| FrameNavigateParamsCapturer capturer(root);
|
| NavigateFrameToURL(root, error_url);
|
| capturer.Wait();
|
| - EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
|
| + EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| NavigationEntry* entry = controller.GetLastCommittedEntry();
|
| EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType());
|
| EXPECT_EQ(2, controller.GetEntryCount());
|
| @@ -652,15 +658,15 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| NavigateToURL(shell(), GURL(url::kAboutBlankURL));
|
| EXPECT_EQ(3, controller.GetEntryCount());
|
|
|
| - // ... and replace it with a failed load. (Note that when you set the
|
| - // should_replace_current_entry flag, the navigation is classified as NEW_PAGE
|
| - // because that is a classification of the renderer's behavior, and the flag
|
| - // is a browser-side flag.)
|
| + // ... and replace it with a failed load. (Note that NavigateToURLAndReplace
|
| + // sets the should_replace_current_entry flag, which propagates from the
|
| + // browser to the renderer and back.)
|
| {
|
| FrameNavigateParamsCapturer capturer(root);
|
| NavigateToURLAndReplace(shell(), error_url);
|
| capturer.Wait();
|
| EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| NavigationEntry* entry = controller.GetLastCommittedEntry();
|
| EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType());
|
| EXPECT_EQ(3, controller.GetEntryCount());
|
| @@ -672,13 +678,13 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| NavigateToURL(shell(), web_ui_page);
|
| EXPECT_EQ(4, controller.GetEntryCount());
|
|
|
| - // ... and replace it with a failed load. (It is NEW_PAGE for the reason noted
|
| - // above.)
|
| + // ... and replace it with a failed load.
|
| {
|
| FrameNavigateParamsCapturer capturer(root);
|
| NavigateToURLAndReplace(shell(), error_url);
|
| capturer.Wait();
|
| EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| NavigationEntry* entry = controller.GetLastCommittedEntry();
|
| EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType());
|
| EXPECT_EQ(4, controller.GetEntryCount());
|
| @@ -760,6 +766,53 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
|
| EXPECT_TRUE(capturer.details().is_in_page);
|
| }
|
| +
|
| + // Now test NEW_PAGE with replacement. First, go back so that we can ensure
|
| + // location.replace leaves the forward history.
|
| + {
|
| + FrameNavigateParamsCapturer capturer(root);
|
| + shell()->web_contents()->GetController().GoBack();
|
| + capturer.Wait();
|
| + EXPECT_TRUE(shell()->web_contents()->GetController().CanGoForward());
|
| + }
|
| +
|
| + {
|
| + // location.replace().
|
| + FrameNavigateParamsCapturer capturer(root);
|
| + GURL frame_url(embedded_test_server()->GetURL(
|
| + "/navigation_controller/simple_page_1.html"));
|
| + std::string script = "location.replace('" + frame_url.spec() + "')";
|
| + EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
|
| + capturer.Wait();
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
|
| + capturer.params().transition);
|
| + // Unlike replaceState, this replaces the existing entry with a new one.
|
| + EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| + EXPECT_FALSE(capturer.details().is_in_page);
|
| +
|
| + // Make sure the forward history did not get pruned.
|
| + EXPECT_TRUE(shell()->web_contents()->GetController().CanGoForward());
|
| + }
|
| +
|
| + {
|
| + // Cross-site location.replace().
|
| + FrameNavigateParamsCapturer capturer(root);
|
| + GURL frame_url(embedded_test_server()->GetURL(
|
| + "foo.com", "/navigation_controller/simple_page_1.html"));
|
| + std::string script = "location.replace('" + frame_url.spec() + "')";
|
| + EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
|
| + capturer.Wait();
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
|
| + capturer.params().transition);
|
| + // Unlike replaceState, this replaces the existing entry with a new one.
|
| + EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| + EXPECT_FALSE(capturer.details().is_in_page);
|
| +
|
| + // Make sure the forward history did not get pruned.
|
| + EXPECT_TRUE(shell()->web_contents()->GetController().CanGoForward());
|
| + }
|
| }
|
|
|
| // Verify that navigations for NAVIGATION_TYPE_EXISTING_PAGE are correctly
|
| @@ -881,20 +934,6 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| EXPECT_FALSE(capturer.details().is_in_page);
|
| }
|
|
|
| - {
|
| - // location.replace().
|
| - FrameNavigateParamsCapturer capturer(root);
|
| - GURL frame_url(embedded_test_server()->GetURL(
|
| - "/navigation_controller/simple_page_1.html"));
|
| - std::string script = "location.replace('" + frame_url.spec() + "')";
|
| - EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
|
| - capturer.Wait();
|
| - EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
|
| - capturer.params().transition);
|
| - EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
|
| - EXPECT_FALSE(capturer.details().is_in_page);
|
| - }
|
| -
|
| // Now, various in-page navigations.
|
|
|
| {
|
| @@ -906,7 +945,9 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| capturer.Wait();
|
| EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
|
| capturer.params().transition);
|
| + // Unlike location.replace, this updates the existing entry.
|
| EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| EXPECT_TRUE(capturer.details().is_in_page);
|
| }
|
|
|
| @@ -1045,7 +1086,8 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| "/navigation_controller/simple_page_1.html"));
|
| NavigateFrameToURL(root->child_at(0), frame_url);
|
| capturer.Wait();
|
| - EXPECT_EQ(ui::PAGE_TRANSITION_AUTO_SUBFRAME, capturer.transition_type());
|
| + // TODO(creis): This doesn't seem right.
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_MANUAL_SUBFRAME, capturer.transition_type());
|
| }
|
|
|
| {
|
| @@ -1116,16 +1158,50 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type);
|
| }
|
|
|
| + // Go back so that we can ensure location.replace leaves the forward history.
|
| + {
|
| + FrameNavigateParamsCapturer capturer(root->child_at(0));
|
| + shell()->web_contents()->GetController().GoBack();
|
| + capturer.Wait();
|
| + EXPECT_TRUE(shell()->web_contents()->GetController().CanGoForward());
|
| + }
|
| +
|
| {
|
| // location.replace().
|
| - LoadCommittedCapturer capturer(root->child_at(0));
|
| + FrameNavigateParamsCapturer capturer(root->child_at(0));
|
| GURL frame_url(embedded_test_server()->GetURL(
|
| "/navigation_controller/simple_page_2.html"));
|
| std::string script = "location.replace('" + frame_url.spec() + "')";
|
| EXPECT_TRUE(content::ExecuteScript(root->child_at(0)->current_frame_host(),
|
| script));
|
| capturer.Wait();
|
| - EXPECT_EQ(ui::PAGE_TRANSITION_AUTO_SUBFRAME, capturer.transition_type());
|
| + // Unlike replaceState, this replaces the existing entry with a new one.
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_MANUAL_SUBFRAME,
|
| + capturer.params().transition);
|
| + EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| +
|
| + // Make sure the forward history did not get pruned.
|
| + EXPECT_TRUE(shell()->web_contents()->GetController().CanGoForward());
|
| + }
|
| +
|
| + {
|
| + // Cross-site location.replace().
|
| + FrameNavigateParamsCapturer capturer(root->child_at(0));
|
| + GURL frame_url(embedded_test_server()->GetURL(
|
| + "foo.com", "/navigation_controller/simple_page_2.html"));
|
| + std::string script = "location.replace('" + frame_url.spec() + "')";
|
| + EXPECT_TRUE(content::ExecuteScript(root->child_at(0)->current_frame_host(),
|
| + script));
|
| + capturer.Wait();
|
| + // Unlike replaceState, this replaces the existing entry with a new one.
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_MANUAL_SUBFRAME,
|
| + capturer.params().transition);
|
| + EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type);
|
| + EXPECT_TRUE(capturer.details().did_replace_entry);
|
| +
|
| + // Make sure the forward history did not get pruned.
|
| + EXPECT_TRUE(shell()->web_contents()->GetController().CanGoForward());
|
| }
|
|
|
| {
|
| @@ -1149,6 +1225,7 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| EXPECT_TRUE(content::ExecuteScript(root->child_at(0)->current_frame_host(),
|
| script));
|
| capturer.Wait();
|
| + // Unlike location.replace, this updates the existing entry.
|
| EXPECT_EQ(ui::PAGE_TRANSITION_AUTO_SUBFRAME, capturer.transition_type());
|
| }
|
|
|
| @@ -1203,7 +1280,8 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, details[0].type);
|
| EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
|
| params[1].transition);
|
| - EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, details[1].type);
|
| + EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, details[1].type);
|
| + EXPECT_TRUE(details[1].did_replace_entry);
|
| }
|
| }
|
|
|
| @@ -1386,7 +1464,8 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| }
|
| EXPECT_FALSE(root->child_at(1)->has_committed_real_load());
|
|
|
| - // 3. A real same-site navigation in the nested iframe should be AUTO.
|
| + // 3. A real same-site navigation in the nested iframe should be MANUAL with
|
| + // replacement.
|
| GURL frame_url(embedded_test_server()->GetURL(
|
| "/navigation_controller/simple_page_1.html"));
|
| {
|
| @@ -1396,30 +1475,32 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| EXPECT_TRUE(content::ExecuteScript(root->child_at(0)->current_frame_host(),
|
| script));
|
| capturer.Wait();
|
| - EXPECT_EQ(ui::PAGE_TRANSITION_AUTO_SUBFRAME, capturer.transition_type());
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_MANUAL_SUBFRAME, capturer.transition_type());
|
| }
|
|
|
| // Check last committed NavigationEntry. It should have replaced the previous
|
| - // frame entry in the original NavigationEntry.
|
| + // NavigationEntry.
|
| EXPECT_EQ(1, controller.GetEntryCount());
|
| - EXPECT_EQ(entry, controller.GetLastCommittedEntry());
|
| + NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry();
|
| + EXPECT_NE(entry, entry2);
|
|
|
| // Verify subframe entries if they're enabled (e.g. in --site-per-process).
|
| if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
|
| // The entry should still have one nested subframe FrameNavigationEntry.
|
| - ASSERT_EQ(1U, entry->root_node()->children[0]->children.size());
|
| + ASSERT_EQ(1U, entry2->root_node()->children[0]->children.size());
|
| FrameNavigationEntry* frame_entry =
|
| - entry->root_node()->children[0]->children[0]->frame_entry.get();
|
| + entry2->root_node()->children[0]->children[0]->frame_entry.get();
|
| EXPECT_EQ(frame_url, frame_entry->url());
|
| } else {
|
| // There are no subframe FrameNavigationEntries by default.
|
| - EXPECT_EQ(0U, entry->root_node()->children.size());
|
| + EXPECT_EQ(0U, entry2->root_node()->children.size());
|
| }
|
| EXPECT_FALSE(root->child_at(0)->has_committed_real_load());
|
| EXPECT_TRUE(root->child_at(0)->child_at(0)->has_committed_real_load());
|
| EXPECT_FALSE(root->child_at(1)->has_committed_real_load());
|
|
|
| - // 4. A real cross-site navigation in the second iframe should be AUTO.
|
| + // 4. A real cross-site navigation in the second iframe should be MANUAL with
|
| + // replacement.
|
| GURL foo_url(embedded_test_server()->GetURL(
|
| "foo.com", "/navigation_controller/simple_page_2.html"));
|
| {
|
| @@ -1428,23 +1509,24 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| "frames[1].src = '" + foo_url.spec() + "';";
|
| EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
|
| capturer.Wait();
|
| - EXPECT_EQ(ui::PAGE_TRANSITION_AUTO_SUBFRAME, capturer.transition_type());
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_MANUAL_SUBFRAME, capturer.transition_type());
|
| }
|
|
|
| // Check last committed NavigationEntry.
|
| EXPECT_EQ(1, controller.GetEntryCount());
|
| - EXPECT_EQ(entry, controller.GetLastCommittedEntry());
|
| + NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry();
|
| + EXPECT_NE(entry2, entry3);
|
|
|
| // Verify subframe entries if they're enabled (e.g. in --site-per-process).
|
| if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
|
| // The entry should still have two subframe FrameNavigationEntries.
|
| - ASSERT_EQ(2U, entry->root_node()->children.size());
|
| + ASSERT_EQ(2U, entry3->root_node()->children.size());
|
| FrameNavigationEntry* frame_entry =
|
| - entry->root_node()->children[1]->frame_entry.get();
|
| + entry3->root_node()->children[1]->frame_entry.get();
|
| EXPECT_EQ(foo_url, frame_entry->url());
|
| } else {
|
| // There are no subframe FrameNavigationEntries by default.
|
| - EXPECT_EQ(0U, entry->root_node()->children.size());
|
| + EXPECT_EQ(0U, entry3->root_node()->children.size());
|
| }
|
| EXPECT_FALSE(root->child_at(0)->has_committed_real_load());
|
| EXPECT_TRUE(root->child_at(0)->child_at(0)->has_committed_real_load());
|
| @@ -1465,18 +1547,18 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
|
|
| // This should have created a new NavigationEntry.
|
| EXPECT_EQ(2, controller.GetEntryCount());
|
| - EXPECT_NE(entry, controller.GetLastCommittedEntry());
|
| - NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry();
|
| + NavigationEntryImpl* entry4 = controller.GetLastCommittedEntry();
|
| + EXPECT_NE(entry3, entry4);
|
|
|
| // Verify subframe entries if they're enabled (e.g. in --site-per-process).
|
| if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
|
| - ASSERT_EQ(2U, entry->root_node()->children.size());
|
| + ASSERT_EQ(2U, entry4->root_node()->children.size());
|
| FrameNavigationEntry* frame_entry =
|
| - entry2->root_node()->children[0]->children[0]->frame_entry.get();
|
| + entry4->root_node()->children[0]->children[0]->frame_entry.get();
|
| EXPECT_EQ(about_blank_url, frame_entry->url());
|
| } else {
|
| // There are no subframe FrameNavigationEntries by default.
|
| - EXPECT_EQ(0U, entry->root_node()->children.size());
|
| + EXPECT_EQ(0U, entry4->root_node()->children.size());
|
| }
|
| EXPECT_FALSE(root->child_at(0)->has_committed_real_load());
|
| EXPECT_TRUE(root->child_at(0)->child_at(0)->has_committed_real_load());
|
| @@ -1805,7 +1887,7 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| EXPECT_EQ(0U, entry3->root_node()->children.size());
|
| }
|
|
|
| - // 6. Navigate the second subframe cross-site, clearing its existing subtree.
|
| + // 5. Navigate the second subframe cross-site, clearing its existing subtree.
|
| GURL baz_url(embedded_test_server()->GetURL(
|
| "baz.com", "/navigation_controller/simple_page_1.html"));
|
| {
|
| @@ -1876,7 +1958,7 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
|
| LoadCommittedCapturer capturer(root->child_at(0));
|
| NavigateFrameToURL(root->child_at(0), subframe_url);
|
| capturer.Wait();
|
| - EXPECT_EQ(ui::PAGE_TRANSITION_AUTO_SUBFRAME, capturer.transition_type());
|
| + EXPECT_EQ(ui::PAGE_TRANSITION_MANUAL_SUBFRAME, capturer.transition_type());
|
| }
|
|
|
| // 2. In-page navigation in the main frame.
|
| @@ -3146,6 +3228,16 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, ReloadOriginalRequest) {
|
| RenderProcessKilledObserver kill_observer(shell()->web_contents());
|
|
|
| // Redirect so that we can use ReloadOriginalRequest.
|
| + // TODO(creis): The test is failing because this replacement isn't preserving
|
| + // the redirect chain or original_request_url for a cross process transfer.
|
| + // I think it worked before because those values stuck around when we just
|
| + // updated the old NavEntry, but that's not a safe thing to do on a
|
| + // SiteInstance change. Instead, we should propagate them during the transfer
|
| + // so that they show up in the new commit.
|
| + // We appear to be trying to propagate the redirect chain, but the request in
|
| + // the network stack doesn't have the earlier items in the chain. Is this a
|
| + // bug or expected? Does it apply to all client redirects, or just this test?
|
| + // Does it apply to server redirects?
|
| GURL redirect_url(embedded_test_server()->GetURL(
|
| "foo.com", "/navigation_controller/simple_page_1.html"));
|
| {
|
| @@ -3155,7 +3247,7 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, ReloadOriginalRequest) {
|
| capturer.Wait();
|
| EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
|
| capturer.params().transition);
|
| - EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
|
| + EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
|
| }
|
|
|
| // Modify an entry in the session history and reload the original request.
|
| @@ -3183,6 +3275,7 @@ IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, ReloadOriginalRequest) {
|
| capturer.set_navigations_remaining(2);
|
| capturer.Wait();
|
| EXPECT_EQ(2U, capturer.all_details().size());
|
| + // TODO(creis): This is failing in --site-per-process.
|
| EXPECT_EQ(modified_url, capturer.all_params()[0].url);
|
| EXPECT_EQ(original_url, capturer.all_params()[1].url);
|
| EXPECT_EQ(original_url, shell()->web_contents()->GetLastCommittedURL());
|
|
|