Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Side by Side Diff: content/browser/frame_host/render_frame_host_manager_unittest.cc

Issue 102593002: Convert string16 to base::string16 in content. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/frame_host/navigation_controller_impl.h" 6 #include "content/browser/frame_host/navigation_controller_impl.h"
7 #include "content/browser/frame_host/navigation_entry_impl.h" 7 #include "content/browser/frame_host/navigation_entry_impl.h"
8 #include "content/browser/frame_host/render_frame_host_manager.h" 8 #include "content/browser/frame_host/render_frame_host_manager.h"
9 #include "content/browser/renderer_host/test_render_view_host.h" 9 #include "content/browser/renderer_host/test_render_view_host.h"
10 #include "content/browser/site_instance_impl.h" 10 #include "content/browser/site_instance_impl.h"
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 TEST_F(RenderFrameHostManagerTest, FilterMessagesWhileSwappedOut) { 253 TEST_F(RenderFrameHostManagerTest, FilterMessagesWhileSwappedOut) {
254 const GURL kChromeURL("chrome://foo"); 254 const GURL kChromeURL("chrome://foo");
255 const GURL kDestUrl("http://www.google.com/"); 255 const GURL kDestUrl("http://www.google.com/");
256 256
257 // Navigate our first tab to a chrome url and then to the destination. 257 // Navigate our first tab to a chrome url and then to the destination.
258 NavigateActiveAndCommit(kChromeURL); 258 NavigateActiveAndCommit(kChromeURL);
259 TestRenderViewHost* ntp_rvh = static_cast<TestRenderViewHost*>( 259 TestRenderViewHost* ntp_rvh = static_cast<TestRenderViewHost*>(
260 contents()->GetRenderManagerForTesting()->current_host()); 260 contents()->GetRenderManagerForTesting()->current_host());
261 261
262 // Send an update title message and make sure it works. 262 // Send an update title message and make sure it works.
263 const string16 ntp_title = ASCIIToUTF16("NTP Title"); 263 const base::string16 ntp_title = ASCIIToUTF16("NTP Title");
264 blink::WebTextDirection direction = blink::WebTextDirectionLeftToRight; 264 blink::WebTextDirection direction = blink::WebTextDirectionLeftToRight;
265 EXPECT_TRUE(ntp_rvh->OnMessageReceived( 265 EXPECT_TRUE(ntp_rvh->OnMessageReceived(
266 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction))); 266 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction)));
267 EXPECT_EQ(ntp_title, contents()->GetTitle()); 267 EXPECT_EQ(ntp_title, contents()->GetTitle());
268 268
269 // Navigate to a cross-site URL. 269 // Navigate to a cross-site URL.
270 contents()->GetController().LoadURL( 270 contents()->GetController().LoadURL(
271 kDestUrl, Referrer(), PAGE_TRANSITION_LINK, std::string()); 271 kDestUrl, Referrer(), PAGE_TRANSITION_LINK, std::string());
272 EXPECT_TRUE(contents()->cross_navigation_pending()); 272 EXPECT_TRUE(contents()->cross_navigation_pending());
273 TestRenderViewHost* dest_rvh = static_cast<TestRenderViewHost*>( 273 TestRenderViewHost* dest_rvh = static_cast<TestRenderViewHost*>(
274 contents()->GetRenderManagerForTesting()->pending_render_view_host()); 274 contents()->GetRenderManagerForTesting()->pending_render_view_host());
275 ASSERT_TRUE(dest_rvh); 275 ASSERT_TRUE(dest_rvh);
276 EXPECT_NE(ntp_rvh, dest_rvh); 276 EXPECT_NE(ntp_rvh, dest_rvh);
277 277
278 // Create one more view in the same SiteInstance where dest_rvh2 278 // Create one more view in the same SiteInstance where dest_rvh2
279 // exists so that it doesn't get deleted on navigation to another 279 // exists so that it doesn't get deleted on navigation to another
280 // site. 280 // site.
281 static_cast<SiteInstanceImpl*>(ntp_rvh->GetSiteInstance())-> 281 static_cast<SiteInstanceImpl*>(ntp_rvh->GetSiteInstance())->
282 increment_active_view_count(); 282 increment_active_view_count();
283 283
284 // BeforeUnload finishes. 284 // BeforeUnload finishes.
285 ntp_rvh->SendShouldCloseACK(true); 285 ntp_rvh->SendShouldCloseACK(true);
286 286
287 // Assume SwapOutACK times out, so the dest_rvh proceeds and commits. 287 // Assume SwapOutACK times out, so the dest_rvh proceeds and commits.
288 dest_rvh->SendNavigate(101, kDestUrl); 288 dest_rvh->SendNavigate(101, kDestUrl);
289 289
290 // The new RVH should be able to update its title. 290 // The new RVH should be able to update its title.
291 const string16 dest_title = ASCIIToUTF16("Google"); 291 const base::string16 dest_title = ASCIIToUTF16("Google");
292 EXPECT_TRUE(dest_rvh->OnMessageReceived( 292 EXPECT_TRUE(dest_rvh->OnMessageReceived(
293 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 101, dest_title, 293 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 101, dest_title,
294 direction))); 294 direction)));
295 EXPECT_EQ(dest_title, contents()->GetTitle()); 295 EXPECT_EQ(dest_title, contents()->GetTitle());
296 296
297 // The old renderer, being slow, now updates the title. It should be filtered 297 // The old renderer, being slow, now updates the title. It should be filtered
298 // out and not take effect. 298 // out and not take effect.
299 EXPECT_TRUE(ntp_rvh->is_swapped_out()); 299 EXPECT_TRUE(ntp_rvh->is_swapped_out());
300 EXPECT_TRUE(ntp_rvh->OnMessageReceived( 300 EXPECT_TRUE(ntp_rvh->OnMessageReceived(
301 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction))); 301 ViewHostMsg_UpdateTitle(rvh()->GetRoutingID(), 0, ntp_title, direction)));
302 EXPECT_EQ(dest_title, contents()->GetTitle()); 302 EXPECT_EQ(dest_title, contents()->GetTitle());
303 303
304 // We cannot filter out synchronous IPC messages, because the renderer would 304 // We cannot filter out synchronous IPC messages, because the renderer would
305 // be left waiting for a reply. We pick RunBeforeUnloadConfirm as an example 305 // be left waiting for a reply. We pick RunBeforeUnloadConfirm as an example
306 // that can run easily within a unit test, and that needs to receive a reply 306 // that can run easily within a unit test, and that needs to receive a reply
307 // without showing an actual dialog. 307 // without showing an actual dialog.
308 MockRenderProcessHost* ntp_process_host = 308 MockRenderProcessHost* ntp_process_host =
309 static_cast<MockRenderProcessHost*>(ntp_rvh->GetProcess()); 309 static_cast<MockRenderProcessHost*>(ntp_rvh->GetProcess());
310 ntp_process_host->sink().ClearMessages(); 310 ntp_process_host->sink().ClearMessages();
311 const string16 msg = ASCIIToUTF16("Message"); 311 const base::string16 msg = ASCIIToUTF16("Message");
312 bool result = false; 312 bool result = false;
313 string16 unused; 313 base::string16 unused;
314 ViewHostMsg_RunBeforeUnloadConfirm before_unload_msg( 314 ViewHostMsg_RunBeforeUnloadConfirm before_unload_msg(
315 rvh()->GetRoutingID(), kChromeURL, msg, false, &result, &unused); 315 rvh()->GetRoutingID(), kChromeURL, msg, false, &result, &unused);
316 // Enable pumping for check in BrowserMessageFilter::CheckCanDispatchOnUI. 316 // Enable pumping for check in BrowserMessageFilter::CheckCanDispatchOnUI.
317 before_unload_msg.EnableMessagePumping(); 317 before_unload_msg.EnableMessagePumping();
318 EXPECT_TRUE(ntp_rvh->OnMessageReceived(before_unload_msg)); 318 EXPECT_TRUE(ntp_rvh->OnMessageReceived(before_unload_msg));
319 EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID)); 319 EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID));
320 320
321 // Also test RunJavaScriptMessage. 321 // Also test RunJavaScriptMessage.
322 ntp_process_host->sink().ClearMessages(); 322 ntp_process_host->sink().ClearMessages();
323 ViewHostMsg_RunJavaScriptMessage js_msg( 323 ViewHostMsg_RunJavaScriptMessage js_msg(
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 web_contents.get()); 597 web_contents.get());
598 598
599 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); 599 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
600 600
601 RenderViewHost* host; 601 RenderViewHost* host;
602 602
603 // 1) The first navigation. -------------------------- 603 // 1) The first navigation. --------------------------
604 const GURL kUrl1("http://www.google.com/"); 604 const GURL kUrl1("http://www.google.com/");
605 NavigationEntryImpl entry1( 605 NavigationEntryImpl entry1(
606 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), 606 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(),
607 string16() /* title */, PAGE_TRANSITION_TYPED, 607 base::string16() /* title */, PAGE_TRANSITION_TYPED,
608 false /* is_renderer_init */); 608 false /* is_renderer_init */);
609 host = manager.Navigate(entry1); 609 host = manager.Navigate(entry1);
610 610
611 // The RenderViewHost created in Init will be reused. 611 // The RenderViewHost created in Init will be reused.
612 EXPECT_TRUE(host == manager.current_host()); 612 EXPECT_TRUE(host == manager.current_host());
613 EXPECT_FALSE(manager.pending_render_view_host()); 613 EXPECT_FALSE(manager.pending_render_view_host());
614 614
615 // Commit. 615 // Commit.
616 manager.DidNavigateMainFrame(host); 616 manager.DidNavigateMainFrame(host);
617 // Commit to SiteInstance should be delayed until RenderView commit. 617 // Commit to SiteInstance should be delayed until RenderView commit.
618 EXPECT_TRUE(host == manager.current_host()); 618 EXPECT_TRUE(host == manager.current_host());
619 ASSERT_TRUE(host); 619 ASSERT_TRUE(host);
620 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> 620 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->
621 HasSite()); 621 HasSite());
622 static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->SetSite(kUrl1); 622 static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->SetSite(kUrl1);
623 623
624 // 2) Navigate to next site. ------------------------- 624 // 2) Navigate to next site. -------------------------
625 const GURL kUrl2("http://www.google.com/foo"); 625 const GURL kUrl2("http://www.google.com/foo");
626 NavigationEntryImpl entry2( 626 NavigationEntryImpl entry2(
627 NULL /* instance */, -1 /* page_id */, kUrl2, 627 NULL /* instance */, -1 /* page_id */, kUrl2,
628 Referrer(kUrl1, blink::WebReferrerPolicyDefault), 628 Referrer(kUrl1, blink::WebReferrerPolicyDefault),
629 string16() /* title */, PAGE_TRANSITION_LINK, 629 base::string16() /* title */, PAGE_TRANSITION_LINK,
630 true /* is_renderer_init */); 630 true /* is_renderer_init */);
631 host = manager.Navigate(entry2); 631 host = manager.Navigate(entry2);
632 632
633 // The RenderViewHost created in Init will be reused. 633 // The RenderViewHost created in Init will be reused.
634 EXPECT_TRUE(host == manager.current_host()); 634 EXPECT_TRUE(host == manager.current_host());
635 EXPECT_FALSE(manager.pending_render_view_host()); 635 EXPECT_FALSE(manager.pending_render_view_host());
636 636
637 // Commit. 637 // Commit.
638 manager.DidNavigateMainFrame(host); 638 manager.DidNavigateMainFrame(host);
639 EXPECT_TRUE(host == manager.current_host()); 639 EXPECT_TRUE(host == manager.current_host());
640 ASSERT_TRUE(host); 640 ASSERT_TRUE(host);
641 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> 641 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->
642 HasSite()); 642 HasSite());
643 643
644 // 3) Cross-site navigate to next site. -------------- 644 // 3) Cross-site navigate to next site. --------------
645 const GURL kUrl3("http://webkit.org/"); 645 const GURL kUrl3("http://webkit.org/");
646 NavigationEntryImpl entry3( 646 NavigationEntryImpl entry3(
647 NULL /* instance */, -1 /* page_id */, kUrl3, 647 NULL /* instance */, -1 /* page_id */, kUrl3,
648 Referrer(kUrl2, blink::WebReferrerPolicyDefault), 648 Referrer(kUrl2, blink::WebReferrerPolicyDefault),
649 string16() /* title */, PAGE_TRANSITION_LINK, 649 base::string16() /* title */, PAGE_TRANSITION_LINK,
650 false /* is_renderer_init */); 650 false /* is_renderer_init */);
651 host = manager.Navigate(entry3); 651 host = manager.Navigate(entry3);
652 652
653 // A new RenderViewHost should be created. 653 // A new RenderViewHost should be created.
654 EXPECT_TRUE(manager.pending_render_view_host()); 654 EXPECT_TRUE(manager.pending_render_view_host());
655 ASSERT_EQ(host, manager.pending_render_view_host()); 655 ASSERT_EQ(host, manager.pending_render_view_host());
656 656
657 notifications.Reset(); 657 notifications.Reset();
658 658
659 // Commit. 659 // Commit.
(...skipping 26 matching lines...) Expand all
686 686
687 // Create. 687 // Create.
688 RenderFrameHostManager manager(web_contents.get(), web_contents.get(), 688 RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
689 web_contents.get()); 689 web_contents.get());
690 690
691 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); 691 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
692 692
693 // 1) The first navigation. -------------------------- 693 // 1) The first navigation. --------------------------
694 const GURL kUrl1("http://www.google.com/"); 694 const GURL kUrl1("http://www.google.com/");
695 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1, 695 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
696 Referrer(), string16() /* title */, 696 Referrer(), base::string16() /* title */,
697 PAGE_TRANSITION_TYPED, 697 PAGE_TRANSITION_TYPED,
698 false /* is_renderer_init */); 698 false /* is_renderer_init */);
699 RenderViewHost* host = manager.Navigate(entry1); 699 RenderViewHost* host = manager.Navigate(entry1);
700 700
701 // The RenderViewHost created in Init will be reused. 701 // The RenderViewHost created in Init will be reused.
702 EXPECT_TRUE(host == manager.current_host()); 702 EXPECT_TRUE(host == manager.current_host());
703 EXPECT_FALSE(manager.pending_render_view_host()); 703 EXPECT_FALSE(manager.pending_render_view_host());
704 704
705 // We should observe a notification. 705 // We should observe a notification.
706 EXPECT_TRUE( 706 EXPECT_TRUE(
707 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); 707 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED));
708 notifications.Reset(); 708 notifications.Reset();
709 709
710 // Commit. 710 // Commit.
711 manager.DidNavigateMainFrame(host); 711 manager.DidNavigateMainFrame(host);
712 712
713 // Commit to SiteInstance should be delayed until RenderView commit. 713 // Commit to SiteInstance should be delayed until RenderView commit.
714 EXPECT_TRUE(host == manager.current_host()); 714 EXPECT_TRUE(host == manager.current_host());
715 ASSERT_TRUE(host); 715 ASSERT_TRUE(host);
716 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> 716 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->
717 HasSite()); 717 HasSite());
718 static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->SetSite(kUrl1); 718 static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->SetSite(kUrl1);
719 719
720 // 2) Cross-site navigate to next site. ------------------------- 720 // 2) Cross-site navigate to next site. -------------------------
721 const GURL kUrl2("http://www.example.com"); 721 const GURL kUrl2("http://www.example.com");
722 NavigationEntryImpl entry2( 722 NavigationEntryImpl entry2(
723 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(), 723 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(),
724 string16() /* title */, PAGE_TRANSITION_TYPED, 724 base::string16() /* title */, PAGE_TRANSITION_TYPED,
725 false /* is_renderer_init */); 725 false /* is_renderer_init */);
726 RenderViewHostImpl* host2 = static_cast<RenderViewHostImpl*>( 726 RenderViewHostImpl* host2 = static_cast<RenderViewHostImpl*>(
727 manager.Navigate(entry2)); 727 manager.Navigate(entry2));
728 int host2_process_id = host2->GetProcess()->GetID(); 728 int host2_process_id = host2->GetProcess()->GetID();
729 729
730 // A new RenderViewHost should be created. 730 // A new RenderViewHost should be created.
731 EXPECT_TRUE(manager.pending_render_view_host()); 731 EXPECT_TRUE(manager.pending_render_view_host());
732 ASSERT_EQ(host2, manager.pending_render_view_host()); 732 ASSERT_EQ(host2, manager.pending_render_view_host());
733 EXPECT_NE(host2, host); 733 EXPECT_NE(host2, host);
734 734
(...skipping 30 matching lines...) Expand all
765 EXPECT_FALSE(static_cast<RenderViewHostImpl*>( 765 EXPECT_FALSE(static_cast<RenderViewHostImpl*>(
766 manager.current_host())->is_swapped_out()); 766 manager.current_host())->is_swapped_out());
767 EXPECT_EQ(host2, manager.pending_render_view_host()); 767 EXPECT_EQ(host2, manager.pending_render_view_host());
768 // There should be still no navigation messages being sent. 768 // There should be still no navigation messages being sent.
769 EXPECT_FALSE(test_process_host2->sink().GetUniqueMessageMatching( 769 EXPECT_FALSE(test_process_host2->sink().GetUniqueMessageMatching(
770 ViewMsg_Navigate::ID)); 770 ViewMsg_Navigate::ID));
771 771
772 // 3) Cross-site navigate to next site before 2) has committed. -------------- 772 // 3) Cross-site navigate to next site before 2) has committed. --------------
773 const GURL kUrl3("http://webkit.org/"); 773 const GURL kUrl3("http://webkit.org/");
774 NavigationEntryImpl entry3(NULL /* instance */, -1 /* page_id */, kUrl3, 774 NavigationEntryImpl entry3(NULL /* instance */, -1 /* page_id */, kUrl3,
775 Referrer(), string16() /* title */, 775 Referrer(), base::string16() /* title */,
776 PAGE_TRANSITION_TYPED, 776 PAGE_TRANSITION_TYPED,
777 false /* is_renderer_init */); 777 false /* is_renderer_init */);
778 test_process_host->sink().ClearMessages(); 778 test_process_host->sink().ClearMessages();
779 RenderViewHost* host3 = manager.Navigate(entry3); 779 RenderViewHost* host3 = manager.Navigate(entry3);
780 780
781 // A new RenderViewHost should be created. host2 is now deleted. 781 // A new RenderViewHost should be created. host2 is now deleted.
782 EXPECT_TRUE(manager.pending_render_view_host()); 782 EXPECT_TRUE(manager.pending_render_view_host());
783 ASSERT_EQ(host3, manager.pending_render_view_host()); 783 ASSERT_EQ(host3, manager.pending_render_view_host());
784 EXPECT_NE(host3, host); 784 EXPECT_NE(host3, host);
785 EXPECT_NE(host3->GetProcess()->GetID(), host2_process_id); 785 EXPECT_NE(host3->GetProcess()->GetID(), host2_process_id);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 scoped_ptr<TestWebContents> web_contents( 829 scoped_ptr<TestWebContents> web_contents(
830 TestWebContents::Create(browser_context(), instance)); 830 TestWebContents::Create(browser_context(), instance));
831 RenderFrameHostManager manager(web_contents.get(), web_contents.get(), 831 RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
832 web_contents.get()); 832 web_contents.get());
833 833
834 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); 834 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
835 EXPECT_FALSE(manager.current_host()->IsRenderViewLive()); 835 EXPECT_FALSE(manager.current_host()->IsRenderViewLive());
836 836
837 const GURL kUrl("chrome://foo"); 837 const GURL kUrl("chrome://foo");
838 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl, 838 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl,
839 Referrer(), string16() /* title */, 839 Referrer(), base::string16() /* title */,
840 PAGE_TRANSITION_TYPED, 840 PAGE_TRANSITION_TYPED,
841 false /* is_renderer_init */); 841 false /* is_renderer_init */);
842 RenderViewHost* host = manager.Navigate(entry); 842 RenderViewHost* host = manager.Navigate(entry);
843 843
844 // We commit the pending RenderViewHost immediately because the previous 844 // We commit the pending RenderViewHost immediately because the previous
845 // RenderViewHost was not live. We test a case where it is live in 845 // RenderViewHost was not live. We test a case where it is live in
846 // WebUIInNewTab. 846 // WebUIInNewTab.
847 EXPECT_TRUE(host); 847 EXPECT_TRUE(host);
848 EXPECT_EQ(host, manager.current_host()); 848 EXPECT_EQ(host, manager.current_host());
849 EXPECT_FALSE(manager.pending_render_view_host()); 849 EXPECT_FALSE(manager.pending_render_view_host());
(...skipping 23 matching lines...) Expand all
873 SiteInstance* blank_instance = SiteInstance::Create(browser_context()); 873 SiteInstance* blank_instance = SiteInstance::Create(browser_context());
874 874
875 // Create a blank tab. 875 // Create a blank tab.
876 scoped_ptr<TestWebContents> web_contents1( 876 scoped_ptr<TestWebContents> web_contents1(
877 TestWebContents::Create(browser_context(), blank_instance)); 877 TestWebContents::Create(browser_context(), blank_instance));
878 RenderFrameHostManager manager1(web_contents1.get(), web_contents1.get(), 878 RenderFrameHostManager manager1(web_contents1.get(), web_contents1.get(),
879 web_contents1.get()); 879 web_contents1.get());
880 manager1.Init( 880 manager1.Init(
881 browser_context(), blank_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); 881 browser_context(), blank_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
882 // Test the case that new RVH is considered live. 882 // Test the case that new RVH is considered live.
883 manager1.current_host()->CreateRenderView(string16(), -1, -1); 883 manager1.current_host()->CreateRenderView(base::string16(), -1, -1);
884 884
885 // Navigate to a WebUI page. 885 // Navigate to a WebUI page.
886 const GURL kUrl1("chrome://foo"); 886 const GURL kUrl1("chrome://foo");
887 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1, 887 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
888 Referrer(), string16() /* title */, 888 Referrer(), base::string16() /* title */,
889 PAGE_TRANSITION_TYPED, 889 PAGE_TRANSITION_TYPED,
890 false /* is_renderer_init */); 890 false /* is_renderer_init */);
891 RenderViewHost* host1 = manager1.Navigate(entry1); 891 RenderViewHost* host1 = manager1.Navigate(entry1);
892 892
893 // We should have a pending navigation to the WebUI RenderViewHost. 893 // We should have a pending navigation to the WebUI RenderViewHost.
894 // It should already have bindings. 894 // It should already have bindings.
895 EXPECT_EQ(host1, manager1.pending_render_view_host()); 895 EXPECT_EQ(host1, manager1.pending_render_view_host());
896 EXPECT_NE(host1, manager1.current_host()); 896 EXPECT_NE(host1, manager1.current_host());
897 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 897 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
898 898
899 // Commit and ensure we still have bindings. 899 // Commit and ensure we still have bindings.
900 manager1.DidNavigateMainFrame(host1); 900 manager1.DidNavigateMainFrame(host1);
901 SiteInstance* webui_instance = host1->GetSiteInstance(); 901 SiteInstance* webui_instance = host1->GetSiteInstance();
902 EXPECT_EQ(host1, manager1.current_host()); 902 EXPECT_EQ(host1, manager1.current_host());
903 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 903 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
904 904
905 // Now simulate clicking a link that opens in a new tab. 905 // Now simulate clicking a link that opens in a new tab.
906 scoped_ptr<TestWebContents> web_contents2( 906 scoped_ptr<TestWebContents> web_contents2(
907 TestWebContents::Create(browser_context(), webui_instance)); 907 TestWebContents::Create(browser_context(), webui_instance));
908 RenderFrameHostManager manager2(web_contents2.get(), web_contents2.get(), 908 RenderFrameHostManager manager2(web_contents2.get(), web_contents2.get(),
909 web_contents2.get()); 909 web_contents2.get());
910 manager2.Init( 910 manager2.Init(
911 browser_context(), webui_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); 911 browser_context(), webui_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
912 // Make sure the new RVH is considered live. This is usually done in 912 // Make sure the new RVH is considered live. This is usually done in
913 // RenderWidgetHost::Init when opening a new tab from a link. 913 // RenderWidgetHost::Init when opening a new tab from a link.
914 manager2.current_host()->CreateRenderView(string16(), -1, -1); 914 manager2.current_host()->CreateRenderView(base::string16(), -1, -1);
915 915
916 const GURL kUrl2("chrome://foo/bar"); 916 const GURL kUrl2("chrome://foo/bar");
917 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, 917 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2,
918 Referrer(), string16() /* title */, 918 Referrer(), base::string16() /* title */,
919 PAGE_TRANSITION_LINK, 919 PAGE_TRANSITION_LINK,
920 true /* is_renderer_init */); 920 true /* is_renderer_init */);
921 RenderViewHost* host2 = manager2.Navigate(entry2); 921 RenderViewHost* host2 = manager2.Navigate(entry2);
922 922
923 // No cross-process transition happens because we are already in the right 923 // No cross-process transition happens because we are already in the right
924 // SiteInstance. We should grant bindings immediately. 924 // SiteInstance. We should grant bindings immediately.
925 EXPECT_EQ(host2, manager2.current_host()); 925 EXPECT_EQ(host2, manager2.current_host());
926 EXPECT_TRUE(host2->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 926 EXPECT_TRUE(host2->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
927 927
928 manager2.DidNavigateMainFrame(host2); 928 manager2.DidNavigateMainFrame(host2);
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 TestRenderViewHost* rvh1 = test_rvh(); 1100 TestRenderViewHost* rvh1 = test_rvh();
1101 1101
1102 // Create a new tab as an opener for the main tab. 1102 // Create a new tab as an opener for the main tab.
1103 scoped_ptr<TestWebContents> opener1( 1103 scoped_ptr<TestWebContents> opener1(
1104 TestWebContents::Create(browser_context(), rvh1->GetSiteInstance())); 1104 TestWebContents::Create(browser_context(), rvh1->GetSiteInstance()));
1105 RenderFrameHostManager* opener1_manager = 1105 RenderFrameHostManager* opener1_manager =
1106 opener1->GetRenderManagerForTesting(); 1106 opener1->GetRenderManagerForTesting();
1107 contents()->SetOpener(opener1.get()); 1107 contents()->SetOpener(opener1.get());
1108 1108
1109 // Make sure the new opener RVH is considered live. 1109 // Make sure the new opener RVH is considered live.
1110 opener1_manager->current_host()->CreateRenderView(string16(), -1, -1); 1110 opener1_manager->current_host()->CreateRenderView(base::string16(), -1, -1);
1111 1111
1112 // Use a cross-process navigation in the opener to swap out the old RVH. 1112 // Use a cross-process navigation in the opener to swap out the old RVH.
1113 EXPECT_FALSE(opener1_manager->GetSwappedOutRenderViewHost( 1113 EXPECT_FALSE(opener1_manager->GetSwappedOutRenderViewHost(
1114 rvh1->GetSiteInstance())); 1114 rvh1->GetSiteInstance()));
1115 opener1->NavigateAndCommit(kUrl2); 1115 opener1->NavigateAndCommit(kUrl2);
1116 EXPECT_TRUE(opener1_manager->GetSwappedOutRenderViewHost( 1116 EXPECT_TRUE(opener1_manager->GetSwappedOutRenderViewHost(
1117 rvh1->GetSiteInstance())); 1117 rvh1->GetSiteInstance()));
1118 1118
1119 // Fake a process crash. 1119 // Fake a process crash.
1120 RenderProcessHost::RendererClosedDetails details( 1120 RenderProcessHost::RendererClosedDetails details(
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1195 web_contents.get()); 1195 web_contents.get());
1196 1196
1197 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); 1197 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
1198 1198
1199 RenderViewHost* host; 1199 RenderViewHost* host;
1200 1200
1201 // 1) The first navigation. -------------------------- 1201 // 1) The first navigation. --------------------------
1202 const GURL kUrl1("http://www.google.com/"); 1202 const GURL kUrl1("http://www.google.com/");
1203 NavigationEntryImpl entry1( 1203 NavigationEntryImpl entry1(
1204 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), 1204 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(),
1205 string16() /* title */, PAGE_TRANSITION_TYPED, 1205 base::string16() /* title */, PAGE_TRANSITION_TYPED,
1206 false /* is_renderer_init */); 1206 false /* is_renderer_init */);
1207 host = manager.Navigate(entry1); 1207 host = manager.Navigate(entry1);
1208 1208
1209 // The RenderViewHost created in Init will be reused. 1209 // The RenderViewHost created in Init will be reused.
1210 EXPECT_TRUE(host == manager.current_host()); 1210 EXPECT_TRUE(host == manager.current_host());
1211 EXPECT_FALSE(manager.pending_render_view_host()); 1211 EXPECT_FALSE(manager.pending_render_view_host());
1212 EXPECT_EQ(manager.current_host()->GetSiteInstance(), instance); 1212 EXPECT_EQ(manager.current_host()->GetSiteInstance(), instance);
1213 1213
1214 // Commit. 1214 // Commit.
1215 manager.DidNavigateMainFrame(host); 1215 manager.DidNavigateMainFrame(host);
1216 // Commit to SiteInstance should be delayed until RenderView commit. 1216 // Commit to SiteInstance should be delayed until RenderView commit.
1217 EXPECT_EQ(host, manager.current_host()); 1217 EXPECT_EQ(host, manager.current_host());
1218 ASSERT_TRUE(host); 1218 ASSERT_TRUE(host);
1219 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> 1219 EXPECT_TRUE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->
1220 HasSite()); 1220 HasSite());
1221 1221
1222 // 2) Navigate to a different domain. ------------------------- 1222 // 2) Navigate to a different domain. -------------------------
1223 // Guests stay in the same process on navigation. 1223 // Guests stay in the same process on navigation.
1224 const GURL kUrl2("http://www.chromium.org"); 1224 const GURL kUrl2("http://www.chromium.org");
1225 NavigationEntryImpl entry2( 1225 NavigationEntryImpl entry2(
1226 NULL /* instance */, -1 /* page_id */, kUrl2, 1226 NULL /* instance */, -1 /* page_id */, kUrl2,
1227 Referrer(kUrl1, blink::WebReferrerPolicyDefault), 1227 Referrer(kUrl1, blink::WebReferrerPolicyDefault),
1228 string16() /* title */, PAGE_TRANSITION_LINK, 1228 base::string16() /* title */, PAGE_TRANSITION_LINK,
1229 true /* is_renderer_init */); 1229 true /* is_renderer_init */);
1230 host = manager.Navigate(entry2); 1230 host = manager.Navigate(entry2);
1231 1231
1232 // The RenderViewHost created in Init will be reused. 1232 // The RenderViewHost created in Init will be reused.
1233 EXPECT_EQ(host, manager.current_host()); 1233 EXPECT_EQ(host, manager.current_host());
1234 EXPECT_FALSE(manager.pending_render_view_host()); 1234 EXPECT_FALSE(manager.pending_render_view_host());
1235 1235
1236 // Commit. 1236 // Commit.
1237 manager.DidNavigateMainFrame(host); 1237 manager.DidNavigateMainFrame(host);
1238 EXPECT_EQ(host, manager.current_host()); 1238 EXPECT_EQ(host, manager.current_host());
(...skipping 18 matching lines...) Expand all
1257 1257
1258 // Create. 1258 // Create.
1259 RenderFrameHostManager manager(web_contents.get(), web_contents.get(), 1259 RenderFrameHostManager manager(web_contents.get(), web_contents.get(),
1260 web_contents.get()); 1260 web_contents.get());
1261 1261
1262 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE); 1262 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
1263 1263
1264 // 1) The first navigation. -------------------------- 1264 // 1) The first navigation. --------------------------
1265 const GURL kUrl1("http://www.google.com/"); 1265 const GURL kUrl1("http://www.google.com/");
1266 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1, 1266 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
1267 Referrer(), string16() /* title */, 1267 Referrer(), base::string16() /* title */,
1268 PAGE_TRANSITION_TYPED, 1268 PAGE_TRANSITION_TYPED,
1269 false /* is_renderer_init */); 1269 false /* is_renderer_init */);
1270 RenderViewHost* host = manager.Navigate(entry1); 1270 RenderViewHost* host = manager.Navigate(entry1);
1271 1271
1272 // The RenderViewHost created in Init will be reused. 1272 // The RenderViewHost created in Init will be reused.
1273 EXPECT_EQ(host, manager.current_host()); 1273 EXPECT_EQ(host, manager.current_host());
1274 EXPECT_FALSE(manager.pending_render_view_host()); 1274 EXPECT_FALSE(manager.pending_render_view_host());
1275 1275
1276 // We should observe a notification. 1276 // We should observe a notification.
1277 EXPECT_TRUE( 1277 EXPECT_TRUE(
1278 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); 1278 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED));
1279 notifications.Reset(); 1279 notifications.Reset();
1280 1280
1281 // Commit. 1281 // Commit.
1282 manager.DidNavigateMainFrame(host); 1282 manager.DidNavigateMainFrame(host);
1283 1283
1284 // Commit to SiteInstance should be delayed until RenderView commit. 1284 // Commit to SiteInstance should be delayed until RenderView commit.
1285 EXPECT_EQ(host, manager.current_host()); 1285 EXPECT_EQ(host, manager.current_host());
1286 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())-> 1286 EXPECT_FALSE(static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->
1287 HasSite()); 1287 HasSite());
1288 static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->SetSite(kUrl1); 1288 static_cast<SiteInstanceImpl*>(host->GetSiteInstance())->SetSite(kUrl1);
1289 1289
1290 // 2) Cross-site navigate to next site. ------------------------- 1290 // 2) Cross-site navigate to next site. -------------------------
1291 const GURL kUrl2("http://www.example.com"); 1291 const GURL kUrl2("http://www.example.com");
1292 NavigationEntryImpl entry2( 1292 NavigationEntryImpl entry2(
1293 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(), 1293 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(),
1294 string16() /* title */, PAGE_TRANSITION_TYPED, 1294 base::string16() /* title */, PAGE_TRANSITION_TYPED,
1295 false /* is_renderer_init */); 1295 false /* is_renderer_init */);
1296 RenderViewHostImpl* host2 = static_cast<RenderViewHostImpl*>( 1296 RenderViewHostImpl* host2 = static_cast<RenderViewHostImpl*>(
1297 manager.Navigate(entry2)); 1297 manager.Navigate(entry2));
1298 1298
1299 // A new RenderViewHost should be created. 1299 // A new RenderViewHost should be created.
1300 ASSERT_EQ(host2, manager.pending_render_view_host()); 1300 ASSERT_EQ(host2, manager.pending_render_view_host());
1301 EXPECT_NE(host2, host); 1301 EXPECT_NE(host2, host);
1302 1302
1303 EXPECT_EQ(host, manager.current_host()); 1303 EXPECT_EQ(host, manager.current_host());
1304 EXPECT_FALSE(static_cast<RenderViewHostImpl*>( 1304 EXPECT_FALSE(static_cast<RenderViewHostImpl*>(
1305 manager.current_host())->is_swapped_out()); 1305 manager.current_host())->is_swapped_out());
1306 EXPECT_EQ(host2, manager.pending_render_view_host()); 1306 EXPECT_EQ(host2, manager.pending_render_view_host());
1307 1307
1308 // 3) Close the tab. ------------------------- 1308 // 3) Close the tab. -------------------------
1309 notifications.ListenFor(NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, 1309 notifications.ListenFor(NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED,
1310 Source<RenderWidgetHost>(host2)); 1310 Source<RenderWidgetHost>(host2));
1311 manager.ShouldClosePage(false, true, base::TimeTicks()); 1311 manager.ShouldClosePage(false, true, base::TimeTicks());
1312 1312
1313 EXPECT_TRUE( 1313 EXPECT_TRUE(
1314 notifications.Check1AndReset(NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED)); 1314 notifications.Check1AndReset(NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED));
1315 EXPECT_FALSE(manager.pending_render_view_host()); 1315 EXPECT_FALSE(manager.pending_render_view_host());
1316 EXPECT_EQ(host, manager.current_host()); 1316 EXPECT_EQ(host, manager.current_host());
1317 } 1317 }
1318 1318
1319 } // namespace content 1319 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698