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

Side by Side Diff: content/browser/web_contents/render_view_host_manager_unittest.cc

Issue 16032007: Create RenderFrame/RenderFrameHost for the main frame of a page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removing routing ID expectations. Created 7 years, 6 months 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 (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/utf_string_conversions.h" 5 #include "base/utf_string_conversions.h"
6 #include "content/browser/browser_thread_impl.h" 6 #include "content/browser/browser_thread_impl.h"
7 #include "content/browser/renderer_host/test_render_view_host.h" 7 #include "content/browser/renderer_host/test_render_view_host.h"
8 #include "content/browser/site_instance_impl.h" 8 #include "content/browser/site_instance_impl.h"
9 #include "content/browser/web_contents/navigation_controller_impl.h" 9 #include "content/browser/web_contents/navigation_controller_impl.h"
10 #include "content/browser/web_contents/navigation_entry_impl.h" 10 #include "content/browser/web_contents/navigation_entry_impl.h"
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 // Using TestBrowserContext. 325 // Using TestBrowserContext.
326 SiteInstanceImpl* instance = 326 SiteInstanceImpl* instance =
327 static_cast<SiteInstanceImpl*>(SiteInstance::Create(browser_context())); 327 static_cast<SiteInstanceImpl*>(SiteInstance::Create(browser_context()));
328 EXPECT_FALSE(instance->HasSite()); 328 EXPECT_FALSE(instance->HasSite());
329 329
330 scoped_ptr<TestWebContents> web_contents( 330 scoped_ptr<TestWebContents> web_contents(
331 TestWebContents::Create(browser_context(), instance)); 331 TestWebContents::Create(browser_context(), instance));
332 RenderViewHostManager manager(web_contents.get(), web_contents.get(), 332 RenderViewHostManager manager(web_contents.get(), web_contents.get(),
333 web_contents.get()); 333 web_contents.get());
334 334
335 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 335 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
336 336
337 RenderViewHost* host = manager.current_host(); 337 RenderViewHost* host = manager.current_host();
338 ASSERT_TRUE(host); 338 ASSERT_TRUE(host);
339 EXPECT_EQ(instance, host->GetSiteInstance()); 339 EXPECT_EQ(instance, host->GetSiteInstance());
340 EXPECT_EQ(web_contents.get(), host->GetDelegate()); 340 EXPECT_EQ(web_contents.get(), host->GetDelegate());
341 EXPECT_TRUE(manager.GetRenderWidgetHostView()); 341 EXPECT_TRUE(manager.GetRenderWidgetHostView());
342 EXPECT_FALSE(manager.pending_render_view_host()); 342 EXPECT_FALSE(manager.pending_render_view_host());
343 } 343 }
344 344
345 // Tests the Navigate function. We navigate three sites consecutively and check 345 // Tests the Navigate function. We navigate three sites consecutively and check
346 // how the pending/committed RenderViewHost are modified. 346 // how the pending/committed RenderViewHost are modified.
347 TEST_F(RenderViewHostManagerTest, Navigate) { 347 TEST_F(RenderViewHostManagerTest, Navigate) {
348 TestNotificationTracker notifications; 348 TestNotificationTracker notifications;
349 349
350 SiteInstance* instance = SiteInstance::Create(browser_context()); 350 SiteInstance* instance = SiteInstance::Create(browser_context());
351 351
352 scoped_ptr<TestWebContents> web_contents( 352 scoped_ptr<TestWebContents> web_contents(
353 TestWebContents::Create(browser_context(), instance)); 353 TestWebContents::Create(browser_context(), instance));
354 notifications.ListenFor( 354 notifications.ListenFor(
355 NOTIFICATION_RENDER_VIEW_HOST_CHANGED, 355 NOTIFICATION_RENDER_VIEW_HOST_CHANGED,
356 Source<NavigationController>(&web_contents->GetController())); 356 Source<NavigationController>(&web_contents->GetController()));
357 357
358 // Create. 358 // Create.
359 RenderViewHostManager manager(web_contents.get(), web_contents.get(), 359 RenderViewHostManager manager(web_contents.get(), web_contents.get(),
360 web_contents.get()); 360 web_contents.get());
361 361
362 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 362 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
363 363
364 RenderViewHost* host; 364 RenderViewHost* host;
365 365
366 // 1) The first navigation. -------------------------- 366 // 1) The first navigation. --------------------------
367 const GURL kUrl1("http://www.google.com/"); 367 const GURL kUrl1("http://www.google.com/");
368 NavigationEntryImpl entry1( 368 NavigationEntryImpl entry1(
369 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), 369 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(),
370 string16() /* title */, PAGE_TRANSITION_TYPED, 370 string16() /* title */, PAGE_TRANSITION_TYPED,
371 false /* is_renderer_init */); 371 false /* is_renderer_init */);
372 host = manager.Navigate(entry1); 372 host = manager.Navigate(entry1);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 scoped_ptr<TestWebContents> web_contents( 445 scoped_ptr<TestWebContents> web_contents(
446 TestWebContents::Create(browser_context(), instance)); 446 TestWebContents::Create(browser_context(), instance));
447 notifications.ListenFor( 447 notifications.ListenFor(
448 NOTIFICATION_RENDER_VIEW_HOST_CHANGED, 448 NOTIFICATION_RENDER_VIEW_HOST_CHANGED,
449 Source<NavigationController>(&web_contents->GetController())); 449 Source<NavigationController>(&web_contents->GetController()));
450 450
451 // Create. 451 // Create.
452 RenderViewHostManager manager(web_contents.get(), web_contents.get(), 452 RenderViewHostManager manager(web_contents.get(), web_contents.get(),
453 web_contents.get()); 453 web_contents.get());
454 454
455 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 455 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
456 456
457 // 1) The first navigation. -------------------------- 457 // 1) The first navigation. --------------------------
458 const GURL kUrl1("http://www.google.com/"); 458 const GURL kUrl1("http://www.google.com/");
459 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1, 459 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
460 Referrer(), string16() /* title */, 460 Referrer(), string16() /* title */,
461 PAGE_TRANSITION_TYPED, 461 PAGE_TRANSITION_TYPED,
462 false /* is_renderer_init */); 462 false /* is_renderer_init */);
463 RenderViewHost* host = manager.Navigate(entry1); 463 RenderViewHost* host = manager.Navigate(entry1);
464 464
465 // The RenderViewHost created in Init will be reused. 465 // The RenderViewHost created in Init will be reused.
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 TEST_F(RenderViewHostManagerTest, WebUI) { 592 TEST_F(RenderViewHostManagerTest, WebUI) {
593 set_should_create_webui(true); 593 set_should_create_webui(true);
594 BrowserThreadImpl ui_thread(BrowserThread::UI, base::MessageLoop::current()); 594 BrowserThreadImpl ui_thread(BrowserThread::UI, base::MessageLoop::current());
595 SiteInstance* instance = SiteInstance::Create(browser_context()); 595 SiteInstance* instance = SiteInstance::Create(browser_context());
596 596
597 scoped_ptr<TestWebContents> web_contents( 597 scoped_ptr<TestWebContents> web_contents(
598 TestWebContents::Create(browser_context(), instance)); 598 TestWebContents::Create(browser_context(), instance));
599 RenderViewHostManager manager(web_contents.get(), web_contents.get(), 599 RenderViewHostManager manager(web_contents.get(), web_contents.get(),
600 web_contents.get()); 600 web_contents.get());
601 601
602 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 602 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
603 EXPECT_FALSE(manager.current_host()->IsRenderViewLive()); 603 EXPECT_FALSE(manager.current_host()->IsRenderViewLive());
604 604
605 const GURL kUrl("chrome://foo"); 605 const GURL kUrl("chrome://foo");
606 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl, 606 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl,
607 Referrer(), string16() /* title */, 607 Referrer(), string16() /* title */,
608 PAGE_TRANSITION_TYPED, 608 PAGE_TRANSITION_TYPED,
609 false /* is_renderer_init */); 609 false /* is_renderer_init */);
610 RenderViewHost* host = manager.Navigate(entry); 610 RenderViewHost* host = manager.Navigate(entry);
611 611
612 // We commit the pending RenderViewHost immediately because the previous 612 // We commit the pending RenderViewHost immediately because the previous
(...skipping 25 matching lines...) Expand all
638 // grant the correct bindings. http://crbug.com/189101. 638 // grant the correct bindings. http://crbug.com/189101.
639 TEST_F(RenderViewHostManagerTest, WebUIInNewTab) { 639 TEST_F(RenderViewHostManagerTest, WebUIInNewTab) {
640 set_should_create_webui(true); 640 set_should_create_webui(true);
641 SiteInstance* blank_instance = SiteInstance::Create(browser_context()); 641 SiteInstance* blank_instance = SiteInstance::Create(browser_context());
642 642
643 // Create a blank tab. 643 // Create a blank tab.
644 scoped_ptr<TestWebContents> web_contents1( 644 scoped_ptr<TestWebContents> web_contents1(
645 TestWebContents::Create(browser_context(), blank_instance)); 645 TestWebContents::Create(browser_context(), blank_instance));
646 RenderViewHostManager manager1(web_contents1.get(), web_contents1.get(), 646 RenderViewHostManager manager1(web_contents1.get(), web_contents1.get(),
647 web_contents1.get()); 647 web_contents1.get());
648 manager1.Init(browser_context(), blank_instance, MSG_ROUTING_NONE); 648 manager1.Init(
649 browser_context(), blank_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
649 // Test the case that new RVH is considered live. 650 // Test the case that new RVH is considered live.
650 manager1.current_host()->CreateRenderView(string16(), -1, -1); 651 manager1.current_host()->CreateRenderView(string16(), -1, -1);
651 652
652 // Navigate to a WebUI page. 653 // Navigate to a WebUI page.
653 const GURL kUrl1("chrome://foo"); 654 const GURL kUrl1("chrome://foo");
654 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1, 655 NavigationEntryImpl entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
655 Referrer(), string16() /* title */, 656 Referrer(), string16() /* title */,
656 PAGE_TRANSITION_TYPED, 657 PAGE_TRANSITION_TYPED,
657 false /* is_renderer_init */); 658 false /* is_renderer_init */);
658 RenderViewHost* host1 = manager1.Navigate(entry1); 659 RenderViewHost* host1 = manager1.Navigate(entry1);
659 660
660 // We should have a pending navigation to the WebUI RenderViewHost. 661 // We should have a pending navigation to the WebUI RenderViewHost.
661 // It should already have bindings. 662 // It should already have bindings.
662 EXPECT_EQ(host1, manager1.pending_render_view_host()); 663 EXPECT_EQ(host1, manager1.pending_render_view_host());
663 EXPECT_NE(host1, manager1.current_host()); 664 EXPECT_NE(host1, manager1.current_host());
664 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 665 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
665 666
666 // Commit and ensure we still have bindings. 667 // Commit and ensure we still have bindings.
667 manager1.DidNavigateMainFrame(host1); 668 manager1.DidNavigateMainFrame(host1);
668 SiteInstance* webui_instance = host1->GetSiteInstance(); 669 SiteInstance* webui_instance = host1->GetSiteInstance();
669 EXPECT_EQ(host1, manager1.current_host()); 670 EXPECT_EQ(host1, manager1.current_host());
670 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 671 EXPECT_TRUE(host1->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
671 672
672 // Now simulate clicking a link that opens in a new tab. 673 // Now simulate clicking a link that opens in a new tab.
673 scoped_ptr<TestWebContents> web_contents2( 674 scoped_ptr<TestWebContents> web_contents2(
674 TestWebContents::Create(browser_context(), webui_instance)); 675 TestWebContents::Create(browser_context(), webui_instance));
675 RenderViewHostManager manager2(web_contents2.get(), web_contents2.get(), 676 RenderViewHostManager manager2(web_contents2.get(), web_contents2.get(),
676 web_contents2.get()); 677 web_contents2.get());
677 manager2.Init(browser_context(), webui_instance, MSG_ROUTING_NONE); 678 manager2.Init(
679 browser_context(), webui_instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
678 // Make sure the new RVH is considered live. This is usually done in 680 // Make sure the new RVH is considered live. This is usually done in
679 // RenderWidgetHost::Init when opening a new tab from a link. 681 // RenderWidgetHost::Init when opening a new tab from a link.
680 manager2.current_host()->CreateRenderView(string16(), -1, -1); 682 manager2.current_host()->CreateRenderView(string16(), -1, -1);
681 683
682 const GURL kUrl2("chrome://foo/bar"); 684 const GURL kUrl2("chrome://foo/bar");
683 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, 685 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2,
684 Referrer(), string16() /* title */, 686 Referrer(), string16() /* title */,
685 PAGE_TRANSITION_LINK, 687 PAGE_TRANSITION_LINK,
686 true /* is_renderer_init */); 688 true /* is_renderer_init */);
687 RenderViewHost* host2 = manager2.Navigate(entry2); 689 RenderViewHost* host2 = manager2.Navigate(entry2);
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 GURL guest_url(std::string(chrome::kGuestScheme).append("://abc123")); 896 GURL guest_url(std::string(chrome::kGuestScheme).append("://abc123"));
895 SiteInstance* instance = 897 SiteInstance* instance =
896 SiteInstance::CreateForURL(browser_context(), guest_url); 898 SiteInstance::CreateForURL(browser_context(), guest_url);
897 scoped_ptr<TestWebContents> web_contents( 899 scoped_ptr<TestWebContents> web_contents(
898 TestWebContents::Create(browser_context(), instance)); 900 TestWebContents::Create(browser_context(), instance));
899 901
900 // Create. 902 // Create.
901 RenderViewHostManager manager(web_contents.get(), web_contents.get(), 903 RenderViewHostManager manager(web_contents.get(), web_contents.get(),
902 web_contents.get()); 904 web_contents.get());
903 905
904 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 906 manager.Init(browser_context(), instance, MSG_ROUTING_NONE, MSG_ROUTING_NONE);
905 907
906 RenderViewHost* host; 908 RenderViewHost* host;
907 909
908 // 1) The first navigation. -------------------------- 910 // 1) The first navigation. --------------------------
909 const GURL kUrl1("http://www.google.com/"); 911 const GURL kUrl1("http://www.google.com/");
910 NavigationEntryImpl entry1( 912 NavigationEntryImpl entry1(
911 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), 913 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(),
912 string16() /* title */, PAGE_TRANSITION_TYPED, 914 string16() /* title */, PAGE_TRANSITION_TYPED,
913 false /* is_renderer_init */); 915 false /* is_renderer_init */);
914 host = manager.Navigate(entry1); 916 host = manager.Navigate(entry1);
(...skipping 27 matching lines...) Expand all
942 944
943 // Commit. 945 // Commit.
944 manager.DidNavigateMainFrame(host); 946 manager.DidNavigateMainFrame(host);
945 EXPECT_EQ(host, manager.current_host()); 947 EXPECT_EQ(host, manager.current_host());
946 ASSERT_TRUE(host); 948 ASSERT_TRUE(host);
947 EXPECT_EQ(static_cast<SiteInstanceImpl*>(host->GetSiteInstance()), 949 EXPECT_EQ(static_cast<SiteInstanceImpl*>(host->GetSiteInstance()),
948 instance); 950 instance);
949 } 951 }
950 952
951 } // namespace content 953 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/render_view_host_manager.cc ('k') | content/browser/web_contents/web_contents_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698