| 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 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 | 367 |
| 368 EXPECT_EQ(1U, [[session_controller_ entries] count]); | 368 EXPECT_EQ(1U, [[session_controller_ entries] count]); |
| 369 EXPECT_EQ( | 369 EXPECT_EQ( |
| 370 GURL("http://www.url.com/"), | 370 GURL("http://www.url.com/"), |
| 371 [session_controller_ URLForSessionAtIndex:0U]); | 371 [session_controller_ URLForSessionAtIndex:0U]); |
| 372 EXPECT_EQ( | 372 EXPECT_EQ( |
| 373 [[session_controller_ entries] objectAtIndex:0U], | 373 [[session_controller_ entries] objectAtIndex:0U], |
| 374 [session_controller_ currentEntry]); | 374 [session_controller_ currentEntry]); |
| 375 } | 375 } |
| 376 | 376 |
| 377 // Tests going back from the second and last entry to the first one. |
| 377 TEST_F(CRWSessionControllerTest, GoBackFromTheEnd) { | 378 TEST_F(CRWSessionControllerTest, GoBackFromTheEnd) { |
| 378 [session_controller_ | 379 [session_controller_ |
| 379 addPendingEntry:GURL("http://www.url.com") | 380 addPendingEntry:GURL("http://www.url.com") |
| 380 referrer:MakeReferrer("http://www.referer.com") | 381 referrer:MakeReferrer("http://www.referer.com") |
| 381 transition:ui::PAGE_TRANSITION_TYPED | 382 transition:ui::PAGE_TRANSITION_TYPED |
| 382 rendererInitiated:NO]; | 383 rendererInitiated:NO]; |
| 383 [session_controller_ commitPendingEntry]; | 384 [session_controller_ commitPendingEntry]; |
| 384 [session_controller_ | 385 [session_controller_ |
| 385 addPendingEntry:GURL("http://www.url2.com") | 386 addPendingEntry:GURL("http://www.url2.com") |
| 386 referrer:MakeReferrer("http://www.referer.com") | 387 referrer:MakeReferrer("http://www.referer.com") |
| 387 transition:ui::PAGE_TRANSITION_TYPED | 388 transition:ui::PAGE_TRANSITION_TYPED |
| 388 rendererInitiated:NO]; | 389 rendererInitiated:NO]; |
| 389 [session_controller_ commitPendingEntry]; | 390 [session_controller_ commitPendingEntry]; |
| 390 | 391 |
| 391 [session_controller_ goBack]; | 392 [session_controller_ goBack]; |
| 392 | 393 |
| 393 EXPECT_EQ(2U, [[session_controller_ entries] count]); | 394 ASSERT_EQ(2U, [[session_controller_ entries] count]); |
| 394 EXPECT_EQ( | 395 EXPECT_EQ( |
| 395 GURL("http://www.url.com/"), | 396 GURL("http://www.url.com/"), |
| 396 [session_controller_ URLForSessionAtIndex:0U]); | 397 [session_controller_ URLForSessionAtIndex:0U]); |
| 397 EXPECT_EQ( | 398 EXPECT_EQ( |
| 398 GURL("http://www.url2.com/"), | 399 GURL("http://www.url2.com/"), |
| 399 [session_controller_ URLForSessionAtIndex:1U]); | 400 [session_controller_ URLForSessionAtIndex:1U]); |
| 400 EXPECT_EQ( | 401 EXPECT_EQ( |
| 401 [[session_controller_ entries] objectAtIndex:0U], | 402 [[session_controller_ entries] objectAtIndex:0U], |
| 402 [session_controller_ currentEntry]); | 403 [session_controller_ currentEntry]); |
| 404 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U], |
| 405 [session_controller_ previousEntry]); |
| 403 } | 406 } |
| 404 | 407 |
| 408 // Tests going back twice from the second and last entry to the first one. |
| 405 TEST_F(CRWSessionControllerTest, GoBackFromTheBeginning) { | 409 TEST_F(CRWSessionControllerTest, GoBackFromTheBeginning) { |
| 406 [session_controller_ | 410 [session_controller_ |
| 407 addPendingEntry:GURL("http://www.url.com") | 411 addPendingEntry:GURL("http://www.url.com") |
| 408 referrer:MakeReferrer("http://www.referer.com") | 412 referrer:MakeReferrer("http://www.referer.com") |
| 409 transition:ui::PAGE_TRANSITION_TYPED | 413 transition:ui::PAGE_TRANSITION_TYPED |
| 410 rendererInitiated:NO]; | 414 rendererInitiated:NO]; |
| 411 [session_controller_ commitPendingEntry]; | 415 [session_controller_ commitPendingEntry]; |
| 412 [session_controller_ | 416 [session_controller_ |
| 413 addPendingEntry:GURL("http://www.url2.com") | 417 addPendingEntry:GURL("http://www.url2.com") |
| 414 referrer:MakeReferrer("http://www.referer.com") | 418 referrer:MakeReferrer("http://www.referer.com") |
| 415 transition:ui::PAGE_TRANSITION_TYPED | 419 transition:ui::PAGE_TRANSITION_TYPED |
| 416 rendererInitiated:NO]; | 420 rendererInitiated:NO]; |
| 417 [session_controller_ commitPendingEntry]; | 421 [session_controller_ commitPendingEntry]; |
| 418 | 422 |
| 419 [session_controller_ goBack]; | 423 [session_controller_ goBack]; |
| 420 [session_controller_ goBack]; | 424 [session_controller_ goBack]; |
| 421 | 425 |
| 422 EXPECT_EQ(2U, [[session_controller_ entries] count]); | 426 EXPECT_EQ(2U, [[session_controller_ entries] count]); |
| 423 EXPECT_EQ( | 427 EXPECT_EQ( |
| 424 GURL("http://www.url.com/"), | 428 GURL("http://www.url.com/"), |
| 425 [session_controller_ URLForSessionAtIndex:0U]); | 429 [session_controller_ URLForSessionAtIndex:0U]); |
| 426 EXPECT_EQ( | 430 EXPECT_EQ( |
| 427 GURL("http://www.url2.com/"), | 431 GURL("http://www.url2.com/"), |
| 428 [session_controller_ URLForSessionAtIndex:1U]); | 432 [session_controller_ URLForSessionAtIndex:1U]); |
| 429 EXPECT_EQ( | 433 EXPECT_EQ( |
| 430 [[session_controller_ entries] objectAtIndex:0U], | 434 [[session_controller_ entries] objectAtIndex:0U], |
| 431 [session_controller_ currentEntry]); | 435 [session_controller_ currentEntry]); |
| 436 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U], |
| 437 [session_controller_ previousEntry]); |
| 432 } | 438 } |
| 433 | 439 |
| 434 TEST_F(CRWSessionControllerTest, GoBackFromTheMiddle) { | 440 TEST_F(CRWSessionControllerTest, GoBackFromTheMiddle) { |
| 435 [session_controller_ | 441 [session_controller_ |
| 436 addPendingEntry:GURL("http://www.url.com") | 442 addPendingEntry:GURL("http://www.url.com") |
| 437 referrer:MakeReferrer("http://www.referer.com") | 443 referrer:MakeReferrer("http://www.referer.com") |
| 438 transition:ui::PAGE_TRANSITION_TYPED | 444 transition:ui::PAGE_TRANSITION_TYPED |
| 439 rendererInitiated:NO]; | 445 rendererInitiated:NO]; |
| 440 [session_controller_ commitPendingEntry]; | 446 [session_controller_ commitPendingEntry]; |
| 441 [session_controller_ | 447 [session_controller_ |
| (...skipping 27 matching lines...) Expand all Loading... |
| 469 [session_controller_ URLForSessionAtIndex:1U]); | 475 [session_controller_ URLForSessionAtIndex:1U]); |
| 470 EXPECT_EQ( | 476 EXPECT_EQ( |
| 471 GURL("http://www.url3.com/"), | 477 GURL("http://www.url3.com/"), |
| 472 [session_controller_ URLForSessionAtIndex:2U]); | 478 [session_controller_ URLForSessionAtIndex:2U]); |
| 473 EXPECT_EQ( | 479 EXPECT_EQ( |
| 474 GURL("http://www.url4.com/"), | 480 GURL("http://www.url4.com/"), |
| 475 [session_controller_ URLForSessionAtIndex:3U]); | 481 [session_controller_ URLForSessionAtIndex:3U]); |
| 476 EXPECT_EQ( | 482 EXPECT_EQ( |
| 477 [[session_controller_ entries] objectAtIndex:1U], | 483 [[session_controller_ entries] objectAtIndex:1U], |
| 478 [session_controller_ currentEntry]); | 484 [session_controller_ currentEntry]); |
| 485 EXPECT_EQ([[session_controller_ entries] objectAtIndex:2U], |
| 486 [session_controller_ previousEntry]); |
| 479 } | 487 } |
| 480 | 488 |
| 481 TEST_F(CRWSessionControllerTest, GoBackAndRemove) { | 489 TEST_F(CRWSessionControllerTest, GoBackAndRemove) { |
| 482 [session_controller_ | 490 [session_controller_ |
| 483 addPendingEntry:GURL("http://www.url.com") | 491 addPendingEntry:GURL("http://www.url.com") |
| 484 referrer:MakeReferrer("http://www.referer.com") | 492 referrer:MakeReferrer("http://www.referer.com") |
| 485 transition:ui::PAGE_TRANSITION_TYPED | 493 transition:ui::PAGE_TRANSITION_TYPED |
| 486 rendererInitiated:NO]; | 494 rendererInitiated:NO]; |
| 487 [session_controller_ commitPendingEntry]; | 495 [session_controller_ commitPendingEntry]; |
| 488 [session_controller_ | 496 [session_controller_ |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 | 531 |
| 524 [session_controller_ goForward]; | 532 [session_controller_ goForward]; |
| 525 | 533 |
| 526 EXPECT_EQ(1U, [[session_controller_ entries] count]); | 534 EXPECT_EQ(1U, [[session_controller_ entries] count]); |
| 527 EXPECT_EQ( | 535 EXPECT_EQ( |
| 528 GURL("http://www.url.com/"), | 536 GURL("http://www.url.com/"), |
| 529 [session_controller_ URLForSessionAtIndex:0U]); | 537 [session_controller_ URLForSessionAtIndex:0U]); |
| 530 EXPECT_EQ( | 538 EXPECT_EQ( |
| 531 [[session_controller_ entries] objectAtIndex:0U], | 539 [[session_controller_ entries] objectAtIndex:0U], |
| 532 [session_controller_ currentEntry]); | 540 [session_controller_ currentEntry]); |
| 541 EXPECT_EQ([[session_controller_ entries] objectAtIndex:0U], |
| 542 [session_controller_ currentEntry]); |
| 533 } | 543 } |
| 534 | 544 |
| 535 TEST_F(CRWSessionControllerTest, GoForewardFromTheEnd) { | 545 TEST_F(CRWSessionControllerTest, GoForewardFromTheEnd) { |
| 536 [session_controller_ | 546 [session_controller_ |
| 537 addPendingEntry:GURL("http://www.url.com") | 547 addPendingEntry:GURL("http://www.url.com") |
| 538 referrer:MakeReferrer("http://www.referer.com") | 548 referrer:MakeReferrer("http://www.referer.com") |
| 539 transition:ui::PAGE_TRANSITION_TYPED | 549 transition:ui::PAGE_TRANSITION_TYPED |
| 540 rendererInitiated:NO]; | 550 rendererInitiated:NO]; |
| 541 [session_controller_ commitPendingEntry]; | 551 [session_controller_ commitPendingEntry]; |
| 542 [session_controller_ | 552 [session_controller_ |
| 543 addPendingEntry:GURL("http://www.url2.com") | 553 addPendingEntry:GURL("http://www.url2.com") |
| 544 referrer:MakeReferrer("http://www.referer.com") | 554 referrer:MakeReferrer("http://www.referer.com") |
| 545 transition:ui::PAGE_TRANSITION_TYPED | 555 transition:ui::PAGE_TRANSITION_TYPED |
| 546 rendererInitiated:NO]; | 556 rendererInitiated:NO]; |
| 547 [session_controller_ commitPendingEntry]; | 557 [session_controller_ commitPendingEntry]; |
| 548 | 558 |
| 549 [session_controller_ goForward]; | 559 [session_controller_ goForward]; |
| 550 | 560 |
| 551 EXPECT_EQ(2U, [[session_controller_ entries] count]); | 561 EXPECT_EQ(2U, [[session_controller_ entries] count]); |
| 552 EXPECT_EQ( | 562 EXPECT_EQ( |
| 553 GURL("http://www.url.com/"), | 563 GURL("http://www.url.com/"), |
| 554 [session_controller_ URLForSessionAtIndex:0U]); | 564 [session_controller_ URLForSessionAtIndex:0U]); |
| 555 EXPECT_EQ( | 565 EXPECT_EQ( |
| 556 GURL("http://www.url2.com/"), | 566 GURL("http://www.url2.com/"), |
| 557 [session_controller_ URLForSessionAtIndex:1U]); | 567 [session_controller_ URLForSessionAtIndex:1U]); |
| 558 EXPECT_EQ( | 568 EXPECT_EQ( |
| 559 [[session_controller_ entries] objectAtIndex:1U], | 569 [[session_controller_ entries] objectAtIndex:1U], |
| 560 [session_controller_ currentEntry]); | 570 [session_controller_ currentEntry]); |
| 571 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U], |
| 572 [session_controller_ currentEntry]); |
| 561 } | 573 } |
| 562 | 574 |
| 563 TEST_F(CRWSessionControllerTest, GoForewardFromTheBeginning) { | 575 TEST_F(CRWSessionControllerTest, GoForewardFromTheBeginning) { |
| 564 [session_controller_ | 576 [session_controller_ |
| 565 addPendingEntry:GURL("http://www.url.com") | 577 addPendingEntry:GURL("http://www.url.com") |
| 566 referrer:MakeReferrer("http://www.referer.com") | 578 referrer:MakeReferrer("http://www.referer.com") |
| 567 transition:ui::PAGE_TRANSITION_TYPED | 579 transition:ui::PAGE_TRANSITION_TYPED |
| 568 rendererInitiated:NO]; | 580 rendererInitiated:NO]; |
| 569 [session_controller_ commitPendingEntry]; | 581 [session_controller_ commitPendingEntry]; |
| 570 [session_controller_ | 582 [session_controller_ |
| 571 addPendingEntry:GURL("http://www.url2.com") | 583 addPendingEntry:GURL("http://www.url2.com") |
| 572 referrer:MakeReferrer("http://www.referer.com") | 584 referrer:MakeReferrer("http://www.referer.com") |
| 573 transition:ui::PAGE_TRANSITION_TYPED | 585 transition:ui::PAGE_TRANSITION_TYPED |
| 574 rendererInitiated:NO]; | 586 rendererInitiated:NO]; |
| 575 [session_controller_ commitPendingEntry]; | 587 [session_controller_ commitPendingEntry]; |
| 576 | 588 |
| 577 [session_controller_ goBack]; | 589 [session_controller_ goBack]; |
| 578 [session_controller_ goForward]; | 590 [session_controller_ goForward]; |
| 579 | 591 |
| 580 EXPECT_EQ(2U, [[session_controller_ entries] count]); | 592 EXPECT_EQ(2U, [[session_controller_ entries] count]); |
| 581 EXPECT_EQ( | 593 EXPECT_EQ( |
| 582 GURL("http://www.url.com/"), | 594 GURL("http://www.url.com/"), |
| 583 [session_controller_ URLForSessionAtIndex:0U]); | 595 [session_controller_ URLForSessionAtIndex:0U]); |
| 584 EXPECT_EQ( | 596 EXPECT_EQ( |
| 585 GURL("http://www.url2.com/"), | 597 GURL("http://www.url2.com/"), |
| 586 [session_controller_ URLForSessionAtIndex:1U]); | 598 [session_controller_ URLForSessionAtIndex:1U]); |
| 587 EXPECT_EQ( | 599 EXPECT_EQ( |
| 588 [[session_controller_ entries] objectAtIndex:1U], | 600 [[session_controller_ entries] objectAtIndex:1U], |
| 589 [session_controller_ currentEntry]); | 601 [session_controller_ currentEntry]); |
| 602 EXPECT_EQ([[session_controller_ entries] objectAtIndex:0U], |
| 603 [session_controller_ previousEntry]); |
| 590 } | 604 } |
| 591 | 605 |
| 592 TEST_F(CRWSessionControllerTest, GoForwardFromTheMiddle) { | 606 TEST_F(CRWSessionControllerTest, GoForwardFromTheMiddle) { |
| 593 [session_controller_ | 607 [session_controller_ |
| 594 addPendingEntry:GURL("http://www.url.com") | 608 addPendingEntry:GURL("http://www.url.com") |
| 595 referrer:MakeReferrer("http://www.referer.com") | 609 referrer:MakeReferrer("http://www.referer.com") |
| 596 transition:ui::PAGE_TRANSITION_TYPED | 610 transition:ui::PAGE_TRANSITION_TYPED |
| 597 rendererInitiated:NO]; | 611 rendererInitiated:NO]; |
| 598 [session_controller_ commitPendingEntry]; | 612 [session_controller_ commitPendingEntry]; |
| 599 [session_controller_ | 613 [session_controller_ |
| (...skipping 28 matching lines...) Expand all Loading... |
| 628 [session_controller_ URLForSessionAtIndex:1U]); | 642 [session_controller_ URLForSessionAtIndex:1U]); |
| 629 EXPECT_EQ( | 643 EXPECT_EQ( |
| 630 GURL("http://www.url3.com/"), | 644 GURL("http://www.url3.com/"), |
| 631 [session_controller_ URLForSessionAtIndex:2U]); | 645 [session_controller_ URLForSessionAtIndex:2U]); |
| 632 EXPECT_EQ( | 646 EXPECT_EQ( |
| 633 GURL("http://www.url4.com/"), | 647 GURL("http://www.url4.com/"), |
| 634 [session_controller_ URLForSessionAtIndex:3U]); | 648 [session_controller_ URLForSessionAtIndex:3U]); |
| 635 EXPECT_EQ( | 649 EXPECT_EQ( |
| 636 [[session_controller_ entries] objectAtIndex:2U], | 650 [[session_controller_ entries] objectAtIndex:2U], |
| 637 [session_controller_ currentEntry]); | 651 [session_controller_ currentEntry]); |
| 652 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U], |
| 653 [session_controller_ previousEntry]); |
| 654 } |
| 655 |
| 656 // Tests going delta, including out of range cases. |
| 657 TEST_F(CRWSessionControllerTest, GoDelta) { |
| 658 [session_controller_ addPendingEntry:GURL("http://www.example.com/0") |
| 659 referrer:MakeReferrer("http://www.example.com/a") |
| 660 transition:ui::PAGE_TRANSITION_LINK |
| 661 rendererInitiated:NO]; |
| 662 [session_controller_ commitPendingEntry]; |
| 663 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect") |
| 664 referrer:MakeReferrer("http://www.example.com/r") |
| 665 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK |
| 666 rendererInitiated:NO]; |
| 667 [session_controller_ commitPendingEntry]; |
| 668 [session_controller_ addPendingEntry:GURL("http://www.example.com/1") |
| 669 referrer:MakeReferrer("http://www.example.com/b") |
| 670 transition:ui::PAGE_TRANSITION_LINK |
| 671 rendererInitiated:NO]; |
| 672 [session_controller_ commitPendingEntry]; |
| 673 [session_controller_ addPendingEntry:GURL("http://www.example.com/2") |
| 674 referrer:MakeReferrer("http://www.example.com/c") |
| 675 transition:ui::PAGE_TRANSITION_LINK |
| 676 rendererInitiated:NO]; |
| 677 [session_controller_ commitPendingEntry]; |
| 678 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect") |
| 679 referrer:MakeReferrer("http://www.example.com/r") |
| 680 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK |
| 681 rendererInitiated:NO]; |
| 682 [session_controller_ commitPendingEntry]; |
| 683 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]); |
| 684 ASSERT_EQ(3, [session_controller_ previousNavigationIndex]); |
| 685 NSArray* entries = [session_controller_ entries]; |
| 686 ASSERT_EQ(5U, entries.count); |
| 687 |
| 688 // Try going forward, which should not be possible. |
| 689 EXPECT_FALSE([session_controller_ canGoDelta:1]); |
| 690 [session_controller_ goDelta:1]; |
| 691 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]); |
| 692 ASSERT_EQ(3, [session_controller_ previousNavigationIndex]); |
| 693 |
| 694 // Try going back 3 entries, which should not be possible as there are only 2 |
| 695 // non-redirect entries. |
| 696 EXPECT_FALSE([session_controller_ canGoDelta:-3]); |
| 697 [session_controller_ goDelta:-3]; |
| 698 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]); |
| 699 ASSERT_EQ(3, [session_controller_ previousNavigationIndex]); |
| 700 [session_controller_ goToEntry:entries[4]]; |
| 701 |
| 702 // Go back 2 entries. |
| 703 EXPECT_TRUE([session_controller_ canGoDelta:-2]); |
| 704 [session_controller_ goDelta:-2]; |
| 705 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 706 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]); |
| 707 |
| 708 // Try going back 1 entry which should not be possible, because back entry had |
| 709 // redirect response. |
| 710 EXPECT_FALSE([session_controller_ canGoDelta:-1]); |
| 711 [session_controller_ goDelta:-1]; |
| 712 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 713 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]); |
| 714 |
| 715 // Try going forward 3 entries which should not be possible, because there are |
| 716 // only 2 non-redirect entries in forward entries. |
| 717 EXPECT_FALSE([session_controller_ canGoDelta:3]); |
| 718 [session_controller_ goDelta:3]; |
| 719 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 720 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]); |
| 721 [session_controller_ goToEntry:entries[1]]; |
| 722 |
| 723 // Go forward 2 entries. |
| 724 EXPECT_TRUE([session_controller_ canGoDelta:2]); |
| 725 [session_controller_ goDelta:2]; |
| 726 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]); |
| 727 ASSERT_EQ(1, [session_controller_ previousNavigationIndex]); |
| 728 |
| 729 // Now add a transient entry and go back 2 entries. |
| 730 [session_controller_ addTransientEntryWithURL:GURL("http://www.example.com")]; |
| 731 EXPECT_TRUE([session_controller_ canGoDelta:-2]); |
| 732 [session_controller_ goDelta:-2]; |
| 733 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]); |
| 734 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]); |
| 735 |
| 736 // Try going back 2 entries which should not be possible, because there is |
| 737 // only one non-redirect back entry. |
| 738 EXPECT_FALSE([session_controller_ canGoDelta:-2]); |
| 739 [session_controller_ goDelta:-2]; |
| 740 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]); |
| 741 ASSERT_EQ(4, [session_controller_ previousNavigationIndex]); |
| 742 [session_controller_ goToEntry:entries[2]]; |
| 743 |
| 744 // Go back 1 entry. |
| 745 EXPECT_TRUE([session_controller_ canGoDelta:-1]); |
| 746 [session_controller_ goDelta:-1]; |
| 747 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 748 ASSERT_EQ(2, [session_controller_ previousNavigationIndex]); |
| 749 |
| 750 // Go forward 1 entry. |
| 751 EXPECT_TRUE([session_controller_ canGoDelta:1]); |
| 752 [session_controller_ goDelta:1]; |
| 753 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]); |
| 754 ASSERT_EQ(1, [session_controller_ previousNavigationIndex]); |
| 638 } | 755 } |
| 639 | 756 |
| 640 TEST_F(CRWSessionControllerTest, CanGoBackWithoutCommitedEntry) { | 757 TEST_F(CRWSessionControllerTest, CanGoBackWithoutCommitedEntry) { |
| 641 EXPECT_FALSE([session_controller_ canGoBack]); | 758 EXPECT_FALSE([session_controller_ canGoBack]); |
| 759 EXPECT_FALSE([session_controller_ canGoDelta:-1]); |
| 642 } | 760 } |
| 643 | 761 |
| 644 // Tests that |canGoBack| returns NO if there is a transient entry, but no | 762 // Tests that |canGoBack| returns NO if there is a transient entry, but no |
| 645 // committed entries. | 763 // committed entries. |
| 646 TEST_F(CRWSessionControllerTest, CanGoBackWithTransientEntry) { | 764 TEST_F(CRWSessionControllerTest, CanGoBackWithTransientEntry) { |
| 647 [session_controller_ addTransientEntryWithURL:GURL("http://www.url.com")]; | 765 [session_controller_ addTransientEntryWithURL:GURL("http://www.url.com")]; |
| 648 | 766 |
| 649 EXPECT_FALSE([session_controller_ canGoBack]); | 767 EXPECT_FALSE([session_controller_ canGoBack]); |
| 650 } | 768 } |
| 651 | 769 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 664 | 782 |
| 665 TEST_F(CRWSessionControllerTest, CanGoBackWithSingleCommitedEntry) { | 783 TEST_F(CRWSessionControllerTest, CanGoBackWithSingleCommitedEntry) { |
| 666 [session_controller_ | 784 [session_controller_ |
| 667 addPendingEntry:GURL("http://www.url.com") | 785 addPendingEntry:GURL("http://www.url.com") |
| 668 referrer:MakeReferrer("http://www.referer.com") | 786 referrer:MakeReferrer("http://www.referer.com") |
| 669 transition:ui::PAGE_TRANSITION_TYPED | 787 transition:ui::PAGE_TRANSITION_TYPED |
| 670 rendererInitiated:NO]; | 788 rendererInitiated:NO]; |
| 671 [session_controller_ commitPendingEntry]; | 789 [session_controller_ commitPendingEntry]; |
| 672 | 790 |
| 673 EXPECT_FALSE([session_controller_ canGoBack]); | 791 EXPECT_FALSE([session_controller_ canGoBack]); |
| 792 EXPECT_FALSE([session_controller_ canGoDelta:-1]); |
| 674 } | 793 } |
| 675 | 794 |
| 676 TEST_F(CRWSessionControllerTest, CanGoBackWithMultipleCommitedEntries) { | 795 TEST_F(CRWSessionControllerTest, CanGoBackWithMultipleCommitedEntries) { |
| 677 [session_controller_ | 796 [session_controller_ |
| 678 addPendingEntry:GURL("http://www.url.com") | 797 addPendingEntry:GURL("http://www.url.com") |
| 679 referrer:MakeReferrer("http://www.referer.com") | 798 referrer:MakeReferrer("http://www.referer.com") |
| 680 transition:ui::PAGE_TRANSITION_TYPED | 799 transition:ui::PAGE_TRANSITION_TYPED |
| 681 rendererInitiated:NO]; | 800 rendererInitiated:NO]; |
| 682 [session_controller_ commitPendingEntry]; | 801 [session_controller_ commitPendingEntry]; |
| 683 [session_controller_ | 802 [session_controller_ |
| 684 addPendingEntry:GURL("http://www.url1.com") | 803 addPendingEntry:GURL("http://www.url1.com") |
| 685 referrer:MakeReferrer("http://www.referer.com") | 804 referrer:MakeReferrer("http://www.referer.com") |
| 686 transition:ui::PAGE_TRANSITION_TYPED | 805 transition:ui::PAGE_TRANSITION_TYPED |
| 687 rendererInitiated:NO]; | 806 rendererInitiated:NO]; |
| 688 [session_controller_ commitPendingEntry]; | 807 [session_controller_ commitPendingEntry]; |
| 689 [session_controller_ | 808 [session_controller_ |
| 690 addPendingEntry:GURL("http://www.url2.com") | 809 addPendingEntry:GURL("http://www.url2.com") |
| 691 referrer:MakeReferrer("http://www.referer.com") | 810 referrer:MakeReferrer("http://www.referer.com") |
| 692 transition:ui::PAGE_TRANSITION_TYPED | 811 transition:ui::PAGE_TRANSITION_TYPED |
| 693 rendererInitiated:NO]; | 812 rendererInitiated:NO]; |
| 694 [session_controller_ commitPendingEntry]; | 813 [session_controller_ commitPendingEntry]; |
| 695 | 814 |
| 696 EXPECT_TRUE([session_controller_ canGoBack]); | 815 EXPECT_TRUE([session_controller_ canGoBack]); |
| 816 EXPECT_TRUE([session_controller_ canGoDelta:-1]); |
| 697 | 817 |
| 698 [session_controller_ goBack]; | 818 [session_controller_ goBack]; |
| 699 EXPECT_TRUE([session_controller_ canGoBack]); | 819 EXPECT_TRUE([session_controller_ canGoBack]); |
| 820 EXPECT_TRUE([session_controller_ canGoDelta:-1]); |
| 700 | 821 |
| 701 [session_controller_ goBack]; | 822 [session_controller_ goBack]; |
| 702 EXPECT_FALSE([session_controller_ canGoBack]); | 823 EXPECT_FALSE([session_controller_ canGoBack]); |
| 824 EXPECT_FALSE([session_controller_ canGoDelta:-1]); |
| 703 | 825 |
| 704 [session_controller_ goBack]; | 826 [session_controller_ goBack]; |
| 705 EXPECT_FALSE([session_controller_ canGoBack]); | 827 EXPECT_FALSE([session_controller_ canGoBack]); |
| 828 EXPECT_FALSE([session_controller_ canGoDelta:-1]); |
| 706 | 829 |
| 707 [session_controller_ goForward]; | 830 [session_controller_ goForward]; |
| 708 EXPECT_TRUE([session_controller_ canGoBack]); | 831 EXPECT_TRUE([session_controller_ canGoBack]); |
| 832 EXPECT_TRUE([session_controller_ canGoDelta:-1]); |
| 833 } |
| 834 |
| 835 // Tests that going forward is not possible if there is a pending entry. |
| 836 TEST_F(CRWSessionControllerTest, CanGoForwardWithPendingEntry) { |
| 837 [session_controller_ addPendingEntry:GURL("http://www.url.com") |
| 838 referrer:MakeReferrer("http://www.referer.com") |
| 839 transition:ui::PAGE_TRANSITION_TYPED |
| 840 rendererInitiated:NO]; |
| 841 [session_controller_ commitPendingEntry]; |
| 842 [session_controller_ addPendingEntry:GURL("http://www.url1.com") |
| 843 referrer:MakeReferrer("http://www.referer.com") |
| 844 transition:ui::PAGE_TRANSITION_TYPED |
| 845 rendererInitiated:NO]; |
| 846 [session_controller_ commitPendingEntry]; |
| 847 [session_controller_ goBack]; |
| 848 [session_controller_ addPendingEntry:GURL("http://www.url2.com") |
| 849 referrer:MakeReferrer("http://www.referer.com") |
| 850 transition:ui::PAGE_TRANSITION_TYPED |
| 851 rendererInitiated:NO]; |
| 852 |
| 853 // Pending entry should not allow going forward. |
| 854 EXPECT_FALSE([session_controller_ canGoForward]); |
| 855 EXPECT_FALSE([session_controller_ canGoDelta:1]); |
| 709 } | 856 } |
| 710 | 857 |
| 711 TEST_F(CRWSessionControllerTest, CanGoForwardWithoutCommitedEntry) { | 858 TEST_F(CRWSessionControllerTest, CanGoForwardWithoutCommitedEntry) { |
| 712 EXPECT_FALSE([session_controller_ canGoForward]); | 859 EXPECT_FALSE([session_controller_ canGoForward]); |
| 860 EXPECT_FALSE([session_controller_ canGoDelta:1]); |
| 713 } | 861 } |
| 714 | 862 |
| 715 TEST_F(CRWSessionControllerTest, CanGoForwardWithSingleCommitedEntry) { | 863 TEST_F(CRWSessionControllerTest, CanGoForwardWithSingleCommitedEntry) { |
| 716 [session_controller_ | 864 [session_controller_ |
| 717 addPendingEntry:GURL("http://www.url.com") | 865 addPendingEntry:GURL("http://www.url.com") |
| 718 referrer:MakeReferrer("http://www.referer.com") | 866 referrer:MakeReferrer("http://www.referer.com") |
| 719 transition:ui::PAGE_TRANSITION_TYPED | 867 transition:ui::PAGE_TRANSITION_TYPED |
| 720 rendererInitiated:NO]; | 868 rendererInitiated:NO]; |
| 721 [session_controller_ commitPendingEntry]; | 869 [session_controller_ commitPendingEntry]; |
| 722 | 870 |
| 723 EXPECT_FALSE([session_controller_ canGoForward]); | 871 EXPECT_FALSE([session_controller_ canGoForward]); |
| 872 EXPECT_FALSE([session_controller_ canGoDelta:1]); |
| 724 } | 873 } |
| 725 | 874 |
| 726 TEST_F(CRWSessionControllerTest, CanGoForwardWithMultipleCommitedEntries) { | 875 TEST_F(CRWSessionControllerTest, CanGoForwardWithMultipleCommitedEntries) { |
| 727 [session_controller_ | 876 [session_controller_ |
| 728 addPendingEntry:GURL("http://www.url.com") | 877 addPendingEntry:GURL("http://www.url.com") |
| 729 referrer:MakeReferrer("http://www.referer.com") | 878 referrer:MakeReferrer("http://www.referer.com") |
| 730 transition:ui::PAGE_TRANSITION_TYPED | 879 transition:ui::PAGE_TRANSITION_TYPED |
| 731 rendererInitiated:NO]; | 880 rendererInitiated:NO]; |
| 732 [session_controller_ commitPendingEntry]; | 881 [session_controller_ commitPendingEntry]; |
| 733 [session_controller_ | 882 [session_controller_ |
| 734 addPendingEntry:GURL("http://www.url1.com") | 883 addPendingEntry:GURL("http://www.url1.com") |
| 735 referrer:MakeReferrer("http://www.referer.com") | 884 referrer:MakeReferrer("http://www.referer.com") |
| 736 transition:ui::PAGE_TRANSITION_TYPED | 885 transition:ui::PAGE_TRANSITION_TYPED |
| 737 rendererInitiated:NO]; | 886 rendererInitiated:NO]; |
| 738 [session_controller_ commitPendingEntry]; | 887 [session_controller_ commitPendingEntry]; |
| 739 [session_controller_ | 888 [session_controller_ |
| 740 addPendingEntry:GURL("http://www.url2.com") | 889 addPendingEntry:GURL("http://www.url2.com") |
| 741 referrer:MakeReferrer("http://www.referer.com") | 890 referrer:MakeReferrer("http://www.referer.com") |
| 742 transition:ui::PAGE_TRANSITION_TYPED | 891 transition:ui::PAGE_TRANSITION_TYPED |
| 743 rendererInitiated:NO]; | 892 rendererInitiated:NO]; |
| 744 [session_controller_ commitPendingEntry]; | 893 [session_controller_ commitPendingEntry]; |
| 745 | 894 |
| 746 EXPECT_FALSE([session_controller_ canGoForward]); | 895 EXPECT_FALSE([session_controller_ canGoForward]); |
| 896 EXPECT_FALSE([session_controller_ canGoDelta:1]); |
| 747 | 897 |
| 748 [session_controller_ goBack]; | 898 [session_controller_ goBack]; |
| 749 EXPECT_TRUE([session_controller_ canGoForward]); | 899 EXPECT_TRUE([session_controller_ canGoForward]); |
| 900 EXPECT_TRUE([session_controller_ canGoDelta:1]); |
| 750 | 901 |
| 751 [session_controller_ goBack]; | 902 [session_controller_ goBack]; |
| 752 EXPECT_TRUE([session_controller_ canGoForward]); | 903 EXPECT_TRUE([session_controller_ canGoForward]); |
| 904 EXPECT_TRUE([session_controller_ canGoDelta:1]); |
| 753 | 905 |
| 754 [session_controller_ goForward]; | 906 [session_controller_ goForward]; |
| 755 EXPECT_TRUE([session_controller_ canGoForward]); | 907 EXPECT_TRUE([session_controller_ canGoForward]); |
| 908 EXPECT_TRUE([session_controller_ canGoDelta:1]); |
| 756 | 909 |
| 757 [session_controller_ goForward]; | 910 [session_controller_ goForward]; |
| 758 EXPECT_FALSE([session_controller_ canGoForward]); | 911 EXPECT_FALSE([session_controller_ canGoForward]); |
| 912 EXPECT_FALSE([session_controller_ canGoDelta:1]); |
| 759 } | 913 } |
| 760 | 914 |
| 761 // Helper to create a NavigationItem. Caller is responsible for freeing | 915 // Helper to create a NavigationItem. Caller is responsible for freeing |
| 762 // the memory. | 916 // the memory. |
| 763 web::NavigationItem* CreateNavigationItem(const std::string& url, | 917 web::NavigationItem* CreateNavigationItem(const std::string& url, |
| 764 const std::string& referrer, | 918 const std::string& referrer, |
| 765 NSString* title) { | 919 NSString* title) { |
| 766 web::Referrer referrer_object(GURL(referrer), | 920 web::Referrer referrer_object(GURL(referrer), |
| 767 web::ReferrerPolicyDefault); | 921 web::ReferrerPolicyDefault); |
| 768 web::NavigationItemImpl* navigation_item = new web::NavigationItemImpl(); | 922 web::NavigationItemImpl* navigation_item = new web::NavigationItemImpl(); |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1047 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 1201 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); |
| 1048 | 1202 |
| 1049 // Remove an entry and attempt to go it. Ensure it outlives the removal. | 1203 // Remove an entry and attempt to go it. Ensure it outlives the removal. |
| 1050 base::scoped_nsobject<CRWSessionEntry> entry3( | 1204 base::scoped_nsobject<CRWSessionEntry> entry3( |
| 1051 [[session_controller_.get().entries objectAtIndex:3] retain]); | 1205 [[session_controller_.get().entries objectAtIndex:3] retain]); |
| 1052 [session_controller_ removeEntryAtIndex:3]; | 1206 [session_controller_ removeEntryAtIndex:3]; |
| 1053 [session_controller_ goToEntry:entry3]; | 1207 [session_controller_ goToEntry:entry3]; |
| 1054 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 1208 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); |
| 1055 } | 1209 } |
| 1056 | 1210 |
| 1211 // Tests -[CRWSessionController indexOfEntryForDelta:] API for positive, |
| 1212 // negative and zero delta. Tested session controller will have redirect entries |
| 1213 // to make sure they are appropriately skipped. |
| 1214 TEST_F(CRWSessionControllerTest, IndexOfEntryForDelta) { |
| 1215 [session_controller_ addPendingEntry:GURL("http://www.example.com/0") |
| 1216 referrer:MakeReferrer("http://www.example.com/a") |
| 1217 transition:ui::PAGE_TRANSITION_LINK |
| 1218 rendererInitiated:NO]; |
| 1219 [session_controller_ commitPendingEntry]; |
| 1220 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect") |
| 1221 referrer:MakeReferrer("http://www.example.com/r") |
| 1222 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK |
| 1223 rendererInitiated:NO]; |
| 1224 [session_controller_ commitPendingEntry]; |
| 1225 [session_controller_ addPendingEntry:GURL("http://www.example.com/1") |
| 1226 referrer:MakeReferrer("http://www.example.com/b") |
| 1227 transition:ui::PAGE_TRANSITION_LINK |
| 1228 rendererInitiated:NO]; |
| 1229 [session_controller_ commitPendingEntry]; |
| 1230 [session_controller_ addPendingEntry:GURL("http://www.example.com/2") |
| 1231 referrer:MakeReferrer("http://www.example.com/c") |
| 1232 transition:ui::PAGE_TRANSITION_LINK |
| 1233 rendererInitiated:NO]; |
| 1234 [session_controller_ commitPendingEntry]; |
| 1235 [session_controller_ addPendingEntry:GURL("http://www.example.com/redirect") |
| 1236 referrer:MakeReferrer("http://www.example.com/r") |
| 1237 transition:ui::PAGE_TRANSITION_IS_REDIRECT_MASK |
| 1238 rendererInitiated:NO]; |
| 1239 [session_controller_ commitPendingEntry]; |
| 1240 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]); |
| 1241 ASSERT_EQ(5U, [[session_controller_ entries] count]); |
| 1242 |
| 1243 // Go to entry at index 1 and test API from that state. |
| 1244 NSArray* entries = [session_controller_ entries]; |
| 1245 [session_controller_ goToEntry:entries[1]]; |
| 1246 ASSERT_EQ(1, [session_controller_ currentNavigationIndex]); |
| 1247 EXPECT_EQ(-1, [session_controller_ indexOfEntryForDelta:-1]); |
| 1248 EXPECT_EQ(-2, [session_controller_ indexOfEntryForDelta:-2]); |
| 1249 EXPECT_EQ(2, [session_controller_ indexOfEntryForDelta:1]); |
| 1250 EXPECT_EQ(4, [session_controller_ indexOfEntryForDelta:2]); |
| 1251 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:3]); |
| 1252 |
| 1253 // Go to entry at index 2 and test API from that state. |
| 1254 [session_controller_ goToEntry:entries[2]]; |
| 1255 ASSERT_EQ(2, [session_controller_ currentNavigationIndex]); |
| 1256 EXPECT_EQ(1, [session_controller_ indexOfEntryForDelta:-1]); |
| 1257 EXPECT_EQ(-1, [session_controller_ indexOfEntryForDelta:-2]); |
| 1258 EXPECT_EQ(4, [session_controller_ indexOfEntryForDelta:1]); |
| 1259 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:2]); |
| 1260 |
| 1261 // Go to entry at index 4 and test API from that state. |
| 1262 [session_controller_ goToEntry:entries[4]]; |
| 1263 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]); |
| 1264 EXPECT_EQ(2, [session_controller_ indexOfEntryForDelta:-1]); |
| 1265 EXPECT_EQ(1, [session_controller_ indexOfEntryForDelta:-2]); |
| 1266 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:1]); |
| 1267 EXPECT_EQ(6, [session_controller_ indexOfEntryForDelta:2]); |
| 1268 |
| 1269 // Now try with existing transient entry. |
| 1270 [session_controller_ addTransientEntryWithURL:GURL("http://www.example.com")]; |
| 1271 ASSERT_EQ(5U, [[session_controller_ entries] count]); |
| 1272 ASSERT_EQ(4, [session_controller_ currentNavigationIndex]); |
| 1273 EXPECT_EQ(4, [session_controller_ indexOfEntryForDelta:-1]); |
| 1274 EXPECT_EQ(2, [session_controller_ indexOfEntryForDelta:-2]); |
| 1275 EXPECT_EQ(1, [session_controller_ indexOfEntryForDelta:-3]); |
| 1276 EXPECT_EQ(5, [session_controller_ indexOfEntryForDelta:1]); |
| 1277 EXPECT_EQ(6, [session_controller_ indexOfEntryForDelta:2]); |
| 1278 } |
| 1279 |
| 1057 } // anonymous namespace | 1280 } // anonymous namespace |
| OLD | NEW |