| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdint.h> | 5 #include <stdint.h> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 EXPECT_EQ(orig_rvh_delete_count, 0); | 581 EXPECT_EQ(orig_rvh_delete_count, 0); |
| 582 | 582 |
| 583 // Going back should switch SiteInstances again. The first SiteInstance is | 583 // Going back should switch SiteInstances again. The first SiteInstance is |
| 584 // stored in the NavigationEntry, so it should be the same as at the start. | 584 // stored in the NavigationEntry, so it should be the same as at the start. |
| 585 // We should use the same RFH as before, swapping it back in. | 585 // We should use the same RFH as before, swapping it back in. |
| 586 controller().GoBack(); | 586 controller().GoBack(); |
| 587 entry_id = controller().GetPendingEntry()->GetUniqueID(); | 587 entry_id = controller().GetPendingEntry()->GetUniqueID(); |
| 588 if (IsBrowserSideNavigationEnabled()) | 588 if (IsBrowserSideNavigationEnabled()) |
| 589 contents()->GetMainFrame()->PrepareForCommit(); | 589 contents()->GetMainFrame()->PrepareForCommit(); |
| 590 TestRenderFrameHost* goback_rfh = contents()->GetPendingMainFrame(); | 590 TestRenderFrameHost* goback_rfh = contents()->GetPendingMainFrame(); |
| 591 if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { | |
| 592 // Recycling the rfh is a behavior specific to swappedout:// | |
| 593 EXPECT_EQ(orig_rfh, goback_rfh); | |
| 594 } | |
| 595 EXPECT_TRUE(contents()->CrossProcessNavigationPending()); | 591 EXPECT_TRUE(contents()->CrossProcessNavigationPending()); |
| 596 | 592 |
| 597 // Navigations should be suspended in goback_rfh until BeforeUnloadACK. | 593 // Navigations should be suspended in goback_rfh until BeforeUnloadACK. |
| 598 if (!IsBrowserSideNavigationEnabled()) { | 594 if (!IsBrowserSideNavigationEnabled()) { |
| 599 EXPECT_TRUE(goback_rfh->are_navigations_suspended()); | 595 EXPECT_TRUE(goback_rfh->are_navigations_suspended()); |
| 600 pending_rfh->SendBeforeUnloadACK(true); | 596 pending_rfh->SendBeforeUnloadACK(true); |
| 601 EXPECT_FALSE(goback_rfh->are_navigations_suspended()); | 597 EXPECT_FALSE(goback_rfh->are_navigations_suspended()); |
| 602 } | 598 } |
| 603 | 599 |
| 604 // DidNavigate from the back action | 600 // DidNavigate from the back action |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 967 popup->SetOpener(contents()); | 963 popup->SetOpener(contents()); |
| 968 contents()->GetRenderManager()->CreateOpenerProxies(instance, nullptr); | 964 contents()->GetRenderManager()->CreateOpenerProxies(instance, nullptr); |
| 969 | 965 |
| 970 // If swapped out is forbidden, a new proxy should be created for the opener | 966 // If swapped out is forbidden, a new proxy should be created for the opener |
| 971 // in |instance|, and we should ensure that its routing ID is returned here. | 967 // in |instance|, and we should ensure that its routing ID is returned here. |
| 972 // Otherwise, we should find the pending RFH and not create a new proxy. | 968 // Otherwise, we should find the pending RFH and not create a new proxy. |
| 973 int opener_frame_routing_id = | 969 int opener_frame_routing_id = |
| 974 popup->GetRenderManager()->GetOpenerRoutingID(instance); | 970 popup->GetRenderManager()->GetOpenerRoutingID(instance); |
| 975 RenderFrameProxyHost* proxy = | 971 RenderFrameProxyHost* proxy = |
| 976 contents()->GetRenderManager()->GetRenderFrameProxyHost(instance); | 972 contents()->GetRenderManager()->GetRenderFrameProxyHost(instance); |
| 977 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { | 973 EXPECT_TRUE(proxy); |
| 978 EXPECT_TRUE(proxy); | 974 EXPECT_EQ(proxy->GetRoutingID(), opener_frame_routing_id); |
| 979 EXPECT_EQ(proxy->GetRoutingID(), opener_frame_routing_id); | |
| 980 | 975 |
| 981 // Ensure that committing the navigation removes the proxy. | 976 // Ensure that committing the navigation removes the proxy. |
| 982 int entry_id = controller().GetPendingEntry()->GetUniqueID(); | 977 entry_id = controller().GetPendingEntry()->GetUniqueID(); |
| 983 contents()->TestDidNavigate(pending_rfh, 2, entry_id, true, url2, | 978 contents()->TestDidNavigate(pending_rfh, 2, entry_id, true, url2, |
| 984 ui::PAGE_TRANSITION_TYPED); | 979 ui::PAGE_TRANSITION_TYPED); |
| 985 EXPECT_FALSE( | 980 EXPECT_FALSE( |
| 986 contents()->GetRenderManager()->GetRenderFrameProxyHost(instance)); | 981 contents()->GetRenderManager()->GetRenderFrameProxyHost(instance)); |
| 987 } else { | |
| 988 EXPECT_FALSE(proxy); | |
| 989 EXPECT_EQ(pending_rfh->GetRoutingID(), opener_frame_routing_id); | |
| 990 } | |
| 991 } | 982 } |
| 992 | 983 |
| 993 // Tests that WebContentsImpl uses the current URL, not the SiteInstance's site, | 984 // Tests that WebContentsImpl uses the current URL, not the SiteInstance's site, |
| 994 // to determine whether a navigation is cross-site. | 985 // to determine whether a navigation is cross-site. |
| 995 TEST_F(WebContentsImplTest, CrossSiteComparesAgainstCurrentPage) { | 986 TEST_F(WebContentsImplTest, CrossSiteComparesAgainstCurrentPage) { |
| 996 TestRenderFrameHost* orig_rfh = contents()->GetMainFrame(); | 987 TestRenderFrameHost* orig_rfh = contents()->GetMainFrame(); |
| 997 SiteInstance* instance1 = contents()->GetSiteInstance(); | 988 SiteInstance* instance1 = contents()->GetSiteInstance(); |
| 998 | 989 |
| 999 // Navigate to URL. | 990 // Navigate to URL. |
| 1000 const GURL url("http://www.google.com"); | 991 const GURL url("http://www.google.com"); |
| (...skipping 2440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3441 // An automatic navigation. | 3432 // An automatic navigation. |
| 3442 contents()->GetMainFrame()->SendNavigateWithModificationCallback( | 3433 contents()->GetMainFrame()->SendNavigateWithModificationCallback( |
| 3443 2, 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture)); | 3434 2, 0, true, GURL(url::kAboutBlankURL), base::Bind(SetAsNonUserGesture)); |
| 3444 | 3435 |
| 3445 EXPECT_EQ(1u, delegate->reset_count()); | 3436 EXPECT_EQ(1u, delegate->reset_count()); |
| 3446 | 3437 |
| 3447 contents()->SetJavaScriptDialogManagerForTesting(nullptr); | 3438 contents()->SetJavaScriptDialogManagerForTesting(nullptr); |
| 3448 } | 3439 } |
| 3449 | 3440 |
| 3450 } // namespace content | 3441 } // namespace content |
| OLD | NEW |