| OLD | NEW |
| 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/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 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 914 EXPECT_TRUE(controller.GetPendingEntry()); | 914 EXPECT_TRUE(controller.GetPendingEntry()); |
| 915 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); | 915 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); |
| 916 EXPECT_EQ(1, delegate->navigation_state_change_count()); | 916 EXPECT_EQ(1, delegate->navigation_state_change_count()); |
| 917 | 917 |
| 918 // It may abort before committing, if it's a download or due to a stop or | 918 // It may abort before committing, if it's a download or due to a stop or |
| 919 // a new navigation from the user. | 919 // a new navigation from the user. |
| 920 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; | 920 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; |
| 921 params.frame_id = 1; | 921 params.frame_id = 1; |
| 922 params.is_main_frame = true; | 922 params.is_main_frame = true; |
| 923 params.error_code = net::ERR_ABORTED; | 923 params.error_code = net::ERR_ABORTED; |
| 924 params.error_description = string16(); | 924 params.error_description = base::string16(); |
| 925 params.url = kNewURL; | 925 params.url = kNewURL; |
| 926 params.showing_repost_interstitial = false; | 926 params.showing_repost_interstitial = false; |
| 927 test_rvh()->OnMessageReceived( | 927 test_rvh()->OnMessageReceived( |
| 928 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id | 928 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id |
| 929 params)); | 929 params)); |
| 930 | 930 |
| 931 // This should not clear the pending entry or notify of a navigation state | 931 // This should not clear the pending entry or notify of a navigation state |
| 932 // change, so that we keep displaying kNewURL (until the user clears it). | 932 // change, so that we keep displaying kNewURL (until the user clears it). |
| 933 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 933 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
| 934 EXPECT_TRUE(controller.GetPendingEntry()); | 934 EXPECT_TRUE(controller.GetPendingEntry()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 // We don't want to change the NavigationEntry's url, in case it cancels. | 992 // We don't want to change the NavigationEntry's url, in case it cancels. |
| 993 // Prevents regression of http://crbug.com/77786. | 993 // Prevents regression of http://crbug.com/77786. |
| 994 EXPECT_EQ(kNewURL, controller.GetPendingEntry()->GetURL()); | 994 EXPECT_EQ(kNewURL, controller.GetPendingEntry()->GetURL()); |
| 995 | 995 |
| 996 // It may abort before committing, if it's a download or due to a stop or | 996 // It may abort before committing, if it's a download or due to a stop or |
| 997 // a new navigation from the user. | 997 // a new navigation from the user. |
| 998 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; | 998 ViewHostMsg_DidFailProvisionalLoadWithError_Params params; |
| 999 params.frame_id = 1; | 999 params.frame_id = 1; |
| 1000 params.is_main_frame = true; | 1000 params.is_main_frame = true; |
| 1001 params.error_code = net::ERR_ABORTED; | 1001 params.error_code = net::ERR_ABORTED; |
| 1002 params.error_description = string16(); | 1002 params.error_description = base::string16(); |
| 1003 params.url = kRedirectURL; | 1003 params.url = kRedirectURL; |
| 1004 params.showing_repost_interstitial = false; | 1004 params.showing_repost_interstitial = false; |
| 1005 test_rvh()->OnMessageReceived( | 1005 test_rvh()->OnMessageReceived( |
| 1006 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id | 1006 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id |
| 1007 params)); | 1007 params)); |
| 1008 | 1008 |
| 1009 // Because the pending entry is renderer initiated and not visible, we | 1009 // Because the pending entry is renderer initiated and not visible, we |
| 1010 // clear it when it fails. | 1010 // clear it when it fails. |
| 1011 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 1011 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
| 1012 EXPECT_FALSE(controller.GetPendingEntry()); | 1012 EXPECT_FALSE(controller.GetPendingEntry()); |
| (...skipping 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2335 our_controller.GetEntryAtIndex(0))->site_instance()); | 2335 our_controller.GetEntryAtIndex(0))->site_instance()); |
| 2336 | 2336 |
| 2337 // This pending navigation may have caused a different navigation to fail, | 2337 // This pending navigation may have caused a different navigation to fail, |
| 2338 // which causes the pending entry to be cleared. | 2338 // which causes the pending entry to be cleared. |
| 2339 TestRenderViewHost* rvh = | 2339 TestRenderViewHost* rvh = |
| 2340 static_cast<TestRenderViewHost*>(our_contents->GetRenderViewHost()); | 2340 static_cast<TestRenderViewHost*>(our_contents->GetRenderViewHost()); |
| 2341 ViewHostMsg_DidFailProvisionalLoadWithError_Params fail_load_params; | 2341 ViewHostMsg_DidFailProvisionalLoadWithError_Params fail_load_params; |
| 2342 fail_load_params.frame_id = 1; | 2342 fail_load_params.frame_id = 1; |
| 2343 fail_load_params.is_main_frame = true; | 2343 fail_load_params.is_main_frame = true; |
| 2344 fail_load_params.error_code = net::ERR_ABORTED; | 2344 fail_load_params.error_code = net::ERR_ABORTED; |
| 2345 fail_load_params.error_description = string16(); | 2345 fail_load_params.error_description = base::string16(); |
| 2346 fail_load_params.url = url; | 2346 fail_load_params.url = url; |
| 2347 fail_load_params.showing_repost_interstitial = false; | 2347 fail_load_params.showing_repost_interstitial = false; |
| 2348 rvh->OnMessageReceived( | 2348 rvh->OnMessageReceived( |
| 2349 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id | 2349 ViewHostMsg_DidFailProvisionalLoadWithError(0, // routing_id |
| 2350 fail_load_params)); | 2350 fail_load_params)); |
| 2351 | 2351 |
| 2352 // Now the pending restored entry commits. | 2352 // Now the pending restored entry commits. |
| 2353 ViewHostMsg_FrameNavigate_Params params; | 2353 ViewHostMsg_FrameNavigate_Params params; |
| 2354 params.page_id = 0; | 2354 params.page_id = 0; |
| 2355 params.url = url; | 2355 params.url = url; |
| (...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2890 EXPECT_EQ(controller.GetEntryCount(), 1); | 2890 EXPECT_EQ(controller.GetEntryCount(), 1); |
| 2891 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 2891 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); |
| 2892 } | 2892 } |
| 2893 | 2893 |
| 2894 // Make sure that on cloning a WebContentsImpl and going back needs_reload is | 2894 // Make sure that on cloning a WebContentsImpl and going back needs_reload is |
| 2895 // false. | 2895 // false. |
| 2896 TEST_F(NavigationControllerTest, CloneAndGoBack) { | 2896 TEST_F(NavigationControllerTest, CloneAndGoBack) { |
| 2897 NavigationControllerImpl& controller = controller_impl(); | 2897 NavigationControllerImpl& controller = controller_impl(); |
| 2898 const GURL url1("http://foo1"); | 2898 const GURL url1("http://foo1"); |
| 2899 const GURL url2("http://foo2"); | 2899 const GURL url2("http://foo2"); |
| 2900 const string16 title(ASCIIToUTF16("Title")); | 2900 const base::string16 title(ASCIIToUTF16("Title")); |
| 2901 | 2901 |
| 2902 NavigateAndCommit(url1); | 2902 NavigateAndCommit(url1); |
| 2903 controller.GetVisibleEntry()->SetTitle(title); | 2903 controller.GetVisibleEntry()->SetTitle(title); |
| 2904 NavigateAndCommit(url2); | 2904 NavigateAndCommit(url2); |
| 2905 | 2905 |
| 2906 scoped_ptr<WebContents> clone(controller.GetWebContents()->Clone()); | 2906 scoped_ptr<WebContents> clone(controller.GetWebContents()->Clone()); |
| 2907 | 2907 |
| 2908 ASSERT_EQ(2, clone->GetController().GetEntryCount()); | 2908 ASSERT_EQ(2, clone->GetController().GetEntryCount()); |
| 2909 EXPECT_TRUE(clone->GetController().NeedsReload()); | 2909 EXPECT_TRUE(clone->GetController().NeedsReload()); |
| 2910 clone->GetController().GoBack(); | 2910 clone->GetController().GoBack(); |
| 2911 // Navigating back should have triggered needs_reload_ to go false. | 2911 // Navigating back should have triggered needs_reload_ to go false. |
| 2912 EXPECT_FALSE(clone->GetController().NeedsReload()); | 2912 EXPECT_FALSE(clone->GetController().NeedsReload()); |
| 2913 | 2913 |
| 2914 // Ensure that the pending URL and its title are visible. | 2914 // Ensure that the pending URL and its title are visible. |
| 2915 EXPECT_EQ(url1, clone->GetController().GetVisibleEntry()->GetURL()); | 2915 EXPECT_EQ(url1, clone->GetController().GetVisibleEntry()->GetURL()); |
| 2916 EXPECT_EQ(title, clone->GetTitle()); | 2916 EXPECT_EQ(title, clone->GetTitle()); |
| 2917 } | 2917 } |
| 2918 | 2918 |
| 2919 // Make sure that reloading a cloned tab doesn't change its pending entry index. | 2919 // Make sure that reloading a cloned tab doesn't change its pending entry index. |
| 2920 // See http://crbug.com/234491. | 2920 // See http://crbug.com/234491. |
| 2921 TEST_F(NavigationControllerTest, CloneAndReload) { | 2921 TEST_F(NavigationControllerTest, CloneAndReload) { |
| 2922 NavigationControllerImpl& controller = controller_impl(); | 2922 NavigationControllerImpl& controller = controller_impl(); |
| 2923 const GURL url1("http://foo1"); | 2923 const GURL url1("http://foo1"); |
| 2924 const GURL url2("http://foo2"); | 2924 const GURL url2("http://foo2"); |
| 2925 const string16 title(ASCIIToUTF16("Title")); | 2925 const base::string16 title(ASCIIToUTF16("Title")); |
| 2926 | 2926 |
| 2927 NavigateAndCommit(url1); | 2927 NavigateAndCommit(url1); |
| 2928 controller.GetVisibleEntry()->SetTitle(title); | 2928 controller.GetVisibleEntry()->SetTitle(title); |
| 2929 NavigateAndCommit(url2); | 2929 NavigateAndCommit(url2); |
| 2930 | 2930 |
| 2931 scoped_ptr<WebContents> clone(controller.GetWebContents()->Clone()); | 2931 scoped_ptr<WebContents> clone(controller.GetWebContents()->Clone()); |
| 2932 clone->GetController().LoadIfNecessary(); | 2932 clone->GetController().LoadIfNecessary(); |
| 2933 | 2933 |
| 2934 ASSERT_EQ(2, clone->GetController().GetEntryCount()); | 2934 ASSERT_EQ(2, clone->GetController().GetEntryCount()); |
| 2935 EXPECT_EQ(1, clone->GetController().GetPendingEntryIndex()); | 2935 EXPECT_EQ(1, clone->GetController().GetPendingEntryIndex()); |
| (...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3835 EXPECT_EQ(1, controller.GetEntryCount()); | 3835 EXPECT_EQ(1, controller.GetEntryCount()); |
| 3836 EXPECT_EQ(0, controller.GetCurrentEntryIndex()); | 3836 EXPECT_EQ(0, controller.GetCurrentEntryIndex()); |
| 3837 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); | 3837 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); |
| 3838 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 3838 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
| 3839 EXPECT_FALSE(controller.CanGoBack()); | 3839 EXPECT_FALSE(controller.CanGoBack()); |
| 3840 EXPECT_FALSE(controller.CanGoForward()); | 3840 EXPECT_FALSE(controller.CanGoForward()); |
| 3841 EXPECT_EQ(url4, controller.GetVisibleEntry()->GetURL()); | 3841 EXPECT_EQ(url4, controller.GetVisibleEntry()->GetURL()); |
| 3842 } | 3842 } |
| 3843 | 3843 |
| 3844 } // namespace content | 3844 } // namespace content |
| OLD | NEW |