| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #import "ios/web/navigation/crw_session_controller.h" | 5 #import "ios/web/navigation/crw_session_controller.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #import "testing/gtest_mac.h" | 23 #import "testing/gtest_mac.h" |
| 24 #include "testing/platform_test.h" | 24 #include "testing/platform_test.h" |
| 25 | 25 |
| 26 @interface CRWSessionController (Testing) | 26 @interface CRWSessionController (Testing) |
| 27 - (const GURL&)URLForItemAtIndex:(size_t)index; | 27 - (const GURL&)URLForItemAtIndex:(size_t)index; |
| 28 - (const GURL&)currentURL; | 28 - (const GURL&)currentURL; |
| 29 @end | 29 @end |
| 30 | 30 |
| 31 @implementation CRWSessionController (Testing) | 31 @implementation CRWSessionController (Testing) |
| 32 - (const GURL&)URLForItemAtIndex:(size_t)index { | 32 - (const GURL&)URLForItemAtIndex:(size_t)index { |
| 33 web::NavigationItemList items = self.items; | 33 if (index < self.items.size()) |
| 34 if (index < items.size()) | 34 return self.items[index]->GetURL(); |
| 35 return items[index]->GetURL(); | |
| 36 return GURL::EmptyGURL(); | 35 return GURL::EmptyGURL(); |
| 37 } | 36 } |
| 38 | 37 |
| 39 - (const GURL&)currentURL { | 38 - (const GURL&)currentURL { |
| 40 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL(); | 39 return self.currentItem ? self.currentItem->GetURL() : GURL::EmptyGURL(); |
| 41 } | 40 } |
| 42 @end | 41 @end |
| 43 | 42 |
| 44 namespace { | 43 namespace { |
| 45 | 44 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 71 [session_controller_ | 70 [session_controller_ |
| 72 addPendingItem:GURL("http://www.example.com") | 71 addPendingItem:GURL("http://www.example.com") |
| 73 referrer:web::Referrer() | 72 referrer:web::Referrer() |
| 74 transition:ui::PAGE_TRANSITION_TYPED | 73 transition:ui::PAGE_TRANSITION_TYPED |
| 75 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 74 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 76 [session_controller_ commitPendingItem]; | 75 [session_controller_ commitPendingItem]; |
| 77 | 76 |
| 78 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 77 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 79 [session_controller_ setPendingItemIndex:0]; | 78 [session_controller_ setPendingItemIndex:0]; |
| 80 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); | 79 EXPECT_EQ(0, [session_controller_ pendingItemIndex]); |
| 81 EXPECT_EQ([session_controller_ items].back(), | 80 EXPECT_EQ([session_controller_ items].back().get(), |
| 82 [session_controller_ pendingItem]); | 81 [session_controller_ pendingItem]); |
| 83 } | 82 } |
| 84 | 83 |
| 85 TEST_F(CRWSessionControllerTest, addPendingItem) { | 84 TEST_F(CRWSessionControllerTest, addPendingItem) { |
| 86 [session_controller_ | 85 [session_controller_ |
| 87 addPendingItem:GURL("http://www.url.com") | 86 addPendingItem:GURL("http://www.url.com") |
| 88 referrer:MakeReferrer("http://www.referer.com") | 87 referrer:MakeReferrer("http://www.referer.com") |
| 89 transition:ui::PAGE_TRANSITION_TYPED | 88 transition:ui::PAGE_TRANSITION_TYPED |
| 90 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 89 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 91 | 90 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 [session_controller_ | 170 [session_controller_ |
| 172 addPendingItem:GURL("http://www.url.com") | 171 addPendingItem:GURL("http://www.url.com") |
| 173 referrer:MakeReferrer("http://www.referer.com") | 172 referrer:MakeReferrer("http://www.referer.com") |
| 174 transition:ui::PAGE_TRANSITION_TYPED | 173 transition:ui::PAGE_TRANSITION_TYPED |
| 175 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 174 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 176 [session_controller_ commitPendingItem]; | 175 [session_controller_ commitPendingItem]; |
| 177 | 176 |
| 178 EXPECT_EQ(1U, [session_controller_ items].size()); | 177 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 179 EXPECT_EQ(GURL("http://www.url.com/"), | 178 EXPECT_EQ(GURL("http://www.url.com/"), |
| 180 [session_controller_ URLForItemAtIndex:0U]); | 179 [session_controller_ URLForItemAtIndex:0U]); |
| 181 EXPECT_EQ([session_controller_ items].front(), | 180 EXPECT_EQ([session_controller_ items].front().get(), |
| 182 [session_controller_ currentItem]); | 181 [session_controller_ currentItem]); |
| 183 } | 182 } |
| 184 | 183 |
| 185 TEST_F(CRWSessionControllerTest, addPendingItemOverridingAndCommit) { | 184 TEST_F(CRWSessionControllerTest, addPendingItemOverridingAndCommit) { |
| 186 [session_controller_ | 185 [session_controller_ |
| 187 addPendingItem:GURL("http://www.url.com") | 186 addPendingItem:GURL("http://www.url.com") |
| 188 referrer:MakeReferrer("http://www.referer.com") | 187 referrer:MakeReferrer("http://www.referer.com") |
| 189 transition:ui::PAGE_TRANSITION_TYPED | 188 transition:ui::PAGE_TRANSITION_TYPED |
| 190 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 189 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 191 [session_controller_ | 190 [session_controller_ |
| 192 addPendingItem:GURL("http://www.another.url.com") | 191 addPendingItem:GURL("http://www.another.url.com") |
| 193 referrer:MakeReferrer("http://www.another.referer.com") | 192 referrer:MakeReferrer("http://www.another.referer.com") |
| 194 transition:ui::PAGE_TRANSITION_TYPED | 193 transition:ui::PAGE_TRANSITION_TYPED |
| 195 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 194 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 196 [session_controller_ commitPendingItem]; | 195 [session_controller_ commitPendingItem]; |
| 197 | 196 |
| 198 EXPECT_EQ(1U, [session_controller_ items].size()); | 197 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 199 EXPECT_EQ(GURL("http://www.another.url.com/"), | 198 EXPECT_EQ(GURL("http://www.another.url.com/"), |
| 200 [session_controller_ URLForItemAtIndex:0U]); | 199 [session_controller_ URLForItemAtIndex:0U]); |
| 201 EXPECT_EQ([session_controller_ items].front(), | 200 EXPECT_EQ([session_controller_ items].front().get(), |
| 202 [session_controller_ currentItem]); | 201 [session_controller_ currentItem]); |
| 203 } | 202 } |
| 204 | 203 |
| 205 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitMultiple) { | 204 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitMultiple) { |
| 206 [session_controller_ | 205 [session_controller_ |
| 207 addPendingItem:GURL("http://www.url.com") | 206 addPendingItem:GURL("http://www.url.com") |
| 208 referrer:MakeReferrer("http://www.referer.com") | 207 referrer:MakeReferrer("http://www.referer.com") |
| 209 transition:ui::PAGE_TRANSITION_TYPED | 208 transition:ui::PAGE_TRANSITION_TYPED |
| 210 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 209 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 211 [session_controller_ commitPendingItem]; | 210 [session_controller_ commitPendingItem]; |
| 212 | 211 |
| 213 [session_controller_ | 212 [session_controller_ |
| 214 addPendingItem:GURL("http://www.another.url.com") | 213 addPendingItem:GURL("http://www.another.url.com") |
| 215 referrer:MakeReferrer("http://www.another.referer.com") | 214 referrer:MakeReferrer("http://www.another.referer.com") |
| 216 transition:ui::PAGE_TRANSITION_TYPED | 215 transition:ui::PAGE_TRANSITION_TYPED |
| 217 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 216 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 218 [session_controller_ commitPendingItem]; | 217 [session_controller_ commitPendingItem]; |
| 219 | 218 |
| 220 EXPECT_EQ(2U, [session_controller_ items].size()); | 219 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 221 EXPECT_EQ(GURL("http://www.url.com/"), | 220 EXPECT_EQ(GURL("http://www.url.com/"), |
| 222 [session_controller_ URLForItemAtIndex:0U]); | 221 [session_controller_ URLForItemAtIndex:0U]); |
| 223 EXPECT_EQ(GURL("http://www.another.url.com/"), | 222 EXPECT_EQ(GURL("http://www.another.url.com/"), |
| 224 [session_controller_ URLForItemAtIndex:1U]); | 223 [session_controller_ URLForItemAtIndex:1U]); |
| 225 EXPECT_EQ([session_controller_ items][1U], [session_controller_ currentItem]); | 224 EXPECT_EQ([session_controller_ items][1U].get(), |
| 225 [session_controller_ currentItem]); |
| 226 } | 226 } |
| 227 | 227 |
| 228 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscard) { | 228 TEST_F(CRWSessionControllerTest, addPendingItemAndDiscard) { |
| 229 [session_controller_ | 229 [session_controller_ |
| 230 addPendingItem:GURL("http://www.url.com") | 230 addPendingItem:GURL("http://www.url.com") |
| 231 referrer:MakeReferrer("http://www.referer.com") | 231 referrer:MakeReferrer("http://www.referer.com") |
| 232 transition:ui::PAGE_TRANSITION_TYPED | 232 transition:ui::PAGE_TRANSITION_TYPED |
| 233 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 233 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 234 [session_controller_ discardNonCommittedItems]; | 234 [session_controller_ discardNonCommittedItems]; |
| 235 | 235 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 266 [session_controller_ | 266 [session_controller_ |
| 267 addPendingItem:GURL("http://www.another.url.com") | 267 addPendingItem:GURL("http://www.another.url.com") |
| 268 referrer:MakeReferrer("http://www.referer.com") | 268 referrer:MakeReferrer("http://www.referer.com") |
| 269 transition:ui::PAGE_TRANSITION_TYPED | 269 transition:ui::PAGE_TRANSITION_TYPED |
| 270 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 270 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 271 [session_controller_ commitPendingItem]; | 271 [session_controller_ commitPendingItem]; |
| 272 | 272 |
| 273 EXPECT_EQ(1U, [session_controller_ items].size()); | 273 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 274 EXPECT_EQ(GURL("http://www.another.url.com/"), | 274 EXPECT_EQ(GURL("http://www.another.url.com/"), |
| 275 [session_controller_ URLForItemAtIndex:0U]); | 275 [session_controller_ URLForItemAtIndex:0U]); |
| 276 EXPECT_EQ([session_controller_ items].front(), | 276 EXPECT_EQ([session_controller_ items].front().get(), |
| 277 [session_controller_ currentItem]); | 277 [session_controller_ currentItem]); |
| 278 } | 278 } |
| 279 | 279 |
| 280 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitAndAddAndDiscard) { | 280 TEST_F(CRWSessionControllerTest, addPendingItemAndCommitAndAddAndDiscard) { |
| 281 [session_controller_ | 281 [session_controller_ |
| 282 addPendingItem:GURL("http://www.url.com") | 282 addPendingItem:GURL("http://www.url.com") |
| 283 referrer:MakeReferrer("http://www.referer.com") | 283 referrer:MakeReferrer("http://www.referer.com") |
| 284 transition:ui::PAGE_TRANSITION_TYPED | 284 transition:ui::PAGE_TRANSITION_TYPED |
| 285 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 285 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 286 [session_controller_ commitPendingItem]; | 286 [session_controller_ commitPendingItem]; |
| 287 | 287 |
| 288 [session_controller_ | 288 [session_controller_ |
| 289 addPendingItem:GURL("http://www.another.url.com") | 289 addPendingItem:GURL("http://www.another.url.com") |
| 290 referrer:MakeReferrer("http://www.referer.com") | 290 referrer:MakeReferrer("http://www.referer.com") |
| 291 transition:ui::PAGE_TRANSITION_TYPED | 291 transition:ui::PAGE_TRANSITION_TYPED |
| 292 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 292 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 293 [session_controller_ discardNonCommittedItems]; | 293 [session_controller_ discardNonCommittedItems]; |
| 294 | 294 |
| 295 EXPECT_EQ(1U, [session_controller_ items].size()); | 295 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 296 EXPECT_EQ(GURL("http://www.url.com/"), | 296 EXPECT_EQ(GURL("http://www.url.com/"), |
| 297 [session_controller_ URLForItemAtIndex:0U]); | 297 [session_controller_ URLForItemAtIndex:0U]); |
| 298 EXPECT_EQ([session_controller_ items].front(), | 298 EXPECT_EQ([session_controller_ items].front().get(), |
| 299 [session_controller_ currentItem]); | 299 [session_controller_ currentItem]); |
| 300 } | 300 } |
| 301 | 301 |
| 302 TEST_F(CRWSessionControllerTest, | 302 TEST_F(CRWSessionControllerTest, |
| 303 commitPendingItemWithoutPendingOrCommittedItem) { | 303 commitPendingItemWithoutPendingOrCommittedItem) { |
| 304 [session_controller_ commitPendingItem]; | 304 [session_controller_ commitPendingItem]; |
| 305 | 305 |
| 306 EXPECT_TRUE([session_controller_ items].empty()); | 306 EXPECT_TRUE([session_controller_ items].empty()); |
| 307 EXPECT_FALSE([session_controller_ currentItem]); | 307 EXPECT_FALSE([session_controller_ currentItem]); |
| 308 } | 308 } |
| 309 | 309 |
| 310 TEST_F(CRWSessionControllerTest, | 310 TEST_F(CRWSessionControllerTest, |
| 311 commitPendingItemWithoutPendingItemWithCommittedItem) { | 311 commitPendingItemWithoutPendingItemWithCommittedItem) { |
| 312 // Setup committed item. | 312 // Setup committed item. |
| 313 [session_controller_ | 313 [session_controller_ |
| 314 addPendingItem:GURL("http://www.url.com") | 314 addPendingItem:GURL("http://www.url.com/") |
| 315 referrer:MakeReferrer("http://www.referer.com") | 315 referrer:MakeReferrer("http://www.referrer.com/") |
| 316 transition:ui::PAGE_TRANSITION_TYPED | 316 transition:ui::PAGE_TRANSITION_TYPED |
| 317 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 317 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 318 [session_controller_ commitPendingItem]; | 318 [session_controller_ commitPendingItem]; |
| 319 | 319 |
| 320 // Commit pending item when there is no such one | 320 // Commit pending item when there is no such one |
| 321 [session_controller_ commitPendingItem]; | 321 [session_controller_ commitPendingItem]; |
| 322 | 322 |
| 323 EXPECT_EQ(1U, [session_controller_ items].size()); | 323 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 324 EXPECT_EQ([session_controller_ items].front(), | 324 EXPECT_EQ([session_controller_ items].front().get(), |
| 325 [session_controller_ currentItem]); | 325 [session_controller_ currentItem]); |
| 326 } | 326 } |
| 327 | 327 |
| 328 // Tests that forward entries are discarded after navigation item is committed. | 328 // Tests that forward items are discarded after navigation item is committed. |
| 329 TEST_F(CRWSessionControllerTest, commitPendingItemWithExistingForwardItems) { | 329 TEST_F(CRWSessionControllerTest, commitPendingItemWithExistingForwardItems) { |
| 330 // Make 3 entries. | 330 // Make 3 items. |
| 331 [session_controller_ | 331 [session_controller_ |
| 332 addPendingItem:GURL("http://www.example.com/0") | 332 addPendingItem:GURL("http://www.example.com/0") |
| 333 referrer:MakeReferrer("http://www.example.com/a") | 333 referrer:MakeReferrer("http://www.example.com/a") |
| 334 transition:ui::PAGE_TRANSITION_LINK | 334 transition:ui::PAGE_TRANSITION_LINK |
| 335 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 335 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 336 [session_controller_ commitPendingItem]; | 336 [session_controller_ commitPendingItem]; |
| 337 [session_controller_ | 337 [session_controller_ |
| 338 addPendingItem:GURL("http://www.example.com/1") | 338 addPendingItem:GURL("http://www.example.com/1") |
| 339 referrer:MakeReferrer("http://www.example.com/b") | 339 referrer:MakeReferrer("http://www.example.com/b") |
| 340 transition:ui::PAGE_TRANSITION_LINK | 340 transition:ui::PAGE_TRANSITION_LINK |
| (...skipping 10 matching lines...) Expand all Loading... |
| 351 [session_controller_ goToItemAtIndex:0]; | 351 [session_controller_ goToItemAtIndex:0]; |
| 352 | 352 |
| 353 // Create and commit a new pending item. | 353 // Create and commit a new pending item. |
| 354 [session_controller_ | 354 [session_controller_ |
| 355 addPendingItem:GURL("http://www.example.com/2") | 355 addPendingItem:GURL("http://www.example.com/2") |
| 356 referrer:MakeReferrer("http://www.example.com/c") | 356 referrer:MakeReferrer("http://www.example.com/c") |
| 357 transition:ui::PAGE_TRANSITION_LINK | 357 transition:ui::PAGE_TRANSITION_LINK |
| 358 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 358 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 359 [session_controller_ commitPendingItem]; | 359 [session_controller_ commitPendingItem]; |
| 360 | 360 |
| 361 // All forward entries should go away. | 361 // All forward items should go away. |
| 362 EXPECT_EQ(2U, [session_controller_ items].size()); | 362 EXPECT_EQ(2U, [session_controller_ items].size()); |
| 363 EXPECT_EQ(0U, [session_controller_ forwardItems].size()); | 363 EXPECT_EQ(0U, [session_controller_ forwardItems].size()); |
| 364 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); | 364 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 365 ASSERT_EQ(0, [session_controller_ previousNavigationIndex]); | 365 ASSERT_EQ(0, [session_controller_ previousNavigationIndex]); |
| 366 } | 366 } |
| 367 | 367 |
| 368 // Tests committing pending item index from the middle. | 368 // Tests committing pending item index from the middle. |
| 369 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { | 369 TEST_F(CRWSessionControllerTest, commitPendingItemIndex) { |
| 370 [session_controller_ | 370 [session_controller_ |
| 371 addPendingItem:GURL("http://www.example.com/0") | 371 addPendingItem:GURL("http://www.example.com/0") |
| (...skipping 12 matching lines...) Expand all Loading... |
| 384 referrer:web::Referrer() | 384 referrer:web::Referrer() |
| 385 transition:ui::PAGE_TRANSITION_TYPED | 385 transition:ui::PAGE_TRANSITION_TYPED |
| 386 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 386 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 387 [session_controller_ commitPendingItem]; | 387 [session_controller_ commitPendingItem]; |
| 388 ASSERT_EQ(3U, [session_controller_ items].size()); | 388 ASSERT_EQ(3U, [session_controller_ items].size()); |
| 389 | 389 |
| 390 // Go to the middle, and commit first pending item index. | 390 // Go to the middle, and commit first pending item index. |
| 391 [session_controller_ goToItemAtIndex:1]; | 391 [session_controller_ goToItemAtIndex:1]; |
| 392 [session_controller_ setPendingItemIndex:0]; | 392 [session_controller_ setPendingItemIndex:0]; |
| 393 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); | 393 ASSERT_EQ(0, [session_controller_ pendingItemIndex]); |
| 394 web::NavigationItem* pendingItem = [session_controller_ pendingItem]; | 394 web::NavigationItem* pending_item = [session_controller_ pendingItem]; |
| 395 ASSERT_TRUE(pendingItem); | 395 ASSERT_TRUE(pending_item); |
| 396 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); | 396 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 397 EXPECT_EQ(2, [session_controller_ previousNavigationIndex]); | 397 EXPECT_EQ(2, [session_controller_ previousNavigationIndex]); |
| 398 [session_controller_ commitPendingItem]; | 398 [session_controller_ commitPendingItem]; |
| 399 | 399 |
| 400 // Verify that pending item has been committed and current and previous item | 400 // Verify that pending item has been committed and current and previous item |
| 401 // indices updated. | 401 // indices updated. |
| 402 EXPECT_EQ([session_controller_ lastCommittedItem], pendingItem); | 402 EXPECT_EQ(pending_item, [session_controller_ lastCommittedItem]); |
| 403 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 403 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 404 EXPECT_FALSE([session_controller_ pendingItem]); | 404 EXPECT_FALSE([session_controller_ pendingItem]); |
| 405 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]); | 405 EXPECT_EQ(0, [session_controller_ currentNavigationIndex]); |
| 406 EXPECT_EQ(1, [session_controller_ previousNavigationIndex]); | 406 EXPECT_EQ(1, [session_controller_ previousNavigationIndex]); |
| 407 EXPECT_EQ(3U, [session_controller_ items].size()); | 407 EXPECT_EQ(3U, [session_controller_ items].size()); |
| 408 } | 408 } |
| 409 | 409 |
| 410 TEST_F(CRWSessionControllerTest, | 410 TEST_F(CRWSessionControllerTest, |
| 411 DiscardPendingItemWithoutPendingOrCommittedItem) { | 411 DiscardPendingItemWithoutPendingOrCommittedItem) { |
| 412 [session_controller_ discardNonCommittedItems]; | 412 [session_controller_ discardNonCommittedItems]; |
| 413 | 413 |
| 414 EXPECT_TRUE([session_controller_ items].empty()); | 414 EXPECT_TRUE([session_controller_ items].empty()); |
| 415 EXPECT_FALSE([session_controller_ currentItem]); | 415 EXPECT_FALSE([session_controller_ currentItem]); |
| 416 } | 416 } |
| 417 | 417 |
| 418 TEST_F(CRWSessionControllerTest, | 418 TEST_F(CRWSessionControllerTest, |
| 419 DiscardPendingItemWithoutPendingItemWithCommittedItem) { | 419 DiscardPendingItemWithoutPendingItemWithCommittedItem) { |
| 420 // Setup committed item | 420 // Setup committed item |
| 421 [session_controller_ | 421 [session_controller_ |
| 422 addPendingItem:GURL("http://www.url.com") | 422 addPendingItem:GURL("http://www.url.com") |
| 423 referrer:MakeReferrer("http://www.referer.com") | 423 referrer:MakeReferrer("http://www.referer.com") |
| 424 transition:ui::PAGE_TRANSITION_TYPED | 424 transition:ui::PAGE_TRANSITION_TYPED |
| 425 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 425 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 426 [session_controller_ commitPendingItem]; | 426 [session_controller_ commitPendingItem]; |
| 427 | 427 |
| 428 // Discard noncommitted entries when there is no such one | 428 // Discard noncommitted items when there is no such one |
| 429 [session_controller_ discardNonCommittedItems]; | 429 [session_controller_ discardNonCommittedItems]; |
| 430 | 430 |
| 431 EXPECT_EQ(1U, [session_controller_ items].size()); | 431 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 432 EXPECT_EQ([session_controller_ items].front(), | 432 EXPECT_EQ([session_controller_ items].front().get(), |
| 433 [session_controller_ currentItem]); | 433 [session_controller_ currentItem]); |
| 434 } | 434 } |
| 435 | 435 |
| 436 TEST_F(CRWSessionControllerTest, updatePendingItemWithoutPendingItem) { | 436 TEST_F(CRWSessionControllerTest, updatePendingItemWithoutPendingItem) { |
| 437 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; | 437 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; |
| 438 [session_controller_ commitPendingItem]; | 438 [session_controller_ commitPendingItem]; |
| 439 | 439 |
| 440 EXPECT_TRUE([session_controller_ items].empty()); | 440 EXPECT_TRUE([session_controller_ items].empty()); |
| 441 EXPECT_FALSE([session_controller_ currentItem]); | 441 EXPECT_FALSE([session_controller_ currentItem]); |
| 442 } | 442 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 461 referrer:MakeReferrer("http://www.referer.com") | 461 referrer:MakeReferrer("http://www.referer.com") |
| 462 transition:ui::PAGE_TRANSITION_TYPED | 462 transition:ui::PAGE_TRANSITION_TYPED |
| 463 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 463 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 464 [session_controller_ commitPendingItem]; | 464 [session_controller_ commitPendingItem]; |
| 465 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; | 465 [session_controller_ updatePendingItem:GURL("http://www.another.url.com")]; |
| 466 [session_controller_ commitPendingItem]; | 466 [session_controller_ commitPendingItem]; |
| 467 | 467 |
| 468 EXPECT_EQ(1U, [session_controller_ items].size()); | 468 EXPECT_EQ(1U, [session_controller_ items].size()); |
| 469 EXPECT_EQ(GURL("http://www.url.com/"), | 469 EXPECT_EQ(GURL("http://www.url.com/"), |
| 470 [session_controller_ URLForItemAtIndex:0U]); | 470 [session_controller_ URLForItemAtIndex:0U]); |
| 471 EXPECT_EQ([session_controller_ items].front(), | 471 EXPECT_EQ([session_controller_ items].front().get(), |
| 472 [session_controller_ currentItem]); | 472 [session_controller_ currentItem]); |
| 473 } | 473 } |
| 474 | 474 |
| 475 // Tests inserting session controller state. | 475 // Tests inserting session controller state. |
| 476 TEST_F(CRWSessionControllerTest, InsertState) { | 476 TEST_F(CRWSessionControllerTest, InsertState) { |
| 477 // Add 1 committed and 1 pending item to target controller. | 477 // Add 1 committed and 1 pending item to target controller. |
| 478 [session_controller_ | 478 [session_controller_ |
| 479 addPendingItem:GURL("http://www.url.com/2") | 479 addPendingItem:GURL("http://www.url.com/2") |
| 480 referrer:web::Referrer() | 480 referrer:web::Referrer() |
| 481 transition:ui::PAGE_TRANSITION_TYPED | 481 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 EXPECT_EQ(GURL("http://www.url.com/0"), | 515 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 516 [session_controller_ URLForItemAtIndex:0]); | 516 [session_controller_ URLForItemAtIndex:0]); |
| 517 EXPECT_EQ(GURL("http://www.url.com/2"), | 517 EXPECT_EQ(GURL("http://www.url.com/2"), |
| 518 [session_controller_ URLForItemAtIndex:1]); | 518 [session_controller_ URLForItemAtIndex:1]); |
| 519 EXPECT_EQ(GURL("http://www.url.com/3"), | 519 EXPECT_EQ(GURL("http://www.url.com/3"), |
| 520 [session_controller_ pendingItem]->GetURL()); | 520 [session_controller_ pendingItem]->GetURL()); |
| 521 } | 521 } |
| 522 | 522 |
| 523 // Tests inserting session controller state from empty session controller. | 523 // Tests inserting session controller state from empty session controller. |
| 524 TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) { | 524 TEST_F(CRWSessionControllerTest, InsertStateFromEmptySessionController) { |
| 525 // Add 2 committed entries to target controller. | 525 // Add 2 committed items to target controller. |
| 526 [session_controller_ | 526 [session_controller_ |
| 527 addPendingItem:GURL("http://www.url.com/0") | 527 addPendingItem:GURL("http://www.url.com/0") |
| 528 referrer:web::Referrer() | 528 referrer:web::Referrer() |
| 529 transition:ui::PAGE_TRANSITION_TYPED | 529 transition:ui::PAGE_TRANSITION_TYPED |
| 530 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 530 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 531 [session_controller_ commitPendingItem]; | 531 [session_controller_ commitPendingItem]; |
| 532 [session_controller_ | 532 [session_controller_ |
| 533 addPendingItem:GURL("http://www.url.com/1") | 533 addPendingItem:GURL("http://www.url.com/1") |
| 534 referrer:web::Referrer() | 534 referrer:web::Referrer() |
| 535 transition:ui::PAGE_TRANSITION_TYPED | 535 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 14 matching lines...) Expand all Loading... |
| 550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 550 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 551 EXPECT_FALSE([session_controller_ pendingItem]); | 551 EXPECT_FALSE([session_controller_ pendingItem]); |
| 552 EXPECT_EQ(GURL("http://www.url.com/0"), | 552 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 553 [session_controller_ URLForItemAtIndex:0]); | 553 [session_controller_ URLForItemAtIndex:0]); |
| 554 EXPECT_EQ(GURL("http://www.url.com/1"), | 554 EXPECT_EQ(GURL("http://www.url.com/1"), |
| 555 [session_controller_ URLForItemAtIndex:1]); | 555 [session_controller_ URLForItemAtIndex:1]); |
| 556 } | 556 } |
| 557 | 557 |
| 558 // Tests inserting session controller state to empty session controller. | 558 // Tests inserting session controller state to empty session controller. |
| 559 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) { | 559 TEST_F(CRWSessionControllerTest, InsertStateToEmptySessionController) { |
| 560 // Create source session controller with 2 committed entries and one | 560 // Create source session controller with 2 committed items and one |
| 561 // pending item. | 561 // pending item. |
| 562 base::scoped_nsobject<CRWSessionController> other_session_controller( | 562 base::scoped_nsobject<CRWSessionController> other_session_controller( |
| 563 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 563 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 564 openedByDOM:NO]); | 564 openedByDOM:NO]); |
| 565 [other_session_controller | 565 [other_session_controller |
| 566 addPendingItem:GURL("http://www.url.com/0") | 566 addPendingItem:GURL("http://www.url.com/0") |
| 567 referrer:web::Referrer() | 567 referrer:web::Referrer() |
| 568 transition:ui::PAGE_TRANSITION_TYPED | 568 transition:ui::PAGE_TRANSITION_TYPED |
| 569 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 569 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 570 [other_session_controller commitPendingItem]; | 570 [other_session_controller commitPendingItem]; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 592 EXPECT_EQ(GURL("http://www.url.com/0"), | 592 EXPECT_EQ(GURL("http://www.url.com/0"), |
| 593 [session_controller_ URLForItemAtIndex:0]); | 593 [session_controller_ URLForItemAtIndex:0]); |
| 594 EXPECT_EQ(GURL("http://www.url.com/1"), | 594 EXPECT_EQ(GURL("http://www.url.com/1"), |
| 595 [session_controller_ URLForItemAtIndex:1]); | 595 [session_controller_ URLForItemAtIndex:1]); |
| 596 } | 596 } |
| 597 | 597 |
| 598 // Tests inserting session controller state. Verifies that pending item index | 598 // Tests inserting session controller state. Verifies that pending item index |
| 599 // remains valid. | 599 // remains valid. |
| 600 TEST_F(CRWSessionControllerTest, | 600 TEST_F(CRWSessionControllerTest, |
| 601 InsertStateWithPendingItemIndexInTargetController) { | 601 InsertStateWithPendingItemIndexInTargetController) { |
| 602 // Add 2 committed entries and make the first item pending. | 602 // Add 2 committed items and make the first item pending. |
| 603 [session_controller_ | 603 [session_controller_ |
| 604 addPendingItem:GURL("http://www.url.com/2") | 604 addPendingItem:GURL("http://www.url.com/2") |
| 605 referrer:web::Referrer() | 605 referrer:web::Referrer() |
| 606 transition:ui::PAGE_TRANSITION_TYPED | 606 transition:ui::PAGE_TRANSITION_TYPED |
| 607 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 607 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 608 [session_controller_ commitPendingItem]; | 608 [session_controller_ commitPendingItem]; |
| 609 [session_controller_ | 609 [session_controller_ |
| 610 addPendingItem:GURL("http://www.url.com/3") | 610 addPendingItem:GURL("http://www.url.com/3") |
| 611 referrer:web::Referrer() | 611 referrer:web::Referrer() |
| 612 transition:ui::PAGE_TRANSITION_TYPED | 612 transition:ui::PAGE_TRANSITION_TYPED |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 TEST_F(CRWSessionControllerTest, EmptyController) { | 645 TEST_F(CRWSessionControllerTest, EmptyController) { |
| 646 EXPECT_TRUE([session_controller_ items].empty()); | 646 EXPECT_TRUE([session_controller_ items].empty()); |
| 647 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); | 647 EXPECT_EQ(-1, [session_controller_ currentNavigationIndex]); |
| 648 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); | 648 EXPECT_EQ(-1, [session_controller_ previousNavigationIndex]); |
| 649 EXPECT_FALSE([session_controller_ currentItem]); | 649 EXPECT_FALSE([session_controller_ currentItem]); |
| 650 EXPECT_FALSE([session_controller_ pendingItem]); | 650 EXPECT_FALSE([session_controller_ pendingItem]); |
| 651 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); | 651 EXPECT_EQ(-1, [session_controller_ pendingItemIndex]); |
| 652 } | 652 } |
| 653 | 653 |
| 654 // Helper to create a NavigationItem. | 654 // Helper to create a NavigationItem. |
| 655 std::unique_ptr<web::NavigationItemImpl> CreateNavigationItem( | 655 std::unique_ptr<web::NavigationItem> CreateNavigationItem( |
| 656 const std::string& url, | 656 const std::string& url, |
| 657 const std::string& referrer, | 657 const std::string& referrer, |
| 658 NSString* title) { | 658 NSString* title) { |
| 659 web::Referrer referrer_object(GURL(referrer), | 659 web::Referrer referrer_object(GURL(referrer), |
| 660 web::ReferrerPolicyDefault); | 660 web::ReferrerPolicyDefault); |
| 661 std::unique_ptr<web::NavigationItemImpl> navigation_item = | 661 std::unique_ptr<web::NavigationItemImpl> navigation_item = |
| 662 base::MakeUnique<web::NavigationItemImpl>(); | 662 base::MakeUnique<web::NavigationItemImpl>(); |
| 663 navigation_item->SetURL(GURL(url)); | 663 navigation_item->SetURL(GURL(url)); |
| 664 navigation_item->SetReferrer(referrer_object); | 664 navigation_item->SetReferrer(referrer_object); |
| 665 navigation_item->SetTitle(base::SysNSStringToUTF16(title)); | 665 navigation_item->SetTitle(base::SysNSStringToUTF16(title)); |
| 666 navigation_item->SetTransitionType(ui::PAGE_TRANSITION_TYPED); | 666 navigation_item->SetTransitionType(ui::PAGE_TRANSITION_TYPED); |
| 667 | 667 |
| 668 return navigation_item; | 668 // XCode clang doesn't correctly handle implicit unique_ptr casting for |
| 669 // returned values, so manually cast here. |
| 670 std::unique_ptr<web::NavigationItem> item( |
| 671 static_cast<web::NavigationItem*>(navigation_item.release())); |
| 672 return item; |
| 669 } | 673 } |
| 670 | 674 |
| 671 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { | 675 TEST_F(CRWSessionControllerTest, CreateWithEmptyNavigations) { |
| 672 std::vector<std::unique_ptr<web::NavigationItem>> items; | 676 std::vector<std::unique_ptr<web::NavigationItem>> items; |
| 673 base::scoped_nsobject<CRWSessionController> controller( | 677 base::scoped_nsobject<CRWSessionController> controller( |
| 674 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 678 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 675 navigationItems:std::move(items) | 679 navigationItems:std::move(items) |
| 676 currentIndex:0]); | 680 currentIndex:0]); |
| 677 EXPECT_TRUE(controller.get().items.empty()); | 681 EXPECT_TRUE(controller.get().items.empty()); |
| 678 EXPECT_EQ(controller.get().currentNavigationIndex, -1); | 682 EXPECT_EQ(controller.get().currentNavigationIndex, -1); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 689 items.push_back(CreateNavigationItem("http://www.espn.com", | 693 items.push_back(CreateNavigationItem("http://www.espn.com", |
| 690 "http://www.nothing.com", @"ESPN")); | 694 "http://www.nothing.com", @"ESPN")); |
| 691 base::scoped_nsobject<CRWSessionController> controller( | 695 base::scoped_nsobject<CRWSessionController> controller( |
| 692 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 696 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 693 navigationItems:std::move(items) | 697 navigationItems:std::move(items) |
| 694 currentIndex:1]); | 698 currentIndex:1]); |
| 695 | 699 |
| 696 EXPECT_EQ(controller.get().items.size(), 3U); | 700 EXPECT_EQ(controller.get().items.size(), 3U); |
| 697 EXPECT_EQ(controller.get().currentNavigationIndex, 1); | 701 EXPECT_EQ(controller.get().currentNavigationIndex, 1); |
| 698 EXPECT_EQ(controller.get().previousNavigationIndex, -1); | 702 EXPECT_EQ(controller.get().previousNavigationIndex, -1); |
| 699 // Sanity check the current item, the CRWSessionItem unit test will ensure | 703 // Sanity check the current item, the NavigationItem unit test will ensure |
| 700 // the entire object is created properly. | 704 // the entire object is created properly. |
| 701 EXPECT_EQ(controller.get().currentItem->GetURL(), | 705 EXPECT_EQ([controller currentItem]->GetURL(), GURL("http://www.yahoo.com")); |
| 702 GURL("http://www.yahoo.com")); | |
| 703 } | 706 } |
| 704 | 707 |
| 705 // Tests index of previous navigation item. | 708 // Tests index of previous navigation item. |
| 706 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) { | 709 TEST_F(CRWSessionControllerTest, PreviousNavigationItem) { |
| 707 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); | 710 EXPECT_EQ(session_controller_.get().previousNavigationIndex, -1); |
| 708 [session_controller_ | 711 [session_controller_ |
| 709 addPendingItem:GURL("http://www.url.com") | 712 addPendingItem:GURL("http://www.url.com") |
| 710 referrer:MakeReferrer("http://www.referer.com") | 713 referrer:MakeReferrer("http://www.referer.com") |
| 711 transition:ui::PAGE_TRANSITION_TYPED | 714 transition:ui::PAGE_TRANSITION_TYPED |
| 712 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 715 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 // Push state navigation. | 798 // Push state navigation. |
| 796 items.push_back( | 799 items.push_back( |
| 797 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); | 800 CreateNavigationItem("http://foo.com/bar", "http://foo.com", @"Fifth")); |
| 798 // Push state navigation. | 801 // Push state navigation. |
| 799 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", | 802 items.push_back(CreateNavigationItem("http://foo.com/bar#bar", |
| 800 "http://foo.com/bar", @"Sixth")); | 803 "http://foo.com/bar", @"Sixth")); |
| 801 base::scoped_nsobject<CRWSessionController> controller( | 804 base::scoped_nsobject<CRWSessionController> controller( |
| 802 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ | 805 [[CRWSessionController alloc] initWithBrowserState:&browser_state_ |
| 803 navigationItems:std::move(items) | 806 navigationItems:std::move(items) |
| 804 currentIndex:0]); | 807 currentIndex:0]); |
| 805 web::NavigationItemImpl* item0 = | 808 web::NavigationItemImpl* item0 = [controller items][0].get(); |
| 806 static_cast<web::NavigationItemImpl*>([controller items][0]); | 809 web::NavigationItemImpl* item1 = [controller items][1].get(); |
| 807 web::NavigationItemImpl* item1 = | 810 web::NavigationItemImpl* item2 = [controller items][2].get(); |
| 808 static_cast<web::NavigationItemImpl*>([controller items][1]); | 811 web::NavigationItemImpl* item3 = [controller items][3].get(); |
| 809 web::NavigationItemImpl* item2 = | 812 web::NavigationItemImpl* item4 = [controller items][4].get(); |
| 810 static_cast<web::NavigationItemImpl*>([controller items][2]); | 813 web::NavigationItemImpl* item5 = [controller items][5].get(); |
| 811 web::NavigationItemImpl* item3 = | |
| 812 static_cast<web::NavigationItemImpl*>([controller items][3]); | |
| 813 web::NavigationItemImpl* item4 = | |
| 814 static_cast<web::NavigationItemImpl*>([controller items][4]); | |
| 815 web::NavigationItemImpl* item5 = | |
| 816 static_cast<web::NavigationItemImpl*>([controller items][5]); | |
| 817 item1->SetIsCreatedFromPushState(true); | 814 item1->SetIsCreatedFromPushState(true); |
| 818 item4->SetIsCreatedFromHashChange(true); | 815 item4->SetIsCreatedFromHashChange(true); |
| 819 item5->SetIsCreatedFromPushState(true); | 816 item5->SetIsCreatedFromPushState(true); |
| 820 | 817 |
| 821 EXPECT_FALSE( | 818 EXPECT_FALSE( |
| 822 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item0]); | 819 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item0]); |
| 823 EXPECT_TRUE( | 820 EXPECT_TRUE( |
| 824 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item1]); | 821 [controller isSameDocumentNavigationBetweenItem:item0 andItem:item1]); |
| 825 EXPECT_TRUE( | 822 EXPECT_TRUE( |
| 826 [controller isSameDocumentNavigationBetweenItem:item5 andItem:item3]); | 823 [controller isSameDocumentNavigationBetweenItem:item5 andItem:item3]); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 909 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); | 906 EXPECT_EQ(1U, [session_controller_ backwardItems].size()); |
| 910 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); | 907 EXPECT_EQ(1U, [session_controller_ forwardItems].size()); |
| 911 | 908 |
| 912 [session_controller_ goToItemAtIndex:0]; | 909 [session_controller_ goToItemAtIndex:0]; |
| 913 web::NavigationItemList forwardItems = [session_controller_ forwardItems]; | 910 web::NavigationItemList forwardItems = [session_controller_ forwardItems]; |
| 914 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); | 911 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); |
| 915 EXPECT_EQ(2U, forwardItems.size()); | 912 EXPECT_EQ(2U, forwardItems.size()); |
| 916 EXPECT_EQ("http://www.example.com/2", forwardItems[1]->GetURL().spec()); | 913 EXPECT_EQ("http://www.example.com/2", forwardItems[1]->GetURL().spec()); |
| 917 } | 914 } |
| 918 | 915 |
| 919 // Tests going to entries with existing and non-existing indices. | 916 // Tests going to items with existing and non-existing indices. |
| 920 TEST_F(CRWSessionControllerTest, GoToItemAtIndex) { | 917 TEST_F(CRWSessionControllerTest, GoToItemAtIndex) { |
| 921 [session_controller_ | 918 [session_controller_ |
| 922 addPendingItem:GURL("http://www.example.com/0") | 919 addPendingItem:GURL("http://www.example.com/0") |
| 923 referrer:MakeReferrer("http://www.example.com/a") | 920 referrer:MakeReferrer("http://www.example.com/a") |
| 924 transition:ui::PAGE_TRANSITION_LINK | 921 transition:ui::PAGE_TRANSITION_LINK |
| 925 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 922 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 926 [session_controller_ commitPendingItem]; | 923 [session_controller_ commitPendingItem]; |
| 927 [session_controller_ | 924 [session_controller_ |
| 928 addPendingItem:GURL("http://www.example.com/1") | 925 addPendingItem:GURL("http://www.example.com/1") |
| 929 referrer:MakeReferrer("http://www.example.com/b") | 926 referrer:MakeReferrer("http://www.example.com/b") |
| (...skipping 16 matching lines...) Expand all Loading... |
| 946 addPendingItem:GURL("http://www.example.com/3") | 943 addPendingItem:GURL("http://www.example.com/3") |
| 947 referrer:MakeReferrer("http://www.example.com/d") | 944 referrer:MakeReferrer("http://www.example.com/d") |
| 948 transition:ui::PAGE_TRANSITION_LINK | 945 transition:ui::PAGE_TRANSITION_LINK |
| 949 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 946 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 950 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 947 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
| 951 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); | 948 EXPECT_EQ(3, session_controller_.get().currentNavigationIndex); |
| 952 EXPECT_EQ(2, session_controller_.get().previousNavigationIndex); | 949 EXPECT_EQ(2, session_controller_.get().previousNavigationIndex); |
| 953 EXPECT_TRUE([session_controller_ pendingItem]); | 950 EXPECT_TRUE([session_controller_ pendingItem]); |
| 954 EXPECT_TRUE([session_controller_ transientItem]); | 951 EXPECT_TRUE([session_controller_ transientItem]); |
| 955 | 952 |
| 956 // Going back should discard transient and pending entries. | 953 // Going back should discard transient and pending items. |
| 957 [session_controller_ goToItemAtIndex:1]; | 954 [session_controller_ goToItemAtIndex:1]; |
| 958 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 955 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); |
| 959 EXPECT_EQ(3, session_controller_.get().previousNavigationIndex); | 956 EXPECT_EQ(3, session_controller_.get().previousNavigationIndex); |
| 960 EXPECT_FALSE([session_controller_ pendingItem]); | 957 EXPECT_FALSE(session_controller_.get().pendingItem); |
| 961 EXPECT_FALSE([session_controller_ transientItem]); | 958 EXPECT_FALSE(session_controller_.get().transientItem); |
| 962 | 959 |
| 963 // Going forward should discard transient item. | 960 // Going forward should discard transient item. |
| 964 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 961 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
| 965 EXPECT_TRUE([session_controller_ transientItem]); | 962 EXPECT_TRUE(session_controller_.get().transientItem); |
| 966 [session_controller_ goToItemAtIndex:2]; | 963 [session_controller_ goToItemAtIndex:2]; |
| 967 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 964 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
| 968 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 965 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
| 969 EXPECT_FALSE([session_controller_ transientItem]); | 966 EXPECT_FALSE(session_controller_.get().transientItem); |
| 970 | 967 |
| 971 // Out of bounds navigations should be no-op. | 968 // Out of bounds navigations should be no-op. |
| 972 [session_controller_ goToItemAtIndex:-1]; | 969 [session_controller_ goToItemAtIndex:-1]; |
| 973 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 970 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
| 974 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 971 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
| 975 [session_controller_ goToItemAtIndex:NSIntegerMax]; | 972 [session_controller_ goToItemAtIndex:NSIntegerMax]; |
| 976 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 973 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
| 977 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 974 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
| 978 | 975 |
| 979 // Going to current index should not change the previous index. | 976 // Going to current index should not change the previous index. |
| 980 [session_controller_ goToItemAtIndex:2]; | 977 [session_controller_ goToItemAtIndex:2]; |
| 981 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); | 978 EXPECT_EQ(2, session_controller_.get().currentNavigationIndex); |
| 982 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); | 979 EXPECT_EQ(1, session_controller_.get().previousNavigationIndex); |
| 983 } | 980 } |
| 984 | 981 |
| 985 // Tests that visible URL is the same as transient URL if there are no committed | 982 // Tests that visible URL is the same as transient URL if there are no committed |
| 986 // entries. | 983 // items. |
| 987 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { | 984 TEST_F(CRWSessionControllerTest, VisibleItemWithSingleTransientItem) { |
| 988 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; | 985 [session_controller_ addTransientItemWithURL:GURL("http://www.example.com")]; |
| 989 web::NavigationItem* visible_item = [session_controller_ visibleItem]; | 986 web::NavigationItem* visible_item = [session_controller_ visibleItem]; |
| 990 ASSERT_TRUE(visible_item); | 987 ASSERT_TRUE(visible_item); |
| 991 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); | 988 EXPECT_EQ("http://www.example.com/", visible_item->GetURL().spec()); |
| 992 } | 989 } |
| 993 | 990 |
| 994 // Tests that visible URL is the same as transient URL if there is a committed | 991 // Tests that visible URL is the same as transient URL if there is a committed |
| 995 // item. | 992 // item. |
| 996 TEST_F(CRWSessionControllerTest, VisibleItemWithCommittedAndTransientItems) { | 993 TEST_F(CRWSessionControllerTest, VisibleItemWithCommittedAndTransientItems) { |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1088 initiationType:web::NavigationInitiationType::USER_INITIATED]; | 1085 initiationType:web::NavigationInitiationType::USER_INITIATED]; |
| 1089 [session_controller_ commitPendingItem]; | 1086 [session_controller_ commitPendingItem]; |
| 1090 | 1087 |
| 1091 [session_controller_ setPendingItemIndex:0]; | 1088 [session_controller_ setPendingItemIndex:0]; |
| 1092 | 1089 |
| 1093 web::NavigationItem* visible_item = [session_controller_ visibleItem]; | 1090 web::NavigationItem* visible_item = [session_controller_ visibleItem]; |
| 1094 ASSERT_TRUE(visible_item); | 1091 ASSERT_TRUE(visible_item); |
| 1095 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec()); | 1092 EXPECT_EQ("http://www.example.com/0", visible_item->GetURL().spec()); |
| 1096 } | 1093 } |
| 1097 | 1094 |
| 1098 // Tests that |-backwardItems| is empty if all preceding entries are | 1095 // Tests that |-backwardItems| is empty if all preceding items are |
| 1099 // redirects. | 1096 // redirects. |
| 1100 TEST_F(CRWSessionControllerTest, BackwardItemsForAllRedirects) { | 1097 TEST_F(CRWSessionControllerTest, BackwardItemsForAllRedirects) { |
| 1101 [session_controller_ | 1098 [session_controller_ |
| 1102 addPendingItem:GURL("http://www.example.com") | 1099 addPendingItem:GURL("http://www.example.com") |
| 1103 referrer:MakeReferrer("http://www.example.com/a") | 1100 referrer:MakeReferrer("http://www.example.com/a") |
| 1104 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT | 1101 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
| 1105 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 1102 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 1106 [session_controller_ commitPendingItem]; | 1103 [session_controller_ commitPendingItem]; |
| 1107 [session_controller_ | 1104 [session_controller_ |
| 1108 addPendingItem:GURL("http://www.example.com/0") | 1105 addPendingItem:GURL("http://www.example.com/0") |
| 1109 referrer:MakeReferrer("http://www.example.com/b") | 1106 referrer:MakeReferrer("http://www.example.com/b") |
| 1110 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT | 1107 transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
| 1111 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; | 1108 initiationType:web::NavigationInitiationType::RENDERER_INITIATED]; |
| 1112 [session_controller_ commitPendingItem]; | 1109 [session_controller_ commitPendingItem]; |
| 1113 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); | 1110 EXPECT_EQ(0U, [session_controller_ backwardItems].size()); |
| 1114 } | 1111 } |
| 1115 | 1112 |
| 1116 } // anonymous namespace | 1113 } // anonymous namespace |
| OLD | NEW |