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 "base/logging.h" | 5 #include "base/logging.h" |
6 #include "base/utf_string_conversions.h" | 6 #include "base/utf_string_conversions.h" |
7 #include "content/browser/renderer_host/render_view_host_impl.h" | 7 #include "content/browser/renderer_host/render_view_host_impl.h" |
8 #include "content/browser/renderer_host/test_render_view_host.h" | 8 #include "content/browser/renderer_host/test_render_view_host.h" |
9 #include "content/browser/site_instance_impl.h" | 9 #include "content/browser/site_instance_impl.h" |
10 #include "content/browser/web_contents/interstitial_page_impl.h" | 10 #include "content/browser/web_contents/interstitial_page_impl.h" |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 // is now covered by the CrossSiteBoundariesAfterCrash test. | 577 // is now covered by the CrossSiteBoundariesAfterCrash test. |
578 contents2->TestDidNavigate( | 578 contents2->TestDidNavigate( |
579 pending_rvh_b, 2, url2b, PAGE_TRANSITION_TYPED); | 579 pending_rvh_b, 2, url2b, PAGE_TRANSITION_TYPED); |
580 SiteInstance* instance2b = contents2->GetSiteInstance(); | 580 SiteInstance* instance2b = contents2->GetSiteInstance(); |
581 EXPECT_NE(instance1, instance2b); | 581 EXPECT_NE(instance1, instance2b); |
582 | 582 |
583 // Both contentses should now be in the same SiteInstance. | 583 // Both contentses should now be in the same SiteInstance. |
584 EXPECT_EQ(instance2a, instance2b); | 584 EXPECT_EQ(instance2a, instance2b); |
585 } | 585 } |
586 | 586 |
| 587 // Test that we can find an opener RVH even if it's pending. |
| 588 // http://crbug.com/176252. |
| 589 TEST_F(WebContentsImplTest, FindOpenerRVHWhenPending) { |
| 590 contents()->transition_cross_site = true; |
| 591 TestRenderViewHost* orig_rvh = test_rvh(); |
| 592 |
| 593 // Navigate to a URL. |
| 594 const GURL url("http://www.google.com"); |
| 595 controller().LoadURL( |
| 596 url, Referrer(), PAGE_TRANSITION_TYPED, std::string()); |
| 597 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED); |
| 598 |
| 599 // Start to navigate first tab to a new site, so that it has a pending RVH. |
| 600 const GURL url2("http://www.yahoo.com"); |
| 601 controller().LoadURL( |
| 602 url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); |
| 603 orig_rvh->SendShouldCloseACK(true); |
| 604 TestRenderViewHost* pending_rvh = |
| 605 static_cast<TestRenderViewHost*>(contents()->GetPendingRenderViewHost()); |
| 606 |
| 607 // While it is still pending, simulate opening a new tab with the first tab |
| 608 // as its opener. This will call WebContentsImpl::CreateOpenerRenderViews |
| 609 // on the opener to ensure that an RVH exists. |
| 610 int opener_routing_id = contents()->CreateOpenerRenderViews( |
| 611 pending_rvh->GetSiteInstance()); |
| 612 |
| 613 // We should find the pending RVH and not create a new one. |
| 614 EXPECT_EQ(pending_rvh->GetRoutingID(), opener_routing_id); |
| 615 } |
| 616 |
587 // Tests that WebContentsImpl uses the current URL, not the SiteInstance's site, | 617 // Tests that WebContentsImpl uses the current URL, not the SiteInstance's site, |
588 // to determine whether a navigation is cross-site. | 618 // to determine whether a navigation is cross-site. |
589 TEST_F(WebContentsImplTest, CrossSiteComparesAgainstCurrentPage) { | 619 TEST_F(WebContentsImplTest, CrossSiteComparesAgainstCurrentPage) { |
590 contents()->transition_cross_site = true; | 620 contents()->transition_cross_site = true; |
591 RenderViewHost* orig_rvh = rvh(); | 621 RenderViewHost* orig_rvh = rvh(); |
592 SiteInstance* instance1 = contents()->GetSiteInstance(); | 622 SiteInstance* instance1 = contents()->GetSiteInstance(); |
593 | 623 |
594 // Navigate to URL. | 624 // Navigate to URL. |
595 const GURL url("http://www.google.com"); | 625 const GURL url("http://www.google.com"); |
596 controller().LoadURL( | 626 controller().LoadURL( |
(...skipping 1346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1943 | 1973 |
1944 // And the interstitial should be showing. | 1974 // And the interstitial should be showing. |
1945 EXPECT_TRUE(other_contents->ShowingInterstitialPage()); | 1975 EXPECT_TRUE(other_contents->ShowingInterstitialPage()); |
1946 | 1976 |
1947 // And the interstitial should do a reload on don't proceed. | 1977 // And the interstitial should do a reload on don't proceed. |
1948 EXPECT_TRUE(static_cast<InterstitialPageImpl*>( | 1978 EXPECT_TRUE(static_cast<InterstitialPageImpl*>( |
1949 other_contents->GetInterstitialPage())->reload_on_dont_proceed()); | 1979 other_contents->GetInterstitialPage())->reload_on_dont_proceed()); |
1950 } | 1980 } |
1951 | 1981 |
1952 } // namespace content | 1982 } // namespace content |
OLD | NEW |