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

Side by Side Diff: content/browser/tab_contents/tab_contents_unittest.cc

Issue 8956059: Rename NavigationController to NavigationControllerImpl and put it into the content namespace. Al... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 8 years, 11 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/mock_content_browser_client.h" 7 #include "content/browser/mock_content_browser_client.h"
8 #include "content/browser/renderer_host/render_view_host.h" 8 #include "content/browser/renderer_host/render_view_host.h"
9 #include "content/browser/renderer_host/render_widget_host_view.h" 9 #include "content/browser/renderer_host/render_widget_host_view.h"
10 #include "content/browser/renderer_host/test_render_view_host.h" 10 #include "content/browser/renderer_host/test_render_view_host.h"
11 #include "content/browser/site_instance.h" 11 #include "content/browser/site_instance.h"
12 #include "content/browser/tab_contents/interstitial_page.h" 12 #include "content/browser/tab_contents/interstitial_page.h"
13 #include "content/browser/tab_contents/navigation_entry.h" 13 #include "content/browser/tab_contents/navigation_entry_impl.h"
14 #include "content/browser/tab_contents/test_tab_contents.h" 14 #include "content/browser/tab_contents/test_tab_contents.h"
15 #include "content/browser/webui/empty_web_ui_factory.h" 15 #include "content/browser/webui/empty_web_ui_factory.h"
16 #include "content/common/view_messages.h" 16 #include "content/common/view_messages.h"
17 #include "content/public/browser/navigation_details.h" 17 #include "content/public/browser/navigation_details.h"
18 #include "content/public/browser/notification_details.h" 18 #include "content/public/browser/notification_details.h"
19 #include "content/public/browser/notification_source.h" 19 #include "content/public/browser/notification_source.h"
20 #include "content/public/browser/notification_source.h" 20 #include "content/public/browser/notification_source.h"
21 #include "content/public/common/bindings_policy.h" 21 #include "content/public/common/bindings_policy.h"
22 #include "content/public/common/content_constants.h" 22 #include "content/public/common/content_constants.h"
23 #include "content/public/common/url_constants.h" 23 #include "content/public/common/url_constants.h"
24 #include "content/test/test_browser_thread.h" 24 #include "content/test/test_browser_thread.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 #include "webkit/glue/webkit_glue.h" 26 #include "webkit/glue/webkit_glue.h"
27 27
28 using content::BrowserThread; 28 using content::BrowserThread;
29 using content::NavigationEntry;
30 using content::NavigationEntryImpl;
29 using webkit::forms::PasswordForm; 31 using webkit::forms::PasswordForm;
30 32
31 namespace { 33 namespace {
32 34
33 class TabContentsTestWebUIFactory : public content::EmptyWebUIFactory { 35 class TabContentsTestWebUIFactory : public content::EmptyWebUIFactory {
34 public: 36 public:
35 virtual WebUI* CreateWebUIForURL(TabContents* source, 37 virtual WebUI* CreateWebUIForURL(TabContents* source,
36 const GURL& url) const OVERRIDE { 38 const GURL& url) const OVERRIDE {
37 if (!HasWebUIScheme(url)) 39 if (!HasWebUIScheme(url))
38 return NULL; 40 return NULL;
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 300
299 // Navigate to URL 301 // Navigate to URL
300 const GURL url("http://www.google.com"); 302 const GURL url("http://www.google.com");
301 controller().LoadURL( 303 controller().LoadURL(
302 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 304 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
303 EXPECT_FALSE(contents()->cross_navigation_pending()); 305 EXPECT_FALSE(contents()->cross_navigation_pending());
304 EXPECT_EQ(instance1, orig_rvh->site_instance()); 306 EXPECT_EQ(instance1, orig_rvh->site_instance());
305 // Controller's pending entry will have a NULL site instance until we assign 307 // Controller's pending entry will have a NULL site instance until we assign
306 // it in DidNavigate. 308 // it in DidNavigate.
307 EXPECT_TRUE( 309 EXPECT_TRUE(
308 NavigationEntry::FromNavigationEntry(controller().GetActiveEntry())-> 310 NavigationEntryImpl::FromNavigationEntry(controller().GetActiveEntry())->
309 site_instance() == NULL); 311 site_instance() == NULL);
310 312
311 // DidNavigate from the page 313 // DidNavigate from the page
312 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 314 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
313 EXPECT_FALSE(contents()->cross_navigation_pending()); 315 EXPECT_FALSE(contents()->cross_navigation_pending());
314 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost()); 316 EXPECT_EQ(orig_rvh, contents()->GetRenderViewHost());
315 EXPECT_EQ(instance1, orig_rvh->site_instance()); 317 EXPECT_EQ(instance1, orig_rvh->site_instance());
316 // Controller's entry should now have the SiteInstance, or else we won't be 318 // Controller's entry should now have the SiteInstance, or else we won't be
317 // able to find it later. 319 // able to find it later.
318 EXPECT_EQ( 320 EXPECT_EQ(
319 instance1, 321 instance1,
320 NavigationEntry::FromNavigationEntry(controller().GetActiveEntry())-> 322 NavigationEntryImpl::FromNavigationEntry(controller().GetActiveEntry())->
321 site_instance()); 323 site_instance());
322 } 324 }
323 325
324 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars. 326 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars.
325 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) { 327 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) {
326 // Construct a URL that's kMaxURLChars + 1 long of all 'a's. 328 // Construct a URL that's kMaxURLChars + 1 long of all 'a's.
327 const GURL url(std::string("http://example.org/").append( 329 const GURL url(std::string("http://example.org/").append(
328 content::kMaxURLChars + 1, 'a')); 330 content::kMaxURLChars + 1, 'a'));
329 331
330 controller().LoadURL( 332 controller().LoadURL(
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 653
652 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) { 654 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) {
653 contents()->transition_cross_site = true; 655 contents()->transition_cross_site = true;
654 656
655 // Start with a web ui page, which gets a new RVH with WebUI bindings. 657 // Start with a web ui page, which gets a new RVH with WebUI bindings.
656 const GURL url1("tabcontentstest://blah"); 658 const GURL url1("tabcontentstest://blah");
657 controller().LoadURL( 659 controller().LoadURL(
658 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 660 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
659 TestRenderViewHost* ntp_rvh = rvh(); 661 TestRenderViewHost* ntp_rvh = rvh();
660 contents()->TestDidNavigate(ntp_rvh, 1, url1, content::PAGE_TRANSITION_TYPED); 662 contents()->TestDidNavigate(ntp_rvh, 1, url1, content::PAGE_TRANSITION_TYPED);
661 content::NavigationEntry* entry1 = controller().GetLastCommittedEntry(); 663 NavigationEntry* entry1 = controller().GetLastCommittedEntry();
662 SiteInstance* instance1 = contents()->GetSiteInstance(); 664 SiteInstance* instance1 = contents()->GetSiteInstance();
663 665
664 EXPECT_FALSE(contents()->cross_navigation_pending()); 666 EXPECT_FALSE(contents()->cross_navigation_pending());
665 EXPECT_EQ(ntp_rvh, contents()->GetRenderViewHost()); 667 EXPECT_EQ(ntp_rvh, contents()->GetRenderViewHost());
666 EXPECT_EQ(url1, entry1->GetURL()); 668 EXPECT_EQ(url1, entry1->GetURL());
667 EXPECT_EQ(instance1, 669 EXPECT_EQ(instance1,
668 NavigationEntry::FromNavigationEntry(entry1)->site_instance()); 670 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance());
669 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI); 671 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI);
670 672
671 // Navigate to new site. 673 // Navigate to new site.
672 const GURL url2("http://www.google.com"); 674 const GURL url2("http://www.google.com");
673 controller().LoadURL( 675 controller().LoadURL(
674 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 676 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
675 EXPECT_TRUE(contents()->cross_navigation_pending()); 677 EXPECT_TRUE(contents()->cross_navigation_pending());
676 TestRenderViewHost* google_rvh = contents()->pending_rvh(); 678 TestRenderViewHost* google_rvh = contents()->pending_rvh();
677 679
678 // Simulate beforeunload approval. 680 // Simulate beforeunload approval.
679 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack()); 681 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack());
680 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 682 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
681 683
682 // DidNavigate from the pending page. 684 // DidNavigate from the pending page.
683 contents()->TestDidNavigate( 685 contents()->TestDidNavigate(
684 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 686 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
685 content::NavigationEntry* entry2 = controller().GetLastCommittedEntry(); 687 NavigationEntry* entry2 = controller().GetLastCommittedEntry();
686 SiteInstance* instance2 = contents()->GetSiteInstance(); 688 SiteInstance* instance2 = contents()->GetSiteInstance();
687 689
688 EXPECT_FALSE(contents()->cross_navigation_pending()); 690 EXPECT_FALSE(contents()->cross_navigation_pending());
689 EXPECT_EQ(google_rvh, contents()->GetRenderViewHost()); 691 EXPECT_EQ(google_rvh, contents()->GetRenderViewHost());
690 EXPECT_NE(instance1, instance2); 692 EXPECT_NE(instance1, instance2);
691 EXPECT_FALSE(contents()->pending_rvh()); 693 EXPECT_FALSE(contents()->pending_rvh());
692 EXPECT_EQ(url2, entry2->GetURL()); 694 EXPECT_EQ(url2, entry2->GetURL());
693 EXPECT_EQ(instance2, 695 EXPECT_EQ(instance2,
694 NavigationEntry::FromNavigationEntry(entry2)->site_instance()); 696 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance());
695 EXPECT_FALSE(google_rvh->enabled_bindings() & 697 EXPECT_FALSE(google_rvh->enabled_bindings() &
696 content::BINDINGS_POLICY_WEB_UI); 698 content::BINDINGS_POLICY_WEB_UI);
697 699
698 // Navigate to third page on same site. 700 // Navigate to third page on same site.
699 const GURL url3("http://news.google.com"); 701 const GURL url3("http://news.google.com");
700 controller().LoadURL( 702 controller().LoadURL(
701 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 703 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
702 EXPECT_FALSE(contents()->cross_navigation_pending()); 704 EXPECT_FALSE(contents()->cross_navigation_pending());
703 contents()->TestDidNavigate( 705 contents()->TestDidNavigate(
704 google_rvh, 2, url3, content::PAGE_TRANSITION_TYPED); 706 google_rvh, 2, url3, content::PAGE_TRANSITION_TYPED);
705 content::NavigationEntry* entry3 = controller().GetLastCommittedEntry(); 707 NavigationEntry* entry3 = controller().GetLastCommittedEntry();
706 SiteInstance* instance3 = contents()->GetSiteInstance(); 708 SiteInstance* instance3 = contents()->GetSiteInstance();
707 709
708 EXPECT_FALSE(contents()->cross_navigation_pending()); 710 EXPECT_FALSE(contents()->cross_navigation_pending());
709 EXPECT_EQ(google_rvh, contents()->GetRenderViewHost()); 711 EXPECT_EQ(google_rvh, contents()->GetRenderViewHost());
710 EXPECT_EQ(instance2, instance3); 712 EXPECT_EQ(instance2, instance3);
711 EXPECT_FALSE(contents()->pending_rvh()); 713 EXPECT_FALSE(contents()->pending_rvh());
712 EXPECT_EQ(url3, entry3->GetURL()); 714 EXPECT_EQ(url3, entry3->GetURL());
713 EXPECT_EQ(instance3, 715 EXPECT_EQ(instance3,
714 NavigationEntry::FromNavigationEntry(entry3)->site_instance()); 716 NavigationEntryImpl::FromNavigationEntry(entry3)->site_instance());
715 717
716 // Go back within the site. 718 // Go back within the site.
717 controller().GoBack(); 719 controller().GoBack();
718 EXPECT_FALSE(contents()->cross_navigation_pending()); 720 EXPECT_FALSE(contents()->cross_navigation_pending());
719 EXPECT_EQ(entry2, controller().GetPendingEntry()); 721 EXPECT_EQ(entry2, controller().GetPendingEntry());
720 722
721 // Before that commits, go back again. 723 // Before that commits, go back again.
722 controller().GoBack(); 724 controller().GoBack();
723 EXPECT_TRUE(contents()->cross_navigation_pending()); 725 EXPECT_TRUE(contents()->cross_navigation_pending());
724 EXPECT_TRUE(contents()->pending_rvh()); 726 EXPECT_TRUE(contents()->pending_rvh());
725 EXPECT_EQ(entry1, controller().GetPendingEntry()); 727 EXPECT_EQ(entry1, controller().GetPendingEntry());
726 728
727 // Simulate beforeunload approval. 729 // Simulate beforeunload approval.
728 EXPECT_TRUE(google_rvh->is_waiting_for_beforeunload_ack()); 730 EXPECT_TRUE(google_rvh->is_waiting_for_beforeunload_ack());
729 google_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 731 google_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
730 732
731 // DidNavigate from the first back. This aborts the second back's pending RVH. 733 // DidNavigate from the first back. This aborts the second back's pending RVH.
732 contents()->TestDidNavigate( 734 contents()->TestDidNavigate(
733 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 735 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
734 736
735 // We should commit this page and forget about the second back. 737 // We should commit this page and forget about the second back.
736 EXPECT_FALSE(contents()->cross_navigation_pending()); 738 EXPECT_FALSE(contents()->cross_navigation_pending());
737 EXPECT_FALSE(controller().GetPendingEntry()); 739 EXPECT_FALSE(controller().GetPendingEntry());
738 EXPECT_EQ(google_rvh, contents()->GetRenderViewHost()); 740 EXPECT_EQ(google_rvh, contents()->GetRenderViewHost());
739 EXPECT_EQ(url2, controller().GetLastCommittedEntry()->GetURL()); 741 EXPECT_EQ(url2, controller().GetLastCommittedEntry()->GetURL());
740 742
741 // We should not have corrupted the NTP entry. 743 // We should not have corrupted the NTP entry.
742 EXPECT_EQ(instance3, 744 EXPECT_EQ(instance3,
743 NavigationEntry::FromNavigationEntry(entry3)->site_instance()); 745 NavigationEntryImpl::FromNavigationEntry(entry3)->site_instance());
744 EXPECT_EQ(instance2, 746 EXPECT_EQ(instance2,
745 NavigationEntry::FromNavigationEntry(entry2)->site_instance()); 747 NavigationEntryImpl::FromNavigationEntry(entry2)->site_instance());
746 EXPECT_EQ(instance1, 748 EXPECT_EQ(instance1,
747 NavigationEntry::FromNavigationEntry(entry1)->site_instance()); 749 NavigationEntryImpl::FromNavigationEntry(entry1)->site_instance());
748 EXPECT_EQ(url1, entry1->GetURL()); 750 EXPECT_EQ(url1, entry1->GetURL());
749 } 751 }
750 752
751 // Test that during a slow cross-site navigation, a sub-frame navigation in the 753 // Test that during a slow cross-site navigation, a sub-frame navigation in the
752 // original renderer will not cancel the slow navigation (bug 42029). 754 // original renderer will not cancel the slow navigation (bug 42029).
753 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) { 755 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) {
754 contents()->transition_cross_site = true; 756 contents()->transition_cross_site = true;
755 TestRenderViewHost* orig_rvh = rvh(); 757 TestRenderViewHost* orig_rvh = rvh();
756 758
757 // Navigate to URL. First URL should use first RenderViewHost. 759 // Navigate to URL. First URL should use first RenderViewHost.
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 916
915 // Test that NavigationEntries have the correct content state after going 917 // Test that NavigationEntries have the correct content state after going
916 // forward and back. Prevents regression for bug 1116137. 918 // forward and back. Prevents regression for bug 1116137.
917 TEST_F(TabContentsTest, NavigationEntryContentState) { 919 TEST_F(TabContentsTest, NavigationEntryContentState) {
918 TestRenderViewHost* orig_rvh = rvh(); 920 TestRenderViewHost* orig_rvh = rvh();
919 921
920 // Navigate to URL. There should be no committed entry yet. 922 // Navigate to URL. There should be no committed entry yet.
921 const GURL url("http://www.google.com"); 923 const GURL url("http://www.google.com");
922 controller().LoadURL( 924 controller().LoadURL(
923 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 925 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
924 content::NavigationEntry* entry = controller().GetLastCommittedEntry(); 926 NavigationEntry* entry = controller().GetLastCommittedEntry();
925 EXPECT_TRUE(entry == NULL); 927 EXPECT_TRUE(entry == NULL);
926 928
927 // Committed entry should have content state after DidNavigate. 929 // Committed entry should have content state after DidNavigate.
928 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 930 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
929 entry = controller().GetLastCommittedEntry(); 931 entry = controller().GetLastCommittedEntry();
930 EXPECT_FALSE(entry->GetContentState().empty()); 932 EXPECT_FALSE(entry->GetContentState().empty());
931 933
932 // Navigate to same site. 934 // Navigate to same site.
933 const GURL url2("http://images.google.com"); 935 const GURL url2("http://images.google.com");
934 controller().LoadURL( 936 controller().LoadURL(
(...skipping 19 matching lines...) Expand all
954 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) { 956 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) {
955 TestRenderViewHost* orig_rvh = rvh(); 957 TestRenderViewHost* orig_rvh = rvh();
956 958
957 // When opening a new window, it is navigated to about:blank internally. 959 // When opening a new window, it is navigated to about:blank internally.
958 // Currently, this results in two DidNavigate events. 960 // Currently, this results in two DidNavigate events.
959 const GURL url(chrome::kAboutBlankURL); 961 const GURL url(chrome::kAboutBlankURL);
960 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 962 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
961 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 963 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED);
962 964
963 // Should have a content state here. 965 // Should have a content state here.
964 content::NavigationEntry* entry = controller().GetLastCommittedEntry(); 966 NavigationEntry* entry = controller().GetLastCommittedEntry();
965 EXPECT_FALSE(entry->GetContentState().empty()); 967 EXPECT_FALSE(entry->GetContentState().empty());
966 } 968 }
967 969
968 //////////////////////////////////////////////////////////////////////////////// 970 ////////////////////////////////////////////////////////////////////////////////
969 // Interstitial Tests 971 // Interstitial Tests
970 //////////////////////////////////////////////////////////////////////////////// 972 ////////////////////////////////////////////////////////////////////////////////
971 973
972 // Test navigating to a page (with the navigation initiated from the browser, 974 // Test navigating to a page (with the navigation initiated from the browser,
973 // as when a URL is typed in the location bar) that shows an interstitial and 975 // as when a URL is typed in the location bar) that shows an interstitial and
974 // creates a new navigation entry, then hiding it without proceeding. 976 // creates a new navigation entry, then hiding it without proceeding.
(...skipping 19 matching lines...) Expand all
994 interstitial->Show(); 996 interstitial->Show();
995 // The interstitial should not show until its navigation has committed. 997 // The interstitial should not show until its navigation has committed.
996 EXPECT_FALSE(interstitial->is_showing()); 998 EXPECT_FALSE(interstitial->is_showing());
997 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 999 EXPECT_FALSE(contents()->ShowingInterstitialPage());
998 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1000 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
999 // Let's commit the interstitial navigation. 1001 // Let's commit the interstitial navigation.
1000 interstitial->TestDidNavigate(1, url2); 1002 interstitial->TestDidNavigate(1, url2);
1001 EXPECT_TRUE(interstitial->is_showing()); 1003 EXPECT_TRUE(interstitial->is_showing());
1002 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1004 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1003 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1005 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
1004 content::NavigationEntry* entry = controller().GetActiveEntry(); 1006 NavigationEntry* entry = controller().GetActiveEntry();
1005 ASSERT_TRUE(entry != NULL); 1007 ASSERT_TRUE(entry != NULL);
1006 EXPECT_TRUE(entry->GetURL() == url2); 1008 EXPECT_TRUE(entry->GetURL() == url2);
1007 1009
1008 // Now don't proceed. 1010 // Now don't proceed.
1009 interstitial->DontProceed(); 1011 interstitial->DontProceed();
1010 EXPECT_TRUE(deleted); 1012 EXPECT_TRUE(deleted);
1011 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1013 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1012 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1014 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1013 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1015 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1014 entry = controller().GetActiveEntry(); 1016 entry = controller().GetActiveEntry();
(...skipping 24 matching lines...) Expand all
1039 interstitial->Show(); 1041 interstitial->Show();
1040 // The interstitial should not show until its navigation has committed. 1042 // The interstitial should not show until its navigation has committed.
1041 EXPECT_FALSE(interstitial->is_showing()); 1043 EXPECT_FALSE(interstitial->is_showing());
1042 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1044 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1043 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1045 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1044 // Let's commit the interstitial navigation. 1046 // Let's commit the interstitial navigation.
1045 interstitial->TestDidNavigate(1, url2); 1047 interstitial->TestDidNavigate(1, url2);
1046 EXPECT_TRUE(interstitial->is_showing()); 1048 EXPECT_TRUE(interstitial->is_showing());
1047 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1049 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1048 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1050 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
1049 content::NavigationEntry* entry = controller().GetActiveEntry(); 1051 NavigationEntry* entry = controller().GetActiveEntry();
1050 ASSERT_TRUE(entry != NULL); 1052 ASSERT_TRUE(entry != NULL);
1051 EXPECT_TRUE(entry->GetURL() == url2); 1053 EXPECT_TRUE(entry->GetURL() == url2);
1052 1054
1053 // Now don't proceed. 1055 // Now don't proceed.
1054 interstitial->DontProceed(); 1056 interstitial->DontProceed();
1055 EXPECT_TRUE(deleted); 1057 EXPECT_TRUE(deleted);
1056 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1058 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1057 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1059 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1058 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1060 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1059 entry = controller().GetActiveEntry(); 1061 entry = controller().GetActiveEntry();
(...skipping 22 matching lines...) Expand all
1082 interstitial->Show(); 1084 interstitial->Show();
1083 // The interstitial should not show until its navigation has committed. 1085 // The interstitial should not show until its navigation has committed.
1084 EXPECT_FALSE(interstitial->is_showing()); 1086 EXPECT_FALSE(interstitial->is_showing());
1085 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1087 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1086 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1088 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1087 // Let's commit the interstitial navigation. 1089 // Let's commit the interstitial navigation.
1088 interstitial->TestDidNavigate(1, url2); 1090 interstitial->TestDidNavigate(1, url2);
1089 EXPECT_TRUE(interstitial->is_showing()); 1091 EXPECT_TRUE(interstitial->is_showing());
1090 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1092 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1091 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1093 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
1092 content::NavigationEntry* entry = controller().GetActiveEntry(); 1094 NavigationEntry* entry = controller().GetActiveEntry();
1093 ASSERT_TRUE(entry != NULL); 1095 ASSERT_TRUE(entry != NULL);
1094 // The URL specified to the interstitial should have been ignored. 1096 // The URL specified to the interstitial should have been ignored.
1095 EXPECT_TRUE(entry->GetURL() == url1); 1097 EXPECT_TRUE(entry->GetURL() == url1);
1096 1098
1097 // Now don't proceed. 1099 // Now don't proceed.
1098 interstitial->DontProceed(); 1100 interstitial->DontProceed();
1099 EXPECT_TRUE(deleted); 1101 EXPECT_TRUE(deleted);
1100 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1102 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1101 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1103 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1102 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1104 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
(...skipping 28 matching lines...) Expand all
1131 interstitial->Show(); 1133 interstitial->Show();
1132 // The interstitial should not show until its navigation has committed. 1134 // The interstitial should not show until its navigation has committed.
1133 EXPECT_FALSE(interstitial->is_showing()); 1135 EXPECT_FALSE(interstitial->is_showing());
1134 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1136 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1135 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1137 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1136 // Let's commit the interstitial navigation. 1138 // Let's commit the interstitial navigation.
1137 interstitial->TestDidNavigate(1, url2); 1139 interstitial->TestDidNavigate(1, url2);
1138 EXPECT_TRUE(interstitial->is_showing()); 1140 EXPECT_TRUE(interstitial->is_showing());
1139 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1141 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1140 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1142 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
1141 content::NavigationEntry* entry = controller().GetActiveEntry(); 1143 NavigationEntry* entry = controller().GetActiveEntry();
1142 ASSERT_TRUE(entry != NULL); 1144 ASSERT_TRUE(entry != NULL);
1143 EXPECT_TRUE(entry->GetURL() == url2); 1145 EXPECT_TRUE(entry->GetURL() == url2);
1144 1146
1145 // Then proceed. 1147 // Then proceed.
1146 interstitial->Proceed(); 1148 interstitial->Proceed();
1147 // The interstitial should show until the new navigation commits. 1149 // The interstitial should show until the new navigation commits.
1148 ASSERT_FALSE(deleted); 1150 ASSERT_FALSE(deleted);
1149 EXPECT_EQ(TestInterstitialPage::OKED, state); 1151 EXPECT_EQ(TestInterstitialPage::OKED, state);
1150 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1152 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1151 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1153 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 interstitial->Show(); 1188 interstitial->Show();
1187 // The interstitial should not show until its navigation has committed. 1189 // The interstitial should not show until its navigation has committed.
1188 EXPECT_FALSE(interstitial->is_showing()); 1190 EXPECT_FALSE(interstitial->is_showing());
1189 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1191 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1190 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1192 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1191 // Let's commit the interstitial navigation. 1193 // Let's commit the interstitial navigation.
1192 interstitial->TestDidNavigate(1, url2); 1194 interstitial->TestDidNavigate(1, url2);
1193 EXPECT_TRUE(interstitial->is_showing()); 1195 EXPECT_TRUE(interstitial->is_showing());
1194 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1196 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1195 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1197 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
1196 content::NavigationEntry* entry = controller().GetActiveEntry(); 1198 NavigationEntry* entry = controller().GetActiveEntry();
1197 ASSERT_TRUE(entry != NULL); 1199 ASSERT_TRUE(entry != NULL);
1198 EXPECT_TRUE(entry->GetURL() == url2); 1200 EXPECT_TRUE(entry->GetURL() == url2);
1199 1201
1200 // Then proceed. 1202 // Then proceed.
1201 interstitial->Proceed(); 1203 interstitial->Proceed();
1202 // The interstitial should show until the new navigation commits. 1204 // The interstitial should show until the new navigation commits.
1203 ASSERT_FALSE(deleted); 1205 ASSERT_FALSE(deleted);
1204 EXPECT_EQ(TestInterstitialPage::OKED, state); 1206 EXPECT_EQ(TestInterstitialPage::OKED, state);
1205 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1207 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1206 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1208 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1240 interstitial->Show(); 1242 interstitial->Show();
1241 // The interstitial should not show until its navigation has committed. 1243 // The interstitial should not show until its navigation has committed.
1242 EXPECT_FALSE(interstitial->is_showing()); 1244 EXPECT_FALSE(interstitial->is_showing());
1243 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1245 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1244 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1246 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1245 // Let's commit the interstitial navigation. 1247 // Let's commit the interstitial navigation.
1246 interstitial->TestDidNavigate(1, url2); 1248 interstitial->TestDidNavigate(1, url2);
1247 EXPECT_TRUE(interstitial->is_showing()); 1249 EXPECT_TRUE(interstitial->is_showing());
1248 EXPECT_TRUE(contents()->ShowingInterstitialPage()); 1250 EXPECT_TRUE(contents()->ShowingInterstitialPage());
1249 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); 1251 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial);
1250 content::NavigationEntry* entry = controller().GetActiveEntry(); 1252 NavigationEntry* entry = controller().GetActiveEntry();
1251 ASSERT_TRUE(entry != NULL); 1253 ASSERT_TRUE(entry != NULL);
1252 // The URL specified to the interstitial should have been ignored. 1254 // The URL specified to the interstitial should have been ignored.
1253 EXPECT_TRUE(entry->GetURL() == url1); 1255 EXPECT_TRUE(entry->GetURL() == url1);
1254 1256
1255 // Then proceed. 1257 // Then proceed.
1256 interstitial->Proceed(); 1258 interstitial->Proceed();
1257 // Since this is not a new navigation, the previous page is dismissed right 1259 // Since this is not a new navigation, the previous page is dismissed right
1258 // away and shows the original page. 1260 // away and shows the original page.
1259 EXPECT_TRUE(deleted); 1261 EXPECT_TRUE(deleted);
1260 EXPECT_EQ(TestInterstitialPage::OKED, state); 1262 EXPECT_EQ(TestInterstitialPage::OKED, state);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1308 interstitial->TestDidNavigate(2, interstitial_url); 1310 interstitial->TestDidNavigate(2, interstitial_url);
1309 1311
1310 // While the interstitial is showing, go back. 1312 // While the interstitial is showing, go back.
1311 controller().GoBack(); 1313 controller().GoBack();
1312 rvh()->SendNavigate(1, url1); 1314 rvh()->SendNavigate(1, url1);
1313 1315
1314 // Make sure we are back to the original page and that the interstitial is 1316 // Make sure we are back to the original page and that the interstitial is
1315 // gone. 1317 // gone.
1316 EXPECT_TRUE(deleted); 1318 EXPECT_TRUE(deleted);
1317 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1319 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1318 content::NavigationEntry* entry = controller().GetActiveEntry(); 1320 NavigationEntry* entry = controller().GetActiveEntry();
1319 ASSERT_TRUE(entry); 1321 ASSERT_TRUE(entry);
1320 EXPECT_EQ(url1.spec(), entry->GetURL().spec()); 1322 EXPECT_EQ(url1.spec(), entry->GetURL().spec());
1321 } 1323 }
1322 1324
1323 // Test navigating to a page that shows an interstitial, has a renderer crash, 1325 // Test navigating to a page that shows an interstitial, has a renderer crash,
1324 // and then goes back. 1326 // and then goes back.
1325 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenGoBack) { 1327 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenGoBack) {
1326 // Navigate to a page so we have a navigation entry in the controller. 1328 // Navigate to a page so we have a navigation entry in the controller.
1327 GURL url1("http://www.google.com"); 1329 GURL url1("http://www.google.com");
1328 rvh()->SendNavigate(1, url1); 1330 rvh()->SendNavigate(1, url1);
(...skipping 17 matching lines...) Expand all
1346 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); 1348 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1));
1347 1349
1348 // While the interstitial is showing, go back. 1350 // While the interstitial is showing, go back.
1349 controller().GoBack(); 1351 controller().GoBack();
1350 rvh()->SendNavigate(1, url1); 1352 rvh()->SendNavigate(1, url1);
1351 1353
1352 // Make sure we are back to the original page and that the interstitial is 1354 // Make sure we are back to the original page and that the interstitial is
1353 // gone. 1355 // gone.
1354 EXPECT_TRUE(deleted); 1356 EXPECT_TRUE(deleted);
1355 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1357 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1356 content::NavigationEntry* entry = controller().GetActiveEntry(); 1358 NavigationEntry* entry = controller().GetActiveEntry();
1357 ASSERT_TRUE(entry); 1359 ASSERT_TRUE(entry);
1358 EXPECT_EQ(url1.spec(), entry->GetURL().spec()); 1360 EXPECT_EQ(url1.spec(), entry->GetURL().spec());
1359 } 1361 }
1360 1362
1361 // Test navigating to a page that shows an interstitial, has the renderer crash, 1363 // Test navigating to a page that shows an interstitial, has the renderer crash,
1362 // and then navigates to the interstitial. 1364 // and then navigates to the interstitial.
1363 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenNavigate) { 1365 TEST_F(TabContentsTest, ShowInterstitialCrashRendererThenNavigate) {
1364 // Navigate to a page so we have a navigation entry in the controller. 1366 // Navigate to a page so we have a navigation entry in the controller.
1365 GURL url1("http://www.google.com"); 1367 GURL url1("http://www.google.com");
1366 rvh()->SendNavigate(1, url1); 1368 rvh()->SendNavigate(1, url1);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1475 // Let's make sure interstitial2 is working as intended. 1477 // Let's make sure interstitial2 is working as intended.
1476 ASSERT_FALSE(deleted2); 1478 ASSERT_FALSE(deleted2);
1477 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); 1479 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2);
1478 interstitial2->Proceed(); 1480 interstitial2->Proceed();
1479 GURL landing_url("http://www.thepage.com"); 1481 GURL landing_url("http://www.thepage.com");
1480 rvh()->SendNavigate(2, landing_url); 1482 rvh()->SendNavigate(2, landing_url);
1481 1483
1482 EXPECT_TRUE(deleted2); 1484 EXPECT_TRUE(deleted2);
1483 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1485 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1484 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1486 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1485 content::NavigationEntry* entry = controller().GetActiveEntry(); 1487 NavigationEntry* entry = controller().GetActiveEntry();
1486 ASSERT_TRUE(entry != NULL); 1488 ASSERT_TRUE(entry != NULL);
1487 EXPECT_TRUE(entry->GetURL() == landing_url); 1489 EXPECT_TRUE(entry->GetURL() == landing_url);
1488 EXPECT_EQ(2, controller().entry_count()); 1490 EXPECT_EQ(2, controller().entry_count());
1489 } 1491 }
1490 1492
1491 // Test showing an interstitial, proceeding and then navigating to another 1493 // Test showing an interstitial, proceeding and then navigating to another
1492 // interstitial. 1494 // interstitial.
1493 TEST_F(TabContentsTest, ShowInterstitialProceedShowInterstitial) { 1495 TEST_F(TabContentsTest, ShowInterstitialProceedShowInterstitial) {
1494 // Navigate to a page so we have a navigation entry in the controller. 1496 // Navigate to a page so we have a navigation entry in the controller.
1495 GURL start_url("http://www.google.com"); 1497 GURL start_url("http://www.google.com");
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 // Let's make sure interstitial2 is working as intended. 1532 // Let's make sure interstitial2 is working as intended.
1531 ASSERT_FALSE(deleted2); 1533 ASSERT_FALSE(deleted2);
1532 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); 1534 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2);
1533 interstitial2->Proceed(); 1535 interstitial2->Proceed();
1534 GURL landing_url("http://www.thepage.com"); 1536 GURL landing_url("http://www.thepage.com");
1535 rvh()->SendNavigate(2, landing_url); 1537 rvh()->SendNavigate(2, landing_url);
1536 1538
1537 EXPECT_TRUE(deleted2); 1539 EXPECT_TRUE(deleted2);
1538 EXPECT_FALSE(contents()->ShowingInterstitialPage()); 1540 EXPECT_FALSE(contents()->ShowingInterstitialPage());
1539 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); 1541 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL);
1540 content::NavigationEntry* entry = controller().GetActiveEntry(); 1542 NavigationEntry* entry = controller().GetActiveEntry();
1541 ASSERT_TRUE(entry != NULL); 1543 ASSERT_TRUE(entry != NULL);
1542 EXPECT_TRUE(entry->GetURL() == landing_url); 1544 EXPECT_TRUE(entry->GetURL() == landing_url);
1543 EXPECT_EQ(2, controller().entry_count()); 1545 EXPECT_EQ(2, controller().entry_count());
1544 } 1546 }
1545 1547
1546 // Test that navigating away from an interstitial while it's loading cause it 1548 // Test that navigating away from an interstitial while it's loading cause it
1547 // not to show. 1549 // not to show.
1548 TEST_F(TabContentsTest, NavigateBeforeInterstitialShows) { 1550 TEST_F(TabContentsTest, NavigateBeforeInterstitialShows) {
1549 // Show an interstitial. 1551 // Show an interstitial.
1550 TestInterstitialPage::InterstitialState state = 1552 TestInterstitialPage::InterstitialState state =
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
1673 TestInterstitialPage::InterstitialState state2 = 1675 TestInterstitialPage::InterstitialState state2 =
1674 TestInterstitialPage::UNDECIDED; 1676 TestInterstitialPage::UNDECIDED;
1675 bool deleted2 = false; 1677 bool deleted2 = false;
1676 TestInterstitialPage* interstitial2 = 1678 TestInterstitialPage* interstitial2 =
1677 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); 1679 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted);
1678 TestInterstitialPageStateGuard state_guard2(interstitial2); 1680 TestInterstitialPageStateGuard state_guard2(interstitial2);
1679 interstitial2->Show(); 1681 interstitial2->Show();
1680 interstitial2->TestDidNavigate(1, kGURL); 1682 interstitial2->TestDidNavigate(1, kGURL);
1681 1683
1682 // Make sure we still have an entry. 1684 // Make sure we still have an entry.
1683 content::NavigationEntry* entry = 1685 NavigationEntry* entry = contents()->GetController().GetPendingEntry();
1684 contents()->GetController().GetPendingEntry();
1685 ASSERT_TRUE(entry); 1686 ASSERT_TRUE(entry);
1686 EXPECT_EQ(kUrl, entry->GetURL().spec()); 1687 EXPECT_EQ(kUrl, entry->GetURL().spec());
1687 1688
1688 // And that the first interstitial is gone, but not the second. 1689 // And that the first interstitial is gone, but not the second.
1689 EXPECT_TRUE(deleted); 1690 EXPECT_TRUE(deleted);
1690 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1691 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1691 EXPECT_FALSE(deleted2); 1692 EXPECT_FALSE(deleted2);
1692 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); 1693 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2);
1693 } 1694 }
1694 1695
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1750 interstitial->TestDidNavigate(1, url2); 1751 interstitial->TestDidNavigate(1, url2);
1751 EXPECT_TRUE(interstitial->is_showing()); 1752 EXPECT_TRUE(interstitial->is_showing());
1752 EXPECT_EQ(2, controller().entry_count()); 1753 EXPECT_EQ(2, controller().entry_count());
1753 1754
1754 // Create another NavigationController. 1755 // Create another NavigationController.
1755 GURL url3("http://foo2"); 1756 GURL url3("http://foo2");
1756 scoped_ptr<TestTabContents> other_contents(CreateTestTabContents()); 1757 scoped_ptr<TestTabContents> other_contents(CreateTestTabContents());
1757 NavigationController& other_controller = other_contents->GetController(); 1758 NavigationController& other_controller = other_contents->GetController();
1758 other_contents->NavigateAndCommit(url3); 1759 other_contents->NavigateAndCommit(url3);
1759 other_contents->ExpectSetHistoryLengthAndPrune( 1760 other_contents->ExpectSetHistoryLengthAndPrune(
1760 NavigationEntry::FromNavigationEntry( 1761 NavigationEntryImpl::FromNavigationEntry(
1761 other_controller.GetEntryAtIndex(0))->site_instance(), 1, 1762 other_controller.GetEntryAtIndex(0))->site_instance(), 1,
1762 other_controller.GetEntryAtIndex(0)->GetPageID()); 1763 other_controller.GetEntryAtIndex(0)->GetPageID());
1763 other_controller.CopyStateFromAndPrune(&controller()); 1764 other_controller.CopyStateFromAndPrune(&controller());
1764 1765
1765 // The merged controller should only have two entries: url1 and url2. 1766 // The merged controller should only have two entries: url1 and url2.
1766 ASSERT_EQ(2, other_controller.entry_count()); 1767 ASSERT_EQ(2, other_controller.entry_count());
1767 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex()); 1768 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex());
1768 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); 1769 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL());
1769 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); 1770 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL());
1770 1771
(...skipping 23 matching lines...) Expand all
1794 GURL url3("http://interstitial"); 1795 GURL url3("http://interstitial");
1795 TestInterstitialPage* interstitial = 1796 TestInterstitialPage* interstitial =
1796 new TestInterstitialPage(other_contents.get(), true, url3, &state, 1797 new TestInterstitialPage(other_contents.get(), true, url3, &state,
1797 &deleted); 1798 &deleted);
1798 TestInterstitialPageStateGuard state_guard(interstitial); 1799 TestInterstitialPageStateGuard state_guard(interstitial);
1799 interstitial->Show(); 1800 interstitial->Show();
1800 interstitial->TestDidNavigate(1, url3); 1801 interstitial->TestDidNavigate(1, url3);
1801 EXPECT_TRUE(interstitial->is_showing()); 1802 EXPECT_TRUE(interstitial->is_showing());
1802 EXPECT_EQ(2, other_controller.entry_count()); 1803 EXPECT_EQ(2, other_controller.entry_count());
1803 other_contents->ExpectSetHistoryLengthAndPrune( 1804 other_contents->ExpectSetHistoryLengthAndPrune(
1804 NavigationEntry::FromNavigationEntry( 1805 NavigationEntryImpl::FromNavigationEntry(
1805 other_controller.GetEntryAtIndex(0))->site_instance(), 1, 1806 other_controller.GetEntryAtIndex(0))->site_instance(), 1,
1806 other_controller.GetEntryAtIndex(0)->GetPageID()); 1807 other_controller.GetEntryAtIndex(0)->GetPageID());
1807 other_controller.CopyStateFromAndPrune(&controller()); 1808 other_controller.CopyStateFromAndPrune(&controller());
1808 1809
1809 // The merged controller should only have two entries: url1 and url2. 1810 // The merged controller should only have two entries: url1 and url2.
1810 ASSERT_EQ(2, other_controller.entry_count()); 1811 ASSERT_EQ(2, other_controller.entry_count());
1811 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex()); 1812 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex());
1812 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); 1813 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL());
1813 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); 1814 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL());
1814 1815
1815 // It should have a transient entry. 1816 // It should have a transient entry.
1816 EXPECT_TRUE(other_controller.GetTransientEntry()); 1817 EXPECT_TRUE(other_controller.GetTransientEntry());
1817 1818
1818 // And the interstitial should be showing. 1819 // And the interstitial should be showing.
1819 EXPECT_TRUE(other_contents->ShowingInterstitialPage()); 1820 EXPECT_TRUE(other_contents->ShowingInterstitialPage());
1820 1821
1821 // And the interstitial should do a reload on don't proceed. 1822 // And the interstitial should do a reload on don't proceed.
1822 EXPECT_TRUE(other_contents->GetInterstitialPage()->reload_on_dont_proceed()); 1823 EXPECT_TRUE(other_contents->GetInterstitialPage()->reload_on_dont_proceed());
1823 } 1824 }
OLDNEW
« no previous file with comments | « content/browser/tab_contents/tab_contents.cc ('k') | content/browser/tab_contents/test_tab_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698