OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 TEST_F(NavigationControllerTest, LoadURL_AbortDoesntCancelPending) { | 805 TEST_F(NavigationControllerTest, LoadURL_AbortDoesntCancelPending) { |
806 NavigationControllerImpl& controller = controller_impl(); | 806 NavigationControllerImpl& controller = controller_impl(); |
807 TestNotificationTracker notifications; | 807 TestNotificationTracker notifications; |
808 RegisterForAllNavNotifications(¬ifications, &controller); | 808 RegisterForAllNavNotifications(¬ifications, &controller); |
809 | 809 |
810 // Set a WebContentsDelegate to listen for state changes. | 810 // Set a WebContentsDelegate to listen for state changes. |
811 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); | 811 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); |
812 EXPECT_FALSE(contents()->GetDelegate()); | 812 EXPECT_FALSE(contents()->GetDelegate()); |
813 contents()->SetDelegate(delegate.get()); | 813 contents()->SetDelegate(delegate.get()); |
814 | 814 |
815 // Start with a pending new navigation. | 815 // Without any navigations, the renderer starts at about:blank. |
| 816 const GURL kExistingURL("about:blank"); |
| 817 |
| 818 // Now make a pending new navigation. |
816 const GURL kNewURL("http://eh"); | 819 const GURL kNewURL("http://eh"); |
817 controller.LoadURL( | 820 controller.LoadURL( |
818 kNewURL, Referrer(), PAGE_TRANSITION_TYPED, std::string()); | 821 kNewURL, Referrer(), PAGE_TRANSITION_TYPED, std::string()); |
819 EXPECT_EQ(0U, notifications.size()); | 822 EXPECT_EQ(0U, notifications.size()); |
820 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 823 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
821 EXPECT_TRUE(controller.GetPendingEntry()); | 824 EXPECT_TRUE(controller.GetPendingEntry()); |
822 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); | 825 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); |
823 EXPECT_EQ(1, delegate->navigation_state_change_count()); | 826 EXPECT_EQ(1, delegate->navigation_state_change_count()); |
824 | 827 |
825 // It may abort before committing, if it's a download or due to a stop or | 828 // It may abort before committing, if it's a download or due to a stop or |
826 // a new navigation from the user. | 829 // a new navigation from the user. |
827 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; | 830 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; |
828 params.frame_id = 1; | 831 params.frame_id = 1; |
829 params.is_main_frame = true; | 832 params.is_main_frame = true; |
830 params.error_code = net::ERR_ABORTED; | 833 params.error_code = net::ERR_ABORTED; |
831 params.error_description = string16(); | 834 params.error_description = string16(); |
832 params.url = kNewURL; | 835 params.url = kNewURL; |
833 params.showing_repost_interstitial = false; | 836 params.showing_repost_interstitial = false; |
834 test_rvh()->OnMessageReceived( | 837 test_rvh()->OnMessageReceived( |
835 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id | 838 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id |
836 params)); | 839 params)); |
837 | 840 |
838 // This should not clear the pending entry or notify of a navigation state | 841 // This should not clear the pending entry or notify of a navigation state |
839 // change, so that we keep displaying kNewURL (until the user clears it). | 842 // change, so that we keep displaying kNewURL (until the user clears it). |
840 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 843 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
841 EXPECT_TRUE(controller.GetPendingEntry()); | 844 EXPECT_TRUE(controller.GetPendingEntry()); |
842 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); | 845 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); |
843 EXPECT_EQ(1, delegate->navigation_state_change_count()); | 846 EXPECT_EQ(1, delegate->navigation_state_change_count()); |
844 NavigationEntry* pending_entry = controller.GetPendingEntry(); | |
845 | |
846 // Ensure that a reload keeps the same pending entry. | |
847 controller.Reload(true); | |
848 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | |
849 EXPECT_TRUE(controller.GetPendingEntry()); | |
850 EXPECT_EQ(pending_entry, controller.GetPendingEntry()); | |
851 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); | |
852 | 847 |
853 contents()->SetDelegate(NULL); | 848 contents()->SetDelegate(NULL); |
854 } | 849 } |
855 | 850 |
856 // Tests that the pending URL is not visible during a renderer-initiated | 851 // Tests that the pending URL is not visible during a renderer-initiated |
857 // redirect and abort. See http://crbug.com/83031. | 852 // redirect and abort. See http://crbug.com/83031. |
858 TEST_F(NavigationControllerTest, LoadURL_RedirectAbortDoesntShowPendingURL) { | 853 TEST_F(NavigationControllerTest, LoadURL_RedirectAbortDoesntShowPendingURL) { |
859 NavigationControllerImpl& controller = controller_impl(); | 854 NavigationControllerImpl& controller = controller_impl(); |
860 TestNotificationTracker notifications; | 855 TestNotificationTracker notifications; |
861 RegisterForAllNavNotifications(¬ifications, &controller); | 856 RegisterForAllNavNotifications(¬ifications, &controller); |
862 | 857 |
863 // First make an existing committed entry. | |
864 const GURL kExistingURL("http://foo/eh"); | |
865 controller.LoadURL(kExistingURL, content::Referrer(), | |
866 content::PAGE_TRANSITION_TYPED, std::string()); | |
867 test_rvh()->SendNavigate(0, kExistingURL); | |
868 EXPECT_TRUE(notifications.Check1AndReset( | |
869 content::NOTIFICATION_NAV_ENTRY_COMMITTED)); | |
870 | |
871 // Set a WebContentsDelegate to listen for state changes. | 858 // Set a WebContentsDelegate to listen for state changes. |
872 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); | 859 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); |
873 EXPECT_FALSE(contents()->GetDelegate()); | 860 EXPECT_FALSE(contents()->GetDelegate()); |
874 contents()->SetDelegate(delegate.get()); | 861 contents()->SetDelegate(delegate.get()); |
875 | 862 |
| 863 // Without any navigations, the renderer starts at about:blank. |
| 864 const GURL kExistingURL("about:blank"); |
| 865 |
876 // Now make a pending new navigation, initiated by the renderer. | 866 // Now make a pending new navigation, initiated by the renderer. |
877 const GURL kNewURL("http://foo/bee"); | 867 const GURL kNewURL("http://eh"); |
878 NavigationController::LoadURLParams load_url_params(kNewURL); | 868 NavigationController::LoadURLParams load_url_params(kNewURL); |
879 load_url_params.transition_type = PAGE_TRANSITION_TYPED; | 869 load_url_params.transition_type = PAGE_TRANSITION_TYPED; |
880 load_url_params.is_renderer_initiated = true; | 870 load_url_params.is_renderer_initiated = true; |
881 controller.LoadURLWithParams(load_url_params); | 871 controller.LoadURLWithParams(load_url_params); |
882 EXPECT_EQ(0U, notifications.size()); | 872 EXPECT_EQ(0U, notifications.size()); |
883 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 873 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
884 EXPECT_TRUE(controller.GetPendingEntry()); | 874 EXPECT_TRUE(controller.GetPendingEntry()); |
885 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); | 875 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); |
886 EXPECT_EQ(0, delegate->navigation_state_change_count()); | 876 EXPECT_EQ(1, delegate->navigation_state_change_count()); |
887 | 877 |
888 // The visible entry should be the last committed URL, not the pending one. | 878 // There should be no visible entry (resulting in about:blank in the |
889 EXPECT_EQ(kExistingURL, controller.GetVisibleEntry()->GetURL()); | 879 // omnibox), because it was renderer-initiated and there's no last committed |
| 880 // entry. |
| 881 EXPECT_FALSE(controller.GetVisibleEntry()); |
890 | 882 |
891 // Now the navigation redirects. | 883 // Now the navigation redirects. |
892 const GURL kRedirectURL("http://foo/see"); | 884 const GURL kRedirectURL("http://bee"); |
893 test_rvh()->OnMessageReceived( | 885 test_rvh()->OnMessageReceived( |
894 ViewHostMsg_DidRedirectProvisionalLoad(0, // routing_id | 886 ViewHostMsg_DidRedirectProvisionalLoad(0, // routing_id |
895 -1, // pending page_id | 887 -1, // pending page_id |
896 kNewURL, // old url | 888 kNewURL, // old url |
897 kRedirectURL)); // new url | 889 kRedirectURL)); // new url |
898 | 890 |
899 // We don't want to change the NavigationEntry's url, in case it cancels. | 891 // We don't want to change the NavigationEntry's url, in case it cancels. |
900 // Prevents regression of http://crbug.com/77786. | 892 // Prevents regression of http://crbug.com/77786. |
901 EXPECT_EQ(kNewURL, controller.GetPendingEntry()->GetURL()); | 893 EXPECT_EQ(kNewURL, controller.GetPendingEntry()->GetURL()); |
902 | 894 |
903 // It may abort before committing, if it's a download or due to a stop or | 895 // It may abort before committing, if it's a download or due to a stop or |
904 // a new navigation from the user. | 896 // a new navigation from the user. |
905 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; | 897 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; |
906 params.frame_id = 1; | 898 params.frame_id = 1; |
907 params.is_main_frame = true; | 899 params.is_main_frame = true; |
908 params.error_code = net::ERR_ABORTED; | 900 params.error_code = net::ERR_ABORTED; |
909 params.error_description = string16(); | 901 params.error_description = string16(); |
910 params.url = kRedirectURL; | 902 params.url = kRedirectURL; |
911 params.showing_repost_interstitial = false; | 903 params.showing_repost_interstitial = false; |
912 test_rvh()->OnMessageReceived( | 904 test_rvh()->OnMessageReceived( |
913 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id | 905 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id |
914 params)); | 906 params)); |
915 | 907 |
916 // This should not clear the pending entry or notify of a navigation state | 908 // This should not clear the pending entry or notify of a navigation state |
917 // change. | 909 // change. |
918 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 910 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
919 EXPECT_TRUE(controller.GetPendingEntry()); | 911 EXPECT_TRUE(controller.GetPendingEntry()); |
920 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); | 912 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); |
921 EXPECT_EQ(0, delegate->navigation_state_change_count()); | 913 EXPECT_EQ(1, delegate->navigation_state_change_count()); |
922 | 914 |
923 // The visible entry should be the last committed URL, not the pending one, | 915 // There should be no visible entry (resulting in about:blank in the |
924 // so that no spoof is possible. | 916 // omnibox), ensuring no spoof is possible. |
925 EXPECT_EQ(kExistingURL, controller.GetVisibleEntry()->GetURL()); | 917 EXPECT_FALSE(controller.GetVisibleEntry()); |
926 | 918 |
927 contents()->SetDelegate(NULL); | 919 contents()->SetDelegate(NULL); |
928 } | 920 } |
929 | 921 |
930 // Ensure that NavigationEntries track which bindings their RenderViewHost had | 922 // Ensure that NavigationEntries track which bindings their RenderViewHost had |
931 // at the time they committed. http://crbug.com/173672. | 923 // at the time they committed. http://crbug.com/173672. |
932 TEST_F(NavigationControllerTest, LoadURL_WithBindings) { | 924 TEST_F(NavigationControllerTest, LoadURL_WithBindings) { |
933 NavigationControllerImpl& controller = controller_impl(); | 925 NavigationControllerImpl& controller = controller_impl(); |
934 TestNotificationTracker notifications; | 926 TestNotificationTracker notifications; |
935 RegisterForAllNavNotifications(¬ifications, &controller); | 927 RegisterForAllNavNotifications(¬ifications, &controller); |
(...skipping 1556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2492 test_rvh()->SendNavigate(1, url1); | 2484 test_rvh()->SendNavigate(1, url1); |
2493 EXPECT_EQ(url1, controller.GetActiveEntry()->GetURL()); | 2485 EXPECT_EQ(url1, controller.GetActiveEntry()->GetURL()); |
2494 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); | 2486 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); |
2495 EXPECT_FALSE( | 2487 EXPECT_FALSE( |
2496 NavigationEntryImpl::FromNavigationEntry( | 2488 NavigationEntryImpl::FromNavigationEntry( |
2497 controller.GetLastCommittedEntry())->is_renderer_initiated()); | 2489 controller.GetLastCommittedEntry())->is_renderer_initiated()); |
2498 | 2490 |
2499 notifications.Reset(); | 2491 notifications.Reset(); |
2500 } | 2492 } |
2501 | 2493 |
2502 // Tests that the URLs for renderer-initiated navigations in new tabs are | |
2503 // displayed to the user before commit, as long as the initial about:blank | |
2504 // page has not been modified. If so, we must revert to showing about:blank. | |
2505 // See http://crbug.com/9682. | |
2506 TEST_F(NavigationControllerTest, ShowRendererURLInNewTabUntilModified) { | |
2507 NavigationControllerImpl& controller = controller_impl(); | |
2508 TestNotificationTracker notifications; | |
2509 RegisterForAllNavNotifications(¬ifications, &controller); | |
2510 | |
2511 const GURL url("http://foo"); | |
2512 | |
2513 // For renderer-initiated navigations in new tabs (with no committed entries), | |
2514 // we show the pending entry's URL as long as the about:blank page is not | |
2515 // modified. | |
2516 NavigationController::LoadURLParams load_url_params(url); | |
2517 load_url_params.transition_type = PAGE_TRANSITION_LINK; | |
2518 load_url_params.is_renderer_initiated = true; | |
2519 controller.LoadURLWithParams(load_url_params); | |
2520 EXPECT_EQ(url, controller.GetActiveEntry()->GetURL()); | |
2521 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); | |
2522 EXPECT_TRUE( | |
2523 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())-> | |
2524 is_renderer_initiated()); | |
2525 EXPECT_TRUE(controller.IsInitialNavigation()); | |
2526 EXPECT_FALSE(test_rvh()->has_accessed_initial_document()); | |
2527 | |
2528 // There should be no title yet. | |
2529 EXPECT_TRUE(contents()->GetTitle().empty()); | |
2530 | |
2531 // If something else modifies the contents of the about:blank page, then | |
2532 // we must revert to showing about:blank to avoid a URL spoof. | |
2533 test_rvh()->OnMessageReceived( | |
2534 ViewHostMsg_DidAccessInitialDocument(0)); | |
2535 EXPECT_TRUE(test_rvh()->has_accessed_initial_document()); | |
2536 EXPECT_FALSE(controller.GetVisibleEntry()); | |
2537 EXPECT_EQ(url, controller.GetActiveEntry()->GetURL()); | |
2538 | |
2539 notifications.Reset(); | |
2540 } | |
2541 | |
2542 TEST_F(NavigationControllerTest, DontShowRendererURLInNewTabAfterCommit) { | |
2543 NavigationControllerImpl& controller = controller_impl(); | |
2544 TestNotificationTracker notifications; | |
2545 RegisterForAllNavNotifications(¬ifications, &controller); | |
2546 | |
2547 const GURL url1("http://foo/eh"); | |
2548 const GURL url2("http://foo/bee"); | |
2549 | |
2550 // For renderer-initiated navigations in new tabs (with no committed entries), | |
2551 // we show the pending entry's URL as long as the about:blank page is not | |
2552 // modified. | |
2553 NavigationController::LoadURLParams load_url_params(url1); | |
2554 load_url_params.transition_type = PAGE_TRANSITION_LINK; | |
2555 load_url_params.is_renderer_initiated = true; | |
2556 controller.LoadURLWithParams(load_url_params); | |
2557 EXPECT_EQ(url1, controller.GetActiveEntry()->GetURL()); | |
2558 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); | |
2559 EXPECT_TRUE( | |
2560 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())-> | |
2561 is_renderer_initiated()); | |
2562 EXPECT_TRUE(controller.IsInitialNavigation()); | |
2563 EXPECT_FALSE(test_rvh()->has_accessed_initial_document()); | |
2564 | |
2565 // Simulate a commit and then starting a new pending navigation. | |
2566 test_rvh()->SendNavigate(0, url1); | |
2567 NavigationController::LoadURLParams load_url2_params(url2); | |
2568 load_url2_params.transition_type = PAGE_TRANSITION_LINK; | |
2569 load_url2_params.is_renderer_initiated = true; | |
2570 controller.LoadURLWithParams(load_url2_params); | |
2571 | |
2572 // We should not consider this an initial navigation, and thus should | |
2573 // not show the pending URL. | |
2574 EXPECT_FALSE(test_rvh()->has_accessed_initial_document()); | |
2575 EXPECT_FALSE(controller.IsInitialNavigation()); | |
2576 EXPECT_TRUE(controller.GetVisibleEntry()); | |
2577 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); | |
2578 | |
2579 notifications.Reset(); | |
2580 } | |
2581 | |
2582 // Tests that IsInPageNavigation returns appropriate results. Prevents | 2494 // Tests that IsInPageNavigation returns appropriate results. Prevents |
2583 // regression for bug 1126349. | 2495 // regression for bug 1126349. |
2584 TEST_F(NavigationControllerTest, IsInPageNavigation) { | 2496 TEST_F(NavigationControllerTest, IsInPageNavigation) { |
2585 NavigationControllerImpl& controller = controller_impl(); | 2497 NavigationControllerImpl& controller = controller_impl(); |
2586 // Navigate to URL with no refs. | 2498 // Navigate to URL with no refs. |
2587 const GURL url("http://www.google.com/home.html"); | 2499 const GURL url("http://www.google.com/home.html"); |
2588 test_rvh()->SendNavigate(0, url); | 2500 test_rvh()->SendNavigate(0, url); |
2589 | 2501 |
2590 // Reloading the page is not an in-page navigation. | 2502 // Reloading the page is not an in-page navigation. |
2591 EXPECT_FALSE(controller.IsURLInPageNavigation(url)); | 2503 EXPECT_FALSE(controller.IsURLInPageNavigation(url)); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2637 EXPECT_EQ(controller.GetEntryCount(), 1); | 2549 EXPECT_EQ(controller.GetEntryCount(), 1); |
2638 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 2550 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); |
2639 } | 2551 } |
2640 | 2552 |
2641 // Make sure that on cloning a WebContentsImpl and going back needs_reload is | 2553 // Make sure that on cloning a WebContentsImpl and going back needs_reload is |
2642 // false. | 2554 // false. |
2643 TEST_F(NavigationControllerTest, CloneAndGoBack) { | 2555 TEST_F(NavigationControllerTest, CloneAndGoBack) { |
2644 NavigationControllerImpl& controller = controller_impl(); | 2556 NavigationControllerImpl& controller = controller_impl(); |
2645 const GURL url1("http://foo1"); | 2557 const GURL url1("http://foo1"); |
2646 const GURL url2("http://foo2"); | 2558 const GURL url2("http://foo2"); |
2647 const string16 title(ASCIIToUTF16("Title")); | |
2648 | 2559 |
2649 NavigateAndCommit(url1); | 2560 NavigateAndCommit(url1); |
2650 controller.GetActiveEntry()->SetTitle(title); | |
2651 NavigateAndCommit(url2); | 2561 NavigateAndCommit(url2); |
2652 | 2562 |
2653 scoped_ptr<WebContents> clone(controller.GetWebContents()->Clone()); | 2563 scoped_ptr<WebContents> clone(controller.GetWebContents()->Clone()); |
2654 | 2564 |
2655 ASSERT_EQ(2, clone->GetController().GetEntryCount()); | 2565 ASSERT_EQ(2, clone->GetController().GetEntryCount()); |
2656 EXPECT_TRUE(clone->GetController().NeedsReload()); | 2566 EXPECT_TRUE(clone->GetController().NeedsReload()); |
2657 clone->GetController().GoBack(); | 2567 clone->GetController().GoBack(); |
2658 // Navigating back should have triggered needs_reload_ to go false. | 2568 // Navigating back should have triggered needs_reload_ to go false. |
2659 EXPECT_FALSE(clone->GetController().NeedsReload()); | 2569 EXPECT_FALSE(clone->GetController().NeedsReload()); |
2660 | |
2661 // Ensure that the pending URL and its title are visible. | |
2662 EXPECT_EQ(url1, clone->GetController().GetVisibleEntry()->GetURL()); | |
2663 EXPECT_EQ(title, clone->GetTitle()); | |
2664 } | 2570 } |
2665 | 2571 |
2666 // Make sure that cloning a WebContentsImpl doesn't copy interstitials. | 2572 // Make sure that cloning a WebContentsImpl doesn't copy interstitials. |
2667 TEST_F(NavigationControllerTest, CloneOmitsInterstitials) { | 2573 TEST_F(NavigationControllerTest, CloneOmitsInterstitials) { |
2668 NavigationControllerImpl& controller = controller_impl(); | 2574 NavigationControllerImpl& controller = controller_impl(); |
2669 const GURL url1("http://foo1"); | 2575 const GURL url1("http://foo1"); |
2670 const GURL url2("http://foo2"); | 2576 const GURL url2("http://foo2"); |
2671 | 2577 |
2672 NavigateAndCommit(url1); | 2578 NavigateAndCommit(url1); |
2673 NavigateAndCommit(url2); | 2579 NavigateAndCommit(url2); |
(...skipping 866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3540 PAGE_TRANSITION_LINK); | 3446 PAGE_TRANSITION_LINK); |
3541 session_helper_.AssertNavigationEquals(nav, | 3447 session_helper_.AssertNavigationEquals(nav, |
3542 windows_[0]->tabs[0]->navigations[0]); | 3448 windows_[0]->tabs[0]->navigations[0]); |
3543 nav.set_url(url2); | 3449 nav.set_url(url2); |
3544 session_helper_.AssertNavigationEquals(nav, | 3450 session_helper_.AssertNavigationEquals(nav, |
3545 windows_[0]->tabs[0]->navigations[1]); | 3451 windows_[0]->tabs[0]->navigations[1]); |
3546 } | 3452 } |
3547 */ | 3453 */ |
3548 | 3454 |
3549 } // namespace content | 3455 } // namespace content |
OLD | NEW |