| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/navigation_manager_impl.h" | 5 #import "ios/web/navigation/navigation_manager_impl.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #import "base/mac/scoped_nsobject.h" | 8 #import "base/mac/scoped_nsobject.h" |
| 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" | 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" |
| 10 #import "ios/web/navigation/navigation_manager_delegate.h" | 10 #import "ios/web/navigation/navigation_manager_delegate.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 private: | 44 private: |
| 45 TestBrowserState browser_state_; | 45 TestBrowserState browser_state_; |
| 46 TestNavigationManagerDelegate delegate_; | 46 TestNavigationManagerDelegate delegate_; |
| 47 std::unique_ptr<NavigationManagerImpl> manager_; | 47 std::unique_ptr<NavigationManagerImpl> manager_; |
| 48 base::scoped_nsobject<CRWSessionController> controller_; | 48 base::scoped_nsobject<CRWSessionController> controller_; |
| 49 }; | 49 }; |
| 50 | 50 |
| 51 // Tests state of an empty navigation manager. | 51 // Tests state of an empty navigation manager. |
| 52 TEST_F(NavigationManagerTest, EmptyManager) { | 52 TEST_F(NavigationManagerTest, EmptyManager) { |
| 53 EXPECT_EQ(0, navigation_manager()->GetItemCount()); | 53 EXPECT_EQ(0, navigation_manager()->GetItemCount()); |
| 54 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); | 54 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex()); |
| 55 EXPECT_EQ(-1, navigation_manager()->GetCurrentItemIndex()); | 55 EXPECT_EQ(-1, navigation_manager()->GetLastCommittedItemIndex()); |
| 56 EXPECT_FALSE(navigation_manager()->GetPendingItem()); | 56 EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| 57 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 57 EXPECT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 58 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); | 58 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(0)); |
| 59 } | 59 } |
| 60 | 60 |
| 61 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry. | 61 // Tests that GetPendingItemIndex() returns -1 if there is no pending entry. |
| 62 TEST_F(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) { | 62 TEST_F(NavigationManagerTest, GetPendingItemIndexWithoutPendingEntry) { |
| 63 navigation_manager()->AddPendingItem( | 63 navigation_manager()->AddPendingItem( |
| 64 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, | 64 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| 65 web::NavigationInitiationType::USER_INITIATED); | 65 web::NavigationInitiationType::USER_INITIATED); |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 navigation_manager()->AddPendingItem( | 264 navigation_manager()->AddPendingItem( |
| 265 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, | 265 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 266 web::NavigationInitiationType::USER_INITIATED); | 266 web::NavigationInitiationType::USER_INITIATED); |
| 267 [session_controller() commitPendingItem]; | 267 [session_controller() commitPendingItem]; |
| 268 navigation_manager()->AddPendingItem( | 268 navigation_manager()->AddPendingItem( |
| 269 GURL("http://www.url.com/redirect"), Referrer(), | 269 GURL("http://www.url.com/redirect"), Referrer(), |
| 270 ui::PAGE_TRANSITION_IS_REDIRECT_MASK, | 270 ui::PAGE_TRANSITION_IS_REDIRECT_MASK, |
| 271 web::NavigationInitiationType::USER_INITIATED); | 271 web::NavigationInitiationType::USER_INITIATED); |
| 272 [session_controller() commitPendingItem]; | 272 [session_controller() commitPendingItem]; |
| 273 ASSERT_EQ(5, navigation_manager()->GetItemCount()); | 273 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 274 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 274 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); |
| 275 | 275 |
| 276 // Go to entry at index 1 and test API from that state. | 276 // Go to entry at index 1 and test API from that state. |
| 277 [session_controller() goToItemAtIndex:1]; | 277 [session_controller() goToItemAtIndex:1]; |
| 278 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); | 278 ASSERT_EQ(1, navigation_manager()->GetLastCommittedItemIndex()); |
| 279 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 279 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 280 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 280 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 281 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); | 281 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); |
| 282 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); | 282 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 283 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2)); | 283 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2)); |
| 284 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 284 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 285 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 285 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 286 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); | 286 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); |
| 287 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2)); | 287 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2)); |
| 288 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); | 288 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); |
| 289 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3)); | 289 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3)); |
| 290 // Test with large values. | 290 // Test with large values. |
| 291 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); | 291 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); |
| 292 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); | 292 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); |
| 293 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); | 293 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); |
| 294 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); | 294 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); |
| 295 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); | 295 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); |
| 296 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN)); | 296 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN)); |
| 297 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000)); | 297 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 298 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000)); | 298 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000)); |
| 299 | 299 |
| 300 // Go to entry at index 2 and test API from that state. | 300 // Go to entry at index 2 and test API from that state. |
| 301 [session_controller() goToItemAtIndex:2]; | 301 [session_controller() goToItemAtIndex:2]; |
| 302 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); | 302 ASSERT_EQ(2, navigation_manager()->GetLastCommittedItemIndex()); |
| 303 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 303 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 304 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 304 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 305 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1)); | 305 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1)); |
| 306 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); | 306 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 307 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2)); | 307 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2)); |
| 308 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 308 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 309 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1)); | 309 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1)); |
| 310 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); | 310 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 311 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2)); | 311 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2)); |
| 312 // Test with large values. | 312 // Test with large values. |
| 313 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); | 313 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); |
| 314 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); | 314 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); |
| 315 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); | 315 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); |
| 316 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); | 316 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); |
| 317 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); | 317 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); |
| 318 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN)); | 318 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN)); |
| 319 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000)); | 319 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 320 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000)); | 320 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000)); |
| 321 | 321 |
| 322 // Go to entry at index 4 and test API from that state. | 322 // Go to entry at index 4 and test API from that state. |
| 323 [session_controller() goToItemAtIndex:4]; | 323 [session_controller() goToItemAtIndex:4]; |
| 324 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 324 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); |
| 325 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 325 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 326 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 326 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 327 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1)); | 327 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1)); |
| 328 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); | 328 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 329 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2)); | 329 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2)); |
| 330 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 330 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 331 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); | 331 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); |
| 332 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); | 332 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 333 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); | 333 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); |
| 334 // Test with large values. | 334 // Test with large values. |
| 335 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); | 335 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); |
| 336 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); | 336 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); |
| 337 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); | 337 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); |
| 338 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); | 338 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); |
| 339 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); | 339 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); |
| 340 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN)); | 340 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN)); |
| 341 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000)); | 341 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 342 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); | 342 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); |
| 343 | 343 |
| 344 // Test with existing transient entry. | 344 // Test with existing transient entry. |
| 345 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; | 345 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; |
| 346 ASSERT_EQ(5, navigation_manager()->GetItemCount()); | 346 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 347 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 347 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); |
| 348 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 348 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 349 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 349 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 350 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1)); | 350 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1)); |
| 351 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); | 351 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 352 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2)); | 352 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2)); |
| 353 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); | 353 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); |
| 354 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3)); | 354 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3)); |
| 355 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 355 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 356 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); | 356 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); |
| 357 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); | 357 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 358 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); | 358 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); |
| 359 // Test with large values. | 359 // Test with large values. |
| 360 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); | 360 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); |
| 361 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); | 361 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); |
| 362 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); | 362 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); |
| 363 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); | 363 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); |
| 364 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); | 364 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); |
| 365 EXPECT_EQ(-2147483645, navigation_manager()->GetIndexForOffset(INT_MIN)); | 365 EXPECT_EQ(-2147483645, navigation_manager()->GetIndexForOffset(INT_MIN)); |
| 366 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); | 366 EXPECT_EQ(-999999997, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 367 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); | 367 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); |
| 368 | 368 |
| 369 // Now test with pending item index. | 369 // Now test with pending item index. |
| 370 [session_controller() discardNonCommittedItems]; | 370 [session_controller() discardNonCommittedItems]; |
| 371 | 371 |
| 372 // Set pending index to 1 and test API from that state. | 372 // Set pending index to 1 and test API from that state. |
| 373 [session_controller() setPendingItemIndex:1]; | 373 [session_controller() setPendingItemIndex:1]; |
| 374 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 374 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); |
| 375 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 375 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 376 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); | 376 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1)); |
| 377 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); | 377 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-1)); |
| 378 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); | 378 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 379 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2)); | 379 EXPECT_EQ(-2, navigation_manager()->GetIndexForOffset(-2)); |
| 380 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 380 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 381 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 381 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 382 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); | 382 EXPECT_TRUE(navigation_manager()->CanGoToOffset(2)); |
| 383 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2)); | 383 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(2)); |
| 384 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); | 384 EXPECT_FALSE(navigation_manager()->CanGoToOffset(3)); |
| 385 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3)); | 385 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(3)); |
| 386 // Test with large values. | 386 // Test with large values. |
| 387 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); | 387 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); |
| 388 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); | 388 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); |
| 389 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); | 389 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); |
| 390 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); | 390 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); |
| 391 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); | 391 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); |
| 392 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN)); | 392 EXPECT_EQ(INT_MIN, navigation_manager()->GetIndexForOffset(INT_MIN)); |
| 393 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000)); | 393 EXPECT_EQ(-1000000000, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 394 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000)); | 394 EXPECT_EQ(1000000002, navigation_manager()->GetIndexForOffset(1000000000)); |
| 395 | 395 |
| 396 // Set pending index to 2 and test API from that state. | 396 // Set pending index to 2 and test API from that state. |
| 397 [session_controller() setPendingItemIndex:2]; | 397 [session_controller() setPendingItemIndex:2]; |
| 398 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 398 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); |
| 399 ASSERT_EQ(2, navigation_manager()->GetPendingItemIndex()); | 399 ASSERT_EQ(2, navigation_manager()->GetPendingItemIndex()); |
| 400 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 400 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 401 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1)); | 401 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-1)); |
| 402 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); | 402 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-2)); |
| 403 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2)); | 403 EXPECT_EQ(-1, navigation_manager()->GetIndexForOffset(-2)); |
| 404 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); | 404 EXPECT_TRUE(navigation_manager()->CanGoToOffset(1)); |
| 405 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1)); | 405 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(1)); |
| 406 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); | 406 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 407 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2)); | 407 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(2)); |
| 408 // Test with large values. | 408 // Test with large values. |
| 409 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); | 409 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); |
| 410 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); | 410 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); |
| 411 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); | 411 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); |
| 412 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); | 412 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); |
| 413 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); | 413 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); |
| 414 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN)); | 414 EXPECT_EQ(-2147483647, navigation_manager()->GetIndexForOffset(INT_MIN)); |
| 415 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000)); | 415 EXPECT_EQ(-999999999, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 416 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000)); | 416 EXPECT_EQ(1000000003, navigation_manager()->GetIndexForOffset(1000000000)); |
| 417 | 417 |
| 418 // Set pending index to 4 and committed entry to 1 and test. | 418 // Set pending index to 4 and committed entry to 1 and test. |
| 419 [session_controller() goToItemAtIndex:1]; | 419 [session_controller() goToItemAtIndex:1]; |
| 420 [session_controller() setPendingItemIndex:4]; | 420 [session_controller() setPendingItemIndex:4]; |
| 421 ASSERT_EQ(1, navigation_manager()->GetCurrentItemIndex()); | 421 ASSERT_EQ(1, navigation_manager()->GetLastCommittedItemIndex()); |
| 422 ASSERT_EQ(4, navigation_manager()->GetPendingItemIndex()); | 422 ASSERT_EQ(4, navigation_manager()->GetPendingItemIndex()); |
| 423 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 423 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 424 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1)); | 424 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-1)); |
| 425 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); | 425 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 426 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2)); | 426 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-2)); |
| 427 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 427 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 428 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); | 428 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); |
| 429 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); | 429 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| 430 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); | 430 EXPECT_EQ(6, navigation_manager()->GetIndexForOffset(2)); |
| 431 // Test with large values. | 431 // Test with large values. |
| 432 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); | 432 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MAX)); |
| 433 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); | 433 EXPECT_FALSE(navigation_manager()->CanGoToOffset(INT_MIN)); |
| 434 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); | 434 EXPECT_FALSE(navigation_manager()->CanGoToOffset(-1000000000)); |
| 435 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); | 435 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1000000000)); |
| 436 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); | 436 EXPECT_EQ(INT_MAX, navigation_manager()->GetIndexForOffset(INT_MAX)); |
| 437 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN)); | 437 EXPECT_EQ(-2147483646, navigation_manager()->GetIndexForOffset(INT_MIN)); |
| 438 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000)); | 438 EXPECT_EQ(-999999998, navigation_manager()->GetIndexForOffset(-1000000000)); |
| 439 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); | 439 EXPECT_EQ(1000000004, navigation_manager()->GetIndexForOffset(1000000000)); |
| 440 | 440 |
| 441 // Test with existing transient entry in the end of the stack. | 441 // Test with existing transient entry in the end of the stack. |
| 442 [session_controller() goToItemAtIndex:4]; | 442 [session_controller() goToItemAtIndex:4]; |
| 443 [session_controller() setPendingItemIndex:-1]; | 443 [session_controller() setPendingItemIndex:-1]; |
| 444 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; | 444 [session_controller() addTransientItemWithURL:GURL("http://www.url.com")]; |
| 445 ASSERT_EQ(5, navigation_manager()->GetItemCount()); | 445 ASSERT_EQ(5, navigation_manager()->GetItemCount()); |
| 446 ASSERT_EQ(4, navigation_manager()->GetCurrentItemIndex()); | 446 ASSERT_EQ(4, navigation_manager()->GetLastCommittedItemIndex()); |
| 447 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); | 447 ASSERT_EQ(-1, navigation_manager()->GetPendingItemIndex()); |
| 448 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); | 448 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-1)); |
| 449 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1)); | 449 EXPECT_EQ(4, navigation_manager()->GetIndexForOffset(-1)); |
| 450 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); | 450 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-2)); |
| 451 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2)); | 451 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(-2)); |
| 452 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); | 452 EXPECT_TRUE(navigation_manager()->CanGoToOffset(-3)); |
| 453 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3)); | 453 EXPECT_EQ(1, navigation_manager()->GetIndexForOffset(-3)); |
| 454 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); | 454 EXPECT_FALSE(navigation_manager()->CanGoToOffset(1)); |
| 455 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); | 455 EXPECT_EQ(5, navigation_manager()->GetIndexForOffset(1)); |
| 456 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); | 456 EXPECT_FALSE(navigation_manager()->CanGoToOffset(2)); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 481 web::NavigationInitiationType::USER_INITIATED); | 481 web::NavigationInitiationType::USER_INITIATED); |
| 482 [session_controller() commitPendingItem]; | 482 [session_controller() commitPendingItem]; |
| 483 navigation_manager()->AddPendingItem( | 483 navigation_manager()->AddPendingItem( |
| 484 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, | 484 GURL("http://www.url.com/2"), Referrer(), ui::PAGE_TRANSITION_LINK, |
| 485 web::NavigationInitiationType::USER_INITIATED); | 485 web::NavigationInitiationType::USER_INITIATED); |
| 486 [session_controller() commitPendingItem]; | 486 [session_controller() commitPendingItem]; |
| 487 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; | 487 [session_controller() addTransientItemWithURL:GURL("http://www.url.com/1")]; |
| 488 [session_controller() setPendingItemIndex:1]; | 488 [session_controller() setPendingItemIndex:1]; |
| 489 | 489 |
| 490 ASSERT_EQ(3, navigation_manager()->GetItemCount()); | 490 ASSERT_EQ(3, navigation_manager()->GetItemCount()); |
| 491 ASSERT_EQ(2, navigation_manager()->GetCurrentItemIndex()); | 491 ASSERT_EQ(2, navigation_manager()->GetLastCommittedItemIndex()); |
| 492 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 492 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 493 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 493 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 494 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); | 494 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
| 495 | 495 |
| 496 // Now go forward to that middle transient item (pending index is 1, | 496 // Now go forward to that middle transient item (pending index is 1, |
| 497 // current index is 0). | 497 // current index is 0). |
| 498 [session_controller() goToItemAtIndex:0]; | 498 [session_controller() goToItemAtIndex:0]; |
| 499 [session_controller() setPendingItemIndex:1]; | 499 [session_controller() setPendingItemIndex:1]; |
| 500 ASSERT_EQ(3, navigation_manager()->GetItemCount()); | 500 ASSERT_EQ(3, navigation_manager()->GetItemCount()); |
| 501 ASSERT_EQ(0, navigation_manager()->GetCurrentItemIndex()); | 501 ASSERT_EQ(0, navigation_manager()->GetLastCommittedItemIndex()); |
| 502 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); | 502 ASSERT_EQ(1, navigation_manager()->GetPendingItemIndex()); |
| 503 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); | 503 EXPECT_EQ(2, navigation_manager()->GetIndexForOffset(1)); |
| 504 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); | 504 EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
| 505 } | 505 } |
| 506 | 506 |
| 507 // Tests that desktop user agent can be enforced to use for next pending item. | 507 // Tests that desktop user agent can be enforced to use for next pending item. |
| 508 TEST_F(NavigationManagerTest, OverrideDesktopUserAgent) { | 508 TEST_F(NavigationManagerTest, OverrideDesktopUserAgent) { |
| 509 navigation_manager()->OverrideDesktopUserAgentForNextPendingItem(); | 509 navigation_manager()->OverrideDesktopUserAgentForNextPendingItem(); |
| 510 navigation_manager()->AddPendingItem( | 510 navigation_manager()->AddPendingItem( |
| 511 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, | 511 GURL("http://www.url.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 608 | 608 |
| 609 GURL url_before_reload = navigation_manager()->GetVisibleItem()->GetURL(); | 609 GURL url_before_reload = navigation_manager()->GetVisibleItem()->GetURL(); |
| 610 navigation_manager()->Reload(web::ReloadType::NORMAL, | 610 navigation_manager()->Reload(web::ReloadType::NORMAL, |
| 611 false /* check_for_repost */); | 611 false /* check_for_repost */); |
| 612 | 612 |
| 613 EXPECT_EQ(url_before_reload, | 613 EXPECT_EQ(url_before_reload, |
| 614 navigation_manager()->GetVisibleItem()->GetURL()); | 614 navigation_manager()->GetVisibleItem()->GetURL()); |
| 615 } | 615 } |
| 616 | 616 |
| 617 } // namespace web | 617 } // namespace web |
| OLD | NEW |