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

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

Issue 2225343002: Navigation: move RestoreType and ReloadType into a separate file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: [rebase] Created 4 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/navigation_controller_impl.h" 5 #include "content/browser/frame_host/navigation_controller_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 } 209 }
210 210
211 void SetUp() override { 211 void SetUp() override {
212 RenderViewHostImplTestHarness::SetUp(); 212 RenderViewHostImplTestHarness::SetUp();
213 WebContents* web_contents = RenderViewHostImplTestHarness::web_contents(); 213 WebContents* web_contents = RenderViewHostImplTestHarness::web_contents();
214 ASSERT_TRUE(web_contents); // The WebContents should be created by now. 214 ASSERT_TRUE(web_contents); // The WebContents should be created by now.
215 WebContentsObserver::Observe(web_contents); 215 WebContentsObserver::Observe(web_contents);
216 } 216 }
217 217
218 // WebContentsObserver: 218 // WebContentsObserver:
219 void DidStartNavigationToPendingEntry( 219 void DidStartNavigationToPendingEntry(const GURL& url,
220 const GURL& url, 220 ReloadType reload_type) override {
221 NavigationController::ReloadType reload_type) override {
222 navigated_url_ = url; 221 navigated_url_ = url;
223 } 222 }
224 223
225 void NavigationEntryCommitted( 224 void NavigationEntryCommitted(
226 const LoadCommittedDetails& load_details) override { 225 const LoadCommittedDetails& load_details) override {
227 navigation_entry_committed_counter_++; 226 navigation_entry_committed_counter_++;
228 } 227 }
229 228
230 const GURL& navigated_url() const { 229 const GURL& navigated_url() const {
231 return navigated_url_; 230 return navigated_url_;
(...skipping 2784 matching lines...) Expand 10 before | Expand all | Expand 10 after
3016 browser_context()); 3015 browser_context());
3017 entry->SetPageID(0); 3016 entry->SetPageID(0);
3018 entry->SetTitle(base::ASCIIToUTF16("Title")); 3017 entry->SetTitle(base::ASCIIToUTF16("Title"));
3019 entry->SetPageState(PageState::CreateFromEncodedData("state")); 3018 entry->SetPageState(PageState::CreateFromEncodedData("state"));
3020 const base::Time timestamp = base::Time::Now(); 3019 const base::Time timestamp = base::Time::Now();
3021 entry->SetTimestamp(timestamp); 3020 entry->SetTimestamp(timestamp);
3022 entries.push_back(std::move(entry)); 3021 entries.push_back(std::move(entry));
3023 std::unique_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>( 3022 std::unique_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>(
3024 WebContents::Create(WebContents::CreateParams(browser_context())))); 3023 WebContents::Create(WebContents::CreateParams(browser_context()))));
3025 NavigationControllerImpl& our_controller = our_contents->GetController(); 3024 NavigationControllerImpl& our_controller = our_contents->GetController();
3026 our_controller.Restore( 3025 our_controller.Restore(0, RestoreType::LAST_SESSION_EXITED_CLEANLY, &entries);
3027 0,
3028 NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY,
3029 &entries);
3030 ASSERT_EQ(0u, entries.size()); 3026 ASSERT_EQ(0u, entries.size());
3031 3027
3032 // Before navigating to the restored entry, it should have a restore_type 3028 // Before navigating to the restored entry, it should have a restore_type
3033 // and no SiteInstance. 3029 // and no SiteInstance.
3034 ASSERT_EQ(1, our_controller.GetEntryCount()); 3030 ASSERT_EQ(1, our_controller.GetEntryCount());
3035 EXPECT_EQ(NavigationEntryImpl::RESTORE_LAST_SESSION_EXITED_CLEANLY, 3031 EXPECT_EQ(RestoreType::LAST_SESSION_EXITED_CLEANLY,
3036 our_controller.GetEntryAtIndex(0)->restore_type()); 3032 our_controller.GetEntryAtIndex(0)->restore_type());
3037 EXPECT_FALSE(our_controller.GetEntryAtIndex(0)->site_instance()); 3033 EXPECT_FALSE(our_controller.GetEntryAtIndex(0)->site_instance());
3038 3034
3039 // After navigating, we should have one entry, and it should be "pending". 3035 // After navigating, we should have one entry, and it should be "pending".
3040 our_controller.GoToIndex(0); 3036 our_controller.GoToIndex(0);
3041 EXPECT_EQ(1, our_controller.GetEntryCount()); 3037 EXPECT_EQ(1, our_controller.GetEntryCount());
3042 EXPECT_EQ(our_controller.GetEntryAtIndex(0), 3038 EXPECT_EQ(our_controller.GetEntryAtIndex(0),
3043 our_controller.GetPendingEntry()); 3039 our_controller.GetPendingEntry());
3044 EXPECT_EQ(0, our_controller.GetEntryAtIndex(0)->GetPageID()); 3040 EXPECT_EQ(0, our_controller.GetEntryAtIndex(0)->GetPageID());
3045 3041
(...skipping 18 matching lines...) Expand all
3064 3060
3065 // There should be no longer any pending entry and one committed one. This 3061 // There should be no longer any pending entry and one committed one. This
3066 // means that we were able to locate the entry, assign its site instance, and 3062 // means that we were able to locate the entry, assign its site instance, and
3067 // commit it properly. 3063 // commit it properly.
3068 EXPECT_EQ(1, our_controller.GetEntryCount()); 3064 EXPECT_EQ(1, our_controller.GetEntryCount());
3069 EXPECT_EQ(0, our_controller.GetLastCommittedEntryIndex()); 3065 EXPECT_EQ(0, our_controller.GetLastCommittedEntryIndex());
3070 EXPECT_FALSE(our_controller.GetPendingEntry()); 3066 EXPECT_FALSE(our_controller.GetPendingEntry());
3071 EXPECT_EQ( 3067 EXPECT_EQ(
3072 url, 3068 url,
3073 our_controller.GetLastCommittedEntry()->site_instance()->GetSiteURL()); 3069 our_controller.GetLastCommittedEntry()->site_instance()->GetSiteURL());
3074 EXPECT_EQ(NavigationEntryImpl::RESTORE_NONE, 3070 EXPECT_EQ(RestoreType::NONE,
3075 our_controller.GetEntryAtIndex(0)->restore_type()); 3071 our_controller.GetEntryAtIndex(0)->restore_type());
3076 3072
3077 // Timestamp should have been updated. 3073 // Timestamp should have been updated.
3078 EXPECT_GE(our_controller.GetEntryAtIndex(0)->GetTimestamp(), timestamp); 3074 EXPECT_GE(our_controller.GetEntryAtIndex(0)->GetTimestamp(), timestamp);
3079 } 3075 }
3080 3076
3081 // Tests that we can still navigate to a restored entry after a different 3077 // Tests that we can still navigate to a restored entry after a different
3082 // navigation fails and clears the pending entry. http://crbug.com/90085 3078 // navigation fails and clears the pending entry. http://crbug.com/90085
3083 TEST_F(NavigationControllerTest, RestoreNavigateAfterFailure) { 3079 TEST_F(NavigationControllerTest, RestoreNavigateAfterFailure) {
3084 // Create a NavigationController with a restored set of tabs. 3080 // Create a NavigationController with a restored set of tabs.
3085 GURL url("http://foo"); 3081 GURL url("http://foo");
3086 std::vector<std::unique_ptr<NavigationEntry>> entries; 3082 std::vector<std::unique_ptr<NavigationEntry>> entries;
3087 std::unique_ptr<NavigationEntry> new_entry = 3083 std::unique_ptr<NavigationEntry> new_entry =
3088 NavigationControllerImpl::CreateNavigationEntry( 3084 NavigationControllerImpl::CreateNavigationEntry(
3089 url, Referrer(), ui::PAGE_TRANSITION_RELOAD, false, std::string(), 3085 url, Referrer(), ui::PAGE_TRANSITION_RELOAD, false, std::string(),
3090 browser_context()); 3086 browser_context());
3091 new_entry->SetPageID(0); 3087 new_entry->SetPageID(0);
3092 new_entry->SetTitle(base::ASCIIToUTF16("Title")); 3088 new_entry->SetTitle(base::ASCIIToUTF16("Title"));
3093 new_entry->SetPageState(PageState::CreateFromEncodedData("state")); 3089 new_entry->SetPageState(PageState::CreateFromEncodedData("state"));
3094 entries.push_back(std::move(new_entry)); 3090 entries.push_back(std::move(new_entry));
3095 std::unique_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>( 3091 std::unique_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>(
3096 WebContents::Create(WebContents::CreateParams(browser_context())))); 3092 WebContents::Create(WebContents::CreateParams(browser_context()))));
3097 NavigationControllerImpl& our_controller = our_contents->GetController(); 3093 NavigationControllerImpl& our_controller = our_contents->GetController();
3098 our_controller.Restore( 3094 our_controller.Restore(0, RestoreType::LAST_SESSION_EXITED_CLEANLY, &entries);
3099 0, NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY, &entries);
3100 ASSERT_EQ(0u, entries.size()); 3095 ASSERT_EQ(0u, entries.size());
3101 3096
3102 // Ensure the RenderFrame is initialized before simulating events coming from 3097 // Ensure the RenderFrame is initialized before simulating events coming from
3103 // it. 3098 // it.
3104 main_test_rfh()->InitializeRenderFrameIfNeeded(); 3099 main_test_rfh()->InitializeRenderFrameIfNeeded();
3105 3100
3106 // Before navigating to the restored entry, it should have a restore_type 3101 // Before navigating to the restored entry, it should have a restore_type
3107 // and no SiteInstance. 3102 // and no SiteInstance.
3108 NavigationEntry* entry = our_controller.GetEntryAtIndex(0); 3103 NavigationEntry* entry = our_controller.GetEntryAtIndex(0);
3109 EXPECT_EQ(NavigationEntryImpl::RESTORE_LAST_SESSION_EXITED_CLEANLY, 3104 EXPECT_EQ(RestoreType::LAST_SESSION_EXITED_CLEANLY,
3110 our_controller.GetEntryAtIndex(0)->restore_type()); 3105 our_controller.GetEntryAtIndex(0)->restore_type());
3111 EXPECT_FALSE(our_controller.GetEntryAtIndex(0)->site_instance()); 3106 EXPECT_FALSE(our_controller.GetEntryAtIndex(0)->site_instance());
3112 3107
3113 // After navigating, we should have one entry, and it should be "pending". 3108 // After navigating, we should have one entry, and it should be "pending".
3114 our_controller.GoToIndex(0); 3109 our_controller.GoToIndex(0);
3115 EXPECT_EQ(1, our_controller.GetEntryCount()); 3110 EXPECT_EQ(1, our_controller.GetEntryCount());
3116 EXPECT_EQ(our_controller.GetEntryAtIndex(0), 3111 EXPECT_EQ(our_controller.GetEntryAtIndex(0),
3117 our_controller.GetPendingEntry()); 3112 our_controller.GetPendingEntry());
3118 EXPECT_EQ(0, our_controller.GetEntryAtIndex(0)->GetPageID()); 3113 EXPECT_EQ(0, our_controller.GetEntryAtIndex(0)->GetPageID());
3119 3114
(...skipping 25 matching lines...) Expand all
3145 main_rfh->PrepareForCommit(); 3140 main_rfh->PrepareForCommit();
3146 main_rfh->SendNavigateWithParams(&params); 3141 main_rfh->SendNavigateWithParams(&params);
3147 3142
3148 // There should be no pending entry and one committed one. 3143 // There should be no pending entry and one committed one.
3149 EXPECT_EQ(1, our_controller.GetEntryCount()); 3144 EXPECT_EQ(1, our_controller.GetEntryCount());
3150 EXPECT_EQ(0, our_controller.GetLastCommittedEntryIndex()); 3145 EXPECT_EQ(0, our_controller.GetLastCommittedEntryIndex());
3151 EXPECT_FALSE(our_controller.GetPendingEntry()); 3146 EXPECT_FALSE(our_controller.GetPendingEntry());
3152 EXPECT_EQ( 3147 EXPECT_EQ(
3153 url, 3148 url,
3154 our_controller.GetLastCommittedEntry()->site_instance()->GetSiteURL()); 3149 our_controller.GetLastCommittedEntry()->site_instance()->GetSiteURL());
3155 EXPECT_EQ(NavigationEntryImpl::RESTORE_NONE, 3150 EXPECT_EQ(RestoreType::NONE,
3156 our_controller.GetEntryAtIndex(0)->restore_type()); 3151 our_controller.GetEntryAtIndex(0)->restore_type());
3157 } 3152 }
3158 3153
3159 // Make sure that the page type and stuff is correct after an interstitial. 3154 // Make sure that the page type and stuff is correct after an interstitial.
3160 TEST_F(NavigationControllerTest, Interstitial) { 3155 TEST_F(NavigationControllerTest, Interstitial) {
3161 NavigationControllerImpl& controller = controller_impl(); 3156 NavigationControllerImpl& controller = controller_impl();
3162 // First navigate somewhere normal. 3157 // First navigate somewhere normal.
3163 const GURL url1("http://foo"); 3158 const GURL url1("http://foo");
3164 controller.LoadURL( 3159 controller.LoadURL(
3165 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); 3160 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
(...skipping 1502 matching lines...) Expand 10 before | Expand all | Expand 10 after
4668 std::string(), browser_context()); 4663 std::string(), browser_context());
4669 entry->SetPageID(static_cast<int>(i)); 4664 entry->SetPageID(static_cast<int>(i));
4670 entries.push_back(std::move(entry)); 4665 entries.push_back(std::move(entry));
4671 } 4666 }
4672 4667
4673 // Create a WebContents with restored entries. 4668 // Create a WebContents with restored entries.
4674 std::unique_ptr<TestWebContents> source_contents( 4669 std::unique_ptr<TestWebContents> source_contents(
4675 static_cast<TestWebContents*>(CreateTestWebContents())); 4670 static_cast<TestWebContents*>(CreateTestWebContents()));
4676 NavigationControllerImpl& source_controller = 4671 NavigationControllerImpl& source_controller =
4677 source_contents->GetController(); 4672 source_contents->GetController();
4678 source_controller.Restore( 4673 source_controller.Restore(entries.size() - 1,
4679 entries.size() - 1, 4674 RestoreType::LAST_SESSION_EXITED_CLEANLY, &entries);
4680 NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY,
4681 &entries);
4682 ASSERT_EQ(0u, entries.size()); 4675 ASSERT_EQ(0u, entries.size());
4683 source_controller.LoadIfNecessary(); 4676 source_controller.LoadIfNecessary();
4684 source_contents->CommitPendingNavigation(); 4677 source_contents->CommitPendingNavigation();
4685 4678
4686 // Load a page, then copy state from |source_contents|. 4679 // Load a page, then copy state from |source_contents|.
4687 NavigateAndCommit(kInitialUrl); 4680 NavigateAndCommit(kInitialUrl);
4688 contents()->ExpectSetHistoryOffsetAndLength(2, 3); 4681 contents()->ExpectSetHistoryOffsetAndLength(2, 3);
4689 controller_impl().CopyStateFromAndPrune(&source_controller, false); 4682 controller_impl().CopyStateFromAndPrune(&source_controller, false);
4690 ASSERT_EQ(3, controller_impl().GetEntryCount()); 4683 ASSERT_EQ(3, controller_impl().GetEntryCount());
4691 4684
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
5337 // means that occasionally a navigation conflict will end up with one entry 5330 // means that occasionally a navigation conflict will end up with one entry
5338 // bubbling to the end of the entry list, but that's the least-bad option. 5331 // bubbling to the end of the entry list, but that's the least-bad option.
5339 EXPECT_EQ(3, controller.GetEntryCount()); 5332 EXPECT_EQ(3, controller.GetEntryCount());
5340 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); 5333 EXPECT_EQ(2, controller.GetCurrentEntryIndex());
5341 EXPECT_EQ(url_a, controller.GetEntryAtIndex(0)->GetURL()); 5334 EXPECT_EQ(url_a, controller.GetEntryAtIndex(0)->GetURL());
5342 EXPECT_EQ(url_c, controller.GetEntryAtIndex(1)->GetURL()); 5335 EXPECT_EQ(url_c, controller.GetEntryAtIndex(1)->GetURL());
5343 EXPECT_EQ(url_b, controller.GetEntryAtIndex(2)->GetURL()); 5336 EXPECT_EQ(url_b, controller.GetEntryAtIndex(2)->GetURL());
5344 } 5337 }
5345 5338
5346 } // namespace content 5339 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698