| 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. | |
| 378 TEST_F(CRWSessionControllerTest, GoBackFromTheEnd) { | 377 TEST_F(CRWSessionControllerTest, GoBackFromTheEnd) { |
| 379 [session_controller_ | 378 [session_controller_ |
| 380 addPendingEntry:GURL("http://www.url.com") | 379 addPendingEntry:GURL("http://www.url.com") |
| 381 referrer:MakeReferrer("http://www.referer.com") | 380 referrer:MakeReferrer("http://www.referer.com") |
| 382 transition:ui::PAGE_TRANSITION_TYPED | 381 transition:ui::PAGE_TRANSITION_TYPED |
| 383 rendererInitiated:NO]; | 382 rendererInitiated:NO]; |
| 384 [session_controller_ commitPendingEntry]; | 383 [session_controller_ commitPendingEntry]; |
| 385 [session_controller_ | 384 [session_controller_ |
| 386 addPendingEntry:GURL("http://www.url2.com") | 385 addPendingEntry:GURL("http://www.url2.com") |
| 387 referrer:MakeReferrer("http://www.referer.com") | 386 referrer:MakeReferrer("http://www.referer.com") |
| 388 transition:ui::PAGE_TRANSITION_TYPED | 387 transition:ui::PAGE_TRANSITION_TYPED |
| 389 rendererInitiated:NO]; | 388 rendererInitiated:NO]; |
| 390 [session_controller_ commitPendingEntry]; | 389 [session_controller_ commitPendingEntry]; |
| 391 | 390 |
| 392 [session_controller_ goBack]; | 391 [session_controller_ goBack]; |
| 393 | 392 |
| 394 ASSERT_EQ(2U, [[session_controller_ entries] count]); | 393 EXPECT_EQ(2U, [[session_controller_ entries] count]); |
| 395 EXPECT_EQ( | 394 EXPECT_EQ( |
| 396 GURL("http://www.url.com/"), | 395 GURL("http://www.url.com/"), |
| 397 [session_controller_ URLForSessionAtIndex:0U]); | 396 [session_controller_ URLForSessionAtIndex:0U]); |
| 398 EXPECT_EQ( | 397 EXPECT_EQ( |
| 399 GURL("http://www.url2.com/"), | 398 GURL("http://www.url2.com/"), |
| 400 [session_controller_ URLForSessionAtIndex:1U]); | 399 [session_controller_ URLForSessionAtIndex:1U]); |
| 401 EXPECT_EQ( | 400 EXPECT_EQ( |
| 402 [[session_controller_ entries] objectAtIndex:0U], | 401 [[session_controller_ entries] objectAtIndex:0U], |
| 403 [session_controller_ currentEntry]); | 402 [session_controller_ currentEntry]); |
| 404 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U], | |
| 405 [session_controller_ previousEntry]); | |
| 406 } | 403 } |
| 407 | 404 |
| 408 // Tests going back twice from the second and last entry to the first one. | |
| 409 TEST_F(CRWSessionControllerTest, GoBackFromTheBeginning) { | 405 TEST_F(CRWSessionControllerTest, GoBackFromTheBeginning) { |
| 410 [session_controller_ | 406 [session_controller_ |
| 411 addPendingEntry:GURL("http://www.url.com") | 407 addPendingEntry:GURL("http://www.url.com") |
| 412 referrer:MakeReferrer("http://www.referer.com") | 408 referrer:MakeReferrer("http://www.referer.com") |
| 413 transition:ui::PAGE_TRANSITION_TYPED | 409 transition:ui::PAGE_TRANSITION_TYPED |
| 414 rendererInitiated:NO]; | 410 rendererInitiated:NO]; |
| 415 [session_controller_ commitPendingEntry]; | 411 [session_controller_ commitPendingEntry]; |
| 416 [session_controller_ | 412 [session_controller_ |
| 417 addPendingEntry:GURL("http://www.url2.com") | 413 addPendingEntry:GURL("http://www.url2.com") |
| 418 referrer:MakeReferrer("http://www.referer.com") | 414 referrer:MakeReferrer("http://www.referer.com") |
| 419 transition:ui::PAGE_TRANSITION_TYPED | 415 transition:ui::PAGE_TRANSITION_TYPED |
| 420 rendererInitiated:NO]; | 416 rendererInitiated:NO]; |
| 421 [session_controller_ commitPendingEntry]; | 417 [session_controller_ commitPendingEntry]; |
| 422 | 418 |
| 423 [session_controller_ goBack]; | 419 [session_controller_ goBack]; |
| 424 [session_controller_ goBack]; | 420 [session_controller_ goBack]; |
| 425 | 421 |
| 426 EXPECT_EQ(2U, [[session_controller_ entries] count]); | 422 EXPECT_EQ(2U, [[session_controller_ entries] count]); |
| 427 EXPECT_EQ( | 423 EXPECT_EQ( |
| 428 GURL("http://www.url.com/"), | 424 GURL("http://www.url.com/"), |
| 429 [session_controller_ URLForSessionAtIndex:0U]); | 425 [session_controller_ URLForSessionAtIndex:0U]); |
| 430 EXPECT_EQ( | 426 EXPECT_EQ( |
| 431 GURL("http://www.url2.com/"), | 427 GURL("http://www.url2.com/"), |
| 432 [session_controller_ URLForSessionAtIndex:1U]); | 428 [session_controller_ URLForSessionAtIndex:1U]); |
| 433 EXPECT_EQ( | 429 EXPECT_EQ( |
| 434 [[session_controller_ entries] objectAtIndex:0U], | 430 [[session_controller_ entries] objectAtIndex:0U], |
| 435 [session_controller_ currentEntry]); | 431 [session_controller_ currentEntry]); |
| 436 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U], | |
| 437 [session_controller_ previousEntry]); | |
| 438 } | 432 } |
| 439 | 433 |
| 440 TEST_F(CRWSessionControllerTest, GoBackFromTheMiddle) { | 434 TEST_F(CRWSessionControllerTest, GoBackFromTheMiddle) { |
| 441 [session_controller_ | 435 [session_controller_ |
| 442 addPendingEntry:GURL("http://www.url.com") | 436 addPendingEntry:GURL("http://www.url.com") |
| 443 referrer:MakeReferrer("http://www.referer.com") | 437 referrer:MakeReferrer("http://www.referer.com") |
| 444 transition:ui::PAGE_TRANSITION_TYPED | 438 transition:ui::PAGE_TRANSITION_TYPED |
| 445 rendererInitiated:NO]; | 439 rendererInitiated:NO]; |
| 446 [session_controller_ commitPendingEntry]; | 440 [session_controller_ commitPendingEntry]; |
| 447 [session_controller_ | 441 [session_controller_ |
| (...skipping 27 matching lines...) Expand all Loading... |
| 475 [session_controller_ URLForSessionAtIndex:1U]); | 469 [session_controller_ URLForSessionAtIndex:1U]); |
| 476 EXPECT_EQ( | 470 EXPECT_EQ( |
| 477 GURL("http://www.url3.com/"), | 471 GURL("http://www.url3.com/"), |
| 478 [session_controller_ URLForSessionAtIndex:2U]); | 472 [session_controller_ URLForSessionAtIndex:2U]); |
| 479 EXPECT_EQ( | 473 EXPECT_EQ( |
| 480 GURL("http://www.url4.com/"), | 474 GURL("http://www.url4.com/"), |
| 481 [session_controller_ URLForSessionAtIndex:3U]); | 475 [session_controller_ URLForSessionAtIndex:3U]); |
| 482 EXPECT_EQ( | 476 EXPECT_EQ( |
| 483 [[session_controller_ entries] objectAtIndex:1U], | 477 [[session_controller_ entries] objectAtIndex:1U], |
| 484 [session_controller_ currentEntry]); | 478 [session_controller_ currentEntry]); |
| 485 EXPECT_EQ([[session_controller_ entries] objectAtIndex:2U], | |
| 486 [session_controller_ previousEntry]); | |
| 487 } | 479 } |
| 488 | 480 |
| 489 TEST_F(CRWSessionControllerTest, GoBackAndRemove) { | 481 TEST_F(CRWSessionControllerTest, GoBackAndRemove) { |
| 490 [session_controller_ | 482 [session_controller_ |
| 491 addPendingEntry:GURL("http://www.url.com") | 483 addPendingEntry:GURL("http://www.url.com") |
| 492 referrer:MakeReferrer("http://www.referer.com") | 484 referrer:MakeReferrer("http://www.referer.com") |
| 493 transition:ui::PAGE_TRANSITION_TYPED | 485 transition:ui::PAGE_TRANSITION_TYPED |
| 494 rendererInitiated:NO]; | 486 rendererInitiated:NO]; |
| 495 [session_controller_ commitPendingEntry]; | 487 [session_controller_ commitPendingEntry]; |
| 496 [session_controller_ | 488 [session_controller_ |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 | 523 |
| 532 [session_controller_ goForward]; | 524 [session_controller_ goForward]; |
| 533 | 525 |
| 534 EXPECT_EQ(1U, [[session_controller_ entries] count]); | 526 EXPECT_EQ(1U, [[session_controller_ entries] count]); |
| 535 EXPECT_EQ( | 527 EXPECT_EQ( |
| 536 GURL("http://www.url.com/"), | 528 GURL("http://www.url.com/"), |
| 537 [session_controller_ URLForSessionAtIndex:0U]); | 529 [session_controller_ URLForSessionAtIndex:0U]); |
| 538 EXPECT_EQ( | 530 EXPECT_EQ( |
| 539 [[session_controller_ entries] objectAtIndex:0U], | 531 [[session_controller_ entries] objectAtIndex:0U], |
| 540 [session_controller_ currentEntry]); | 532 [session_controller_ currentEntry]); |
| 541 EXPECT_EQ([[session_controller_ entries] objectAtIndex:0U], | |
| 542 [session_controller_ currentEntry]); | |
| 543 } | 533 } |
| 544 | 534 |
| 545 TEST_F(CRWSessionControllerTest, GoForewardFromTheEnd) { | 535 TEST_F(CRWSessionControllerTest, GoForewardFromTheEnd) { |
| 546 [session_controller_ | 536 [session_controller_ |
| 547 addPendingEntry:GURL("http://www.url.com") | 537 addPendingEntry:GURL("http://www.url.com") |
| 548 referrer:MakeReferrer("http://www.referer.com") | 538 referrer:MakeReferrer("http://www.referer.com") |
| 549 transition:ui::PAGE_TRANSITION_TYPED | 539 transition:ui::PAGE_TRANSITION_TYPED |
| 550 rendererInitiated:NO]; | 540 rendererInitiated:NO]; |
| 551 [session_controller_ commitPendingEntry]; | 541 [session_controller_ commitPendingEntry]; |
| 552 [session_controller_ | 542 [session_controller_ |
| 553 addPendingEntry:GURL("http://www.url2.com") | 543 addPendingEntry:GURL("http://www.url2.com") |
| 554 referrer:MakeReferrer("http://www.referer.com") | 544 referrer:MakeReferrer("http://www.referer.com") |
| 555 transition:ui::PAGE_TRANSITION_TYPED | 545 transition:ui::PAGE_TRANSITION_TYPED |
| 556 rendererInitiated:NO]; | 546 rendererInitiated:NO]; |
| 557 [session_controller_ commitPendingEntry]; | 547 [session_controller_ commitPendingEntry]; |
| 558 | 548 |
| 559 [session_controller_ goForward]; | 549 [session_controller_ goForward]; |
| 560 | 550 |
| 561 EXPECT_EQ(2U, [[session_controller_ entries] count]); | 551 EXPECT_EQ(2U, [[session_controller_ entries] count]); |
| 562 EXPECT_EQ( | 552 EXPECT_EQ( |
| 563 GURL("http://www.url.com/"), | 553 GURL("http://www.url.com/"), |
| 564 [session_controller_ URLForSessionAtIndex:0U]); | 554 [session_controller_ URLForSessionAtIndex:0U]); |
| 565 EXPECT_EQ( | 555 EXPECT_EQ( |
| 566 GURL("http://www.url2.com/"), | 556 GURL("http://www.url2.com/"), |
| 567 [session_controller_ URLForSessionAtIndex:1U]); | 557 [session_controller_ URLForSessionAtIndex:1U]); |
| 568 EXPECT_EQ( | 558 EXPECT_EQ( |
| 569 [[session_controller_ entries] objectAtIndex:1U], | 559 [[session_controller_ entries] objectAtIndex:1U], |
| 570 [session_controller_ currentEntry]); | 560 [session_controller_ currentEntry]); |
| 571 EXPECT_EQ([[session_controller_ entries] objectAtIndex:1U], | |
| 572 [session_controller_ currentEntry]); | |
| 573 } | 561 } |
| 574 | 562 |
| 575 TEST_F(CRWSessionControllerTest, GoForewardFromTheBeginning) { | 563 TEST_F(CRWSessionControllerTest, GoForewardFromTheBeginning) { |
| 576 [session_controller_ | 564 [session_controller_ |
| 577 addPendingEntry:GURL("http://www.url.com") | 565 addPendingEntry:GURL("http://www.url.com") |
| 578 referrer:MakeReferrer("http://www.referer.com") | 566 referrer:MakeReferrer("http://www.referer.com") |
| 579 transition:ui::PAGE_TRANSITION_TYPED | 567 transition:ui::PAGE_TRANSITION_TYPED |
| 580 rendererInitiated:NO]; | 568 rendererInitiated:NO]; |
| 581 [session_controller_ commitPendingEntry]; | 569 [session_controller_ commitPendingEntry]; |
| 582 [session_controller_ | 570 [session_controller_ |
| 583 addPendingEntry:GURL("http://www.url2.com") | 571 addPendingEntry:GURL("http://www.url2.com") |
| 584 referrer:MakeReferrer("http://www.referer.com") | 572 referrer:MakeReferrer("http://www.referer.com") |
| 585 transition:ui::PAGE_TRANSITION_TYPED | 573 transition:ui::PAGE_TRANSITION_TYPED |
| 586 rendererInitiated:NO]; | 574 rendererInitiated:NO]; |
| 587 [session_controller_ commitPendingEntry]; | 575 [session_controller_ commitPendingEntry]; |
| 588 | 576 |
| 589 [session_controller_ goBack]; | 577 [session_controller_ goBack]; |
| 590 [session_controller_ goForward]; | 578 [session_controller_ goForward]; |
| 591 | 579 |
| 592 EXPECT_EQ(2U, [[session_controller_ entries] count]); | 580 EXPECT_EQ(2U, [[session_controller_ entries] count]); |
| 593 EXPECT_EQ( | 581 EXPECT_EQ( |
| 594 GURL("http://www.url.com/"), | 582 GURL("http://www.url.com/"), |
| 595 [session_controller_ URLForSessionAtIndex:0U]); | 583 [session_controller_ URLForSessionAtIndex:0U]); |
| 596 EXPECT_EQ( | 584 EXPECT_EQ( |
| 597 GURL("http://www.url2.com/"), | 585 GURL("http://www.url2.com/"), |
| 598 [session_controller_ URLForSessionAtIndex:1U]); | 586 [session_controller_ URLForSessionAtIndex:1U]); |
| 599 EXPECT_EQ( | 587 EXPECT_EQ( |
| 600 [[session_controller_ entries] objectAtIndex:1U], | 588 [[session_controller_ entries] objectAtIndex:1U], |
| 601 [session_controller_ currentEntry]); | 589 [session_controller_ currentEntry]); |
| 602 EXPECT_EQ([[session_controller_ entries] objectAtIndex:0U], | |
| 603 [session_controller_ previousEntry]); | |
| 604 } | 590 } |
| 605 | 591 |
| 606 TEST_F(CRWSessionControllerTest, GoForwardFromTheMiddle) { | 592 TEST_F(CRWSessionControllerTest, GoForwardFromTheMiddle) { |
| 607 [session_controller_ | 593 [session_controller_ |
| 608 addPendingEntry:GURL("http://www.url.com") | 594 addPendingEntry:GURL("http://www.url.com") |
| 609 referrer:MakeReferrer("http://www.referer.com") | 595 referrer:MakeReferrer("http://www.referer.com") |
| 610 transition:ui::PAGE_TRANSITION_TYPED | 596 transition:ui::PAGE_TRANSITION_TYPED |
| 611 rendererInitiated:NO]; | 597 rendererInitiated:NO]; |
| 612 [session_controller_ commitPendingEntry]; | 598 [session_controller_ commitPendingEntry]; |
| 613 [session_controller_ | 599 [session_controller_ |
| (...skipping 28 matching lines...) Expand all Loading... |
| 642 [session_controller_ URLForSessionAtIndex:1U]); | 628 [session_controller_ URLForSessionAtIndex:1U]); |
| 643 EXPECT_EQ( | 629 EXPECT_EQ( |
| 644 GURL("http://www.url3.com/"), | 630 GURL("http://www.url3.com/"), |
| 645 [session_controller_ URLForSessionAtIndex:2U]); | 631 [session_controller_ URLForSessionAtIndex:2U]); |
| 646 EXPECT_EQ( | 632 EXPECT_EQ( |
| 647 GURL("http://www.url4.com/"), | 633 GURL("http://www.url4.com/"), |
| 648 [session_controller_ URLForSessionAtIndex:3U]); | 634 [session_controller_ URLForSessionAtIndex:3U]); |
| 649 EXPECT_EQ( | 635 EXPECT_EQ( |
| 650 [[session_controller_ entries] objectAtIndex:2U], | 636 [[session_controller_ entries] objectAtIndex:2U], |
| 651 [session_controller_ currentEntry]); | 637 [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]); | |
| 755 } | 638 } |
| 756 | 639 |
| 757 TEST_F(CRWSessionControllerTest, CanGoBackWithoutCommitedEntry) { | 640 TEST_F(CRWSessionControllerTest, CanGoBackWithoutCommitedEntry) { |
| 758 EXPECT_FALSE([session_controller_ canGoBack]); | 641 EXPECT_FALSE([session_controller_ canGoBack]); |
| 759 EXPECT_FALSE([session_controller_ canGoDelta:-1]); | |
| 760 } | 642 } |
| 761 | 643 |
| 762 // Tests that |canGoBack| returns NO if there is a transient entry, but no | 644 // Tests that |canGoBack| returns NO if there is a transient entry, but no |
| 763 // committed entries. | 645 // committed entries. |
| 764 TEST_F(CRWSessionControllerTest, CanGoBackWithTransientEntry) { | 646 TEST_F(CRWSessionControllerTest, CanGoBackWithTransientEntry) { |
| 765 [session_controller_ addTransientEntryWithURL:GURL("http://www.url.com")]; | 647 [session_controller_ addTransientEntryWithURL:GURL("http://www.url.com")]; |
| 766 | 648 |
| 767 EXPECT_FALSE([session_controller_ canGoBack]); | 649 EXPECT_FALSE([session_controller_ canGoBack]); |
| 768 } | 650 } |
| 769 | 651 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 782 | 664 |
| 783 TEST_F(CRWSessionControllerTest, CanGoBackWithSingleCommitedEntry) { | 665 TEST_F(CRWSessionControllerTest, CanGoBackWithSingleCommitedEntry) { |
| 784 [session_controller_ | 666 [session_controller_ |
| 785 addPendingEntry:GURL("http://www.url.com") | 667 addPendingEntry:GURL("http://www.url.com") |
| 786 referrer:MakeReferrer("http://www.referer.com") | 668 referrer:MakeReferrer("http://www.referer.com") |
| 787 transition:ui::PAGE_TRANSITION_TYPED | 669 transition:ui::PAGE_TRANSITION_TYPED |
| 788 rendererInitiated:NO]; | 670 rendererInitiated:NO]; |
| 789 [session_controller_ commitPendingEntry]; | 671 [session_controller_ commitPendingEntry]; |
| 790 | 672 |
| 791 EXPECT_FALSE([session_controller_ canGoBack]); | 673 EXPECT_FALSE([session_controller_ canGoBack]); |
| 792 EXPECT_FALSE([session_controller_ canGoDelta:-1]); | |
| 793 } | 674 } |
| 794 | 675 |
| 795 TEST_F(CRWSessionControllerTest, CanGoBackWithMultipleCommitedEntries) { | 676 TEST_F(CRWSessionControllerTest, CanGoBackWithMultipleCommitedEntries) { |
| 796 [session_controller_ | 677 [session_controller_ |
| 797 addPendingEntry:GURL("http://www.url.com") | 678 addPendingEntry:GURL("http://www.url.com") |
| 798 referrer:MakeReferrer("http://www.referer.com") | 679 referrer:MakeReferrer("http://www.referer.com") |
| 799 transition:ui::PAGE_TRANSITION_TYPED | 680 transition:ui::PAGE_TRANSITION_TYPED |
| 800 rendererInitiated:NO]; | 681 rendererInitiated:NO]; |
| 801 [session_controller_ commitPendingEntry]; | 682 [session_controller_ commitPendingEntry]; |
| 802 [session_controller_ | 683 [session_controller_ |
| 803 addPendingEntry:GURL("http://www.url1.com") | 684 addPendingEntry:GURL("http://www.url1.com") |
| 804 referrer:MakeReferrer("http://www.referer.com") | 685 referrer:MakeReferrer("http://www.referer.com") |
| 805 transition:ui::PAGE_TRANSITION_TYPED | 686 transition:ui::PAGE_TRANSITION_TYPED |
| 806 rendererInitiated:NO]; | 687 rendererInitiated:NO]; |
| 807 [session_controller_ commitPendingEntry]; | 688 [session_controller_ commitPendingEntry]; |
| 808 [session_controller_ | 689 [session_controller_ |
| 809 addPendingEntry:GURL("http://www.url2.com") | 690 addPendingEntry:GURL("http://www.url2.com") |
| 810 referrer:MakeReferrer("http://www.referer.com") | 691 referrer:MakeReferrer("http://www.referer.com") |
| 811 transition:ui::PAGE_TRANSITION_TYPED | 692 transition:ui::PAGE_TRANSITION_TYPED |
| 812 rendererInitiated:NO]; | 693 rendererInitiated:NO]; |
| 813 [session_controller_ commitPendingEntry]; | 694 [session_controller_ commitPendingEntry]; |
| 814 | 695 |
| 815 EXPECT_TRUE([session_controller_ canGoBack]); | 696 EXPECT_TRUE([session_controller_ canGoBack]); |
| 816 EXPECT_TRUE([session_controller_ canGoDelta:-1]); | |
| 817 | 697 |
| 818 [session_controller_ goBack]; | 698 [session_controller_ goBack]; |
| 819 EXPECT_TRUE([session_controller_ canGoBack]); | 699 EXPECT_TRUE([session_controller_ canGoBack]); |
| 820 EXPECT_TRUE([session_controller_ canGoDelta:-1]); | |
| 821 | 700 |
| 822 [session_controller_ goBack]; | 701 [session_controller_ goBack]; |
| 823 EXPECT_FALSE([session_controller_ canGoBack]); | 702 EXPECT_FALSE([session_controller_ canGoBack]); |
| 824 EXPECT_FALSE([session_controller_ canGoDelta:-1]); | |
| 825 | 703 |
| 826 [session_controller_ goBack]; | 704 [session_controller_ goBack]; |
| 827 EXPECT_FALSE([session_controller_ canGoBack]); | 705 EXPECT_FALSE([session_controller_ canGoBack]); |
| 828 EXPECT_FALSE([session_controller_ canGoDelta:-1]); | |
| 829 | 706 |
| 830 [session_controller_ goForward]; | 707 [session_controller_ goForward]; |
| 831 EXPECT_TRUE([session_controller_ canGoBack]); | 708 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]); | |
| 856 } | 709 } |
| 857 | 710 |
| 858 TEST_F(CRWSessionControllerTest, CanGoForwardWithoutCommitedEntry) { | 711 TEST_F(CRWSessionControllerTest, CanGoForwardWithoutCommitedEntry) { |
| 859 EXPECT_FALSE([session_controller_ canGoForward]); | 712 EXPECT_FALSE([session_controller_ canGoForward]); |
| 860 EXPECT_FALSE([session_controller_ canGoDelta:1]); | |
| 861 } | 713 } |
| 862 | 714 |
| 863 TEST_F(CRWSessionControllerTest, CanGoForwardWithSingleCommitedEntry) { | 715 TEST_F(CRWSessionControllerTest, CanGoForwardWithSingleCommitedEntry) { |
| 864 [session_controller_ | 716 [session_controller_ |
| 865 addPendingEntry:GURL("http://www.url.com") | 717 addPendingEntry:GURL("http://www.url.com") |
| 866 referrer:MakeReferrer("http://www.referer.com") | 718 referrer:MakeReferrer("http://www.referer.com") |
| 867 transition:ui::PAGE_TRANSITION_TYPED | 719 transition:ui::PAGE_TRANSITION_TYPED |
| 868 rendererInitiated:NO]; | 720 rendererInitiated:NO]; |
| 869 [session_controller_ commitPendingEntry]; | 721 [session_controller_ commitPendingEntry]; |
| 870 | 722 |
| 871 EXPECT_FALSE([session_controller_ canGoForward]); | 723 EXPECT_FALSE([session_controller_ canGoForward]); |
| 872 EXPECT_FALSE([session_controller_ canGoDelta:1]); | |
| 873 } | 724 } |
| 874 | 725 |
| 875 TEST_F(CRWSessionControllerTest, CanGoForwardWithMultipleCommitedEntries) { | 726 TEST_F(CRWSessionControllerTest, CanGoForwardWithMultipleCommitedEntries) { |
| 876 [session_controller_ | 727 [session_controller_ |
| 877 addPendingEntry:GURL("http://www.url.com") | 728 addPendingEntry:GURL("http://www.url.com") |
| 878 referrer:MakeReferrer("http://www.referer.com") | 729 referrer:MakeReferrer("http://www.referer.com") |
| 879 transition:ui::PAGE_TRANSITION_TYPED | 730 transition:ui::PAGE_TRANSITION_TYPED |
| 880 rendererInitiated:NO]; | 731 rendererInitiated:NO]; |
| 881 [session_controller_ commitPendingEntry]; | 732 [session_controller_ commitPendingEntry]; |
| 882 [session_controller_ | 733 [session_controller_ |
| 883 addPendingEntry:GURL("http://www.url1.com") | 734 addPendingEntry:GURL("http://www.url1.com") |
| 884 referrer:MakeReferrer("http://www.referer.com") | 735 referrer:MakeReferrer("http://www.referer.com") |
| 885 transition:ui::PAGE_TRANSITION_TYPED | 736 transition:ui::PAGE_TRANSITION_TYPED |
| 886 rendererInitiated:NO]; | 737 rendererInitiated:NO]; |
| 887 [session_controller_ commitPendingEntry]; | 738 [session_controller_ commitPendingEntry]; |
| 888 [session_controller_ | 739 [session_controller_ |
| 889 addPendingEntry:GURL("http://www.url2.com") | 740 addPendingEntry:GURL("http://www.url2.com") |
| 890 referrer:MakeReferrer("http://www.referer.com") | 741 referrer:MakeReferrer("http://www.referer.com") |
| 891 transition:ui::PAGE_TRANSITION_TYPED | 742 transition:ui::PAGE_TRANSITION_TYPED |
| 892 rendererInitiated:NO]; | 743 rendererInitiated:NO]; |
| 893 [session_controller_ commitPendingEntry]; | 744 [session_controller_ commitPendingEntry]; |
| 894 | 745 |
| 895 EXPECT_FALSE([session_controller_ canGoForward]); | 746 EXPECT_FALSE([session_controller_ canGoForward]); |
| 896 EXPECT_FALSE([session_controller_ canGoDelta:1]); | |
| 897 | 747 |
| 898 [session_controller_ goBack]; | 748 [session_controller_ goBack]; |
| 899 EXPECT_TRUE([session_controller_ canGoForward]); | 749 EXPECT_TRUE([session_controller_ canGoForward]); |
| 900 EXPECT_TRUE([session_controller_ canGoDelta:1]); | |
| 901 | 750 |
| 902 [session_controller_ goBack]; | 751 [session_controller_ goBack]; |
| 903 EXPECT_TRUE([session_controller_ canGoForward]); | 752 EXPECT_TRUE([session_controller_ canGoForward]); |
| 904 EXPECT_TRUE([session_controller_ canGoDelta:1]); | |
| 905 | 753 |
| 906 [session_controller_ goForward]; | 754 [session_controller_ goForward]; |
| 907 EXPECT_TRUE([session_controller_ canGoForward]); | 755 EXPECT_TRUE([session_controller_ canGoForward]); |
| 908 EXPECT_TRUE([session_controller_ canGoDelta:1]); | |
| 909 | 756 |
| 910 [session_controller_ goForward]; | 757 [session_controller_ goForward]; |
| 911 EXPECT_FALSE([session_controller_ canGoForward]); | 758 EXPECT_FALSE([session_controller_ canGoForward]); |
| 912 EXPECT_FALSE([session_controller_ canGoDelta:1]); | |
| 913 } | 759 } |
| 914 | 760 |
| 915 // Helper to create a NavigationItem. Caller is responsible for freeing | 761 // Helper to create a NavigationItem. Caller is responsible for freeing |
| 916 // the memory. | 762 // the memory. |
| 917 web::NavigationItem* CreateNavigationItem(const std::string& url, | 763 web::NavigationItem* CreateNavigationItem(const std::string& url, |
| 918 const std::string& referrer, | 764 const std::string& referrer, |
| 919 NSString* title) { | 765 NSString* title) { |
| 920 web::Referrer referrer_object(GURL(referrer), | 766 web::Referrer referrer_object(GURL(referrer), |
| 921 web::ReferrerPolicyDefault); | 767 web::ReferrerPolicyDefault); |
| 922 web::NavigationItemImpl* navigation_item = new web::NavigationItemImpl(); | 768 web::NavigationItemImpl* navigation_item = new web::NavigationItemImpl(); |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1201 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 1047 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); |
| 1202 | 1048 |
| 1203 // Remove an entry and attempt to go it. Ensure it outlives the removal. | 1049 // Remove an entry and attempt to go it. Ensure it outlives the removal. |
| 1204 base::scoped_nsobject<CRWSessionEntry> entry3( | 1050 base::scoped_nsobject<CRWSessionEntry> entry3( |
| 1205 [[session_controller_.get().entries objectAtIndex:3] retain]); | 1051 [[session_controller_.get().entries objectAtIndex:3] retain]); |
| 1206 [session_controller_ removeEntryAtIndex:3]; | 1052 [session_controller_ removeEntryAtIndex:3]; |
| 1207 [session_controller_ goToEntry:entry3]; | 1053 [session_controller_ goToEntry:entry3]; |
| 1208 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); | 1054 EXPECT_EQ(1, session_controller_.get().currentNavigationIndex); |
| 1209 } | 1055 } |
| 1210 | 1056 |
| 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 | |
| 1280 } // anonymous namespace | 1057 } // anonymous namespace |
| OLD | NEW |