Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: content/browser/frame_host/navigation_controller_impl_unittest.cc

Issue 562603002: Move PageTransition from //content/public/common to //ui/base (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/files/file_util.h" 7 #include "base/files/file_util.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 } 347 }
348 348
349 TEST_F(NavigationControllerTest, LoadURL) { 349 TEST_F(NavigationControllerTest, LoadURL) {
350 NavigationControllerImpl& controller = controller_impl(); 350 NavigationControllerImpl& controller = controller_impl();
351 TestNotificationTracker notifications; 351 TestNotificationTracker notifications;
352 RegisterForAllNavNotifications(&notifications, &controller); 352 RegisterForAllNavNotifications(&notifications, &controller);
353 353
354 const GURL url1("http://foo1"); 354 const GURL url1("http://foo1");
355 const GURL url2("http://foo2"); 355 const GURL url2("http://foo2");
356 356
357 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 357 controller.LoadURL(
358 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
358 // Creating a pending notification should not have issued any of the 359 // Creating a pending notification should not have issued any of the
359 // notifications we're listening for. 360 // notifications we're listening for.
360 EXPECT_EQ(0U, notifications.size()); 361 EXPECT_EQ(0U, notifications.size());
361 362
362 // The load should now be pending. 363 // The load should now be pending.
363 EXPECT_EQ(controller.GetEntryCount(), 0); 364 EXPECT_EQ(controller.GetEntryCount(), 0);
364 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), -1); 365 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), -1);
365 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 366 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
366 EXPECT_FALSE(controller.GetLastCommittedEntry()); 367 EXPECT_FALSE(controller.GetLastCommittedEntry());
367 ASSERT_TRUE(controller.GetPendingEntry()); 368 ASSERT_TRUE(controller.GetPendingEntry());
(...skipping 23 matching lines...) Expand all
391 EXPECT_FALSE(controller.CanGoBack()); 392 EXPECT_FALSE(controller.CanGoBack());
392 EXPECT_FALSE(controller.CanGoForward()); 393 EXPECT_FALSE(controller.CanGoForward());
393 EXPECT_EQ(contents()->GetMaxPageID(), 0); 394 EXPECT_EQ(contents()->GetMaxPageID(), 0);
394 EXPECT_EQ(0, NavigationEntryImpl::FromNavigationEntry( 395 EXPECT_EQ(0, NavigationEntryImpl::FromNavigationEntry(
395 controller.GetLastCommittedEntry())->bindings()); 396 controller.GetLastCommittedEntry())->bindings());
396 397
397 // The timestamp should have been set. 398 // The timestamp should have been set.
398 EXPECT_FALSE(controller.GetVisibleEntry()->GetTimestamp().is_null()); 399 EXPECT_FALSE(controller.GetVisibleEntry()->GetTimestamp().is_null());
399 400
400 // Load another... 401 // Load another...
401 controller.LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 402 controller.LoadURL(
403 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
402 404
403 // The load should now be pending. 405 // The load should now be pending.
404 EXPECT_EQ(controller.GetEntryCount(), 1); 406 EXPECT_EQ(controller.GetEntryCount(), 1);
405 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 407 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
406 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 408 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
407 EXPECT_TRUE(controller.GetLastCommittedEntry()); 409 EXPECT_TRUE(controller.GetLastCommittedEntry());
408 ASSERT_TRUE(controller.GetPendingEntry()); 410 ASSERT_TRUE(controller.GetPendingEntry());
409 EXPECT_EQ(controller.GetPendingEntry(), controller.GetVisibleEntry()); 411 EXPECT_EQ(controller.GetPendingEntry(), controller.GetVisibleEntry());
410 // TODO(darin): maybe this should really be true? 412 // TODO(darin): maybe this should really be true?
411 EXPECT_FALSE(controller.CanGoBack()); 413 EXPECT_FALSE(controller.CanGoBack());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 TestNotificationTracker notifications; 450 TestNotificationTracker notifications;
449 RegisterForAllNavNotifications(&notifications, &controller); 451 RegisterForAllNavNotifications(&notifications, &controller);
450 452
451 // Set the clock to always return a timestamp of 1. 453 // Set the clock to always return a timestamp of 1.
452 controller.SetGetTimestampCallbackForTest( 454 controller.SetGetTimestampCallbackForTest(
453 base::Bind(&GetFixedTime, base::Time::FromInternalValue(1))); 455 base::Bind(&GetFixedTime, base::Time::FromInternalValue(1)));
454 456
455 const GURL url1("http://foo1"); 457 const GURL url1("http://foo1");
456 const GURL url2("http://foo2"); 458 const GURL url2("http://foo2");
457 459
458 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 460 controller.LoadURL(
461 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
459 462
460 main_test_rfh()->SendNavigate(0, url1); 463 main_test_rfh()->SendNavigate(0, url1);
461 EXPECT_EQ(1U, navigation_entry_committed_counter_); 464 EXPECT_EQ(1U, navigation_entry_committed_counter_);
462 navigation_entry_committed_counter_ = 0; 465 navigation_entry_committed_counter_ = 0;
463 466
464 // Load another... 467 // Load another...
465 controller.LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 468 controller.LoadURL(
469 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
466 470
467 // Simulate the beforeunload ack for the cross-site transition, and then the 471 // Simulate the beforeunload ack for the cross-site transition, and then the
468 // commit. 472 // commit.
469 test_rvh()->SendBeforeUnloadACK(true); 473 test_rvh()->SendBeforeUnloadACK(true);
470 main_test_rfh()->SendNavigate(1, url2); 474 main_test_rfh()->SendNavigate(1, url2);
471 EXPECT_EQ(1U, navigation_entry_committed_counter_); 475 EXPECT_EQ(1U, navigation_entry_committed_counter_);
472 navigation_entry_committed_counter_ = 0; 476 navigation_entry_committed_counter_ = 0;
473 477
474 // The two loads should now be committed. 478 // The two loads should now be committed.
475 ASSERT_EQ(controller.GetEntryCount(), 2); 479 ASSERT_EQ(controller.GetEntryCount(), 2);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 EXPECT_EQ(load_params.transferred_global_request_id, 511 EXPECT_EQ(load_params.transferred_global_request_id,
508 entry->transferred_global_request_id()); 512 entry->transferred_global_request_id());
509 } 513 }
510 514
511 TEST_F(NavigationControllerTest, LoadURLWithParams) { 515 TEST_F(NavigationControllerTest, LoadURLWithParams) {
512 NavigationControllerImpl& controller = controller_impl(); 516 NavigationControllerImpl& controller = controller_impl();
513 517
514 NavigationController::LoadURLParams load_params(GURL("http://foo")); 518 NavigationController::LoadURLParams load_params(GURL("http://foo"));
515 load_params.referrer = 519 load_params.referrer =
516 Referrer(GURL("http://referrer"), blink::WebReferrerPolicyDefault); 520 Referrer(GURL("http://referrer"), blink::WebReferrerPolicyDefault);
517 load_params.transition_type = PAGE_TRANSITION_GENERATED; 521 load_params.transition_type = ui::PAGE_TRANSITION_GENERATED;
518 load_params.extra_headers = "content-type: text/plain"; 522 load_params.extra_headers = "content-type: text/plain";
519 load_params.load_type = NavigationController::LOAD_TYPE_DEFAULT; 523 load_params.load_type = NavigationController::LOAD_TYPE_DEFAULT;
520 load_params.is_renderer_initiated = true; 524 load_params.is_renderer_initiated = true;
521 load_params.override_user_agent = NavigationController::UA_OVERRIDE_TRUE; 525 load_params.override_user_agent = NavigationController::UA_OVERRIDE_TRUE;
522 load_params.transferred_global_request_id = GlobalRequestID(2, 3); 526 load_params.transferred_global_request_id = GlobalRequestID(2, 3);
523 527
524 controller.LoadURLWithParams(load_params); 528 controller.LoadURLWithParams(load_params);
525 NavigationEntryImpl* entry = 529 NavigationEntryImpl* entry =
526 NavigationEntryImpl::FromNavigationEntry( 530 NavigationEntryImpl::FromNavigationEntry(
527 controller.GetPendingEntry()); 531 controller.GetPendingEntry());
(...skipping 20 matching lines...) Expand all
548 NavigationEntryImpl::FromNavigationEntry( 552 NavigationEntryImpl::FromNavigationEntry(
549 controller.GetPendingEntry()); 553 controller.GetPendingEntry());
550 554
551 CheckNavigationEntryMatchLoadParams(load_params, entry); 555 CheckNavigationEntryMatchLoadParams(load_params, entry);
552 } 556 }
553 557
554 TEST_F(NavigationControllerTest, LoadURLWithExtraParams_HttpPost) { 558 TEST_F(NavigationControllerTest, LoadURLWithExtraParams_HttpPost) {
555 NavigationControllerImpl& controller = controller_impl(); 559 NavigationControllerImpl& controller = controller_impl();
556 560
557 NavigationController::LoadURLParams load_params(GURL("https://posturl")); 561 NavigationController::LoadURLParams load_params(GURL("https://posturl"));
558 load_params.transition_type = PAGE_TRANSITION_TYPED; 562 load_params.transition_type = ui::PAGE_TRANSITION_TYPED;
559 load_params.load_type = 563 load_params.load_type =
560 NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST; 564 NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST;
561 load_params.override_user_agent = NavigationController::UA_OVERRIDE_TRUE; 565 load_params.override_user_agent = NavigationController::UA_OVERRIDE_TRUE;
562 566
563 567
564 const unsigned char* raw_data = 568 const unsigned char* raw_data =
565 reinterpret_cast<const unsigned char*>("d\n\0a2"); 569 reinterpret_cast<const unsigned char*>("d\n\0a2");
566 const int length = 5; 570 const int length = 5;
567 std::vector<unsigned char> post_data_vector(raw_data, raw_data+length); 571 std::vector<unsigned char> post_data_vector(raw_data, raw_data+length);
568 scoped_refptr<base::RefCountedBytes> data = 572 scoped_refptr<base::RefCountedBytes> data =
(...skipping 12 matching lines...) Expand all
581 // new session history entry. This is what happens when you press enter in the 585 // new session history entry. This is what happens when you press enter in the
582 // URL bar to reload: a pending entry is created and then it is discarded when 586 // URL bar to reload: a pending entry is created and then it is discarded when
583 // the load commits (because WebCore didn't actually make a new entry). 587 // the load commits (because WebCore didn't actually make a new entry).
584 TEST_F(NavigationControllerTest, LoadURL_SamePage) { 588 TEST_F(NavigationControllerTest, LoadURL_SamePage) {
585 NavigationControllerImpl& controller = controller_impl(); 589 NavigationControllerImpl& controller = controller_impl();
586 TestNotificationTracker notifications; 590 TestNotificationTracker notifications;
587 RegisterForAllNavNotifications(&notifications, &controller); 591 RegisterForAllNavNotifications(&notifications, &controller);
588 592
589 const GURL url1("http://foo1"); 593 const GURL url1("http://foo1");
590 594
591 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 595 controller.LoadURL(
596 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
592 EXPECT_EQ(0U, notifications.size()); 597 EXPECT_EQ(0U, notifications.size());
593 main_test_rfh()->SendNavigate(0, url1); 598 main_test_rfh()->SendNavigate(0, url1);
594 EXPECT_EQ(1U, navigation_entry_committed_counter_); 599 EXPECT_EQ(1U, navigation_entry_committed_counter_);
595 navigation_entry_committed_counter_ = 0; 600 navigation_entry_committed_counter_ = 0;
596 601
597 ASSERT_TRUE(controller.GetVisibleEntry()); 602 ASSERT_TRUE(controller.GetVisibleEntry());
598 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp(); 603 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp();
599 EXPECT_FALSE(timestamp.is_null()); 604 EXPECT_FALSE(timestamp.is_null());
600 605
601 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 606 controller.LoadURL(
607 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
602 EXPECT_EQ(0U, notifications.size()); 608 EXPECT_EQ(0U, notifications.size());
603 main_test_rfh()->SendNavigate(0, url1); 609 main_test_rfh()->SendNavigate(0, url1);
604 EXPECT_EQ(1U, navigation_entry_committed_counter_); 610 EXPECT_EQ(1U, navigation_entry_committed_counter_);
605 navigation_entry_committed_counter_ = 0; 611 navigation_entry_committed_counter_ = 0;
606 612
607 // We should not have produced a new session history entry. 613 // We should not have produced a new session history entry.
608 EXPECT_EQ(controller.GetEntryCount(), 1); 614 EXPECT_EQ(controller.GetEntryCount(), 1);
609 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 615 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
610 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 616 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
611 EXPECT_TRUE(controller.GetLastCommittedEntry()); 617 EXPECT_TRUE(controller.GetLastCommittedEntry());
(...skipping 11 matching lines...) Expand all
623 629
624 // Load the same page twice, once as a GET and once as a POST. 630 // Load the same page twice, once as a GET and once as a POST.
625 // We should update the post state on the NavigationEntry. 631 // We should update the post state on the NavigationEntry.
626 TEST_F(NavigationControllerTest, LoadURL_SamePage_DifferentMethod) { 632 TEST_F(NavigationControllerTest, LoadURL_SamePage_DifferentMethod) {
627 NavigationControllerImpl& controller = controller_impl(); 633 NavigationControllerImpl& controller = controller_impl();
628 TestNotificationTracker notifications; 634 TestNotificationTracker notifications;
629 RegisterForAllNavNotifications(&notifications, &controller); 635 RegisterForAllNavNotifications(&notifications, &controller);
630 636
631 const GURL url1("http://foo1"); 637 const GURL url1("http://foo1");
632 638
633 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 639 controller.LoadURL(
640 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
634 FrameHostMsg_DidCommitProvisionalLoad_Params params; 641 FrameHostMsg_DidCommitProvisionalLoad_Params params;
635 params.page_id = 0; 642 params.page_id = 0;
636 params.url = url1; 643 params.url = url1;
637 params.transition = PAGE_TRANSITION_TYPED; 644 params.transition = ui::PAGE_TRANSITION_TYPED;
638 params.is_post = true; 645 params.is_post = true;
639 params.post_id = 123; 646 params.post_id = 123;
640 params.page_state = PageState::CreateForTesting(url1, false, 0, 0); 647 params.page_state = PageState::CreateForTesting(url1, false, 0, 0);
641 main_test_rfh()->SendNavigateWithParams(&params); 648 main_test_rfh()->SendNavigateWithParams(&params);
642 649
643 // The post data should be visible. 650 // The post data should be visible.
644 NavigationEntry* entry = controller.GetVisibleEntry(); 651 NavigationEntry* entry = controller.GetVisibleEntry();
645 ASSERT_TRUE(entry); 652 ASSERT_TRUE(entry);
646 EXPECT_TRUE(entry->GetHasPostData()); 653 EXPECT_TRUE(entry->GetHasPostData());
647 EXPECT_EQ(entry->GetPostID(), 123); 654 EXPECT_EQ(entry->GetPostID(), 123);
648 655
649 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 656 controller.LoadURL(
657 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
650 main_test_rfh()->SendNavigate(0, url1); 658 main_test_rfh()->SendNavigate(0, url1);
651 659
652 // We should not have produced a new session history entry. 660 // We should not have produced a new session history entry.
653 ASSERT_EQ(controller.GetVisibleEntry(), entry); 661 ASSERT_EQ(controller.GetVisibleEntry(), entry);
654 662
655 // The post data should have been cleared due to the GET. 663 // The post data should have been cleared due to the GET.
656 EXPECT_FALSE(entry->GetHasPostData()); 664 EXPECT_FALSE(entry->GetHasPostData());
657 EXPECT_EQ(entry->GetPostID(), 0); 665 EXPECT_EQ(entry->GetPostID(), 0);
658 } 666 }
659 667
660 // Tests loading a URL but discarding it before the load commits. 668 // Tests loading a URL but discarding it before the load commits.
661 TEST_F(NavigationControllerTest, LoadURL_Discarded) { 669 TEST_F(NavigationControllerTest, LoadURL_Discarded) {
662 NavigationControllerImpl& controller = controller_impl(); 670 NavigationControllerImpl& controller = controller_impl();
663 TestNotificationTracker notifications; 671 TestNotificationTracker notifications;
664 RegisterForAllNavNotifications(&notifications, &controller); 672 RegisterForAllNavNotifications(&notifications, &controller);
665 673
666 const GURL url1("http://foo1"); 674 const GURL url1("http://foo1");
667 const GURL url2("http://foo2"); 675 const GURL url2("http://foo2");
668 676
669 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 677 controller.LoadURL(
678 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
670 EXPECT_EQ(0U, notifications.size()); 679 EXPECT_EQ(0U, notifications.size());
671 main_test_rfh()->SendNavigate(0, url1); 680 main_test_rfh()->SendNavigate(0, url1);
672 EXPECT_EQ(1U, navigation_entry_committed_counter_); 681 EXPECT_EQ(1U, navigation_entry_committed_counter_);
673 navigation_entry_committed_counter_ = 0; 682 navigation_entry_committed_counter_ = 0;
674 683
675 ASSERT_TRUE(controller.GetVisibleEntry()); 684 ASSERT_TRUE(controller.GetVisibleEntry());
676 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp(); 685 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp();
677 EXPECT_FALSE(timestamp.is_null()); 686 EXPECT_FALSE(timestamp.is_null());
678 687
679 controller.LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 688 controller.LoadURL(
689 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
680 controller.DiscardNonCommittedEntries(); 690 controller.DiscardNonCommittedEntries();
681 EXPECT_EQ(0U, notifications.size()); 691 EXPECT_EQ(0U, notifications.size());
682 692
683 // Should not have produced a new session history entry. 693 // Should not have produced a new session history entry.
684 EXPECT_EQ(controller.GetEntryCount(), 1); 694 EXPECT_EQ(controller.GetEntryCount(), 1);
685 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 695 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
686 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 696 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
687 EXPECT_TRUE(controller.GetLastCommittedEntry()); 697 EXPECT_TRUE(controller.GetLastCommittedEntry());
688 EXPECT_FALSE(controller.GetPendingEntry()); 698 EXPECT_FALSE(controller.GetPendingEntry());
689 ASSERT_TRUE(controller.GetVisibleEntry()); 699 ASSERT_TRUE(controller.GetVisibleEntry());
690 EXPECT_FALSE(controller.CanGoBack()); 700 EXPECT_FALSE(controller.CanGoBack());
691 EXPECT_FALSE(controller.CanGoForward()); 701 EXPECT_FALSE(controller.CanGoForward());
692 702
693 // Timestamp should not have changed. 703 // Timestamp should not have changed.
694 EXPECT_EQ(timestamp, controller.GetVisibleEntry()->GetTimestamp()); 704 EXPECT_EQ(timestamp, controller.GetVisibleEntry()->GetTimestamp());
695 } 705 }
696 706
697 // Tests navigations that come in unrequested. This happens when the user 707 // Tests navigations that come in unrequested. This happens when the user
698 // navigates from the web page, and here we test that there is no pending entry. 708 // navigates from the web page, and here we test that there is no pending entry.
699 TEST_F(NavigationControllerTest, LoadURL_NoPending) { 709 TEST_F(NavigationControllerTest, LoadURL_NoPending) {
700 NavigationControllerImpl& controller = controller_impl(); 710 NavigationControllerImpl& controller = controller_impl();
701 TestNotificationTracker notifications; 711 TestNotificationTracker notifications;
702 RegisterForAllNavNotifications(&notifications, &controller); 712 RegisterForAllNavNotifications(&notifications, &controller);
703 713
704 // First make an existing committed entry. 714 // First make an existing committed entry.
705 const GURL kExistingURL1("http://eh"); 715 const GURL kExistingURL1("http://eh");
706 controller.LoadURL( 716 controller.LoadURL(
707 kExistingURL1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 717 kExistingURL1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
708 main_test_rfh()->SendNavigate(0, kExistingURL1); 718 main_test_rfh()->SendNavigate(0, kExistingURL1);
709 EXPECT_EQ(1U, navigation_entry_committed_counter_); 719 EXPECT_EQ(1U, navigation_entry_committed_counter_);
710 navigation_entry_committed_counter_ = 0; 720 navigation_entry_committed_counter_ = 0;
711 721
712 // Do a new navigation without making a pending one. 722 // Do a new navigation without making a pending one.
713 const GURL kNewURL("http://see"); 723 const GURL kNewURL("http://see");
714 main_test_rfh()->SendNavigate(99, kNewURL); 724 main_test_rfh()->SendNavigate(99, kNewURL);
715 725
716 // There should no longer be any pending entry, and the third navigation we 726 // There should no longer be any pending entry, and the third navigation we
717 // just made should be committed. 727 // just made should be committed.
718 EXPECT_EQ(1U, navigation_entry_committed_counter_); 728 EXPECT_EQ(1U, navigation_entry_committed_counter_);
719 navigation_entry_committed_counter_ = 0; 729 navigation_entry_committed_counter_ = 0;
720 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 730 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
721 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 731 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
722 EXPECT_EQ(kNewURL, controller.GetVisibleEntry()->GetURL()); 732 EXPECT_EQ(kNewURL, controller.GetVisibleEntry()->GetURL());
723 } 733 }
724 734
725 // Tests navigating to a new URL when there is a new pending navigation that is 735 // Tests navigating to a new URL when there is a new pending navigation that is
726 // not the one that just loaded. This will happen if the user types in a URL to 736 // not the one that just loaded. This will happen if the user types in a URL to
727 // somewhere slow, and then navigates the current page before the typed URL 737 // somewhere slow, and then navigates the current page before the typed URL
728 // commits. 738 // commits.
729 TEST_F(NavigationControllerTest, LoadURL_NewPending) { 739 TEST_F(NavigationControllerTest, LoadURL_NewPending) {
730 NavigationControllerImpl& controller = controller_impl(); 740 NavigationControllerImpl& controller = controller_impl();
731 TestNotificationTracker notifications; 741 TestNotificationTracker notifications;
732 RegisterForAllNavNotifications(&notifications, &controller); 742 RegisterForAllNavNotifications(&notifications, &controller);
733 743
734 // First make an existing committed entry. 744 // First make an existing committed entry.
735 const GURL kExistingURL1("http://eh"); 745 const GURL kExistingURL1("http://eh");
736 controller.LoadURL( 746 controller.LoadURL(
737 kExistingURL1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 747 kExistingURL1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
738 main_test_rfh()->SendNavigate(0, kExistingURL1); 748 main_test_rfh()->SendNavigate(0, kExistingURL1);
739 EXPECT_EQ(1U, navigation_entry_committed_counter_); 749 EXPECT_EQ(1U, navigation_entry_committed_counter_);
740 navigation_entry_committed_counter_ = 0; 750 navigation_entry_committed_counter_ = 0;
741 751
742 // Make a pending entry to somewhere new. 752 // Make a pending entry to somewhere new.
743 const GURL kExistingURL2("http://bee"); 753 const GURL kExistingURL2("http://bee");
744 controller.LoadURL( 754 controller.LoadURL(
745 kExistingURL2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 755 kExistingURL2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
746 EXPECT_EQ(0U, notifications.size()); 756 EXPECT_EQ(0U, notifications.size());
747 757
748 // After the beforeunload but before it commits, do a new navigation. 758 // After the beforeunload but before it commits, do a new navigation.
749 test_rvh()->SendBeforeUnloadACK(true); 759 test_rvh()->SendBeforeUnloadACK(true);
750 const GURL kNewURL("http://see"); 760 const GURL kNewURL("http://see");
751 contents()->GetPendingMainFrame()->SendNavigate(3, kNewURL); 761 contents()->GetPendingMainFrame()->SendNavigate(3, kNewURL);
752 762
753 // There should no longer be any pending entry, and the third navigation we 763 // There should no longer be any pending entry, and the third navigation we
754 // just made should be committed. 764 // just made should be committed.
755 EXPECT_EQ(1U, navigation_entry_committed_counter_); 765 EXPECT_EQ(1U, navigation_entry_committed_counter_);
756 navigation_entry_committed_counter_ = 0; 766 navigation_entry_committed_counter_ = 0;
757 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 767 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
758 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 768 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
759 EXPECT_EQ(kNewURL, controller.GetVisibleEntry()->GetURL()); 769 EXPECT_EQ(kNewURL, controller.GetVisibleEntry()->GetURL());
760 } 770 }
761 771
762 // Tests navigating to a new URL when there is a pending back/forward 772 // Tests navigating to a new URL when there is a pending back/forward
763 // navigation. This will happen if the user hits back, but before that commits, 773 // navigation. This will happen if the user hits back, but before that commits,
764 // they navigate somewhere new. 774 // they navigate somewhere new.
765 TEST_F(NavigationControllerTest, LoadURL_ExistingPending) { 775 TEST_F(NavigationControllerTest, LoadURL_ExistingPending) {
766 NavigationControllerImpl& controller = controller_impl(); 776 NavigationControllerImpl& controller = controller_impl();
767 TestNotificationTracker notifications; 777 TestNotificationTracker notifications;
768 RegisterForAllNavNotifications(&notifications, &controller); 778 RegisterForAllNavNotifications(&notifications, &controller);
769 779
770 // First make some history. 780 // First make some history.
771 const GURL kExistingURL1("http://foo/eh"); 781 const GURL kExistingURL1("http://foo/eh");
772 controller.LoadURL( 782 controller.LoadURL(
773 kExistingURL1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 783 kExistingURL1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
774 main_test_rfh()->SendNavigate(0, kExistingURL1); 784 main_test_rfh()->SendNavigate(0, kExistingURL1);
775 EXPECT_EQ(1U, navigation_entry_committed_counter_); 785 EXPECT_EQ(1U, navigation_entry_committed_counter_);
776 navigation_entry_committed_counter_ = 0; 786 navigation_entry_committed_counter_ = 0;
777 787
778 const GURL kExistingURL2("http://foo/bee"); 788 const GURL kExistingURL2("http://foo/bee");
779 controller.LoadURL( 789 controller.LoadURL(
780 kExistingURL2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 790 kExistingURL2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
781 main_test_rfh()->SendNavigate(1, kExistingURL2); 791 main_test_rfh()->SendNavigate(1, kExistingURL2);
782 EXPECT_EQ(1U, navigation_entry_committed_counter_); 792 EXPECT_EQ(1U, navigation_entry_committed_counter_);
783 navigation_entry_committed_counter_ = 0; 793 navigation_entry_committed_counter_ = 0;
784 794
785 // Now make a pending back/forward navigation. The zeroth entry should be 795 // Now make a pending back/forward navigation. The zeroth entry should be
786 // pending. 796 // pending.
787 controller.GoBack(); 797 controller.GoBack();
788 EXPECT_EQ(0U, notifications.size()); 798 EXPECT_EQ(0U, notifications.size());
789 EXPECT_EQ(0, controller.GetPendingEntryIndex()); 799 EXPECT_EQ(0, controller.GetPendingEntryIndex());
790 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 800 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
(...skipping 16 matching lines...) Expand all
807 // navigation to a cross-process, privileged URL. This will happen if the user 817 // navigation to a cross-process, privileged URL. This will happen if the user
808 // hits back, but before that commits, they navigate somewhere new. 818 // hits back, but before that commits, they navigate somewhere new.
809 TEST_F(NavigationControllerTest, LoadURL_PrivilegedPending) { 819 TEST_F(NavigationControllerTest, LoadURL_PrivilegedPending) {
810 NavigationControllerImpl& controller = controller_impl(); 820 NavigationControllerImpl& controller = controller_impl();
811 TestNotificationTracker notifications; 821 TestNotificationTracker notifications;
812 RegisterForAllNavNotifications(&notifications, &controller); 822 RegisterForAllNavNotifications(&notifications, &controller);
813 823
814 // First make some history, starting with a privileged URL. 824 // First make some history, starting with a privileged URL.
815 const GURL kExistingURL1("http://privileged"); 825 const GURL kExistingURL1("http://privileged");
816 controller.LoadURL( 826 controller.LoadURL(
817 kExistingURL1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 827 kExistingURL1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
818 // Pretend it has bindings so we can tell if we incorrectly copy it. 828 // Pretend it has bindings so we can tell if we incorrectly copy it.
819 test_rvh()->AllowBindings(2); 829 test_rvh()->AllowBindings(2);
820 main_test_rfh()->SendNavigate(0, kExistingURL1); 830 main_test_rfh()->SendNavigate(0, kExistingURL1);
821 EXPECT_EQ(1U, navigation_entry_committed_counter_); 831 EXPECT_EQ(1U, navigation_entry_committed_counter_);
822 navigation_entry_committed_counter_ = 0; 832 navigation_entry_committed_counter_ = 0;
823 833
824 // Navigate cross-process to a second URL. 834 // Navigate cross-process to a second URL.
825 const GURL kExistingURL2("http://foo/eh"); 835 const GURL kExistingURL2("http://foo/eh");
826 controller.LoadURL( 836 controller.LoadURL(
827 kExistingURL2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 837 kExistingURL2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
828 test_rvh()->SendBeforeUnloadACK(true); 838 test_rvh()->SendBeforeUnloadACK(true);
829 TestRenderFrameHost* foo_rfh = contents()->GetPendingMainFrame(); 839 TestRenderFrameHost* foo_rfh = contents()->GetPendingMainFrame();
830 foo_rfh->SendNavigate(1, kExistingURL2); 840 foo_rfh->SendNavigate(1, kExistingURL2);
831 EXPECT_EQ(1U, navigation_entry_committed_counter_); 841 EXPECT_EQ(1U, navigation_entry_committed_counter_);
832 navigation_entry_committed_counter_ = 0; 842 navigation_entry_committed_counter_ = 0;
833 843
834 // Now make a pending back/forward navigation to a privileged entry. 844 // Now make a pending back/forward navigation to a privileged entry.
835 // The zeroth entry should be pending. 845 // The zeroth entry should be pending.
836 controller.GoBack(); 846 controller.GoBack();
837 foo_rfh->GetRenderViewHost()->SendBeforeUnloadACK(true); 847 foo_rfh->GetRenderViewHost()->SendBeforeUnloadACK(true);
(...skipping 23 matching lines...) Expand all
861 // This will happen if the user enters a URL, but before that commits, the 871 // This will happen if the user enters a URL, but before that commits, the
862 // current page fires history.back(). 872 // current page fires history.back().
863 TEST_F(NavigationControllerTest, LoadURL_BackPreemptsPending) { 873 TEST_F(NavigationControllerTest, LoadURL_BackPreemptsPending) {
864 NavigationControllerImpl& controller = controller_impl(); 874 NavigationControllerImpl& controller = controller_impl();
865 TestNotificationTracker notifications; 875 TestNotificationTracker notifications;
866 RegisterForAllNavNotifications(&notifications, &controller); 876 RegisterForAllNavNotifications(&notifications, &controller);
867 877
868 // First make some history. 878 // First make some history.
869 const GURL kExistingURL1("http://foo/eh"); 879 const GURL kExistingURL1("http://foo/eh");
870 controller.LoadURL( 880 controller.LoadURL(
871 kExistingURL1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 881 kExistingURL1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
872 main_test_rfh()->SendNavigate(0, kExistingURL1); 882 main_test_rfh()->SendNavigate(0, kExistingURL1);
873 EXPECT_EQ(1U, navigation_entry_committed_counter_); 883 EXPECT_EQ(1U, navigation_entry_committed_counter_);
874 navigation_entry_committed_counter_ = 0; 884 navigation_entry_committed_counter_ = 0;
875 885
876 const GURL kExistingURL2("http://foo/bee"); 886 const GURL kExistingURL2("http://foo/bee");
877 controller.LoadURL( 887 controller.LoadURL(
878 kExistingURL2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 888 kExistingURL2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
879 main_test_rfh()->SendNavigate(1, kExistingURL2); 889 main_test_rfh()->SendNavigate(1, kExistingURL2);
880 EXPECT_EQ(1U, navigation_entry_committed_counter_); 890 EXPECT_EQ(1U, navigation_entry_committed_counter_);
881 navigation_entry_committed_counter_ = 0; 891 navigation_entry_committed_counter_ = 0;
882 892
883 // Now make a pending new navigation. 893 // Now make a pending new navigation.
884 const GURL kNewURL("http://foo/see"); 894 const GURL kNewURL("http://foo/see");
885 controller.LoadURL( 895 controller.LoadURL(
886 kNewURL, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 896 kNewURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
887 EXPECT_EQ(0U, notifications.size()); 897 EXPECT_EQ(0U, notifications.size());
888 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 898 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
889 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 899 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
890 900
891 // Before that commits, a back navigation from the renderer commits. 901 // Before that commits, a back navigation from the renderer commits.
892 main_test_rfh()->SendNavigate(0, kExistingURL1); 902 main_test_rfh()->SendNavigate(0, kExistingURL1);
893 903
894 // There should no longer be any pending entry, and the back navigation we 904 // There should no longer be any pending entry, and the back navigation we
895 // just made should be committed. 905 // just made should be committed.
896 EXPECT_EQ(1U, navigation_entry_committed_counter_); 906 EXPECT_EQ(1U, navigation_entry_committed_counter_);
(...skipping 15 matching lines...) Expand all
912 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); 922 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate());
913 EXPECT_FALSE(contents()->GetDelegate()); 923 EXPECT_FALSE(contents()->GetDelegate());
914 contents()->SetDelegate(delegate.get()); 924 contents()->SetDelegate(delegate.get());
915 925
916 // Without any navigations, the renderer starts at about:blank. 926 // Without any navigations, the renderer starts at about:blank.
917 const GURL kExistingURL(url::kAboutBlankURL); 927 const GURL kExistingURL(url::kAboutBlankURL);
918 928
919 // Now make a pending new navigation. 929 // Now make a pending new navigation.
920 const GURL kNewURL("http://eh"); 930 const GURL kNewURL("http://eh");
921 controller.LoadURL( 931 controller.LoadURL(
922 kNewURL, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 932 kNewURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
923 EXPECT_EQ(0U, notifications.size()); 933 EXPECT_EQ(0U, notifications.size());
924 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 934 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
925 EXPECT_TRUE(controller.GetPendingEntry()); 935 EXPECT_TRUE(controller.GetPendingEntry());
926 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); 936 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex());
927 EXPECT_EQ(1, delegate->navigation_state_change_count()); 937 EXPECT_EQ(1, delegate->navigation_state_change_count());
928 938
929 // Before that commits, a document.write and location.reload can cause the 939 // Before that commits, a document.write and location.reload can cause the
930 // renderer to send a FrameNavigate with page_id -1. 940 // renderer to send a FrameNavigate with page_id -1.
931 main_test_rfh()->SendNavigate(-1, kExistingURL); 941 main_test_rfh()->SendNavigate(-1, kExistingURL);
932 942
(...skipping 16 matching lines...) Expand all
949 RegisterForAllNavNotifications(&notifications, &controller); 959 RegisterForAllNavNotifications(&notifications, &controller);
950 960
951 // Set a WebContentsDelegate to listen for state changes. 961 // Set a WebContentsDelegate to listen for state changes.
952 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); 962 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate());
953 EXPECT_FALSE(contents()->GetDelegate()); 963 EXPECT_FALSE(contents()->GetDelegate());
954 contents()->SetDelegate(delegate.get()); 964 contents()->SetDelegate(delegate.get());
955 965
956 // Start with a pending new navigation. 966 // Start with a pending new navigation.
957 const GURL kNewURL("http://eh"); 967 const GURL kNewURL("http://eh");
958 controller.LoadURL( 968 controller.LoadURL(
959 kNewURL, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 969 kNewURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
960 EXPECT_EQ(0U, notifications.size()); 970 EXPECT_EQ(0U, notifications.size());
961 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 971 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
962 EXPECT_TRUE(controller.GetPendingEntry()); 972 EXPECT_TRUE(controller.GetPendingEntry());
963 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex()); 973 EXPECT_EQ(-1, controller.GetLastCommittedEntryIndex());
964 EXPECT_EQ(1, delegate->navigation_state_change_count()); 974 EXPECT_EQ(1, delegate->navigation_state_change_count());
965 975
966 // It may abort before committing, if it's a download or due to a stop or 976 // It may abort before committing, if it's a download or due to a stop or
967 // a new navigation from the user. 977 // a new navigation from the user.
968 FrameHostMsg_DidFailProvisionalLoadWithError_Params params; 978 FrameHostMsg_DidFailProvisionalLoadWithError_Params params;
969 params.error_code = net::ERR_ABORTED; 979 params.error_code = net::ERR_ABORTED;
(...skipping 25 matching lines...) Expand all
995 // Tests that the pending URL is not visible during a renderer-initiated 1005 // Tests that the pending URL is not visible during a renderer-initiated
996 // redirect and abort. See http://crbug.com/83031. 1006 // redirect and abort. See http://crbug.com/83031.
997 TEST_F(NavigationControllerTest, LoadURL_RedirectAbortDoesntShowPendingURL) { 1007 TEST_F(NavigationControllerTest, LoadURL_RedirectAbortDoesntShowPendingURL) {
998 NavigationControllerImpl& controller = controller_impl(); 1008 NavigationControllerImpl& controller = controller_impl();
999 TestNotificationTracker notifications; 1009 TestNotificationTracker notifications;
1000 RegisterForAllNavNotifications(&notifications, &controller); 1010 RegisterForAllNavNotifications(&notifications, &controller);
1001 1011
1002 // First make an existing committed entry. 1012 // First make an existing committed entry.
1003 const GURL kExistingURL("http://foo/eh"); 1013 const GURL kExistingURL("http://foo/eh");
1004 controller.LoadURL(kExistingURL, content::Referrer(), 1014 controller.LoadURL(kExistingURL, content::Referrer(),
1005 content::PAGE_TRANSITION_TYPED, std::string()); 1015 ui::PAGE_TRANSITION_TYPED, std::string());
1006 main_test_rfh()->SendNavigate(1, kExistingURL); 1016 main_test_rfh()->SendNavigate(1, kExistingURL);
1007 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1017 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1008 navigation_entry_committed_counter_ = 0; 1018 navigation_entry_committed_counter_ = 0;
1009 1019
1010 // Set a WebContentsDelegate to listen for state changes. 1020 // Set a WebContentsDelegate to listen for state changes.
1011 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); 1021 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate());
1012 EXPECT_FALSE(contents()->GetDelegate()); 1022 EXPECT_FALSE(contents()->GetDelegate());
1013 contents()->SetDelegate(delegate.get()); 1023 contents()->SetDelegate(delegate.get());
1014 1024
1015 // Now make a pending new navigation, initiated by the renderer. 1025 // Now make a pending new navigation, initiated by the renderer.
1016 const GURL kNewURL("http://foo/bee"); 1026 const GURL kNewURL("http://foo/bee");
1017 NavigationController::LoadURLParams load_url_params(kNewURL); 1027 NavigationController::LoadURLParams load_url_params(kNewURL);
1018 load_url_params.transition_type = PAGE_TRANSITION_TYPED; 1028 load_url_params.transition_type = ui::PAGE_TRANSITION_TYPED;
1019 load_url_params.is_renderer_initiated = true; 1029 load_url_params.is_renderer_initiated = true;
1020 controller.LoadURLWithParams(load_url_params); 1030 controller.LoadURLWithParams(load_url_params);
1021 EXPECT_EQ(0U, notifications.size()); 1031 EXPECT_EQ(0U, notifications.size());
1022 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 1032 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
1023 EXPECT_TRUE(controller.GetPendingEntry()); 1033 EXPECT_TRUE(controller.GetPendingEntry());
1024 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 1034 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
1025 EXPECT_EQ(0, delegate->navigation_state_change_count()); 1035 EXPECT_EQ(0, delegate->navigation_state_change_count());
1026 1036
1027 // The visible entry should be the last committed URL, not the pending one. 1037 // The visible entry should be the last committed URL, not the pending one.
1028 EXPECT_EQ(kExistingURL, controller.GetVisibleEntry()->GetURL()); 1038 EXPECT_EQ(kExistingURL, controller.GetVisibleEntry()->GetURL());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 TEST_F(NavigationControllerTest, LoadURL_WithBindings) { 1079 TEST_F(NavigationControllerTest, LoadURL_WithBindings) {
1070 NavigationControllerImpl& controller = controller_impl(); 1080 NavigationControllerImpl& controller = controller_impl();
1071 TestNotificationTracker notifications; 1081 TestNotificationTracker notifications;
1072 RegisterForAllNavNotifications(&notifications, &controller); 1082 RegisterForAllNavNotifications(&notifications, &controller);
1073 std::vector<GURL> url_chain; 1083 std::vector<GURL> url_chain;
1074 1084
1075 const GURL url1("http://foo1"); 1085 const GURL url1("http://foo1");
1076 const GURL url2("http://foo2"); 1086 const GURL url2("http://foo2");
1077 1087
1078 // Navigate to a first, unprivileged URL. 1088 // Navigate to a first, unprivileged URL.
1079 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1089 controller.LoadURL(
1090 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1080 EXPECT_EQ(NavigationEntryImpl::kInvalidBindings, 1091 EXPECT_EQ(NavigationEntryImpl::kInvalidBindings,
1081 NavigationEntryImpl::FromNavigationEntry( 1092 NavigationEntryImpl::FromNavigationEntry(
1082 controller.GetPendingEntry())->bindings()); 1093 controller.GetPendingEntry())->bindings());
1083 1094
1084 // Commit. 1095 // Commit.
1085 TestRenderFrameHost* orig_rfh = contents()->GetMainFrame(); 1096 TestRenderFrameHost* orig_rfh = contents()->GetMainFrame();
1086 orig_rfh->SendNavigate(0, url1); 1097 orig_rfh->SendNavigate(0, url1);
1087 EXPECT_EQ(controller.GetEntryCount(), 1); 1098 EXPECT_EQ(controller.GetEntryCount(), 1);
1088 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 1099 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
1089 EXPECT_EQ(0, NavigationEntryImpl::FromNavigationEntry( 1100 EXPECT_EQ(0, NavigationEntryImpl::FromNavigationEntry(
1090 controller.GetLastCommittedEntry())->bindings()); 1101 controller.GetLastCommittedEntry())->bindings());
1091 1102
1092 // Manually increase the number of active views in the SiteInstance 1103 // Manually increase the number of active views in the SiteInstance
1093 // that orig_rfh belongs to, to prevent it from being destroyed when 1104 // that orig_rfh belongs to, to prevent it from being destroyed when
1094 // it gets swapped out, so that we can reuse orig_rfh when the 1105 // it gets swapped out, so that we can reuse orig_rfh when the
1095 // controller goes back. 1106 // controller goes back.
1096 static_cast<SiteInstanceImpl*>(orig_rfh->GetSiteInstance())-> 1107 static_cast<SiteInstanceImpl*>(orig_rfh->GetSiteInstance())->
1097 increment_active_view_count(); 1108 increment_active_view_count();
1098 1109
1099 // Navigate to a second URL, simulate the beforeunload ack for the cross-site 1110 // Navigate to a second URL, simulate the beforeunload ack for the cross-site
1100 // transition, and set bindings on the pending RenderViewHost to simulate a 1111 // transition, and set bindings on the pending RenderViewHost to simulate a
1101 // privileged url. 1112 // privileged url.
1102 controller.LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1113 controller.LoadURL(
1114 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1103 orig_rfh->GetRenderViewHost()->SendBeforeUnloadACK(true); 1115 orig_rfh->GetRenderViewHost()->SendBeforeUnloadACK(true);
1104 TestRenderFrameHost* new_rfh = contents()->GetPendingMainFrame(); 1116 TestRenderFrameHost* new_rfh = contents()->GetPendingMainFrame();
1105 new_rfh->GetRenderViewHost()->AllowBindings(1); 1117 new_rfh->GetRenderViewHost()->AllowBindings(1);
1106 new_rfh->SendNavigate(1, url2); 1118 new_rfh->SendNavigate(1, url2);
1107 1119
1108 // The second load should be committed, and bindings should be remembered. 1120 // The second load should be committed, and bindings should be remembered.
1109 EXPECT_EQ(controller.GetEntryCount(), 2); 1121 EXPECT_EQ(controller.GetEntryCount(), 2);
1110 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 1122 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
1111 EXPECT_TRUE(controller.CanGoBack()); 1123 EXPECT_TRUE(controller.CanGoBack());
1112 EXPECT_EQ(1, NavigationEntryImpl::FromNavigationEntry( 1124 EXPECT_EQ(1, NavigationEntryImpl::FromNavigationEntry(
1113 controller.GetLastCommittedEntry())->bindings()); 1125 controller.GetLastCommittedEntry())->bindings());
1114 1126
1115 // Going back, the first entry should still appear unprivileged. 1127 // Going back, the first entry should still appear unprivileged.
1116 controller.GoBack(); 1128 controller.GoBack();
1117 new_rfh->GetRenderViewHost()->SendBeforeUnloadACK(true); 1129 new_rfh->GetRenderViewHost()->SendBeforeUnloadACK(true);
1118 orig_rfh->SendNavigate(0, url1); 1130 orig_rfh->SendNavigate(0, url1);
1119 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 1131 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
1120 EXPECT_EQ(0, NavigationEntryImpl::FromNavigationEntry( 1132 EXPECT_EQ(0, NavigationEntryImpl::FromNavigationEntry(
1121 controller.GetLastCommittedEntry())->bindings()); 1133 controller.GetLastCommittedEntry())->bindings());
1122 } 1134 }
1123 1135
1124 TEST_F(NavigationControllerTest, Reload) { 1136 TEST_F(NavigationControllerTest, Reload) {
1125 NavigationControllerImpl& controller = controller_impl(); 1137 NavigationControllerImpl& controller = controller_impl();
1126 TestNotificationTracker notifications; 1138 TestNotificationTracker notifications;
1127 RegisterForAllNavNotifications(&notifications, &controller); 1139 RegisterForAllNavNotifications(&notifications, &controller);
1128 1140
1129 const GURL url1("http://foo1"); 1141 const GURL url1("http://foo1");
1130 1142
1131 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1143 controller.LoadURL(
1144 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1132 EXPECT_EQ(0U, notifications.size()); 1145 EXPECT_EQ(0U, notifications.size());
1133 main_test_rfh()->SendNavigate(0, url1); 1146 main_test_rfh()->SendNavigate(0, url1);
1134 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1147 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1135 navigation_entry_committed_counter_ = 0; 1148 navigation_entry_committed_counter_ = 0;
1136 ASSERT_TRUE(controller.GetVisibleEntry()); 1149 ASSERT_TRUE(controller.GetVisibleEntry());
1137 controller.GetVisibleEntry()->SetTitle(base::ASCIIToUTF16("Title")); 1150 controller.GetVisibleEntry()->SetTitle(base::ASCIIToUTF16("Title"));
1138 controller.Reload(true); 1151 controller.Reload(true);
1139 EXPECT_EQ(0U, notifications.size()); 1152 EXPECT_EQ(0U, notifications.size());
1140 1153
1141 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp(); 1154 const base::Time timestamp = controller.GetVisibleEntry()->GetTimestamp();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 1187
1175 // Tests what happens when a reload navigation produces a new page. 1188 // Tests what happens when a reload navigation produces a new page.
1176 TEST_F(NavigationControllerTest, Reload_GeneratesNewPage) { 1189 TEST_F(NavigationControllerTest, Reload_GeneratesNewPage) {
1177 NavigationControllerImpl& controller = controller_impl(); 1190 NavigationControllerImpl& controller = controller_impl();
1178 TestNotificationTracker notifications; 1191 TestNotificationTracker notifications;
1179 RegisterForAllNavNotifications(&notifications, &controller); 1192 RegisterForAllNavNotifications(&notifications, &controller);
1180 1193
1181 const GURL url1("http://foo1"); 1194 const GURL url1("http://foo1");
1182 const GURL url2("http://foo2"); 1195 const GURL url2("http://foo2");
1183 1196
1184 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1197 controller.LoadURL(
1198 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1185 main_test_rfh()->SendNavigate(0, url1); 1199 main_test_rfh()->SendNavigate(0, url1);
1186 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1200 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1187 navigation_entry_committed_counter_ = 0; 1201 navigation_entry_committed_counter_ = 0;
1188 1202
1189 controller.Reload(true); 1203 controller.Reload(true);
1190 EXPECT_EQ(0U, notifications.size()); 1204 EXPECT_EQ(0U, notifications.size());
1191 1205
1192 main_test_rfh()->SendNavigate(1, url2); 1206 main_test_rfh()->SendNavigate(1, url2);
1193 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1207 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1194 navigation_entry_committed_counter_ = 0; 1208 navigation_entry_committed_counter_ = 0;
1195 1209
1196 // Now the reload is committed. 1210 // Now the reload is committed.
1197 EXPECT_EQ(controller.GetEntryCount(), 2); 1211 EXPECT_EQ(controller.GetEntryCount(), 2);
1198 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1); 1212 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1);
1199 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 1213 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
1200 EXPECT_TRUE(controller.GetLastCommittedEntry()); 1214 EXPECT_TRUE(controller.GetLastCommittedEntry());
1201 EXPECT_FALSE(controller.GetPendingEntry()); 1215 EXPECT_FALSE(controller.GetPendingEntry());
1202 EXPECT_TRUE(controller.CanGoBack()); 1216 EXPECT_TRUE(controller.CanGoBack());
1203 EXPECT_FALSE(controller.CanGoForward()); 1217 EXPECT_FALSE(controller.CanGoForward());
1204 } 1218 }
1205 1219
1206 // This test ensures that when a guest renderer reloads, the reload goes through 1220 // This test ensures that when a guest renderer reloads, the reload goes through
1207 // without ending up in the "we have a wrong process for the URL" branch in 1221 // without ending up in the "we have a wrong process for the URL" branch in
1208 // NavigationControllerImpl::ReloadInternal. 1222 // NavigationControllerImpl::ReloadInternal.
1209 TEST_F(NavigationControllerTest, ReloadWithGuest) { 1223 TEST_F(NavigationControllerTest, ReloadWithGuest) {
1210 NavigationControllerImpl& controller = controller_impl(); 1224 NavigationControllerImpl& controller = controller_impl();
1211 1225
1212 const GURL url1("http://foo1"); 1226 const GURL url1("http://foo1");
1213 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1227 controller.LoadURL(
1228 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1214 main_test_rfh()->SendNavigate(0, url1); 1229 main_test_rfh()->SendNavigate(0, url1);
1215 ASSERT_TRUE(controller.GetVisibleEntry()); 1230 ASSERT_TRUE(controller.GetVisibleEntry());
1216 1231
1217 // Make the entry believe its RenderProcessHost is a guest. 1232 // Make the entry believe its RenderProcessHost is a guest.
1218 NavigationEntryImpl* entry1 = 1233 NavigationEntryImpl* entry1 =
1219 NavigationEntryImpl::FromNavigationEntry(controller.GetVisibleEntry()); 1234 NavigationEntryImpl::FromNavigationEntry(controller.GetVisibleEntry());
1220 reinterpret_cast<MockRenderProcessHost*>( 1235 reinterpret_cast<MockRenderProcessHost*>(
1221 entry1->site_instance()->GetProcess())->set_is_isolated_guest(true); 1236 entry1->site_instance()->GetProcess())->set_is_isolated_guest(true);
1222 1237
1223 // And reload. 1238 // And reload.
(...skipping 14 matching lines...) Expand all
1238 TEST_F(NavigationControllerTest, ReloadOriginalRequestURL) { 1253 TEST_F(NavigationControllerTest, ReloadOriginalRequestURL) {
1239 NavigationControllerImpl& controller = controller_impl(); 1254 NavigationControllerImpl& controller = controller_impl();
1240 TestNotificationTracker notifications; 1255 TestNotificationTracker notifications;
1241 RegisterForAllNavNotifications(&notifications, &controller); 1256 RegisterForAllNavNotifications(&notifications, &controller);
1242 1257
1243 const GURL original_url("http://foo1"); 1258 const GURL original_url("http://foo1");
1244 const GURL final_url("http://foo2"); 1259 const GURL final_url("http://foo2");
1245 1260
1246 // Load up the original URL, but get redirected. 1261 // Load up the original URL, but get redirected.
1247 controller.LoadURL( 1262 controller.LoadURL(
1248 original_url, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1263 original_url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1249 EXPECT_EQ(0U, notifications.size()); 1264 EXPECT_EQ(0U, notifications.size());
1250 main_test_rfh()->SendNavigateWithOriginalRequestURL( 1265 main_test_rfh()->SendNavigateWithOriginalRequestURL(
1251 0, final_url, original_url); 1266 0, final_url, original_url);
1252 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1267 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1253 navigation_entry_committed_counter_ = 0; 1268 navigation_entry_committed_counter_ = 0;
1254 1269
1255 // The NavigationEntry should save both the original URL and the final 1270 // The NavigationEntry should save both the original URL and the final
1256 // redirected URL. 1271 // redirected URL.
1257 EXPECT_EQ( 1272 EXPECT_EQ(
1258 original_url, controller.GetVisibleEntry()->GetOriginalRequestURL()); 1273 original_url, controller.GetVisibleEntry()->GetOriginalRequestURL());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 EXPECT_FALSE(controller.CanGoForward()); 1308 EXPECT_FALSE(controller.CanGoForward());
1294 } 1309 }
1295 1310
1296 #endif // !defined(OS_ANDROID) 1311 #endif // !defined(OS_ANDROID)
1297 1312
1298 // Test that certain non-persisted NavigationEntryImpl values get reset after 1313 // Test that certain non-persisted NavigationEntryImpl values get reset after
1299 // commit. 1314 // commit.
1300 TEST_F(NavigationControllerTest, ResetEntryValuesAfterCommit) { 1315 TEST_F(NavigationControllerTest, ResetEntryValuesAfterCommit) {
1301 NavigationControllerImpl& controller = controller_impl(); 1316 NavigationControllerImpl& controller = controller_impl();
1302 const GURL url1("http://foo1"); 1317 const GURL url1("http://foo1");
1303 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1318 controller.LoadURL(
1319 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1304 1320
1305 // Set up some sample values. 1321 // Set up some sample values.
1306 const unsigned char* raw_data = 1322 const unsigned char* raw_data =
1307 reinterpret_cast<const unsigned char*>("post\n\n\0data"); 1323 reinterpret_cast<const unsigned char*>("post\n\n\0data");
1308 const int length = 11; 1324 const int length = 11;
1309 std::vector<unsigned char> post_data_vector(raw_data, raw_data+length); 1325 std::vector<unsigned char> post_data_vector(raw_data, raw_data+length);
1310 scoped_refptr<base::RefCountedBytes> post_data = 1326 scoped_refptr<base::RefCountedBytes> post_data =
1311 base::RefCountedBytes::TakeVector(&post_data_vector); 1327 base::RefCountedBytes::TakeVector(&post_data_vector);
1312 GlobalRequestID transfer_id(3, 4); 1328 GlobalRequestID transfer_id(3, 4);
1313 std::vector<GURL> redirects; 1329 std::vector<GURL> redirects;
(...skipping 25 matching lines...) Expand all
1339 EXPECT_EQ(GlobalRequestID(-1, -1), 1355 EXPECT_EQ(GlobalRequestID(-1, -1),
1340 committed_entry->transferred_global_request_id()); 1356 committed_entry->transferred_global_request_id());
1341 EXPECT_FALSE(committed_entry->should_replace_entry()); 1357 EXPECT_FALSE(committed_entry->should_replace_entry());
1342 EXPECT_FALSE(committed_entry->should_clear_history_list()); 1358 EXPECT_FALSE(committed_entry->should_clear_history_list());
1343 } 1359 }
1344 1360
1345 // Test that Redirects are preserved after a commit. 1361 // Test that Redirects are preserved after a commit.
1346 TEST_F(NavigationControllerTest, RedirectsAreNotResetByCommit) { 1362 TEST_F(NavigationControllerTest, RedirectsAreNotResetByCommit) {
1347 NavigationControllerImpl& controller = controller_impl(); 1363 NavigationControllerImpl& controller = controller_impl();
1348 const GURL url1("http://foo1"); 1364 const GURL url1("http://foo1");
1349 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1365 controller.LoadURL(
1366 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1350 1367
1351 // Set up some redirect values. 1368 // Set up some redirect values.
1352 std::vector<GURL> redirects; 1369 std::vector<GURL> redirects;
1353 redirects.push_back(GURL("http://foo2")); 1370 redirects.push_back(GURL("http://foo2"));
1354 1371
1355 // Set redirects on the pending entry. 1372 // Set redirects on the pending entry.
1356 NavigationEntryImpl* pending_entry = 1373 NavigationEntryImpl* pending_entry =
1357 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry()); 1374 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry());
1358 pending_entry->SetRedirectChain(redirects); 1375 pending_entry->SetRedirectChain(redirects);
1359 EXPECT_EQ(1U, pending_entry->GetRedirectChain().size()); 1376 EXPECT_EQ(1U, pending_entry->GetRedirectChain().size());
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1430 TEST_F(NavigationControllerTest, Back_GeneratesNewPage) { 1447 TEST_F(NavigationControllerTest, Back_GeneratesNewPage) {
1431 NavigationControllerImpl& controller = controller_impl(); 1448 NavigationControllerImpl& controller = controller_impl();
1432 TestNotificationTracker notifications; 1449 TestNotificationTracker notifications;
1433 RegisterForAllNavNotifications(&notifications, &controller); 1450 RegisterForAllNavNotifications(&notifications, &controller);
1434 1451
1435 const GURL url1("http://foo/1"); 1452 const GURL url1("http://foo/1");
1436 const GURL url2("http://foo/2"); 1453 const GURL url2("http://foo/2");
1437 const GURL url3("http://foo/3"); 1454 const GURL url3("http://foo/3");
1438 1455
1439 controller.LoadURL( 1456 controller.LoadURL(
1440 url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1457 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1441 main_test_rfh()->SendNavigate(0, url1); 1458 main_test_rfh()->SendNavigate(0, url1);
1442 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1459 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1443 navigation_entry_committed_counter_ = 0; 1460 navigation_entry_committed_counter_ = 0;
1444 1461
1445 controller.LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1462 controller.LoadURL(
1463 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1446 main_test_rfh()->SendNavigate(1, url2); 1464 main_test_rfh()->SendNavigate(1, url2);
1447 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1465 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1448 navigation_entry_committed_counter_ = 0; 1466 navigation_entry_committed_counter_ = 0;
1449 1467
1450 controller.GoBack(); 1468 controller.GoBack();
1451 EXPECT_EQ(0U, notifications.size()); 1469 EXPECT_EQ(0U, notifications.size());
1452 1470
1453 // We should now have a pending navigation to go back. 1471 // We should now have a pending navigation to go back.
1454 EXPECT_EQ(controller.GetEntryCount(), 2); 1472 EXPECT_EQ(controller.GetEntryCount(), 2);
1455 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1); 1473 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1);
(...skipping 26 matching lines...) Expand all
1482 1500
1483 const GURL kUrl1("http://foo1"); 1501 const GURL kUrl1("http://foo1");
1484 const GURL kUrl2("http://foo2"); 1502 const GURL kUrl2("http://foo2");
1485 const GURL kUrl3("http://foo3"); 1503 const GURL kUrl3("http://foo3");
1486 1504
1487 // First navigate two places so we have some back history. 1505 // First navigate two places so we have some back history.
1488 main_test_rfh()->SendNavigate(0, kUrl1); 1506 main_test_rfh()->SendNavigate(0, kUrl1);
1489 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1507 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1490 navigation_entry_committed_counter_ = 0; 1508 navigation_entry_committed_counter_ = 0;
1491 1509
1492 // controller.LoadURL(kUrl2, PAGE_TRANSITION_TYPED); 1510 // controller.LoadURL(kUrl2, ui::PAGE_TRANSITION_TYPED);
1493 main_test_rfh()->SendNavigate(1, kUrl2); 1511 main_test_rfh()->SendNavigate(1, kUrl2);
1494 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1512 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1495 navigation_entry_committed_counter_ = 0; 1513 navigation_entry_committed_counter_ = 0;
1496 1514
1497 // Now start a new pending navigation and go back before it commits. 1515 // Now start a new pending navigation and go back before it commits.
1498 controller.LoadURL(kUrl3, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1516 controller.LoadURL(
1517 kUrl3, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1499 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); 1518 EXPECT_EQ(-1, controller.GetPendingEntryIndex());
1500 EXPECT_EQ(kUrl3, controller.GetPendingEntry()->GetURL()); 1519 EXPECT_EQ(kUrl3, controller.GetPendingEntry()->GetURL());
1501 controller.GoBack(); 1520 controller.GoBack();
1502 1521
1503 // The pending navigation should now be the "back" item and the new one 1522 // The pending navigation should now be the "back" item and the new one
1504 // should be gone. 1523 // should be gone.
1505 EXPECT_EQ(0, controller.GetPendingEntryIndex()); 1524 EXPECT_EQ(0, controller.GetPendingEntryIndex());
1506 EXPECT_EQ(kUrl1, controller.GetPendingEntry()->GetURL()); 1525 EXPECT_EQ(kUrl1, controller.GetPendingEntry()->GetURL());
1507 } 1526 }
1508 1527
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1671 // as SAME_PAGE navigation even when we are redirected to some other page. 1690 // as SAME_PAGE navigation even when we are redirected to some other page.
1672 TEST_F(NavigationControllerTest, Redirect) { 1691 TEST_F(NavigationControllerTest, Redirect) {
1673 NavigationControllerImpl& controller = controller_impl(); 1692 NavigationControllerImpl& controller = controller_impl();
1674 TestNotificationTracker notifications; 1693 TestNotificationTracker notifications;
1675 RegisterForAllNavNotifications(&notifications, &controller); 1694 RegisterForAllNavNotifications(&notifications, &controller);
1676 1695
1677 const GURL url1("http://foo1"); 1696 const GURL url1("http://foo1");
1678 const GURL url2("http://foo2"); // Redirection target 1697 const GURL url2("http://foo2"); // Redirection target
1679 1698
1680 // First request 1699 // First request
1681 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1700 controller.LoadURL(
1701 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1682 1702
1683 EXPECT_EQ(0U, notifications.size()); 1703 EXPECT_EQ(0U, notifications.size());
1684 main_test_rfh()->SendNavigate(0, url2); 1704 main_test_rfh()->SendNavigate(0, url2);
1685 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1705 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1686 navigation_entry_committed_counter_ = 0; 1706 navigation_entry_committed_counter_ = 0;
1687 1707
1688 // Second request 1708 // Second request
1689 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1709 controller.LoadURL(
1710 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1690 1711
1691 EXPECT_TRUE(controller.GetPendingEntry()); 1712 EXPECT_TRUE(controller.GetPendingEntry());
1692 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 1713 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
1693 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); 1714 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL());
1694 1715
1695 FrameHostMsg_DidCommitProvisionalLoad_Params params; 1716 FrameHostMsg_DidCommitProvisionalLoad_Params params;
1696 params.page_id = 0; 1717 params.page_id = 0;
1697 params.url = url2; 1718 params.url = url2;
1698 params.transition = PAGE_TRANSITION_SERVER_REDIRECT; 1719 params.transition = ui::PAGE_TRANSITION_SERVER_REDIRECT;
1699 params.redirects.push_back(GURL("http://foo1")); 1720 params.redirects.push_back(GURL("http://foo1"));
1700 params.redirects.push_back(GURL("http://foo2")); 1721 params.redirects.push_back(GURL("http://foo2"));
1701 params.should_update_history = false; 1722 params.should_update_history = false;
1702 params.gesture = NavigationGestureAuto; 1723 params.gesture = NavigationGestureAuto;
1703 params.is_post = false; 1724 params.is_post = false;
1704 params.page_state = PageState::CreateFromURL(url2); 1725 params.page_state = PageState::CreateFromURL(url2);
1705 1726
1706 LoadCommittedDetails details; 1727 LoadCommittedDetails details;
1707 1728
1708 EXPECT_EQ(0U, notifications.size()); 1729 EXPECT_EQ(0U, notifications.size());
(...skipping 19 matching lines...) Expand all
1728 // must be cleared. http://crbug.com/21245 1749 // must be cleared. http://crbug.com/21245
1729 TEST_F(NavigationControllerTest, PostThenRedirect) { 1750 TEST_F(NavigationControllerTest, PostThenRedirect) {
1730 NavigationControllerImpl& controller = controller_impl(); 1751 NavigationControllerImpl& controller = controller_impl();
1731 TestNotificationTracker notifications; 1752 TestNotificationTracker notifications;
1732 RegisterForAllNavNotifications(&notifications, &controller); 1753 RegisterForAllNavNotifications(&notifications, &controller);
1733 1754
1734 const GURL url1("http://foo1"); 1755 const GURL url1("http://foo1");
1735 const GURL url2("http://foo2"); // Redirection target 1756 const GURL url2("http://foo2"); // Redirection target
1736 1757
1737 // First request as POST 1758 // First request as POST
1738 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1759 controller.LoadURL(
1760 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1739 controller.GetVisibleEntry()->SetHasPostData(true); 1761 controller.GetVisibleEntry()->SetHasPostData(true);
1740 1762
1741 EXPECT_EQ(0U, notifications.size()); 1763 EXPECT_EQ(0U, notifications.size());
1742 main_test_rfh()->SendNavigate(0, url2); 1764 main_test_rfh()->SendNavigate(0, url2);
1743 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1765 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1744 navigation_entry_committed_counter_ = 0; 1766 navigation_entry_committed_counter_ = 0;
1745 1767
1746 // Second request 1768 // Second request
1747 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1769 controller.LoadURL(
1770 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1748 1771
1749 EXPECT_TRUE(controller.GetPendingEntry()); 1772 EXPECT_TRUE(controller.GetPendingEntry());
1750 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 1773 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
1751 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); 1774 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL());
1752 1775
1753 FrameHostMsg_DidCommitProvisionalLoad_Params params; 1776 FrameHostMsg_DidCommitProvisionalLoad_Params params;
1754 params.page_id = 0; 1777 params.page_id = 0;
1755 params.url = url2; 1778 params.url = url2;
1756 params.transition = PAGE_TRANSITION_SERVER_REDIRECT; 1779 params.transition = ui::PAGE_TRANSITION_SERVER_REDIRECT;
1757 params.redirects.push_back(GURL("http://foo1")); 1780 params.redirects.push_back(GURL("http://foo1"));
1758 params.redirects.push_back(GURL("http://foo2")); 1781 params.redirects.push_back(GURL("http://foo2"));
1759 params.should_update_history = false; 1782 params.should_update_history = false;
1760 params.gesture = NavigationGestureAuto; 1783 params.gesture = NavigationGestureAuto;
1761 params.is_post = false; 1784 params.is_post = false;
1762 params.page_state = PageState::CreateFromURL(url2); 1785 params.page_state = PageState::CreateFromURL(url2);
1763 1786
1764 LoadCommittedDetails details; 1787 LoadCommittedDetails details;
1765 1788
1766 EXPECT_EQ(0U, notifications.size()); 1789 EXPECT_EQ(0U, notifications.size());
(...skipping 18 matching lines...) Expand all
1785 // A redirect right off the bat should be a NEW_PAGE. 1808 // A redirect right off the bat should be a NEW_PAGE.
1786 TEST_F(NavigationControllerTest, ImmediateRedirect) { 1809 TEST_F(NavigationControllerTest, ImmediateRedirect) {
1787 NavigationControllerImpl& controller = controller_impl(); 1810 NavigationControllerImpl& controller = controller_impl();
1788 TestNotificationTracker notifications; 1811 TestNotificationTracker notifications;
1789 RegisterForAllNavNotifications(&notifications, &controller); 1812 RegisterForAllNavNotifications(&notifications, &controller);
1790 1813
1791 const GURL url1("http://foo1"); 1814 const GURL url1("http://foo1");
1792 const GURL url2("http://foo2"); // Redirection target 1815 const GURL url2("http://foo2"); // Redirection target
1793 1816
1794 // First request 1817 // First request
1795 controller.LoadURL(url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1818 controller.LoadURL(
1819 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
1796 1820
1797 EXPECT_TRUE(controller.GetPendingEntry()); 1821 EXPECT_TRUE(controller.GetPendingEntry());
1798 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 1822 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
1799 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); 1823 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL());
1800 1824
1801 FrameHostMsg_DidCommitProvisionalLoad_Params params; 1825 FrameHostMsg_DidCommitProvisionalLoad_Params params;
1802 params.page_id = 0; 1826 params.page_id = 0;
1803 params.url = url2; 1827 params.url = url2;
1804 params.transition = PAGE_TRANSITION_SERVER_REDIRECT; 1828 params.transition = ui::PAGE_TRANSITION_SERVER_REDIRECT;
1805 params.redirects.push_back(GURL("http://foo1")); 1829 params.redirects.push_back(GURL("http://foo1"));
1806 params.redirects.push_back(GURL("http://foo2")); 1830 params.redirects.push_back(GURL("http://foo2"));
1807 params.should_update_history = false; 1831 params.should_update_history = false;
1808 params.gesture = NavigationGestureAuto; 1832 params.gesture = NavigationGestureAuto;
1809 params.is_post = false; 1833 params.is_post = false;
1810 params.page_state = PageState::CreateFromURL(url2); 1834 params.page_state = PageState::CreateFromURL(url2);
1811 1835
1812 LoadCommittedDetails details; 1836 LoadCommittedDetails details;
1813 1837
1814 EXPECT_EQ(0U, notifications.size()); 1838 EXPECT_EQ(0U, notifications.size());
(...skipping 23 matching lines...) Expand all
1838 1862
1839 const GURL url1("http://foo1"); 1863 const GURL url1("http://foo1");
1840 main_test_rfh()->SendNavigate(0, url1); 1864 main_test_rfh()->SendNavigate(0, url1);
1841 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1865 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1842 navigation_entry_committed_counter_ = 0; 1866 navigation_entry_committed_counter_ = 0;
1843 1867
1844 const GURL url2("http://foo2"); 1868 const GURL url2("http://foo2");
1845 FrameHostMsg_DidCommitProvisionalLoad_Params params; 1869 FrameHostMsg_DidCommitProvisionalLoad_Params params;
1846 params.page_id = 1; 1870 params.page_id = 1;
1847 params.url = url2; 1871 params.url = url2;
1848 params.transition = PAGE_TRANSITION_MANUAL_SUBFRAME; 1872 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME;
1849 params.should_update_history = false; 1873 params.should_update_history = false;
1850 params.gesture = NavigationGestureUser; 1874 params.gesture = NavigationGestureUser;
1851 params.is_post = false; 1875 params.is_post = false;
1852 params.page_state = PageState::CreateFromURL(url2); 1876 params.page_state = PageState::CreateFromURL(url2);
1853 1877
1854 LoadCommittedDetails details; 1878 LoadCommittedDetails details;
1855 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params, 1879 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
1856 &details)); 1880 &details));
1857 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1881 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1858 navigation_entry_committed_counter_ = 0; 1882 navigation_entry_committed_counter_ = 0;
(...skipping 16 matching lines...) Expand all
1875 TEST_F(NavigationControllerTest, SubframeOnEmptyPage) { 1899 TEST_F(NavigationControllerTest, SubframeOnEmptyPage) {
1876 NavigationControllerImpl& controller = controller_impl(); 1900 NavigationControllerImpl& controller = controller_impl();
1877 TestNotificationTracker notifications; 1901 TestNotificationTracker notifications;
1878 RegisterForAllNavNotifications(&notifications, &controller); 1902 RegisterForAllNavNotifications(&notifications, &controller);
1879 1903
1880 // Navigation controller currently has no entries. 1904 // Navigation controller currently has no entries.
1881 const GURL url("http://foo2"); 1905 const GURL url("http://foo2");
1882 FrameHostMsg_DidCommitProvisionalLoad_Params params; 1906 FrameHostMsg_DidCommitProvisionalLoad_Params params;
1883 params.page_id = 1; 1907 params.page_id = 1;
1884 params.url = url; 1908 params.url = url;
1885 params.transition = PAGE_TRANSITION_AUTO_SUBFRAME; 1909 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
1886 params.should_update_history = false; 1910 params.should_update_history = false;
1887 params.gesture = NavigationGestureAuto; 1911 params.gesture = NavigationGestureAuto;
1888 params.is_post = false; 1912 params.is_post = false;
1889 params.page_state = PageState::CreateFromURL(url); 1913 params.page_state = PageState::CreateFromURL(url);
1890 1914
1891 LoadCommittedDetails details; 1915 LoadCommittedDetails details;
1892 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params, 1916 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params,
1893 &details)); 1917 &details));
1894 EXPECT_EQ(0U, notifications.size()); 1918 EXPECT_EQ(0U, notifications.size());
1895 } 1919 }
1896 1920
1897 // Auto subframes are ones the page loads automatically like ads. They should 1921 // Auto subframes are ones the page loads automatically like ads. They should
1898 // not create new navigation entries. 1922 // not create new navigation entries.
1899 TEST_F(NavigationControllerTest, AutoSubframe) { 1923 TEST_F(NavigationControllerTest, AutoSubframe) {
1900 NavigationControllerImpl& controller = controller_impl(); 1924 NavigationControllerImpl& controller = controller_impl();
1901 TestNotificationTracker notifications; 1925 TestNotificationTracker notifications;
1902 RegisterForAllNavNotifications(&notifications, &controller); 1926 RegisterForAllNavNotifications(&notifications, &controller);
1903 1927
1904 const GURL url1("http://foo1"); 1928 const GURL url1("http://foo1");
1905 main_test_rfh()->SendNavigate(0, url1); 1929 main_test_rfh()->SendNavigate(0, url1);
1906 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1930 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1907 navigation_entry_committed_counter_ = 0; 1931 navigation_entry_committed_counter_ = 0;
1908 1932
1909 const GURL url2("http://foo2"); 1933 const GURL url2("http://foo2");
1910 FrameHostMsg_DidCommitProvisionalLoad_Params params; 1934 FrameHostMsg_DidCommitProvisionalLoad_Params params;
1911 params.page_id = 0; 1935 params.page_id = 0;
1912 params.url = url2; 1936 params.url = url2;
1913 params.transition = PAGE_TRANSITION_AUTO_SUBFRAME; 1937 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
1914 params.should_update_history = false; 1938 params.should_update_history = false;
1915 params.gesture = NavigationGestureUser; 1939 params.gesture = NavigationGestureUser;
1916 params.is_post = false; 1940 params.is_post = false;
1917 params.page_state = PageState::CreateFromURL(url2); 1941 params.page_state = PageState::CreateFromURL(url2);
1918 1942
1919 // Navigating should do nothing. 1943 // Navigating should do nothing.
1920 LoadCommittedDetails details; 1944 LoadCommittedDetails details;
1921 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params, 1945 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params,
1922 &details)); 1946 &details));
1923 EXPECT_EQ(0U, notifications.size()); 1947 EXPECT_EQ(0U, notifications.size());
(...skipping 12 matching lines...) Expand all
1936 const GURL url1("http://foo1"); 1960 const GURL url1("http://foo1");
1937 main_test_rfh()->SendNavigate(0, url1); 1961 main_test_rfh()->SendNavigate(0, url1);
1938 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1962 EXPECT_EQ(1U, navigation_entry_committed_counter_);
1939 navigation_entry_committed_counter_ = 0; 1963 navigation_entry_committed_counter_ = 0;
1940 1964
1941 // First manual subframe navigation. 1965 // First manual subframe navigation.
1942 const GURL url2("http://foo2"); 1966 const GURL url2("http://foo2");
1943 FrameHostMsg_DidCommitProvisionalLoad_Params params; 1967 FrameHostMsg_DidCommitProvisionalLoad_Params params;
1944 params.page_id = 1; 1968 params.page_id = 1;
1945 params.url = url2; 1969 params.url = url2;
1946 params.transition = PAGE_TRANSITION_MANUAL_SUBFRAME; 1970 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME;
1947 params.should_update_history = false; 1971 params.should_update_history = false;
1948 params.gesture = NavigationGestureUser; 1972 params.gesture = NavigationGestureUser;
1949 params.is_post = false; 1973 params.is_post = false;
1950 params.page_state = PageState::CreateFromURL(url2); 1974 params.page_state = PageState::CreateFromURL(url2);
1951 1975
1952 // This should generate a new entry. 1976 // This should generate a new entry.
1953 LoadCommittedDetails details; 1977 LoadCommittedDetails details;
1954 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params, 1978 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
1955 &details)); 1979 &details));
1956 EXPECT_EQ(1U, navigation_entry_committed_counter_); 1980 EXPECT_EQ(1U, navigation_entry_committed_counter_);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2030 const GURL url1("http://foo"); 2054 const GURL url1("http://foo");
2031 main_test_rfh()->SendNavigate(0, url1); 2055 main_test_rfh()->SendNavigate(0, url1);
2032 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2056 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2033 navigation_entry_committed_counter_ = 0; 2057 navigation_entry_committed_counter_ = 0;
2034 2058
2035 // Ensure main page navigation to same url respects the was_within_same_page 2059 // Ensure main page navigation to same url respects the was_within_same_page
2036 // hint provided in the params. 2060 // hint provided in the params.
2037 FrameHostMsg_DidCommitProvisionalLoad_Params self_params; 2061 FrameHostMsg_DidCommitProvisionalLoad_Params self_params;
2038 self_params.page_id = 0; 2062 self_params.page_id = 0;
2039 self_params.url = url1; 2063 self_params.url = url1;
2040 self_params.transition = PAGE_TRANSITION_LINK; 2064 self_params.transition = ui::PAGE_TRANSITION_LINK;
2041 self_params.should_update_history = false; 2065 self_params.should_update_history = false;
2042 self_params.gesture = NavigationGestureUser; 2066 self_params.gesture = NavigationGestureUser;
2043 self_params.is_post = false; 2067 self_params.is_post = false;
2044 self_params.page_state = PageState::CreateFromURL(url1); 2068 self_params.page_state = PageState::CreateFromURL(url1);
2045 self_params.was_within_same_page = true; 2069 self_params.was_within_same_page = true;
2046 2070
2047 LoadCommittedDetails details; 2071 LoadCommittedDetails details;
2048 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), self_params, 2072 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), self_params,
2049 &details)); 2073 &details));
2050 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2074 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2051 navigation_entry_committed_counter_ = 0; 2075 navigation_entry_committed_counter_ = 0;
2052 EXPECT_TRUE(details.is_in_page); 2076 EXPECT_TRUE(details.is_in_page);
2053 EXPECT_TRUE(details.did_replace_entry); 2077 EXPECT_TRUE(details.did_replace_entry);
2054 EXPECT_EQ(1, controller.GetEntryCount()); 2078 EXPECT_EQ(1, controller.GetEntryCount());
2055 2079
2056 // Fragment navigation to a new page_id. 2080 // Fragment navigation to a new page_id.
2057 const GURL url2("http://foo#a"); 2081 const GURL url2("http://foo#a");
2058 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2082 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2059 params.page_id = 1; 2083 params.page_id = 1;
2060 params.url = url2; 2084 params.url = url2;
2061 params.transition = PAGE_TRANSITION_LINK; 2085 params.transition = ui::PAGE_TRANSITION_LINK;
2062 params.should_update_history = false; 2086 params.should_update_history = false;
2063 params.gesture = NavigationGestureUser; 2087 params.gesture = NavigationGestureUser;
2064 params.is_post = false; 2088 params.is_post = false;
2065 params.page_state = PageState::CreateFromURL(url2); 2089 params.page_state = PageState::CreateFromURL(url2);
2066 params.was_within_same_page = true; 2090 params.was_within_same_page = true;
2067 2091
2068 // This should generate a new entry. 2092 // This should generate a new entry.
2069 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params, 2093 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
2070 &details)); 2094 &details));
2071 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2095 EXPECT_EQ(1U, navigation_entry_committed_counter_);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2139 const GURL url1("http://foo"); 2163 const GURL url1("http://foo");
2140 main_test_rfh()->SendNavigate(0, url1); 2164 main_test_rfh()->SendNavigate(0, url1);
2141 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2165 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2142 navigation_entry_committed_counter_ = 0; 2166 navigation_entry_committed_counter_ = 0;
2143 2167
2144 // First navigation. 2168 // First navigation.
2145 const GURL url2("http://foo#a"); 2169 const GURL url2("http://foo#a");
2146 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2170 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2147 params.page_id = 0; // Same page_id 2171 params.page_id = 0; // Same page_id
2148 params.url = url2; 2172 params.url = url2;
2149 params.transition = PAGE_TRANSITION_LINK; 2173 params.transition = ui::PAGE_TRANSITION_LINK;
2150 params.should_update_history = false; 2174 params.should_update_history = false;
2151 params.gesture = NavigationGestureUser; 2175 params.gesture = NavigationGestureUser;
2152 params.is_post = false; 2176 params.is_post = false;
2153 params.page_state = PageState::CreateFromURL(url2); 2177 params.page_state = PageState::CreateFromURL(url2);
2154 params.was_within_same_page = true; 2178 params.was_within_same_page = true;
2155 2179
2156 // This should NOT generate a new entry, nor prune the list. 2180 // This should NOT generate a new entry, nor prune the list.
2157 LoadCommittedDetails details; 2181 LoadCommittedDetails details;
2158 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params, 2182 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
2159 &details)); 2183 &details));
(...skipping 30 matching lines...) Expand all
2190 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2214 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2191 navigation_entry_committed_counter_ = 0; 2215 navigation_entry_committed_counter_ = 0;
2192 } 2216 }
2193 2217
2194 // Navigate within the page. 2218 // Navigate within the page.
2195 { 2219 {
2196 const GURL url("http://foo2/#a"); 2220 const GURL url("http://foo2/#a");
2197 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2221 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2198 params.page_id = 1; // Same page_id 2222 params.page_id = 1; // Same page_id
2199 params.url = url; 2223 params.url = url;
2200 params.transition = PAGE_TRANSITION_LINK; 2224 params.transition = ui::PAGE_TRANSITION_LINK;
2201 params.redirects.push_back(url); 2225 params.redirects.push_back(url);
2202 params.should_update_history = true; 2226 params.should_update_history = true;
2203 params.gesture = NavigationGestureUnknown; 2227 params.gesture = NavigationGestureUnknown;
2204 params.is_post = false; 2228 params.is_post = false;
2205 params.page_state = PageState::CreateFromURL(url); 2229 params.page_state = PageState::CreateFromURL(url);
2206 params.was_within_same_page = true; 2230 params.was_within_same_page = true;
2207 2231
2208 // This should NOT generate a new entry, nor prune the list. 2232 // This should NOT generate a new entry, nor prune the list.
2209 LoadCommittedDetails details; 2233 LoadCommittedDetails details;
2210 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params, 2234 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
2211 &details)); 2235 &details));
2212 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2236 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2213 navigation_entry_committed_counter_ = 0; 2237 navigation_entry_committed_counter_ = 0;
2214 EXPECT_TRUE(details.is_in_page); 2238 EXPECT_TRUE(details.is_in_page);
2215 EXPECT_TRUE(details.did_replace_entry); 2239 EXPECT_TRUE(details.did_replace_entry);
2216 EXPECT_EQ(2, controller.GetEntryCount()); 2240 EXPECT_EQ(2, controller.GetEntryCount());
2217 } 2241 }
2218 2242
2219 // Perform a client redirect to a new page. 2243 // Perform a client redirect to a new page.
2220 { 2244 {
2221 const GURL url("http://foo3/"); 2245 const GURL url("http://foo3/");
2222 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2246 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2223 params.page_id = 2; // New page_id 2247 params.page_id = 2; // New page_id
2224 params.url = url; 2248 params.url = url;
2225 params.transition = PAGE_TRANSITION_CLIENT_REDIRECT; 2249 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT;
2226 params.redirects.push_back(GURL("http://foo2/#a")); 2250 params.redirects.push_back(GURL("http://foo2/#a"));
2227 params.redirects.push_back(url); 2251 params.redirects.push_back(url);
2228 params.should_update_history = true; 2252 params.should_update_history = true;
2229 params.gesture = NavigationGestureUnknown; 2253 params.gesture = NavigationGestureUnknown;
2230 params.is_post = false; 2254 params.is_post = false;
2231 params.page_state = PageState::CreateFromURL(url); 2255 params.page_state = PageState::CreateFromURL(url);
2232 2256
2233 // This SHOULD generate a new entry. 2257 // This SHOULD generate a new entry.
2234 LoadCommittedDetails details; 2258 LoadCommittedDetails details;
2235 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params, 2259 EXPECT_TRUE(controller.RendererDidNavigate(main_test_rfh(), params,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2301 size_t original_count = NavigationControllerImpl::max_entry_count(); 2325 size_t original_count = NavigationControllerImpl::max_entry_count();
2302 const int kMaxEntryCount = 5; 2326 const int kMaxEntryCount = 5;
2303 2327
2304 NavigationControllerImpl::set_max_entry_count_for_testing(kMaxEntryCount); 2328 NavigationControllerImpl::set_max_entry_count_for_testing(kMaxEntryCount);
2305 2329
2306 int url_index; 2330 int url_index;
2307 // Load up to the max count, all entries should be there. 2331 // Load up to the max count, all entries should be there.
2308 for (url_index = 0; url_index < kMaxEntryCount; url_index++) { 2332 for (url_index = 0; url_index < kMaxEntryCount; url_index++) {
2309 GURL url(base::StringPrintf("http://www.a.com/%d", url_index)); 2333 GURL url(base::StringPrintf("http://www.a.com/%d", url_index));
2310 controller.LoadURL( 2334 controller.LoadURL(
2311 url, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2335 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2312 main_test_rfh()->SendNavigate(url_index, url); 2336 main_test_rfh()->SendNavigate(url_index, url);
2313 } 2337 }
2314 2338
2315 EXPECT_EQ(controller.GetEntryCount(), kMaxEntryCount); 2339 EXPECT_EQ(controller.GetEntryCount(), kMaxEntryCount);
2316 2340
2317 // Created a PrunedListener to observe prune notifications. 2341 // Created a PrunedListener to observe prune notifications.
2318 PrunedListener listener(&controller); 2342 PrunedListener listener(&controller);
2319 2343
2320 // Navigate some more. 2344 // Navigate some more.
2321 GURL url(base::StringPrintf("http://www.a.com/%d", url_index)); 2345 GURL url(base::StringPrintf("http://www.a.com/%d", url_index));
2322 controller.LoadURL( 2346 controller.LoadURL(
2323 url, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2347 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2324 main_test_rfh()->SendNavigate(url_index, url); 2348 main_test_rfh()->SendNavigate(url_index, url);
2325 url_index++; 2349 url_index++;
2326 2350
2327 // We should have got a pruned navigation. 2351 // We should have got a pruned navigation.
2328 EXPECT_EQ(1, listener.notification_count_); 2352 EXPECT_EQ(1, listener.notification_count_);
2329 EXPECT_TRUE(listener.details_.from_front); 2353 EXPECT_TRUE(listener.details_.from_front);
2330 EXPECT_EQ(1, listener.details_.count); 2354 EXPECT_EQ(1, listener.details_.count);
2331 2355
2332 // We expect http://www.a.com/0 to be gone. 2356 // We expect http://www.a.com/0 to be gone.
2333 EXPECT_EQ(controller.GetEntryCount(), kMaxEntryCount); 2357 EXPECT_EQ(controller.GetEntryCount(), kMaxEntryCount);
2334 EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(), 2358 EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(),
2335 GURL("http:////www.a.com/1")); 2359 GURL("http:////www.a.com/1"));
2336 2360
2337 // More navigations. 2361 // More navigations.
2338 for (int i = 0; i < 3; i++) { 2362 for (int i = 0; i < 3; i++) {
2339 url = GURL(base::StringPrintf("http:////www.a.com/%d", url_index)); 2363 url = GURL(base::StringPrintf("http:////www.a.com/%d", url_index));
2340 controller.LoadURL( 2364 controller.LoadURL(
2341 url, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2365 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2342 main_test_rfh()->SendNavigate(url_index, url); 2366 main_test_rfh()->SendNavigate(url_index, url);
2343 url_index++; 2367 url_index++;
2344 } 2368 }
2345 EXPECT_EQ(controller.GetEntryCount(), kMaxEntryCount); 2369 EXPECT_EQ(controller.GetEntryCount(), kMaxEntryCount);
2346 EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(), 2370 EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(),
2347 GURL("http:////www.a.com/4")); 2371 GURL("http:////www.a.com/4"));
2348 2372
2349 NavigationControllerImpl::set_max_entry_count_for_testing(original_count); 2373 NavigationControllerImpl::set_max_entry_count_for_testing(original_count);
2350 } 2374 }
2351 2375
2352 // Tests that we can do a restore and navigate to the restored entries and 2376 // Tests that we can do a restore and navigate to the restored entries and
2353 // everything is updated properly. This can be tricky since there is no 2377 // everything is updated properly. This can be tricky since there is no
2354 // SiteInstance for the entries created initially. 2378 // SiteInstance for the entries created initially.
2355 TEST_F(NavigationControllerTest, RestoreNavigate) { 2379 TEST_F(NavigationControllerTest, RestoreNavigate) {
2356 // Create a NavigationController with a restored set of tabs. 2380 // Create a NavigationController with a restored set of tabs.
2357 GURL url("http://foo"); 2381 GURL url("http://foo");
2358 std::vector<NavigationEntry*> entries; 2382 std::vector<NavigationEntry*> entries;
2359 NavigationEntry* entry = NavigationControllerImpl::CreateNavigationEntry( 2383 NavigationEntry* entry = NavigationControllerImpl::CreateNavigationEntry(
2360 url, Referrer(), PAGE_TRANSITION_RELOAD, false, std::string(), 2384 url, Referrer(), ui::PAGE_TRANSITION_RELOAD, false, std::string(),
2361 browser_context()); 2385 browser_context());
2362 entry->SetPageID(0); 2386 entry->SetPageID(0);
2363 entry->SetTitle(base::ASCIIToUTF16("Title")); 2387 entry->SetTitle(base::ASCIIToUTF16("Title"));
2364 entry->SetPageState(PageState::CreateFromEncodedData("state")); 2388 entry->SetPageState(PageState::CreateFromEncodedData("state"));
2365 const base::Time timestamp = base::Time::Now(); 2389 const base::Time timestamp = base::Time::Now();
2366 entry->SetTimestamp(timestamp); 2390 entry->SetTimestamp(timestamp);
2367 entries.push_back(entry); 2391 entries.push_back(entry);
2368 scoped_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>( 2392 scoped_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>(
2369 WebContents::Create(WebContents::CreateParams(browser_context())))); 2393 WebContents::Create(WebContents::CreateParams(browser_context()))));
2370 NavigationControllerImpl& our_controller = our_contents->GetController(); 2394 NavigationControllerImpl& our_controller = our_contents->GetController();
(...skipping 25 matching lines...) Expand all
2396 EXPECT_TRUE(NavigationEntryImpl::FromNavigationEntry( 2420 EXPECT_TRUE(NavigationEntryImpl::FromNavigationEntry(
2397 our_controller.GetEntryAtIndex(0))->site_instance()); 2421 our_controller.GetEntryAtIndex(0))->site_instance());
2398 2422
2399 // Timestamp should remain the same before the navigation finishes. 2423 // Timestamp should remain the same before the navigation finishes.
2400 EXPECT_EQ(timestamp, our_controller.GetEntryAtIndex(0)->GetTimestamp()); 2424 EXPECT_EQ(timestamp, our_controller.GetEntryAtIndex(0)->GetTimestamp());
2401 2425
2402 // Say we navigated to that entry. 2426 // Say we navigated to that entry.
2403 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2427 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2404 params.page_id = 0; 2428 params.page_id = 0;
2405 params.url = url; 2429 params.url = url;
2406 params.transition = PAGE_TRANSITION_LINK; 2430 params.transition = ui::PAGE_TRANSITION_LINK;
2407 params.should_update_history = false; 2431 params.should_update_history = false;
2408 params.gesture = NavigationGestureUser; 2432 params.gesture = NavigationGestureUser;
2409 params.is_post = false; 2433 params.is_post = false;
2410 params.page_state = PageState::CreateFromURL(url); 2434 params.page_state = PageState::CreateFromURL(url);
2411 LoadCommittedDetails details; 2435 LoadCommittedDetails details;
2412 our_controller.RendererDidNavigate(our_contents->GetMainFrame(), params, 2436 our_controller.RendererDidNavigate(our_contents->GetMainFrame(), params,
2413 &details); 2437 &details);
2414 2438
2415 // There should be no longer any pending entry and one committed one. This 2439 // There should be no longer any pending entry and one committed one. This
2416 // means that we were able to locate the entry, assign its site instance, and 2440 // means that we were able to locate the entry, assign its site instance, and
(...skipping 13 matching lines...) Expand all
2430 EXPECT_GE(our_controller.GetEntryAtIndex(0)->GetTimestamp(), timestamp); 2454 EXPECT_GE(our_controller.GetEntryAtIndex(0)->GetTimestamp(), timestamp);
2431 } 2455 }
2432 2456
2433 // Tests that we can still navigate to a restored entry after a different 2457 // Tests that we can still navigate to a restored entry after a different
2434 // navigation fails and clears the pending entry. http://crbug.com/90085 2458 // navigation fails and clears the pending entry. http://crbug.com/90085
2435 TEST_F(NavigationControllerTest, RestoreNavigateAfterFailure) { 2459 TEST_F(NavigationControllerTest, RestoreNavigateAfterFailure) {
2436 // Create a NavigationController with a restored set of tabs. 2460 // Create a NavigationController with a restored set of tabs.
2437 GURL url("http://foo"); 2461 GURL url("http://foo");
2438 std::vector<NavigationEntry*> entries; 2462 std::vector<NavigationEntry*> entries;
2439 NavigationEntry* entry = NavigationControllerImpl::CreateNavigationEntry( 2463 NavigationEntry* entry = NavigationControllerImpl::CreateNavigationEntry(
2440 url, Referrer(), PAGE_TRANSITION_RELOAD, false, std::string(), 2464 url, Referrer(), ui::PAGE_TRANSITION_RELOAD, false, std::string(),
2441 browser_context()); 2465 browser_context());
2442 entry->SetPageID(0); 2466 entry->SetPageID(0);
2443 entry->SetTitle(base::ASCIIToUTF16("Title")); 2467 entry->SetTitle(base::ASCIIToUTF16("Title"));
2444 entry->SetPageState(PageState::CreateFromEncodedData("state")); 2468 entry->SetPageState(PageState::CreateFromEncodedData("state"));
2445 entries.push_back(entry); 2469 entries.push_back(entry);
2446 scoped_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>( 2470 scoped_ptr<WebContentsImpl> our_contents(static_cast<WebContentsImpl*>(
2447 WebContents::Create(WebContents::CreateParams(browser_context())))); 2471 WebContents::Create(WebContents::CreateParams(browser_context()))));
2448 NavigationControllerImpl& our_controller = our_contents->GetController(); 2472 NavigationControllerImpl& our_controller = our_contents->GetController();
2449 our_controller.Restore( 2473 our_controller.Restore(
2450 0, NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY, &entries); 2474 0, NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY, &entries);
(...skipping 28 matching lines...) Expand all
2479 fail_load_params.url = url; 2503 fail_load_params.url = url;
2480 fail_load_params.showing_repost_interstitial = false; 2504 fail_load_params.showing_repost_interstitial = false;
2481 main_test_rfh()->OnMessageReceived( 2505 main_test_rfh()->OnMessageReceived(
2482 FrameHostMsg_DidFailProvisionalLoadWithError(0, // routing_id 2506 FrameHostMsg_DidFailProvisionalLoadWithError(0, // routing_id
2483 fail_load_params)); 2507 fail_load_params));
2484 2508
2485 // Now the pending restored entry commits. 2509 // Now the pending restored entry commits.
2486 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2510 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2487 params.page_id = 0; 2511 params.page_id = 0;
2488 params.url = url; 2512 params.url = url;
2489 params.transition = PAGE_TRANSITION_LINK; 2513 params.transition = ui::PAGE_TRANSITION_LINK;
2490 params.should_update_history = false; 2514 params.should_update_history = false;
2491 params.gesture = NavigationGestureUser; 2515 params.gesture = NavigationGestureUser;
2492 params.is_post = false; 2516 params.is_post = false;
2493 params.page_state = PageState::CreateFromURL(url); 2517 params.page_state = PageState::CreateFromURL(url);
2494 LoadCommittedDetails details; 2518 LoadCommittedDetails details;
2495 our_controller.RendererDidNavigate(our_contents->GetMainFrame(), params, 2519 our_controller.RendererDidNavigate(our_contents->GetMainFrame(), params,
2496 &details); 2520 &details);
2497 2521
2498 // There should be no pending entry and one committed one. 2522 // There should be no pending entry and one committed one.
2499 EXPECT_EQ(1, our_controller.GetEntryCount()); 2523 EXPECT_EQ(1, our_controller.GetEntryCount());
2500 EXPECT_EQ(0, our_controller.GetLastCommittedEntryIndex()); 2524 EXPECT_EQ(0, our_controller.GetLastCommittedEntryIndex());
2501 EXPECT_FALSE(our_controller.GetPendingEntry()); 2525 EXPECT_FALSE(our_controller.GetPendingEntry());
2502 EXPECT_EQ(url, 2526 EXPECT_EQ(url,
2503 NavigationEntryImpl::FromNavigationEntry( 2527 NavigationEntryImpl::FromNavigationEntry(
2504 our_controller.GetLastCommittedEntry())->site_instance()-> 2528 our_controller.GetLastCommittedEntry())->site_instance()->
2505 GetSiteURL()); 2529 GetSiteURL());
2506 EXPECT_EQ(NavigationEntryImpl::RESTORE_NONE, 2530 EXPECT_EQ(NavigationEntryImpl::RESTORE_NONE,
2507 NavigationEntryImpl::FromNavigationEntry( 2531 NavigationEntryImpl::FromNavigationEntry(
2508 our_controller.GetEntryAtIndex(0))->restore_type()); 2532 our_controller.GetEntryAtIndex(0))->restore_type());
2509 } 2533 }
2510 2534
2511 // Make sure that the page type and stuff is correct after an interstitial. 2535 // Make sure that the page type and stuff is correct after an interstitial.
2512 TEST_F(NavigationControllerTest, Interstitial) { 2536 TEST_F(NavigationControllerTest, Interstitial) {
2513 NavigationControllerImpl& controller = controller_impl(); 2537 NavigationControllerImpl& controller = controller_impl();
2514 // First navigate somewhere normal. 2538 // First navigate somewhere normal.
2515 const GURL url1("http://foo"); 2539 const GURL url1("http://foo");
2516 controller.LoadURL( 2540 controller.LoadURL(
2517 url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2541 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2518 main_test_rfh()->SendNavigate(0, url1); 2542 main_test_rfh()->SendNavigate(0, url1);
2519 2543
2520 // Now navigate somewhere with an interstitial. 2544 // Now navigate somewhere with an interstitial.
2521 const GURL url2("http://bar"); 2545 const GURL url2("http://bar");
2522 controller.LoadURL( 2546 controller.LoadURL(
2523 url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2547 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2524 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())-> 2548 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())->
2525 set_page_type(PAGE_TYPE_INTERSTITIAL); 2549 set_page_type(PAGE_TYPE_INTERSTITIAL);
2526 2550
2527 // At this point the interstitial will be displayed and the load will still 2551 // At this point the interstitial will be displayed and the load will still
2528 // be pending. If the user continues, the load will commit. 2552 // be pending. If the user continues, the load will commit.
2529 main_test_rfh()->SendNavigate(1, url2); 2553 main_test_rfh()->SendNavigate(1, url2);
2530 2554
2531 // The page should be a normal page again. 2555 // The page should be a normal page again.
2532 EXPECT_EQ(url2, controller.GetLastCommittedEntry()->GetURL()); 2556 EXPECT_EQ(url2, controller.GetLastCommittedEntry()->GetURL());
2533 EXPECT_EQ(PAGE_TYPE_NORMAL, 2557 EXPECT_EQ(PAGE_TYPE_NORMAL,
2534 controller.GetLastCommittedEntry()->GetPageType()); 2558 controller.GetLastCommittedEntry()->GetPageType());
2535 } 2559 }
2536 2560
2537 TEST_F(NavigationControllerTest, RemoveEntry) { 2561 TEST_F(NavigationControllerTest, RemoveEntry) {
2538 NavigationControllerImpl& controller = controller_impl(); 2562 NavigationControllerImpl& controller = controller_impl();
2539 const GURL url1("http://foo/1"); 2563 const GURL url1("http://foo/1");
2540 const GURL url2("http://foo/2"); 2564 const GURL url2("http://foo/2");
2541 const GURL url3("http://foo/3"); 2565 const GURL url3("http://foo/3");
2542 const GURL url4("http://foo/4"); 2566 const GURL url4("http://foo/4");
2543 const GURL url5("http://foo/5"); 2567 const GURL url5("http://foo/5");
2544 const GURL pending_url("http://foo/pending"); 2568 const GURL pending_url("http://foo/pending");
2545 const GURL default_url("http://foo/default"); 2569 const GURL default_url("http://foo/default");
2546 2570
2547 controller.LoadURL( 2571 controller.LoadURL(
2548 url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2572 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2549 main_test_rfh()->SendNavigate(0, url1); 2573 main_test_rfh()->SendNavigate(0, url1);
2550 controller.LoadURL( 2574 controller.LoadURL(
2551 url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2575 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2552 main_test_rfh()->SendNavigate(1, url2); 2576 main_test_rfh()->SendNavigate(1, url2);
2553 controller.LoadURL( 2577 controller.LoadURL(
2554 url3, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2578 url3, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2555 main_test_rfh()->SendNavigate(2, url3); 2579 main_test_rfh()->SendNavigate(2, url3);
2556 controller.LoadURL( 2580 controller.LoadURL(
2557 url4, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2581 url4, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2558 main_test_rfh()->SendNavigate(3, url4); 2582 main_test_rfh()->SendNavigate(3, url4);
2559 controller.LoadURL( 2583 controller.LoadURL(
2560 url5, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2584 url5, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2561 main_test_rfh()->SendNavigate(4, url5); 2585 main_test_rfh()->SendNavigate(4, url5);
2562 2586
2563 // Try to remove the last entry. Will fail because it is the current entry. 2587 // Try to remove the last entry. Will fail because it is the current entry.
2564 EXPECT_FALSE(controller.RemoveEntryAtIndex(controller.GetEntryCount() - 1)); 2588 EXPECT_FALSE(controller.RemoveEntryAtIndex(controller.GetEntryCount() - 1));
2565 EXPECT_EQ(5, controller.GetEntryCount()); 2589 EXPECT_EQ(5, controller.GetEntryCount());
2566 EXPECT_EQ(4, controller.GetLastCommittedEntryIndex()); 2590 EXPECT_EQ(4, controller.GetLastCommittedEntryIndex());
2567 2591
2568 // Go back, but don't commit yet. Check that we can't delete the current 2592 // Go back, but don't commit yet. Check that we can't delete the current
2569 // and pending entries. 2593 // and pending entries.
2570 controller.GoBack(); 2594 controller.GoBack();
(...skipping 30 matching lines...) Expand all
2601 2625
2602 const GURL url0("http://foo/0"); 2626 const GURL url0("http://foo/0");
2603 const GURL url1("http://foo/1"); 2627 const GURL url1("http://foo/1");
2604 const GURL url2("http://foo/2"); 2628 const GURL url2("http://foo/2");
2605 const GURL url3("http://foo/3"); 2629 const GURL url3("http://foo/3");
2606 const GURL url3_ref("http://foo/3#bar"); 2630 const GURL url3_ref("http://foo/3#bar");
2607 const GURL url4("http://foo/4"); 2631 const GURL url4("http://foo/4");
2608 const GURL transient_url("http://foo/transient"); 2632 const GURL transient_url("http://foo/transient");
2609 2633
2610 controller.LoadURL( 2634 controller.LoadURL(
2611 url0, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2635 url0, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2612 main_test_rfh()->SendNavigate(0, url0); 2636 main_test_rfh()->SendNavigate(0, url0);
2613 controller.LoadURL( 2637 controller.LoadURL(
2614 url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2638 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2615 main_test_rfh()->SendNavigate(1, url1); 2639 main_test_rfh()->SendNavigate(1, url1);
2616 2640
2617 notifications.Reset(); 2641 notifications.Reset();
2618 2642
2619 // Adding a transient with no pending entry. 2643 // Adding a transient with no pending entry.
2620 NavigationEntryImpl* transient_entry = new NavigationEntryImpl; 2644 NavigationEntryImpl* transient_entry = new NavigationEntryImpl;
2621 transient_entry->SetURL(transient_url); 2645 transient_entry->SetURL(transient_url);
2622 controller.SetTransientEntry(transient_entry); 2646 controller.SetTransientEntry(transient_entry);
2623 2647
2624 // We should not have received any notifications. 2648 // We should not have received any notifications.
2625 EXPECT_EQ(0U, notifications.size()); 2649 EXPECT_EQ(0U, notifications.size());
2626 2650
2627 // Check our state. 2651 // Check our state.
2628 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL()); 2652 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
2629 EXPECT_EQ(controller.GetEntryCount(), 3); 2653 EXPECT_EQ(controller.GetEntryCount(), 3);
2630 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1); 2654 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 1);
2631 EXPECT_EQ(controller.GetPendingEntryIndex(), -1); 2655 EXPECT_EQ(controller.GetPendingEntryIndex(), -1);
2632 EXPECT_TRUE(controller.GetLastCommittedEntry()); 2656 EXPECT_TRUE(controller.GetLastCommittedEntry());
2633 EXPECT_FALSE(controller.GetPendingEntry()); 2657 EXPECT_FALSE(controller.GetPendingEntry());
2634 EXPECT_TRUE(controller.CanGoBack()); 2658 EXPECT_TRUE(controller.CanGoBack());
2635 EXPECT_FALSE(controller.CanGoForward()); 2659 EXPECT_FALSE(controller.CanGoForward());
2636 EXPECT_EQ(contents()->GetMaxPageID(), 1); 2660 EXPECT_EQ(contents()->GetMaxPageID(), 1);
2637 2661
2638 // Navigate. 2662 // Navigate.
2639 controller.LoadURL( 2663 controller.LoadURL(
2640 url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2664 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2641 main_test_rfh()->SendNavigate(2, url2); 2665 main_test_rfh()->SendNavigate(2, url2);
2642 2666
2643 // We should have navigated, transient entry should be gone. 2667 // We should have navigated, transient entry should be gone.
2644 EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL()); 2668 EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL());
2645 EXPECT_EQ(controller.GetEntryCount(), 3); 2669 EXPECT_EQ(controller.GetEntryCount(), 3);
2646 2670
2647 // Add a transient again, then navigate with no pending entry this time. 2671 // Add a transient again, then navigate with no pending entry this time.
2648 transient_entry = new NavigationEntryImpl; 2672 transient_entry = new NavigationEntryImpl;
2649 transient_entry->SetURL(transient_url); 2673 transient_entry->SetURL(transient_url);
2650 controller.SetTransientEntry(transient_entry); 2674 controller.SetTransientEntry(transient_entry);
2651 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL()); 2675 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
2652 main_test_rfh()->SendNavigate(3, url3); 2676 main_test_rfh()->SendNavigate(3, url3);
2653 // Transient entry should be gone. 2677 // Transient entry should be gone.
2654 EXPECT_EQ(url3, controller.GetVisibleEntry()->GetURL()); 2678 EXPECT_EQ(url3, controller.GetVisibleEntry()->GetURL());
2655 EXPECT_EQ(controller.GetEntryCount(), 4); 2679 EXPECT_EQ(controller.GetEntryCount(), 4);
2656 2680
2657 // Initiate a navigation, add a transient then commit navigation. 2681 // Initiate a navigation, add a transient then commit navigation.
2658 controller.LoadURL( 2682 controller.LoadURL(
2659 url4, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2683 url4, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2660 transient_entry = new NavigationEntryImpl; 2684 transient_entry = new NavigationEntryImpl;
2661 transient_entry->SetURL(transient_url); 2685 transient_entry->SetURL(transient_url);
2662 controller.SetTransientEntry(transient_entry); 2686 controller.SetTransientEntry(transient_entry);
2663 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL()); 2687 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
2664 main_test_rfh()->SendNavigate(4, url4); 2688 main_test_rfh()->SendNavigate(4, url4);
2665 EXPECT_EQ(url4, controller.GetVisibleEntry()->GetURL()); 2689 EXPECT_EQ(url4, controller.GetVisibleEntry()->GetURL());
2666 EXPECT_EQ(controller.GetEntryCount(), 5); 2690 EXPECT_EQ(controller.GetEntryCount(), 5);
2667 2691
2668 // Add a transient and go back. This should simply remove the transient. 2692 // Add a transient and go back. This should simply remove the transient.
2669 transient_entry = new NavigationEntryImpl; 2693 transient_entry = new NavigationEntryImpl;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2741 2765
2742 // Test that Reload initiates a new navigation to a transient entry's URL. 2766 // Test that Reload initiates a new navigation to a transient entry's URL.
2743 TEST_F(NavigationControllerTest, ReloadTransient) { 2767 TEST_F(NavigationControllerTest, ReloadTransient) {
2744 NavigationControllerImpl& controller = controller_impl(); 2768 NavigationControllerImpl& controller = controller_impl();
2745 const GURL url0("http://foo/0"); 2769 const GURL url0("http://foo/0");
2746 const GURL url1("http://foo/1"); 2770 const GURL url1("http://foo/1");
2747 const GURL transient_url("http://foo/transient"); 2771 const GURL transient_url("http://foo/transient");
2748 2772
2749 // Load |url0|, and start a pending navigation to |url1|. 2773 // Load |url0|, and start a pending navigation to |url1|.
2750 controller.LoadURL( 2774 controller.LoadURL(
2751 url0, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2775 url0, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2752 main_test_rfh()->SendNavigate(0, url0); 2776 main_test_rfh()->SendNavigate(0, url0);
2753 controller.LoadURL( 2777 controller.LoadURL(
2754 url1, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2778 url1, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2755 2779
2756 // A transient entry is added, interrupting the navigation. 2780 // A transient entry is added, interrupting the navigation.
2757 NavigationEntryImpl* transient_entry = new NavigationEntryImpl; 2781 NavigationEntryImpl* transient_entry = new NavigationEntryImpl;
2758 transient_entry->SetURL(transient_url); 2782 transient_entry->SetURL(transient_url);
2759 controller.SetTransientEntry(transient_entry); 2783 controller.SetTransientEntry(transient_entry);
2760 EXPECT_TRUE(controller.GetTransientEntry()); 2784 EXPECT_TRUE(controller.GetTransientEntry());
2761 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL()); 2785 EXPECT_EQ(transient_url, controller.GetVisibleEntry()->GetURL());
2762 2786
2763 // The page is reloaded, which should remove the pending entry for |url1| and 2787 // The page is reloaded, which should remove the pending entry for |url1| and
2764 // the transient entry for |transient_url|, and start a navigation to 2788 // the transient entry for |transient_url|, and start a navigation to
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2843 TEST_F(NavigationControllerTest, DontShowRendererURLUntilCommit) { 2867 TEST_F(NavigationControllerTest, DontShowRendererURLUntilCommit) {
2844 NavigationControllerImpl& controller = controller_impl(); 2868 NavigationControllerImpl& controller = controller_impl();
2845 TestNotificationTracker notifications; 2869 TestNotificationTracker notifications;
2846 RegisterForAllNavNotifications(&notifications, &controller); 2870 RegisterForAllNavNotifications(&notifications, &controller);
2847 2871
2848 const GURL url0("http://foo/0"); 2872 const GURL url0("http://foo/0");
2849 const GURL url1("http://foo/1"); 2873 const GURL url1("http://foo/1");
2850 2874
2851 // For typed navigations (browser-initiated), both pending and visible entries 2875 // For typed navigations (browser-initiated), both pending and visible entries
2852 // should update before commit. 2876 // should update before commit.
2853 controller.LoadURL(url0, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 2877 controller.LoadURL(
2878 url0, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
2854 EXPECT_EQ(url0, controller.GetPendingEntry()->GetURL()); 2879 EXPECT_EQ(url0, controller.GetPendingEntry()->GetURL());
2855 EXPECT_EQ(url0, controller.GetVisibleEntry()->GetURL()); 2880 EXPECT_EQ(url0, controller.GetVisibleEntry()->GetURL());
2856 main_test_rfh()->SendNavigate(0, url0); 2881 main_test_rfh()->SendNavigate(0, url0);
2857 2882
2858 // For link clicks (renderer-initiated navigations), the pending entry should 2883 // For link clicks (renderer-initiated navigations), the pending entry should
2859 // update before commit but the visible should not. 2884 // update before commit but the visible should not.
2860 NavigationController::LoadURLParams load_url_params(url1); 2885 NavigationController::LoadURLParams load_url_params(url1);
2861 load_url_params.is_renderer_initiated = true; 2886 load_url_params.is_renderer_initiated = true;
2862 controller.LoadURLWithParams(load_url_params); 2887 controller.LoadURLWithParams(load_url_params);
2863 EXPECT_EQ(url0, controller.GetVisibleEntry()->GetURL()); 2888 EXPECT_EQ(url0, controller.GetVisibleEntry()->GetURL());
(...skipping 22 matching lines...) Expand all
2886 NavigationControllerImpl& controller = controller_impl(); 2911 NavigationControllerImpl& controller = controller_impl();
2887 TestNotificationTracker notifications; 2912 TestNotificationTracker notifications;
2888 RegisterForAllNavNotifications(&notifications, &controller); 2913 RegisterForAllNavNotifications(&notifications, &controller);
2889 2914
2890 const GURL url("http://foo"); 2915 const GURL url("http://foo");
2891 2916
2892 // For renderer-initiated navigations in new tabs (with no committed entries), 2917 // For renderer-initiated navigations in new tabs (with no committed entries),
2893 // we show the pending entry's URL as long as the about:blank page is not 2918 // we show the pending entry's URL as long as the about:blank page is not
2894 // modified. 2919 // modified.
2895 NavigationController::LoadURLParams load_url_params(url); 2920 NavigationController::LoadURLParams load_url_params(url);
2896 load_url_params.transition_type = PAGE_TRANSITION_LINK; 2921 load_url_params.transition_type = ui::PAGE_TRANSITION_LINK;
2897 load_url_params.is_renderer_initiated = true; 2922 load_url_params.is_renderer_initiated = true;
2898 controller.LoadURLWithParams(load_url_params); 2923 controller.LoadURLWithParams(load_url_params);
2899 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); 2924 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL());
2900 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); 2925 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL());
2901 EXPECT_TRUE( 2926 EXPECT_TRUE(
2902 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())-> 2927 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())->
2903 is_renderer_initiated()); 2928 is_renderer_initiated());
2904 EXPECT_TRUE(controller.IsInitialNavigation()); 2929 EXPECT_TRUE(controller.IsInitialNavigation());
2905 EXPECT_FALSE(contents()->HasAccessedInitialDocument()); 2930 EXPECT_FALSE(contents()->HasAccessedInitialDocument());
2906 2931
(...skipping 19 matching lines...) Expand all
2926 TestNotificationTracker notifications; 2951 TestNotificationTracker notifications;
2927 RegisterForAllNavNotifications(&notifications, &controller); 2952 RegisterForAllNavNotifications(&notifications, &controller);
2928 2953
2929 const GURL url("http://foo"); 2954 const GURL url("http://foo");
2930 2955
2931 // For browser-initiated navigations in new tabs (with no committed entries), 2956 // For browser-initiated navigations in new tabs (with no committed entries),
2932 // we show the pending entry's URL as long as the about:blank page is not 2957 // we show the pending entry's URL as long as the about:blank page is not
2933 // modified. This is possible in cases that the user types a URL into a popup 2958 // modified. This is possible in cases that the user types a URL into a popup
2934 // tab created with a slow URL. 2959 // tab created with a slow URL.
2935 NavigationController::LoadURLParams load_url_params(url); 2960 NavigationController::LoadURLParams load_url_params(url);
2936 load_url_params.transition_type = PAGE_TRANSITION_TYPED; 2961 load_url_params.transition_type = ui::PAGE_TRANSITION_TYPED;
2937 load_url_params.is_renderer_initiated = false; 2962 load_url_params.is_renderer_initiated = false;
2938 controller.LoadURLWithParams(load_url_params); 2963 controller.LoadURLWithParams(load_url_params);
2939 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); 2964 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL());
2940 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); 2965 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL());
2941 EXPECT_FALSE( 2966 EXPECT_FALSE(
2942 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())-> 2967 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())->
2943 is_renderer_initiated()); 2968 is_renderer_initiated());
2944 EXPECT_TRUE(controller.IsInitialNavigation()); 2969 EXPECT_TRUE(controller.IsInitialNavigation());
2945 EXPECT_FALSE(contents()->HasAccessedInitialDocument()); 2970 EXPECT_FALSE(contents()->HasAccessedInitialDocument());
2946 2971
(...skipping 30 matching lines...) Expand all
2977 NavigationControllerImpl& controller = controller_impl(); 3002 NavigationControllerImpl& controller = controller_impl();
2978 TestNotificationTracker notifications; 3003 TestNotificationTracker notifications;
2979 RegisterForAllNavNotifications(&notifications, &controller); 3004 RegisterForAllNavNotifications(&notifications, &controller);
2980 3005
2981 const GURL url("http://foo"); 3006 const GURL url("http://foo");
2982 3007
2983 // For renderer-initiated navigations in new tabs (with no committed entries), 3008 // For renderer-initiated navigations in new tabs (with no committed entries),
2984 // we show the pending entry's URL as long as the about:blank page is not 3009 // we show the pending entry's URL as long as the about:blank page is not
2985 // modified. 3010 // modified.
2986 NavigationController::LoadURLParams load_url_params(url); 3011 NavigationController::LoadURLParams load_url_params(url);
2987 load_url_params.transition_type = PAGE_TRANSITION_LINK; 3012 load_url_params.transition_type = ui::PAGE_TRANSITION_LINK;
2988 load_url_params.is_renderer_initiated = true; 3013 load_url_params.is_renderer_initiated = true;
2989 controller.LoadURLWithParams(load_url_params); 3014 controller.LoadURLWithParams(load_url_params);
2990 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); 3015 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL());
2991 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); 3016 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL());
2992 EXPECT_TRUE( 3017 EXPECT_TRUE(
2993 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())-> 3018 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())->
2994 is_renderer_initiated()); 3019 is_renderer_initiated());
2995 EXPECT_TRUE(controller.IsInitialNavigation()); 3020 EXPECT_TRUE(controller.IsInitialNavigation());
2996 EXPECT_FALSE(contents()->HasAccessedInitialDocument()); 3021 EXPECT_FALSE(contents()->HasAccessedInitialDocument());
2997 3022
(...skipping 26 matching lines...) Expand all
3024 TestNotificationTracker notifications; 3049 TestNotificationTracker notifications;
3025 RegisterForAllNavNotifications(&notifications, &controller); 3050 RegisterForAllNavNotifications(&notifications, &controller);
3026 3051
3027 const GURL url1("http://foo/eh"); 3052 const GURL url1("http://foo/eh");
3028 const GURL url2("http://foo/bee"); 3053 const GURL url2("http://foo/bee");
3029 3054
3030 // For renderer-initiated navigations in new tabs (with no committed entries), 3055 // For renderer-initiated navigations in new tabs (with no committed entries),
3031 // we show the pending entry's URL as long as the about:blank page is not 3056 // we show the pending entry's URL as long as the about:blank page is not
3032 // modified. 3057 // modified.
3033 NavigationController::LoadURLParams load_url_params(url1); 3058 NavigationController::LoadURLParams load_url_params(url1);
3034 load_url_params.transition_type = PAGE_TRANSITION_LINK; 3059 load_url_params.transition_type = ui::PAGE_TRANSITION_LINK;
3035 load_url_params.is_renderer_initiated = true; 3060 load_url_params.is_renderer_initiated = true;
3036 controller.LoadURLWithParams(load_url_params); 3061 controller.LoadURLWithParams(load_url_params);
3037 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); 3062 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL());
3038 EXPECT_TRUE( 3063 EXPECT_TRUE(
3039 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())-> 3064 NavigationEntryImpl::FromNavigationEntry(controller.GetPendingEntry())->
3040 is_renderer_initiated()); 3065 is_renderer_initiated());
3041 EXPECT_TRUE(controller.IsInitialNavigation()); 3066 EXPECT_TRUE(controller.IsInitialNavigation());
3042 EXPECT_FALSE(contents()->HasAccessedInitialDocument()); 3067 EXPECT_FALSE(contents()->HasAccessedInitialDocument());
3043 3068
3044 // Simulate a commit and then starting a new pending navigation. 3069 // Simulate a commit and then starting a new pending navigation.
3045 main_test_rfh()->SendNavigate(0, url1); 3070 main_test_rfh()->SendNavigate(0, url1);
3046 NavigationController::LoadURLParams load_url2_params(url2); 3071 NavigationController::LoadURLParams load_url2_params(url2);
3047 load_url2_params.transition_type = PAGE_TRANSITION_LINK; 3072 load_url2_params.transition_type = ui::PAGE_TRANSITION_LINK;
3048 load_url2_params.is_renderer_initiated = true; 3073 load_url2_params.is_renderer_initiated = true;
3049 controller.LoadURLWithParams(load_url2_params); 3074 controller.LoadURLWithParams(load_url2_params);
3050 3075
3051 // We should not consider this an initial navigation, and thus should 3076 // We should not consider this an initial navigation, and thus should
3052 // not show the pending URL. 3077 // not show the pending URL.
3053 EXPECT_FALSE(contents()->HasAccessedInitialDocument()); 3078 EXPECT_FALSE(contents()->HasAccessedInitialDocument());
3054 EXPECT_FALSE(controller.IsInitialNavigation()); 3079 EXPECT_FALSE(controller.IsInitialNavigation());
3055 EXPECT_TRUE(controller.GetVisibleEntry()); 3080 EXPECT_TRUE(controller.GetVisibleEntry());
3056 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL()); 3081 EXPECT_EQ(url1, controller.GetVisibleEntry()->GetURL());
3057 3082
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
3141 3166
3142 // We should be at the first navigation entry. 3167 // We should be at the first navigation entry.
3143 EXPECT_EQ(controller.GetEntryCount(), 1); 3168 EXPECT_EQ(controller.GetEntryCount(), 1);
3144 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 3169 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
3145 3170
3146 // Navigate a subframe that would normally count as in-page. 3171 // Navigate a subframe that would normally count as in-page.
3147 const GURL subframe("http://www.google.com/#"); 3172 const GURL subframe("http://www.google.com/#");
3148 FrameHostMsg_DidCommitProvisionalLoad_Params params; 3173 FrameHostMsg_DidCommitProvisionalLoad_Params params;
3149 params.page_id = 0; 3174 params.page_id = 0;
3150 params.url = subframe; 3175 params.url = subframe;
3151 params.transition = PAGE_TRANSITION_AUTO_SUBFRAME; 3176 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
3152 params.should_update_history = false; 3177 params.should_update_history = false;
3153 params.gesture = NavigationGestureAuto; 3178 params.gesture = NavigationGestureAuto;
3154 params.is_post = false; 3179 params.is_post = false;
3155 params.page_state = PageState::CreateFromURL(subframe); 3180 params.page_state = PageState::CreateFromURL(subframe);
3156 LoadCommittedDetails details; 3181 LoadCommittedDetails details;
3157 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params, 3182 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params,
3158 &details)); 3183 &details));
3159 3184
3160 // Nothing should have changed. 3185 // Nothing should have changed.
3161 EXPECT_EQ(controller.GetEntryCount(), 1); 3186 EXPECT_EQ(controller.GetEntryCount(), 1);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
3249 // http://crbug.com/43967 3274 // http://crbug.com/43967
3250 TEST_F(NavigationControllerTest, SubframeWhilePending) { 3275 TEST_F(NavigationControllerTest, SubframeWhilePending) {
3251 NavigationControllerImpl& controller = controller_impl(); 3276 NavigationControllerImpl& controller = controller_impl();
3252 // Load the first page. 3277 // Load the first page.
3253 const GURL url1("http://foo/"); 3278 const GURL url1("http://foo/");
3254 NavigateAndCommit(url1); 3279 NavigateAndCommit(url1);
3255 3280
3256 // Now start a pending load to a totally different page, but don't commit it. 3281 // Now start a pending load to a totally different page, but don't commit it.
3257 const GURL url2("http://bar/"); 3282 const GURL url2("http://bar/");
3258 controller.LoadURL( 3283 controller.LoadURL(
3259 url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 3284 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
3260 3285
3261 // Send a subframe update from the first page, as if one had just 3286 // Send a subframe update from the first page, as if one had just
3262 // automatically loaded. Auto subframes don't increment the page ID. 3287 // automatically loaded. Auto subframes don't increment the page ID.
3263 const GURL url1_sub("http://foo/subframe"); 3288 const GURL url1_sub("http://foo/subframe");
3264 FrameHostMsg_DidCommitProvisionalLoad_Params params; 3289 FrameHostMsg_DidCommitProvisionalLoad_Params params;
3265 params.page_id = controller.GetLastCommittedEntry()->GetPageID(); 3290 params.page_id = controller.GetLastCommittedEntry()->GetPageID();
3266 params.url = url1_sub; 3291 params.url = url1_sub;
3267 params.transition = PAGE_TRANSITION_AUTO_SUBFRAME; 3292 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
3268 params.should_update_history = false; 3293 params.should_update_history = false;
3269 params.gesture = NavigationGestureAuto; 3294 params.gesture = NavigationGestureAuto;
3270 params.is_post = false; 3295 params.is_post = false;
3271 params.page_state = PageState::CreateFromURL(url1_sub); 3296 params.page_state = PageState::CreateFromURL(url1_sub);
3272 LoadCommittedDetails details; 3297 LoadCommittedDetails details;
3273 3298
3274 // This should return false meaning that nothing was actually updated. 3299 // This should return false meaning that nothing was actually updated.
3275 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params, 3300 EXPECT_FALSE(controller.RendererDidNavigate(main_test_rfh(), params,
3276 &details)); 3301 &details));
3277 3302
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
3520 NavigateAndCommit(url1); 3545 NavigateAndCommit(url1);
3521 NavigateAndCommit(url2); 3546 NavigateAndCommit(url2);
3522 controller.GoBack(); 3547 controller.GoBack();
3523 contents()->CommitPendingNavigation(); 3548 contents()->CommitPendingNavigation();
3524 3549
3525 scoped_ptr<TestWebContents> other_contents( 3550 scoped_ptr<TestWebContents> other_contents(
3526 static_cast<TestWebContents*>(CreateTestWebContents())); 3551 static_cast<TestWebContents*>(CreateTestWebContents()));
3527 NavigationControllerImpl& other_controller = other_contents->GetController(); 3552 NavigationControllerImpl& other_controller = other_contents->GetController();
3528 other_contents->NavigateAndCommit(url3); 3553 other_contents->NavigateAndCommit(url3);
3529 other_controller.LoadURL( 3554 other_controller.LoadURL(
3530 url4, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 3555 url4, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
3531 other_contents->ExpectSetHistoryLengthAndPrune( 3556 other_contents->ExpectSetHistoryLengthAndPrune(
3532 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, 3557 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1,
3533 other_controller.GetEntryAtIndex(0)->GetPageID()); 3558 other_controller.GetEntryAtIndex(0)->GetPageID());
3534 other_controller.CopyStateFromAndPrune(&controller, false); 3559 other_controller.CopyStateFromAndPrune(&controller, false);
3535 3560
3536 // other_controller should now contain url1, url3, and a pending entry 3561 // other_controller should now contain url1, url3, and a pending entry
3537 // for url4. 3562 // for url4.
3538 3563
3539 ASSERT_EQ(2, other_controller.GetEntryCount()); 3564 ASSERT_EQ(2, other_controller.GetEntryCount());
3540 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex()); 3565 EXPECT_EQ(1, other_controller.GetCurrentEntryIndex());
(...skipping 23 matching lines...) Expand all
3564 const GURL url2b("http://foo2/b"); 3589 const GURL url2b("http://foo2/b");
3565 3590
3566 NavigateAndCommit(url1); 3591 NavigateAndCommit(url1);
3567 3592
3568 scoped_ptr<TestWebContents> other_contents( 3593 scoped_ptr<TestWebContents> other_contents(
3569 static_cast<TestWebContents*>(CreateTestWebContents())); 3594 static_cast<TestWebContents*>(CreateTestWebContents()));
3570 NavigationControllerImpl& other_controller = other_contents->GetController(); 3595 NavigationControllerImpl& other_controller = other_contents->GetController();
3571 other_contents->NavigateAndCommit(url2a); 3596 other_contents->NavigateAndCommit(url2a);
3572 // Simulate a client redirect, which has the same page ID as entry 2a. 3597 // Simulate a client redirect, which has the same page ID as entry 2a.
3573 other_controller.LoadURL( 3598 other_controller.LoadURL(
3574 url2b, Referrer(), PAGE_TRANSITION_LINK, std::string()); 3599 url2b, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
3575 other_controller.GetPendingEntry()->SetPageID( 3600 other_controller.GetPendingEntry()->SetPageID(
3576 other_controller.GetLastCommittedEntry()->GetPageID()); 3601 other_controller.GetLastCommittedEntry()->GetPageID());
3577 3602
3578 other_contents->ExpectSetHistoryLengthAndPrune( 3603 other_contents->ExpectSetHistoryLengthAndPrune(
3579 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1, 3604 GetSiteInstanceFromEntry(other_controller.GetEntryAtIndex(0)), 1,
3580 other_controller.GetEntryAtIndex(0)->GetPageID()); 3605 other_controller.GetEntryAtIndex(0)->GetPageID());
3581 other_controller.CopyStateFromAndPrune(&controller, false); 3606 other_controller.CopyStateFromAndPrune(&controller, false);
3582 3607
3583 // other_controller should now contain url1, url2a, and a pending entry 3608 // other_controller should now contain url1, url2a, and a pending entry
3584 // for url2b. 3609 // for url2b.
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
3800 TEST_F(NavigationControllerTest, CopyRestoredStateAndNavigate) { 3825 TEST_F(NavigationControllerTest, CopyRestoredStateAndNavigate) {
3801 const GURL kRestoredUrls[] = { 3826 const GURL kRestoredUrls[] = {
3802 GURL("http://site1.com"), 3827 GURL("http://site1.com"),
3803 GURL("http://site2.com"), 3828 GURL("http://site2.com"),
3804 }; 3829 };
3805 const GURL kInitialUrl("http://site3.com"); 3830 const GURL kInitialUrl("http://site3.com");
3806 3831
3807 std::vector<NavigationEntry*> entries; 3832 std::vector<NavigationEntry*> entries;
3808 for (size_t i = 0; i < arraysize(kRestoredUrls); ++i) { 3833 for (size_t i = 0; i < arraysize(kRestoredUrls); ++i) {
3809 NavigationEntry* entry = NavigationControllerImpl::CreateNavigationEntry( 3834 NavigationEntry* entry = NavigationControllerImpl::CreateNavigationEntry(
3810 kRestoredUrls[i], Referrer(), PAGE_TRANSITION_RELOAD, false, 3835 kRestoredUrls[i], Referrer(), ui::PAGE_TRANSITION_RELOAD, false,
3811 std::string(), browser_context()); 3836 std::string(), browser_context());
3812 entry->SetPageID(static_cast<int>(i)); 3837 entry->SetPageID(static_cast<int>(i));
3813 entries.push_back(entry); 3838 entries.push_back(entry);
3814 } 3839 }
3815 3840
3816 // Create a WebContents with restored entries. 3841 // Create a WebContents with restored entries.
3817 scoped_ptr<TestWebContents> source_contents( 3842 scoped_ptr<TestWebContents> source_contents(
3818 static_cast<TestWebContents*>(CreateTestWebContents())); 3843 static_cast<TestWebContents*>(CreateTestWebContents()));
3819 NavigationControllerImpl& source_controller = 3844 NavigationControllerImpl& source_controller =
3820 source_contents->GetController(); 3845 source_contents->GetController();
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
3969 NavigationControllerImpl& controller = controller_impl(); 3994 NavigationControllerImpl& controller = controller_impl();
3970 const GURL url1("http://foo/1"); 3995 const GURL url1("http://foo/1");
3971 const GURL url2("http://foo/2"); 3996 const GURL url2("http://foo/2");
3972 const GURL url3("http://foo/3"); 3997 const GURL url3("http://foo/3");
3973 3998
3974 NavigateAndCommit(url1); 3999 NavigateAndCommit(url1);
3975 NavigateAndCommit(url2); 4000 NavigateAndCommit(url2);
3976 4001
3977 // Create a pending entry that is not in the entry list. 4002 // Create a pending entry that is not in the entry list.
3978 controller.LoadURL( 4003 controller.LoadURL(
3979 url3, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 4004 url3, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
3980 EXPECT_TRUE(controller.GetPendingEntry()); 4005 EXPECT_TRUE(controller.GetPendingEntry());
3981 EXPECT_EQ(2, controller.GetEntryCount()); 4006 EXPECT_EQ(2, controller.GetEntryCount());
3982 4007
3983 contents()->ExpectSetHistoryLengthAndPrune( 4008 contents()->ExpectSetHistoryLengthAndPrune(
3984 NULL, 0, controller.GetPendingEntry()->GetPageID()); 4009 NULL, 0, controller.GetPendingEntry()->GetPageID());
3985 controller.PruneAllButLastCommitted(); 4010 controller.PruneAllButLastCommitted();
3986 4011
3987 // We should only have the last committed and pending entries at this point, 4012 // We should only have the last committed and pending entries at this point,
3988 // and the pending entry should still not be in the entry list. 4013 // and the pending entry should still not be in the entry list.
3989 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 4014 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
4036 // After commit, it stays false. 4061 // After commit, it stays false.
4037 const GURL url1("http://foo1"); 4062 const GURL url1("http://foo1");
4038 main_test_rfh()->SendNavigate(0, url1); 4063 main_test_rfh()->SendNavigate(0, url1);
4039 EXPECT_EQ(1U, navigation_entry_committed_counter_); 4064 EXPECT_EQ(1U, navigation_entry_committed_counter_);
4040 navigation_entry_committed_counter_ = 0; 4065 navigation_entry_committed_counter_ = 0;
4041 EXPECT_FALSE(controller.IsInitialNavigation()); 4066 EXPECT_FALSE(controller.IsInitialNavigation());
4042 4067
4043 // After starting a new navigation, it stays false. 4068 // After starting a new navigation, it stays false.
4044 const GURL url2("http://foo2"); 4069 const GURL url2("http://foo2");
4045 controller.LoadURL( 4070 controller.LoadURL(
4046 url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 4071 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
4047 } 4072 }
4048 4073
4049 // Check that the favicon is not reused across a client redirect. 4074 // Check that the favicon is not reused across a client redirect.
4050 // (crbug.com/28515) 4075 // (crbug.com/28515)
4051 TEST_F(NavigationControllerTest, ClearFaviconOnRedirect) { 4076 TEST_F(NavigationControllerTest, ClearFaviconOnRedirect) {
4052 const GURL kPageWithFavicon("http://withfavicon.html"); 4077 const GURL kPageWithFavicon("http://withfavicon.html");
4053 const GURL kPageWithoutFavicon("http://withoutfavicon.html"); 4078 const GURL kPageWithoutFavicon("http://withoutfavicon.html");
4054 const GURL kIconURL("http://withfavicon.ico"); 4079 const GURL kIconURL("http://withfavicon.ico");
4055 const gfx::Image kDefaultFavicon = FaviconStatus().image; 4080 const gfx::Image kDefaultFavicon = FaviconStatus().image;
4056 4081
(...skipping 12 matching lines...) Expand all
4069 // Simulate Chromium having set the favicon for |kPageWithFavicon|. 4094 // Simulate Chromium having set the favicon for |kPageWithFavicon|.
4070 content::FaviconStatus& favicon_status = entry->GetFavicon(); 4095 content::FaviconStatus& favicon_status = entry->GetFavicon();
4071 favicon_status.image = CreateImage(SK_ColorWHITE); 4096 favicon_status.image = CreateImage(SK_ColorWHITE);
4072 favicon_status.url = kIconURL; 4097 favicon_status.url = kIconURL;
4073 favicon_status.valid = true; 4098 favicon_status.valid = true;
4074 EXPECT_FALSE(DoImagesMatch(kDefaultFavicon, entry->GetFavicon().image)); 4099 EXPECT_FALSE(DoImagesMatch(kDefaultFavicon, entry->GetFavicon().image));
4075 4100
4076 main_test_rfh()->SendNavigateWithTransition( 4101 main_test_rfh()->SendNavigateWithTransition(
4077 0, // same page ID. 4102 0, // same page ID.
4078 kPageWithoutFavicon, 4103 kPageWithoutFavicon,
4079 PAGE_TRANSITION_CLIENT_REDIRECT); 4104 ui::PAGE_TRANSITION_CLIENT_REDIRECT);
4080 EXPECT_EQ(1U, navigation_entry_committed_counter_); 4105 EXPECT_EQ(1U, navigation_entry_committed_counter_);
4081 navigation_entry_committed_counter_ = 0; 4106 navigation_entry_committed_counter_ = 0;
4082 4107
4083 entry = controller.GetLastCommittedEntry(); 4108 entry = controller.GetLastCommittedEntry();
4084 EXPECT_TRUE(entry); 4109 EXPECT_TRUE(entry);
4085 EXPECT_EQ(kPageWithoutFavicon, entry->GetURL()); 4110 EXPECT_EQ(kPageWithoutFavicon, entry->GetURL());
4086 4111
4087 EXPECT_TRUE(DoImagesMatch(kDefaultFavicon, entry->GetFavicon().image)); 4112 EXPECT_TRUE(DoImagesMatch(kDefaultFavicon, entry->GetFavicon().image));
4088 } 4113 }
4089 4114
(...skipping 21 matching lines...) Expand all
4111 favicon_status.url = kIconURL; 4136 favicon_status.url = kIconURL;
4112 favicon_status.valid = true; 4137 favicon_status.valid = true;
4113 4138
4114 // Navigate to another page and go back to the original page. 4139 // Navigate to another page and go back to the original page.
4115 main_test_rfh()->SendNavigate(1, kUrl2); 4140 main_test_rfh()->SendNavigate(1, kUrl2);
4116 EXPECT_EQ(1U, navigation_entry_committed_counter_); 4141 EXPECT_EQ(1U, navigation_entry_committed_counter_);
4117 navigation_entry_committed_counter_ = 0; 4142 navigation_entry_committed_counter_ = 0;
4118 main_test_rfh()->SendNavigateWithTransition( 4143 main_test_rfh()->SendNavigateWithTransition(
4119 0, 4144 0,
4120 kUrl1, 4145 kUrl1,
4121 PAGE_TRANSITION_FORWARD_BACK); 4146 ui::PAGE_TRANSITION_FORWARD_BACK);
4122 EXPECT_EQ(1U, navigation_entry_committed_counter_); 4147 EXPECT_EQ(1U, navigation_entry_committed_counter_);
4123 navigation_entry_committed_counter_ = 0; 4148 navigation_entry_committed_counter_ = 0;
4124 4149
4125 // Verify that the favicon for the page at |kUrl1| was not cleared. 4150 // Verify that the favicon for the page at |kUrl1| was not cleared.
4126 entry = controller.GetEntryAtIndex(0); 4151 entry = controller.GetEntryAtIndex(0);
4127 EXPECT_TRUE(entry); 4152 EXPECT_TRUE(entry);
4128 EXPECT_EQ(kUrl1, entry->GetURL()); 4153 EXPECT_EQ(kUrl1, entry->GetURL());
4129 EXPECT_TRUE(DoImagesMatch(favicon_image, entry->GetFavicon().image)); 4154 EXPECT_TRUE(DoImagesMatch(favicon_image, entry->GetFavicon().image));
4130 } 4155 }
4131 4156
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
4308 TEST_F(NavigationControllerTest, PostThenReplaceStateThenReload) { 4333 TEST_F(NavigationControllerTest, PostThenReplaceStateThenReload) {
4309 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate()); 4334 scoped_ptr<TestWebContentsDelegate> delegate(new TestWebContentsDelegate());
4310 EXPECT_FALSE(contents()->GetDelegate()); 4335 EXPECT_FALSE(contents()->GetDelegate());
4311 contents()->SetDelegate(delegate.get()); 4336 contents()->SetDelegate(delegate.get());
4312 4337
4313 // Submit a form. 4338 // Submit a form.
4314 GURL url("http://foo"); 4339 GURL url("http://foo");
4315 FrameHostMsg_DidCommitProvisionalLoad_Params params; 4340 FrameHostMsg_DidCommitProvisionalLoad_Params params;
4316 params.page_id = 1; 4341 params.page_id = 1;
4317 params.url = url; 4342 params.url = url;
4318 params.transition = PAGE_TRANSITION_FORM_SUBMIT; 4343 params.transition = ui::PAGE_TRANSITION_FORM_SUBMIT;
4319 params.gesture = NavigationGestureUser; 4344 params.gesture = NavigationGestureUser;
4320 params.page_state = PageState::CreateFromURL(url); 4345 params.page_state = PageState::CreateFromURL(url);
4321 params.was_within_same_page = false; 4346 params.was_within_same_page = false;
4322 params.is_post = true; 4347 params.is_post = true;
4323 params.post_id = 2; 4348 params.post_id = 2;
4324 test_rvh()->SendNavigateWithParams(&params); 4349 test_rvh()->SendNavigateWithParams(&params);
4325 4350
4326 // history.replaceState() is called. 4351 // history.replaceState() is called.
4327 GURL replace_url("http://foo#foo"); 4352 GURL replace_url("http://foo#foo");
4328 params.page_id = 1; 4353 params.page_id = 1;
4329 params.url = replace_url; 4354 params.url = replace_url;
4330 params.transition = PAGE_TRANSITION_LINK; 4355 params.transition = ui::PAGE_TRANSITION_LINK;
4331 params.gesture = NavigationGestureUser; 4356 params.gesture = NavigationGestureUser;
4332 params.page_state = PageState::CreateFromURL(replace_url); 4357 params.page_state = PageState::CreateFromURL(replace_url);
4333 params.was_within_same_page = true; 4358 params.was_within_same_page = true;
4334 params.is_post = false; 4359 params.is_post = false;
4335 params.post_id = -1; 4360 params.post_id = -1;
4336 test_rvh()->SendNavigateWithParams(&params); 4361 test_rvh()->SendNavigateWithParams(&params);
4337 4362
4338 // Now reload. replaceState overrides the POST, so we should not show a 4363 // Now reload. replaceState overrides the POST, so we should not show a
4339 // repost warning dialog. 4364 // repost warning dialog.
4340 controller_impl().Reload(true); 4365 controller_impl().Reload(true);
4341 EXPECT_EQ(0, delegate->repost_form_warning_count()); 4366 EXPECT_EQ(0, delegate->repost_form_warning_count());
4342 } 4367 }
4343 4368
4344 } // namespace content 4369 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigation_controller_impl.cc ('k') | content/browser/frame_host/navigation_entry_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698