| 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 3075 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3086 EXPECT_EQ(1, controller.GetEntryAtIndex(1)->GetPageID()); | 3086 EXPECT_EQ(1, controller.GetEntryAtIndex(1)->GetPageID()); |
| 3087 EXPECT_EQ(1, contents()->GetMaxPageIDForSiteInstance(instance1)); | 3087 EXPECT_EQ(1, contents()->GetMaxPageIDForSiteInstance(instance1)); |
| 3088 | 3088 |
| 3089 scoped_ptr<TestWebContents> other_contents( | 3089 scoped_ptr<TestWebContents> other_contents( |
| 3090 static_cast<TestWebContents*>(CreateTestWebContents())); | 3090 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3091 NavigationControllerImpl& other_controller = other_contents->GetController(); | 3091 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3092 other_contents->NavigateAndCommit(url3); | 3092 other_contents->NavigateAndCommit(url3); |
| 3093 other_contents->ExpectSetHistoryLengthAndPrune( | 3093 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3094 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, | 3094 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, |
| 3095 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3095 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3096 other_controller.CopyStateFromAndPrune(&controller); | 3096 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3097 | 3097 |
| 3098 // other_controller should now contain the 3 urls: url1, url2 and url3. | 3098 // other_controller should now contain the 3 urls: url1, url2 and url3. |
| 3099 | 3099 |
| 3100 ASSERT_EQ(3, other_controller.GetEntryCount()); | 3100 ASSERT_EQ(3, other_controller.GetEntryCount()); |
| 3101 | 3101 |
| 3102 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); | 3102 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); |
| 3103 | 3103 |
| 3104 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); | 3104 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3105 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); | 3105 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3106 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(2)->GetURL()); | 3106 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(2)->GetURL()); |
| 3107 EXPECT_EQ(0, other_controller.GetEntryAtIndex(0)->GetPageID()); | 3107 EXPECT_EQ(0, other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3108 EXPECT_EQ(1, other_controller.GetEntryAtIndex(1)->GetPageID()); | 3108 EXPECT_EQ(1, other_controller.GetEntryAtIndex(1)->GetPageID()); |
| 3109 EXPECT_EQ(0, other_controller.GetEntryAtIndex(2)->GetPageID()); | 3109 EXPECT_EQ(0, other_controller.GetEntryAtIndex(2)->GetPageID()); |
| 3110 | 3110 |
| 3111 // A new SiteInstance should be used for the new tab. | 3111 // A new SiteInstance in a different BrowsingInstance should be used for the |
| 3112 // new tab. |
| 3112 SiteInstance* instance3 = | 3113 SiteInstance* instance3 = |
| 3113 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(2)); | 3114 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(2)); |
| 3114 EXPECT_NE(instance3, instance1); | 3115 EXPECT_NE(instance3, instance1); |
| 3116 EXPECT_FALSE(instance3->IsRelatedSiteInstance(instance1)); |
| 3115 | 3117 |
| 3116 // The max page ID map should be copied over and updated with the max page ID | 3118 // The max page ID map should be copied over and updated with the max page ID |
| 3117 // from the current tab. | 3119 // from the current tab. |
| 3118 EXPECT_EQ(1, other_contents->GetMaxPageIDForSiteInstance(instance1)); | 3120 EXPECT_EQ(1, other_contents->GetMaxPageIDForSiteInstance(instance1)); |
| 3119 EXPECT_EQ(0, other_contents->GetMaxPageIDForSiteInstance(instance3)); | 3121 EXPECT_EQ(0, other_contents->GetMaxPageIDForSiteInstance(instance3)); |
| 3120 } | 3122 } |
| 3121 | 3123 |
| 3122 // Test CopyStateFromAndPrune with 2 urls, the first selected and 1 entry in | 3124 // Test CopyStateFromAndPrune with 2 urls, the first selected and 1 entry in |
| 3123 // the target. | 3125 // the target. |
| 3124 TEST_F(NavigationControllerTest, CopyStateFromAndPrune2) { | 3126 TEST_F(NavigationControllerTest, CopyStateFromAndPrune2) { |
| 3125 NavigationControllerImpl& controller = controller_impl(); | 3127 NavigationControllerImpl& controller = controller_impl(); |
| 3126 const GURL url1("http://foo1"); | 3128 const GURL url1("http://foo1"); |
| 3127 const GURL url2("http://foo2"); | 3129 const GURL url2("http://foo2"); |
| 3128 const GURL url3("http://foo3"); | 3130 const GURL url3("http://foo3"); |
| 3129 | 3131 |
| 3130 NavigateAndCommit(url1); | 3132 NavigateAndCommit(url1); |
| 3131 NavigateAndCommit(url2); | 3133 NavigateAndCommit(url2); |
| 3132 controller.GoBack(); | 3134 controller.GoBack(); |
| 3133 contents()->CommitPendingNavigation(); | 3135 contents()->CommitPendingNavigation(); |
| 3134 | 3136 |
| 3135 scoped_ptr<TestWebContents> other_contents( | 3137 scoped_ptr<TestWebContents> other_contents( |
| 3136 static_cast<TestWebContents*>(CreateTestWebContents())); | 3138 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3137 NavigationControllerImpl& other_controller = other_contents->GetController(); | 3139 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3138 other_contents->NavigateAndCommit(url3); | 3140 other_contents->NavigateAndCommit(url3); |
| 3139 other_contents->ExpectSetHistoryLengthAndPrune( | 3141 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3140 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, | 3142 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, |
| 3141 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3143 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3142 other_controller.CopyStateFromAndPrune(&controller); | 3144 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3143 | 3145 |
| 3144 // other_controller should now contain: url1, url3 | 3146 // other_controller should now contain: url1, url3 |
| 3145 | 3147 |
| 3146 ASSERT_EQ(2, other_controller.GetEntryCount()); | 3148 ASSERT_EQ(2, other_controller.GetEntryCount()); |
| 3147 ASSERT_EQ(1, other_controller.GetCurrentEntryIndex()); | 3149 ASSERT_EQ(1, other_controller.GetCurrentEntryIndex()); |
| 3148 | 3150 |
| 3149 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); | 3151 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3150 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); | 3152 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3151 EXPECT_EQ(0, other_controller.GetEntryAtIndex(1)->GetPageID()); | 3153 EXPECT_EQ(0, other_controller.GetEntryAtIndex(1)->GetPageID()); |
| 3152 | 3154 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 3170 NavigateAndCommit(url2); | 3172 NavigateAndCommit(url2); |
| 3171 | 3173 |
| 3172 scoped_ptr<TestWebContents> other_contents( | 3174 scoped_ptr<TestWebContents> other_contents( |
| 3173 static_cast<TestWebContents*>(CreateTestWebContents())); | 3175 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3174 NavigationControllerImpl& other_controller = other_contents->GetController(); | 3176 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3175 other_contents->NavigateAndCommit(url3); | 3177 other_contents->NavigateAndCommit(url3); |
| 3176 other_contents->NavigateAndCommit(url4); | 3178 other_contents->NavigateAndCommit(url4); |
| 3177 other_contents->ExpectSetHistoryLengthAndPrune( | 3179 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3178 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(1)), 2, | 3180 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(1)), 2, |
| 3179 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3181 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3180 other_controller.CopyStateFromAndPrune(&controller); | 3182 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3181 | 3183 |
| 3182 // other_controller should now contain: url1, url2, url4 | 3184 // other_controller should now contain: url1, url2, url4 |
| 3183 | 3185 |
| 3184 ASSERT_EQ(3, other_controller.GetEntryCount()); | 3186 ASSERT_EQ(3, other_controller.GetEntryCount()); |
| 3185 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); | 3187 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); |
| 3186 | 3188 |
| 3187 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); | 3189 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3188 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); | 3190 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3189 EXPECT_EQ(url4, other_controller.GetEntryAtIndex(2)->GetURL()); | 3191 EXPECT_EQ(url4, other_controller.GetEntryAtIndex(2)->GetURL()); |
| 3190 | 3192 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 3210 scoped_ptr<TestWebContents> other_contents( | 3212 scoped_ptr<TestWebContents> other_contents( |
| 3211 static_cast<TestWebContents*>(CreateTestWebContents())); | 3213 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3212 NavigationControllerImpl& other_controller = other_contents->GetController(); | 3214 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3213 other_contents->NavigateAndCommit(url3); | 3215 other_contents->NavigateAndCommit(url3); |
| 3214 other_contents->NavigateAndCommit(url4); | 3216 other_contents->NavigateAndCommit(url4); |
| 3215 other_controller.GoBack(); | 3217 other_controller.GoBack(); |
| 3216 other_contents->CommitPendingNavigation(); | 3218 other_contents->CommitPendingNavigation(); |
| 3217 other_contents->ExpectSetHistoryLengthAndPrune( | 3219 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3218 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, | 3220 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, |
| 3219 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3221 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3220 other_controller.CopyStateFromAndPrune(&controller); | 3222 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3221 | 3223 |
| 3222 // other_controller should now contain: url1, url2, url3 | 3224 // other_controller should now contain: url1, url2, url3 |
| 3223 | 3225 |
| 3224 ASSERT_EQ(3, other_controller.GetEntryCount()); | 3226 ASSERT_EQ(3, other_controller.GetEntryCount()); |
| 3225 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); | 3227 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); |
| 3226 | 3228 |
| 3227 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); | 3229 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3228 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); | 3230 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3229 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(2)->GetURL()); | 3231 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(2)->GetURL()); |
| 3230 | 3232 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3251 | 3253 |
| 3252 scoped_ptr<TestWebContents> other_contents( | 3254 scoped_ptr<TestWebContents> other_contents( |
| 3253 static_cast<TestWebContents*>(CreateTestWebContents())); | 3255 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3254 NavigationControllerImpl& other_controller = other_contents->GetController(); | 3256 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3255 other_contents->NavigateAndCommit(url3); | 3257 other_contents->NavigateAndCommit(url3); |
| 3256 other_controller.LoadURL( | 3258 other_controller.LoadURL( |
| 3257 url4, Referrer(), PAGE_TRANSITION_TYPED, std::string()); | 3259 url4, Referrer(), PAGE_TRANSITION_TYPED, std::string()); |
| 3258 other_contents->ExpectSetHistoryLengthAndPrune( | 3260 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3259 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, | 3261 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, |
| 3260 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3262 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3261 other_controller.CopyStateFromAndPrune(&controller); | 3263 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3262 | 3264 |
| 3263 // other_controller should now contain url1, url3, and a pending entry | 3265 // other_controller should now contain url1, url3, and a pending entry |
| 3264 // for url4. | 3266 // for url4. |
| 3265 | 3267 |
| 3266 ASSERT_EQ(2, other_controller.GetEntryCount()); | 3268 ASSERT_EQ(2, other_controller.GetEntryCount()); |
| 3267 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex()); | 3269 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex()); |
| 3268 | 3270 |
| 3269 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); | 3271 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3270 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); | 3272 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3271 | 3273 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3298 other_contents->NavigateAndCommit(url2a); | 3300 other_contents->NavigateAndCommit(url2a); |
| 3299 // Simulate a client redirect, which has the same page ID as entry 2a. | 3301 // Simulate a client redirect, which has the same page ID as entry 2a. |
| 3300 other_controller.LoadURL( | 3302 other_controller.LoadURL( |
| 3301 url2b, Referrer(), PAGE_TRANSITION_LINK, std::string()); | 3303 url2b, Referrer(), PAGE_TRANSITION_LINK, std::string()); |
| 3302 other_controller.GetPendingEntry()->SetPageID( | 3304 other_controller.GetPendingEntry()->SetPageID( |
| 3303 other_controller.GetLastCommittedEntry()->GetPageID()); | 3305 other_controller.GetLastCommittedEntry()->GetPageID()); |
| 3304 | 3306 |
| 3305 other_contents->ExpectSetHistoryLengthAndPrune( | 3307 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3306 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, | 3308 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, |
| 3307 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3309 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3308 other_controller.CopyStateFromAndPrune(&controller); | 3310 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3309 | 3311 |
| 3310 // other_controller should now contain url1, url2a, and a pending entry | 3312 // other_controller should now contain url1, url2a, and a pending entry |
| 3311 // for url2b. | 3313 // for url2b. |
| 3312 | 3314 |
| 3313 ASSERT_EQ(2, other_controller.GetEntryCount()); | 3315 ASSERT_EQ(2, other_controller.GetEntryCount()); |
| 3314 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex()); | 3316 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex()); |
| 3315 | 3317 |
| 3316 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); | 3318 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3317 EXPECT_EQ(url2a, other_controller.GetEntryAtIndex(1)->GetURL()); | 3319 EXPECT_EQ(url2a, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3318 | 3320 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 3342 NavigateAndCommit(url2); | 3344 NavigateAndCommit(url2); |
| 3343 controller.GoBack(); | 3345 controller.GoBack(); |
| 3344 | 3346 |
| 3345 scoped_ptr<TestWebContents> other_contents( | 3347 scoped_ptr<TestWebContents> other_contents( |
| 3346 static_cast<TestWebContents*>(CreateTestWebContents())); | 3348 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3347 NavigationControllerImpl& other_controller = other_contents->GetController(); | 3349 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3348 other_contents->NavigateAndCommit(url3); | 3350 other_contents->NavigateAndCommit(url3); |
| 3349 other_contents->ExpectSetHistoryLengthAndPrune( | 3351 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3350 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, | 3352 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, |
| 3351 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3353 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3352 other_controller.CopyStateFromAndPrune(&controller); | 3354 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3353 | 3355 |
| 3354 // other_controller should now contain: url1, url2, url3 | 3356 // other_controller should now contain: url1, url2, url3 |
| 3355 | 3357 |
| 3356 ASSERT_EQ(3, other_controller.GetEntryCount()); | 3358 ASSERT_EQ(3, other_controller.GetEntryCount()); |
| 3357 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); | 3359 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); |
| 3358 | 3360 |
| 3359 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); | 3361 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3360 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); | 3362 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3361 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(2)->GetURL()); | 3363 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(2)->GetURL()); |
| 3362 EXPECT_EQ(0, other_controller.GetEntryAtIndex(2)->GetPageID()); | 3364 EXPECT_EQ(0, other_controller.GetEntryAtIndex(2)->GetPageID()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3389 NavigateAndCommit(url2); | 3391 NavigateAndCommit(url2); |
| 3390 NavigateAndCommit(url3); | 3392 NavigateAndCommit(url3); |
| 3391 | 3393 |
| 3392 scoped_ptr<TestWebContents> other_contents( | 3394 scoped_ptr<TestWebContents> other_contents( |
| 3393 static_cast<TestWebContents*>(CreateTestWebContents())); | 3395 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3394 NavigationControllerImpl& other_controller = other_contents->GetController(); | 3396 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3395 other_contents->NavigateAndCommit(url4); | 3397 other_contents->NavigateAndCommit(url4); |
| 3396 other_contents->ExpectSetHistoryLengthAndPrune( | 3398 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3397 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, | 3399 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, |
| 3398 other_controller.GetEntryAtIndex(0)->GetPageID()); | 3400 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3399 other_controller.CopyStateFromAndPrune(&controller); | 3401 other_controller.CopyStateFromAndPrune(&controller, false); |
| 3400 | 3402 |
| 3401 // We should have received a pruned notification. | 3403 // We should have received a pruned notification. |
| 3402 EXPECT_EQ(1, listener.notification_count_); | 3404 EXPECT_EQ(1, listener.notification_count_); |
| 3403 EXPECT_TRUE(listener.details_.from_front); | 3405 EXPECT_TRUE(listener.details_.from_front); |
| 3404 EXPECT_EQ(1, listener.details_.count); | 3406 EXPECT_EQ(1, listener.details_.count); |
| 3405 | 3407 |
| 3406 // other_controller should now contain only 3 urls: url2, url3 and url4. | 3408 // other_controller should now contain only 3 urls: url2, url3 and url4. |
| 3407 | 3409 |
| 3408 ASSERT_EQ(3, other_controller.GetEntryCount()); | 3410 ASSERT_EQ(3, other_controller.GetEntryCount()); |
| 3409 | 3411 |
| 3410 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); | 3412 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); |
| 3411 | 3413 |
| 3412 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(0)->GetURL()); | 3414 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3413 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); | 3415 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3414 EXPECT_EQ(url4, other_controller.GetEntryAtIndex(2)->GetURL()); | 3416 EXPECT_EQ(url4, other_controller.GetEntryAtIndex(2)->GetURL()); |
| 3415 EXPECT_EQ(1, other_controller.GetEntryAtIndex(0)->GetPageID()); | 3417 EXPECT_EQ(1, other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3416 EXPECT_EQ(2, other_controller.GetEntryAtIndex(1)->GetPageID()); | 3418 EXPECT_EQ(2, other_controller.GetEntryAtIndex(1)->GetPageID()); |
| 3417 EXPECT_EQ(0, other_controller.GetEntryAtIndex(2)->GetPageID()); | 3419 EXPECT_EQ(0, other_controller.GetEntryAtIndex(2)->GetPageID()); |
| 3418 | 3420 |
| 3419 NavigationControllerImpl::set_max_entry_count_for_testing(original_count); | 3421 NavigationControllerImpl::set_max_entry_count_for_testing(original_count); |
| 3420 } | 3422 } |
| 3421 | 3423 |
| 3424 // Tests CopyStateFromAndPrune with 2 urls in source, 1 in dest, with |
| 3425 // replace_entry set to true. |
| 3426 TEST_F(NavigationControllerTest, CopyStateFromAndPruneReplaceEntry) { |
| 3427 NavigationControllerImpl& controller = controller_impl(); |
| 3428 const GURL url1("http://foo/1"); |
| 3429 const GURL url2("http://foo/2"); |
| 3430 const GURL url3("http://foo/3"); |
| 3431 |
| 3432 NavigateAndCommit(url1); |
| 3433 NavigateAndCommit(url2); |
| 3434 |
| 3435 // First two entries should have the same SiteInstance. |
| 3436 SiteInstance* instance1 = |
| 3437 GetSiteInstanceFromEntry(controller.GetEntryAtIndex(0)); |
| 3438 SiteInstance* instance2 = |
| 3439 GetSiteInstanceFromEntry(controller.GetEntryAtIndex(1)); |
| 3440 EXPECT_EQ(instance1, instance2); |
| 3441 EXPECT_EQ(0, controller.GetEntryAtIndex(0)->GetPageID()); |
| 3442 EXPECT_EQ(1, controller.GetEntryAtIndex(1)->GetPageID()); |
| 3443 EXPECT_EQ(1, contents()->GetMaxPageIDForSiteInstance(instance1)); |
| 3444 |
| 3445 scoped_ptr<TestWebContents> other_contents( |
| 3446 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3447 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3448 other_contents->NavigateAndCommit(url3); |
| 3449 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3450 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, |
| 3451 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3452 other_controller.CopyStateFromAndPrune(&controller, true); |
| 3453 |
| 3454 // other_controller should now contain the 2 urls: url1 and url3. |
| 3455 |
| 3456 ASSERT_EQ(2, other_controller.GetEntryCount()); |
| 3457 |
| 3458 ASSERT_EQ(1, other_controller.GetCurrentEntryIndex()); |
| 3459 |
| 3460 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3461 EXPECT_EQ(url3, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3462 EXPECT_EQ(0, other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3463 EXPECT_EQ(0, other_controller.GetEntryAtIndex(1)->GetPageID()); |
| 3464 |
| 3465 // A new SiteInstance in a different BrowsingInstance should be used for the |
| 3466 // new tab. |
| 3467 SiteInstance* instance3 = |
| 3468 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(1)); |
| 3469 EXPECT_NE(instance3, instance1); |
| 3470 EXPECT_FALSE(instance3->IsRelatedSiteInstance(instance1)); |
| 3471 |
| 3472 // The max page ID map should be copied over and updated with the max page ID |
| 3473 // from the current tab. |
| 3474 EXPECT_EQ(1, other_contents->GetMaxPageIDForSiteInstance(instance1)); |
| 3475 EXPECT_EQ(0, other_contents->GetMaxPageIDForSiteInstance(instance3)); |
| 3476 } |
| 3477 |
| 3478 // Tests CopyStateFromAndPrune with 3 urls in source, 1 in dest, when the max |
| 3479 // entry count is 3 and replace_entry is true. We should not prune entries. |
| 3480 TEST_F(NavigationControllerTest, CopyStateFromAndPruneMaxEntriesReplaceEntry) { |
| 3481 NavigationControllerImpl& controller = controller_impl(); |
| 3482 size_t original_count = NavigationControllerImpl::max_entry_count(); |
| 3483 const int kMaxEntryCount = 3; |
| 3484 |
| 3485 NavigationControllerImpl::set_max_entry_count_for_testing(kMaxEntryCount); |
| 3486 |
| 3487 const GURL url1("http://foo/1"); |
| 3488 const GURL url2("http://foo/2"); |
| 3489 const GURL url3("http://foo/3"); |
| 3490 const GURL url4("http://foo/4"); |
| 3491 |
| 3492 // Create a PrunedListener to observe prune notifications. |
| 3493 PrunedListener listener(&controller); |
| 3494 |
| 3495 NavigateAndCommit(url1); |
| 3496 NavigateAndCommit(url2); |
| 3497 NavigateAndCommit(url3); |
| 3498 |
| 3499 scoped_ptr<TestWebContents> other_contents( |
| 3500 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 3501 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 3502 other_contents->NavigateAndCommit(url4); |
| 3503 other_contents->ExpectSetHistoryLengthAndPrune( |
| 3504 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 2, |
| 3505 other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3506 other_controller.CopyStateFromAndPrune(&controller, true); |
| 3507 |
| 3508 // We should have received no pruned notification. |
| 3509 EXPECT_EQ(0, listener.notification_count_); |
| 3510 |
| 3511 // other_controller should now contain only 3 urls: url1, url2 and url4. |
| 3512 |
| 3513 ASSERT_EQ(3, other_controller.GetEntryCount()); |
| 3514 |
| 3515 ASSERT_EQ(2, other_controller.GetCurrentEntryIndex()); |
| 3516 |
| 3517 EXPECT_EQ(url1, other_controller.GetEntryAtIndex(0)->GetURL()); |
| 3518 EXPECT_EQ(url2, other_controller.GetEntryAtIndex(1)->GetURL()); |
| 3519 EXPECT_EQ(url4, other_controller.GetEntryAtIndex(2)->GetURL()); |
| 3520 EXPECT_EQ(0, other_controller.GetEntryAtIndex(0)->GetPageID()); |
| 3521 EXPECT_EQ(1, other_controller.GetEntryAtIndex(1)->GetPageID()); |
| 3522 EXPECT_EQ(0, other_controller.GetEntryAtIndex(2)->GetPageID()); |
| 3523 |
| 3524 NavigationControllerImpl::set_max_entry_count_for_testing(original_count); |
| 3525 } |
| 3526 |
| 3422 // Tests that navigations initiated from the page (with the history object) | 3527 // Tests that navigations initiated from the page (with the history object) |
| 3423 // work as expected without navigation entries. | 3528 // work as expected without navigation entries. |
| 3424 TEST_F(NavigationControllerTest, HistoryNavigate) { | 3529 TEST_F(NavigationControllerTest, HistoryNavigate) { |
| 3425 NavigationControllerImpl& controller = controller_impl(); | 3530 NavigationControllerImpl& controller = controller_impl(); |
| 3426 const GURL url1("http://foo/1"); | 3531 const GURL url1("http://foo/1"); |
| 3427 const GURL url2("http://foo/2"); | 3532 const GURL url2("http://foo/2"); |
| 3428 const GURL url3("http://foo/3"); | 3533 const GURL url3("http://foo/3"); |
| 3429 | 3534 |
| 3430 NavigateAndCommit(url1); | 3535 NavigateAndCommit(url1); |
| 3431 NavigateAndCommit(url2); | 3536 NavigateAndCommit(url2); |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3836 EXPECT_EQ(1, controller.GetEntryCount()); | 3941 EXPECT_EQ(1, controller.GetEntryCount()); |
| 3837 EXPECT_EQ(0, controller.GetCurrentEntryIndex()); | 3942 EXPECT_EQ(0, controller.GetCurrentEntryIndex()); |
| 3838 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); | 3943 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); |
| 3839 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 3944 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
| 3840 EXPECT_FALSE(controller.CanGoBack()); | 3945 EXPECT_FALSE(controller.CanGoBack()); |
| 3841 EXPECT_FALSE(controller.CanGoForward()); | 3946 EXPECT_FALSE(controller.CanGoForward()); |
| 3842 EXPECT_EQ(url4, controller.GetVisibleEntry()->GetURL()); | 3947 EXPECT_EQ(url4, controller.GetVisibleEntry()->GetURL()); |
| 3843 } | 3948 } |
| 3844 | 3949 |
| 3845 } // namespace content | 3950 } // namespace content |
| OLD | NEW |