| 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/strings/utf_string_conversions.h" | 5 #include "base/strings/utf_string_conversions.h" |
| 6 #include "content/browser/renderer_host/test_render_view_host.h" | 6 #include "content/browser/renderer_host/test_render_view_host.h" |
| 7 #include "content/browser/site_instance_impl.h" | 7 #include "content/browser/site_instance_impl.h" |
| 8 #include "content/browser/web_contents/navigation_controller_impl.h" | 8 #include "content/browser/web_contents/navigation_controller_impl.h" |
| 9 #include "content/browser/web_contents/navigation_entry_impl.h" | 9 #include "content/browser/web_contents/navigation_entry_impl.h" |
| 10 #include "content/browser/web_contents/render_view_host_manager.h" | 10 #include "content/browser/web_contents/render_view_host_manager.h" |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 | 557 |
| 558 // Tests the Navigate function. We navigate three sites consecutively and check | 558 // Tests the Navigate function. We navigate three sites consecutively and check |
| 559 // how the pending/committed RenderViewHost are modified. | 559 // how the pending/committed RenderViewHost are modified. |
| 560 TEST_F(RenderViewHostManagerTest, Navigate) { | 560 TEST_F(RenderViewHostManagerTest, Navigate) { |
| 561 TestNotificationTracker notifications; | 561 TestNotificationTracker notifications; |
| 562 | 562 |
| 563 SiteInstance* instance = SiteInstance::Create(browser_context()); | 563 SiteInstance* instance = SiteInstance::Create(browser_context()); |
| 564 | 564 |
| 565 scoped_ptr<TestWebContents> web_contents( | 565 scoped_ptr<TestWebContents> web_contents( |
| 566 TestWebContents::Create(browser_context(), instance)); | 566 TestWebContents::Create(browser_context(), instance)); |
| 567 notifications.ListenFor( | 567 notifications.ListenFor(NOTIFICATION_WEB_CONTENTS_SWAPPED, |
| 568 NOTIFICATION_RENDER_VIEW_HOST_CHANGED, | 568 Source<WebContents>(web_contents.get())); |
| 569 Source<NavigationController>(&web_contents->GetController())); | |
| 570 | 569 |
| 571 // Create. | 570 // Create. |
| 572 RenderViewHostManager manager(web_contents.get(), web_contents.get(), | 571 RenderViewHostManager manager(web_contents.get(), web_contents.get(), |
| 573 web_contents.get()); | 572 web_contents.get()); |
| 574 | 573 |
| 575 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); | 574 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); |
| 576 | 575 |
| 577 RenderViewHost* host; | 576 RenderViewHost* host; |
| 578 | 577 |
| 579 // 1) The first navigation. -------------------------- | 578 // 1) The first navigation. -------------------------- |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 // Commit. | 634 // Commit. |
| 636 manager.DidNavigateMainFrame(manager.pending_render_view_host()); | 635 manager.DidNavigateMainFrame(manager.pending_render_view_host()); |
| 637 EXPECT_TRUE(host == manager.current_host()); | 636 EXPECT_TRUE(host == manager.current_host()); |
| 638 ASSERT_TRUE(host); | 637 ASSERT_TRUE(host); |
| 639 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> | 638 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> |
| 640 HasSite()); | 639 HasSite()); |
| 641 // Check the pending RenderViewHost has been committed. | 640 // Check the pending RenderViewHost has been committed. |
| 642 EXPECT_FALSE(manager.pending_render_view_host()); | 641 EXPECT_FALSE(manager.pending_render_view_host()); |
| 643 | 642 |
| 644 // We should observe a notification. | 643 // We should observe a notification. |
| 645 EXPECT_TRUE(notifications.Check1AndReset( | 644 EXPECT_TRUE(notifications.Check1AndReset(NOTIFICATION_WEB_CONTENTS_SWAPPED)); |
| 646 NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); | |
| 647 } | 645 } |
| 648 | 646 |
| 649 // Tests the Navigate function. In this unit test we verify that the Navigate | 647 // Tests the Navigate function. In this unit test we verify that the Navigate |
| 650 // function can handle a new navigation event before the previous navigation | 648 // function can handle a new navigation event before the previous navigation |
| 651 // has been committed. This is also a regression test for | 649 // has been committed. This is also a regression test for |
| 652 // http://crbug.com/104600. | 650 // http://crbug.com/104600. |
| 653 TEST_F(RenderViewHostManagerTest, NavigateWithEarlyReNavigation) { | 651 TEST_F(RenderViewHostManagerTest, NavigateWithEarlyReNavigation) { |
| 654 TestNotificationTracker notifications; | 652 TestNotificationTracker notifications; |
| 655 | 653 |
| 656 SiteInstance* instance = SiteInstance::Create(browser_context()); | 654 SiteInstance* instance = SiteInstance::Create(browser_context()); |
| 657 | 655 |
| 658 scoped_ptr<TestWebContents> web_contents( | 656 scoped_ptr<TestWebContents> web_contents( |
| 659 TestWebContents::Create(browser_context(), instance)); | 657 TestWebContents::Create(browser_context(), instance)); |
| 660 notifications.ListenFor( | 658 notifications.ListenFor(NOTIFICATION_WEB_CONTENTS_SWAPPED, |
| 661 NOTIFICATION_RENDER_VIEW_HOST_CHANGED, | 659 Source<WebContents>(web_contents.get())); |
| 662 Source<NavigationController>(&web_contents->GetController())); | |
| 663 | 660 |
| 664 // Create. | 661 // Create. |
| 665 RenderViewHostManager manager(web_contents.get(), web_contents.get(), | 662 RenderViewHostManager manager(web_contents.get(), web_contents.get(), |
| 666 web_contents.get()); | 663 web_contents.get()); |
| 667 | 664 |
| 668 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); | 665 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); |
| 669 | 666 |
| 670 // 1) The first navigation. -------------------------- | 667 // 1) The first navigation. -------------------------- |
| 671 const GURL kUrl1("http://www.google.com/"); | 668 const GURL kUrl1("http://www.google.com/"); |
| 672 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1, | 669 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1, |
| 673 Referrer(), string16() /* title */, | 670 Referrer(), string16() /* title */, |
| 674 PAGE_TRANSITION_TYPED, | 671 PAGE_TRANSITION_TYPED, |
| 675 false /* is_renderer_init */); | 672 false /* is_renderer_init */); |
| 676 RenderViewHost* host = manager.Navigate(entry1); | 673 RenderViewHost* host = manager.Navigate(entry1); |
| 677 | 674 |
| 678 // The RenderViewHost created in Init will be reused. | 675 // The RenderViewHost created in Init will be reused. |
| 679 EXPECT_TRUE(host == manager.current_host()); | 676 EXPECT_TRUE(host == manager.current_host()); |
| 680 EXPECT_FALSE(manager.pending_render_view_host()); | 677 EXPECT_FALSE(manager.pending_render_view_host()); |
| 681 | 678 |
| 682 // We should observe a notification. | 679 // We should observe a notification. |
| 683 EXPECT_TRUE(notifications.Check1AndReset( | 680 EXPECT_TRUE(notifications.Check1AndReset(NOTIFICATION_WEB_CONTENTS_SWAPPED)); |
| 684 NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); | |
| 685 notifications.Reset(); | 681 notifications.Reset(); |
| 686 | 682 |
| 687 // Commit. | 683 // Commit. |
| 688 manager.DidNavigateMainFrame(host); | 684 manager.DidNavigateMainFrame(host); |
| 689 | 685 |
| 690 // Commit to SiteInstance should be delayed until RenderView commit. | 686 // Commit to SiteInstance should be delayed until RenderView commit. |
| 691 EXPECT_TRUE(host == manager.current_host()); | 687 EXPECT_TRUE(host == manager.current_host()); |
| 692 ASSERT_TRUE(host); | 688 ASSERT_TRUE(host); |
| 693 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> | 689 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> |
| 694 HasSite()); | 690 HasSite()); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 // Commit. | 783 // Commit. |
| 788 manager.DidNavigateMainFrame(host3); | 784 manager.DidNavigateMainFrame(host3); |
| 789 EXPECT_TRUE(host3 == manager.current_host()); | 785 EXPECT_TRUE(host3 == manager.current_host()); |
| 790 ASSERT_TRUE(host3); | 786 ASSERT_TRUE(host3); |
| 791 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host3->GetSiteInstance())-> | 787 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host3->GetSiteInstance())-> |
| 792 HasSite()); | 788 HasSite()); |
| 793 // Check the pending RenderViewHost has been committed. | 789 // Check the pending RenderViewHost has been committed. |
| 794 EXPECT_FALSE(manager.pending_render_view_host()); | 790 EXPECT_FALSE(manager.pending_render_view_host()); |
| 795 | 791 |
| 796 // We should observe a notification. | 792 // We should observe a notification. |
| 797 EXPECT_TRUE(notifications.Check1AndReset( | 793 EXPECT_TRUE(notifications.Check1AndReset(NOTIFICATION_WEB_CONTENTS_SWAPPED)); |
| 798 NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); | |
| 799 } | 794 } |
| 800 | 795 |
| 801 // Tests WebUI creation. | 796 // Tests WebUI creation. |
| 802 TEST_F(RenderViewHostManagerTest, WebUI) { | 797 TEST_F(RenderViewHostManagerTest, WebUI) { |
| 803 set_should_create_webui(true); | 798 set_should_create_webui(true); |
| 804 SiteInstance* instance = SiteInstance::Create(browser_context()); | 799 SiteInstance* instance = SiteInstance::Create(browser_context()); |
| 805 | 800 |
| 806 scoped_ptr<TestWebContents> web_contents( | 801 scoped_ptr<TestWebContents> web_contents( |
| 807 TestWebContents::Create(browser_context(), instance)); | 802 TestWebContents::Create(browser_context(), instance)); |
| 808 RenderViewHostManager manager(web_contents.get(), web_contents.get(), | 803 RenderViewHostManager manager(web_contents.get(), web_contents.get(), |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1205 | 1200 |
| 1206 // Commit. | 1201 // Commit. |
| 1207 manager.DidNavigateMainFrame(host); | 1202 manager.DidNavigateMainFrame(host); |
| 1208 EXPECT_EQ(host, manager.current_host()); | 1203 EXPECT_EQ(host, manager.current_host()); |
| 1209 ASSERT_TRUE(host); | 1204 ASSERT_TRUE(host); |
| 1210 EXPECT_EQ(static_cast<SiteInstanceImpl*>(host->GetSiteInstance()), | 1205 EXPECT_EQ(static_cast<SiteInstanceImpl*>(host->GetSiteInstance()), |
| 1211 instance); | 1206 instance); |
| 1212 } | 1207 } |
| 1213 | 1208 |
| 1214 } // namespace content | 1209 } // namespace content |
| OLD | NEW |