OLD | NEW |
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 "content/browser/frame_host/navigation_controller_impl.h" | 5 #include "content/browser/frame_host/navigation_controller_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 2616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2627 NavigationControllerImpl& controller = controller_impl(); | 2627 NavigationControllerImpl& controller = controller_impl(); |
2628 TestNotificationTracker notifications; | 2628 TestNotificationTracker notifications; |
2629 RegisterForAllNavNotifications(¬ifications, &controller); | 2629 RegisterForAllNavNotifications(¬ifications, &controller); |
2630 | 2630 |
2631 // Main page. | 2631 // Main page. |
2632 const GURL url1("http://foo"); | 2632 const GURL url1("http://foo"); |
2633 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); | 2633 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); |
2634 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2634 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2635 navigation_entry_committed_counter_ = 0; | 2635 navigation_entry_committed_counter_ = 0; |
2636 | 2636 |
2637 // Ensure main page navigation to same url respects the was_within_same_page | 2637 // Ensure main page navigation to same url respects the |
2638 // hint provided in the params. | 2638 // was_within_same_document hint provided in the params. |
2639 FrameHostMsg_DidCommitProvisionalLoad_Params self_params; | 2639 FrameHostMsg_DidCommitProvisionalLoad_Params self_params; |
2640 self_params.nav_entry_id = 0; | 2640 self_params.nav_entry_id = 0; |
2641 self_params.did_create_new_entry = false; | 2641 self_params.did_create_new_entry = false; |
2642 self_params.url = url1; | 2642 self_params.url = url1; |
2643 self_params.transition = ui::PAGE_TRANSITION_LINK; | 2643 self_params.transition = ui::PAGE_TRANSITION_LINK; |
2644 self_params.should_update_history = false; | 2644 self_params.should_update_history = false; |
2645 self_params.gesture = NavigationGestureUser; | 2645 self_params.gesture = NavigationGestureUser; |
2646 self_params.method = "GET"; | 2646 self_params.method = "GET"; |
2647 self_params.item_sequence_number = GenerateSequenceNumber(); | 2647 self_params.item_sequence_number = GenerateSequenceNumber(); |
2648 self_params.document_sequence_number = GenerateSequenceNumber(); | 2648 self_params.document_sequence_number = GenerateSequenceNumber(); |
2649 self_params.page_state = PageState::CreateForTestingWithSequenceNumbers( | 2649 self_params.page_state = PageState::CreateForTestingWithSequenceNumbers( |
2650 url1, self_params.item_sequence_number, | 2650 url1, self_params.item_sequence_number, |
2651 self_params.document_sequence_number); | 2651 self_params.document_sequence_number); |
2652 self_params.was_within_same_page = true; | 2652 self_params.was_within_same_document = true; |
2653 | 2653 |
2654 LoadCommittedDetailsObserver observer(contents()); | 2654 LoadCommittedDetailsObserver observer(contents()); |
2655 main_test_rfh()->SendRendererInitiatedNavigationRequest(url1, false); | 2655 main_test_rfh()->SendRendererInitiatedNavigationRequest(url1, false); |
2656 main_test_rfh()->PrepareForCommit(); | 2656 main_test_rfh()->PrepareForCommit(); |
2657 main_test_rfh()->SendNavigateWithParams(&self_params); | 2657 main_test_rfh()->SendNavigateWithParams(&self_params); |
2658 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); | 2658 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); |
2659 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2659 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2660 navigation_entry_committed_counter_ = 0; | 2660 navigation_entry_committed_counter_ = 0; |
2661 EXPECT_TRUE(observer.is_in_page()); | 2661 EXPECT_TRUE(observer.is_in_page()); |
2662 EXPECT_TRUE(observer.did_replace_entry()); | 2662 EXPECT_TRUE(observer.did_replace_entry()); |
2663 EXPECT_EQ(1, controller.GetEntryCount()); | 2663 EXPECT_EQ(1, controller.GetEntryCount()); |
2664 | 2664 |
2665 // Fragment navigation to a new page. | 2665 // Fragment navigation to a new page. |
2666 const GURL url2("http://foo#a"); | 2666 const GURL url2("http://foo#a"); |
2667 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2667 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2668 params.nav_entry_id = 0; | 2668 params.nav_entry_id = 0; |
2669 params.did_create_new_entry = true; | 2669 params.did_create_new_entry = true; |
2670 params.url = url2; | 2670 params.url = url2; |
2671 params.transition = ui::PAGE_TRANSITION_LINK; | 2671 params.transition = ui::PAGE_TRANSITION_LINK; |
2672 params.should_update_history = false; | 2672 params.should_update_history = false; |
2673 params.gesture = NavigationGestureUser; | 2673 params.gesture = NavigationGestureUser; |
2674 params.method = "GET"; | 2674 params.method = "GET"; |
2675 params.item_sequence_number = GenerateSequenceNumber(); | 2675 params.item_sequence_number = GenerateSequenceNumber(); |
2676 params.document_sequence_number = self_params.document_sequence_number; | 2676 params.document_sequence_number = self_params.document_sequence_number; |
2677 params.page_state = PageState::CreateForTestingWithSequenceNumbers( | 2677 params.page_state = PageState::CreateForTestingWithSequenceNumbers( |
2678 url2, params.item_sequence_number, params.document_sequence_number); | 2678 url2, params.item_sequence_number, params.document_sequence_number); |
2679 params.was_within_same_page = true; | 2679 params.was_within_same_document = true; |
2680 | 2680 |
2681 // This should generate a new entry. | 2681 // This should generate a new entry. |
2682 main_test_rfh()->SendNavigateWithParams(¶ms); | 2682 main_test_rfh()->SendNavigateWithParams(¶ms); |
2683 NavigationEntry* entry2 = controller.GetLastCommittedEntry(); | 2683 NavigationEntry* entry2 = controller.GetLastCommittedEntry(); |
2684 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2684 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2685 navigation_entry_committed_counter_ = 0; | 2685 navigation_entry_committed_counter_ = 0; |
2686 EXPECT_TRUE(observer.is_in_page()); | 2686 EXPECT_TRUE(observer.is_in_page()); |
2687 EXPECT_FALSE(observer.did_replace_entry()); | 2687 EXPECT_FALSE(observer.did_replace_entry()); |
2688 EXPECT_EQ(2, controller.GetEntryCount()); | 2688 EXPECT_EQ(2, controller.GetEntryCount()); |
2689 | 2689 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2726 controller.GetVisibleEntry()->GetURL()); | 2726 controller.GetVisibleEntry()->GetURL()); |
2727 | 2727 |
2728 // Finally, navigate to an unrelated URL to make sure in_page is not sticky. | 2728 // Finally, navigate to an unrelated URL to make sure in_page is not sticky. |
2729 const GURL url3("http://bar"); | 2729 const GURL url3("http://bar"); |
2730 params.nav_entry_id = 0; | 2730 params.nav_entry_id = 0; |
2731 params.did_create_new_entry = true; | 2731 params.did_create_new_entry = true; |
2732 params.url = url3; | 2732 params.url = url3; |
2733 params.item_sequence_number = 0; | 2733 params.item_sequence_number = 0; |
2734 params.document_sequence_number = 0; | 2734 params.document_sequence_number = 0; |
2735 params.page_state = PageState::CreateFromURL(url3); | 2735 params.page_state = PageState::CreateFromURL(url3); |
2736 params.was_within_same_page = false; | 2736 params.was_within_same_document = false; |
2737 navigation_entry_committed_counter_ = 0; | 2737 navigation_entry_committed_counter_ = 0; |
2738 main_test_rfh()->SendRendererInitiatedNavigationRequest(url3, false); | 2738 main_test_rfh()->SendRendererInitiatedNavigationRequest(url3, false); |
2739 main_test_rfh()->PrepareForCommit(); | 2739 main_test_rfh()->PrepareForCommit(); |
2740 main_test_rfh()->SendNavigateWithParams(¶ms); | 2740 main_test_rfh()->SendNavigateWithParams(¶ms); |
2741 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2741 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2742 navigation_entry_committed_counter_ = 0; | 2742 navigation_entry_committed_counter_ = 0; |
2743 EXPECT_FALSE(observer.is_in_page()); | 2743 EXPECT_FALSE(observer.is_in_page()); |
2744 EXPECT_EQ(3, controller.GetEntryCount()); | 2744 EXPECT_EQ(3, controller.GetEntryCount()); |
2745 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); | 2745 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); |
2746 } | 2746 } |
(...skipping 13 matching lines...) Expand all Loading... |
2760 const GURL url2("http://foo#a"); | 2760 const GURL url2("http://foo#a"); |
2761 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2761 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2762 params.nav_entry_id = 0; | 2762 params.nav_entry_id = 0; |
2763 params.did_create_new_entry = false; | 2763 params.did_create_new_entry = false; |
2764 params.url = url2; | 2764 params.url = url2; |
2765 params.transition = ui::PAGE_TRANSITION_LINK; | 2765 params.transition = ui::PAGE_TRANSITION_LINK; |
2766 params.should_update_history = false; | 2766 params.should_update_history = false; |
2767 params.gesture = NavigationGestureUser; | 2767 params.gesture = NavigationGestureUser; |
2768 params.method = "GET"; | 2768 params.method = "GET"; |
2769 params.page_state = PageState::CreateFromURL(url2); | 2769 params.page_state = PageState::CreateFromURL(url2); |
2770 params.was_within_same_page = true; | 2770 params.was_within_same_document = true; |
2771 | 2771 |
2772 // This should NOT generate a new entry, nor prune the list. | 2772 // This should NOT generate a new entry, nor prune the list. |
2773 LoadCommittedDetailsObserver observer(contents()); | 2773 LoadCommittedDetailsObserver observer(contents()); |
2774 main_test_rfh()->SendNavigateWithParams(¶ms); | 2774 main_test_rfh()->SendNavigateWithParams(¶ms); |
2775 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2775 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2776 navigation_entry_committed_counter_ = 0; | 2776 navigation_entry_committed_counter_ = 0; |
2777 EXPECT_TRUE(observer.is_in_page()); | 2777 EXPECT_TRUE(observer.is_in_page()); |
2778 EXPECT_TRUE(observer.did_replace_entry()); | 2778 EXPECT_TRUE(observer.did_replace_entry()); |
2779 EXPECT_EQ(1, controller.GetEntryCount()); | 2779 EXPECT_EQ(1, controller.GetEntryCount()); |
2780 } | 2780 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2812 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2812 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2813 params.nav_entry_id = 0; | 2813 params.nav_entry_id = 0; |
2814 params.did_create_new_entry = false; | 2814 params.did_create_new_entry = false; |
2815 params.url = url; | 2815 params.url = url; |
2816 params.transition = ui::PAGE_TRANSITION_LINK; | 2816 params.transition = ui::PAGE_TRANSITION_LINK; |
2817 params.redirects.push_back(url); | 2817 params.redirects.push_back(url); |
2818 params.should_update_history = true; | 2818 params.should_update_history = true; |
2819 params.gesture = NavigationGestureUnknown; | 2819 params.gesture = NavigationGestureUnknown; |
2820 params.method = "GET"; | 2820 params.method = "GET"; |
2821 params.page_state = PageState::CreateFromURL(url); | 2821 params.page_state = PageState::CreateFromURL(url); |
2822 params.was_within_same_page = true; | 2822 params.was_within_same_document = true; |
2823 | 2823 |
2824 // This should NOT generate a new entry, nor prune the list. | 2824 // This should NOT generate a new entry, nor prune the list. |
2825 LoadCommittedDetailsObserver observer(contents()); | 2825 LoadCommittedDetailsObserver observer(contents()); |
2826 main_test_rfh()->SendNavigateWithParams(¶ms); | 2826 main_test_rfh()->SendNavigateWithParams(¶ms); |
2827 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2827 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2828 navigation_entry_committed_counter_ = 0; | 2828 navigation_entry_committed_counter_ = 0; |
2829 EXPECT_TRUE(observer.is_in_page()); | 2829 EXPECT_TRUE(observer.is_in_page()); |
2830 EXPECT_TRUE(observer.did_replace_entry()); | 2830 EXPECT_TRUE(observer.did_replace_entry()); |
2831 EXPECT_EQ(2, controller.GetEntryCount()); | 2831 EXPECT_EQ(2, controller.GetEntryCount()); |
2832 } | 2832 } |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2872 | 2872 |
2873 TEST_F(NavigationControllerTest, PushStateWithoutPreviousEntry) | 2873 TEST_F(NavigationControllerTest, PushStateWithoutPreviousEntry) |
2874 { | 2874 { |
2875 ASSERT_FALSE(controller_impl().GetLastCommittedEntry()); | 2875 ASSERT_FALSE(controller_impl().GetLastCommittedEntry()); |
2876 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2876 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2877 GURL url("http://foo"); | 2877 GURL url("http://foo"); |
2878 params.nav_entry_id = 0; | 2878 params.nav_entry_id = 0; |
2879 params.did_create_new_entry = true; | 2879 params.did_create_new_entry = true; |
2880 params.url = url; | 2880 params.url = url; |
2881 params.page_state = PageState::CreateFromURL(url); | 2881 params.page_state = PageState::CreateFromURL(url); |
2882 params.was_within_same_page = true; | 2882 params.was_within_same_document = true; |
2883 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); | 2883 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
2884 main_test_rfh()->PrepareForCommit(); | 2884 main_test_rfh()->PrepareForCommit(); |
2885 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); | 2885 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
2886 // We pass if we don't crash. | 2886 // We pass if we don't crash. |
2887 } | 2887 } |
2888 | 2888 |
2889 // NotificationObserver implementation used in verifying we've received the | 2889 // NotificationObserver implementation used in verifying we've received the |
2890 // NOTIFICATION_NAV_LIST_PRUNED method. | 2890 // NOTIFICATION_NAV_LIST_PRUNED method. |
2891 class PrunedListener : public NotificationObserver { | 2891 class PrunedListener : public NotificationObserver { |
2892 public: | 2892 public: |
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3865 | 3865 |
3866 // Doing a replaceState to a cross-origin URL is thus allowed. | 3866 // Doing a replaceState to a cross-origin URL is thus allowed. |
3867 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 3867 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
3868 params.nav_entry_id = 1; | 3868 params.nav_entry_id = 1; |
3869 params.did_create_new_entry = false; | 3869 params.did_create_new_entry = false; |
3870 params.url = different_origin_url; | 3870 params.url = different_origin_url; |
3871 params.origin = file_origin; | 3871 params.origin = file_origin; |
3872 params.transition = ui::PAGE_TRANSITION_LINK; | 3872 params.transition = ui::PAGE_TRANSITION_LINK; |
3873 params.gesture = NavigationGestureUser; | 3873 params.gesture = NavigationGestureUser; |
3874 params.page_state = PageState::CreateFromURL(different_origin_url); | 3874 params.page_state = PageState::CreateFromURL(different_origin_url); |
3875 params.was_within_same_page = true; | 3875 params.was_within_same_document = true; |
3876 params.method = "GET"; | 3876 params.method = "GET"; |
3877 params.post_id = -1; | 3877 params.post_id = -1; |
3878 main_test_rfh()->SendRendererInitiatedNavigationRequest(different_origin_url, | 3878 main_test_rfh()->SendRendererInitiatedNavigationRequest(different_origin_url, |
3879 false); | 3879 false); |
3880 main_test_rfh()->PrepareForCommit(); | 3880 main_test_rfh()->PrepareForCommit(); |
3881 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); | 3881 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
3882 | 3882 |
3883 // At this point, we should still consider the current origin to be file://, | 3883 // At this point, we should still consider the current origin to be file://, |
3884 // so that a file URL would still be in-page. See https://crbug.com/553418. | 3884 // so that a file URL would still be in-page. See https://crbug.com/553418. |
3885 EXPECT_TRUE( | 3885 EXPECT_TRUE( |
(...skipping 1081 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4967 controller().GetLastCommittedEntry(), title); | 4967 controller().GetLastCommittedEntry(), title); |
4968 controller().GetLastCommittedEntry()->GetFavicon() = favicon; | 4968 controller().GetLastCommittedEntry()->GetFavicon() = favicon; |
4969 | 4969 |
4970 // history.pushState() is called. | 4970 // history.pushState() is called. |
4971 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 4971 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
4972 GURL kUrl2("http://foo#foo"); | 4972 GURL kUrl2("http://foo#foo"); |
4973 params.nav_entry_id = 0; | 4973 params.nav_entry_id = 0; |
4974 params.did_create_new_entry = true; | 4974 params.did_create_new_entry = true; |
4975 params.url = kUrl2; | 4975 params.url = kUrl2; |
4976 params.page_state = PageState::CreateFromURL(kUrl2); | 4976 params.page_state = PageState::CreateFromURL(kUrl2); |
4977 params.was_within_same_page = true; | 4977 params.was_within_same_document = true; |
4978 main_test_rfh()->SendNavigateWithParams(¶ms); | 4978 main_test_rfh()->SendNavigateWithParams(¶ms); |
4979 | 4979 |
4980 // The title should immediately be visible on the new NavigationEntry. | 4980 // The title should immediately be visible on the new NavigationEntry. |
4981 base::string16 new_title = | 4981 base::string16 new_title = |
4982 controller().GetLastCommittedEntry()->GetTitleForDisplay(); | 4982 controller().GetLastCommittedEntry()->GetTitleForDisplay(); |
4983 EXPECT_EQ(title, new_title); | 4983 EXPECT_EQ(title, new_title); |
4984 FaviconStatus new_favicon = | 4984 FaviconStatus new_favicon = |
4985 controller().GetLastCommittedEntry()->GetFavicon(); | 4985 controller().GetLastCommittedEntry()->GetFavicon(); |
4986 EXPECT_EQ(favicon.valid, new_favicon.valid); | 4986 EXPECT_EQ(favicon.valid, new_favicon.valid); |
4987 EXPECT_EQ(favicon.url, new_favicon.url); | 4987 EXPECT_EQ(favicon.url, new_favicon.url); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5045 | 5045 |
5046 // Submit a form. | 5046 // Submit a form. |
5047 GURL url("http://foo"); | 5047 GURL url("http://foo"); |
5048 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 5048 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
5049 params.nav_entry_id = 0; | 5049 params.nav_entry_id = 0; |
5050 params.did_create_new_entry = true; | 5050 params.did_create_new_entry = true; |
5051 params.url = url; | 5051 params.url = url; |
5052 params.transition = ui::PAGE_TRANSITION_FORM_SUBMIT; | 5052 params.transition = ui::PAGE_TRANSITION_FORM_SUBMIT; |
5053 params.gesture = NavigationGestureUser; | 5053 params.gesture = NavigationGestureUser; |
5054 params.page_state = PageState::CreateFromURL(url); | 5054 params.page_state = PageState::CreateFromURL(url); |
5055 params.was_within_same_page = false; | 5055 params.was_within_same_document = false; |
5056 params.method = "POST"; | 5056 params.method = "POST"; |
5057 params.post_id = 2; | 5057 params.post_id = 2; |
5058 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); | 5058 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
5059 main_test_rfh()->PrepareForCommit(); | 5059 main_test_rfh()->PrepareForCommit(); |
5060 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); | 5060 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
5061 | 5061 |
5062 // history.replaceState() is called. | 5062 // history.replaceState() is called. |
5063 GURL replace_url("http://foo#foo"); | 5063 GURL replace_url("http://foo#foo"); |
5064 params.nav_entry_id = 0; | 5064 params.nav_entry_id = 0; |
5065 params.did_create_new_entry = false; | 5065 params.did_create_new_entry = false; |
5066 params.url = replace_url; | 5066 params.url = replace_url; |
5067 params.transition = ui::PAGE_TRANSITION_LINK; | 5067 params.transition = ui::PAGE_TRANSITION_LINK; |
5068 params.gesture = NavigationGestureUser; | 5068 params.gesture = NavigationGestureUser; |
5069 params.page_state = PageState::CreateFromURL(replace_url); | 5069 params.page_state = PageState::CreateFromURL(replace_url); |
5070 params.was_within_same_page = true; | 5070 params.was_within_same_document = true; |
5071 params.method = "GET"; | 5071 params.method = "GET"; |
5072 params.post_id = -1; | 5072 params.post_id = -1; |
5073 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); | 5073 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
5074 | 5074 |
5075 // Now reload. replaceState overrides the POST, so we should not show a | 5075 // Now reload. replaceState overrides the POST, so we should not show a |
5076 // repost warning dialog. | 5076 // repost warning dialog. |
5077 controller_impl().Reload(ReloadType::NORMAL, true); | 5077 controller_impl().Reload(ReloadType::NORMAL, true); |
5078 EXPECT_EQ(0, delegate->repost_form_warning_count()); | 5078 EXPECT_EQ(0, delegate->repost_form_warning_count()); |
5079 } | 5079 } |
5080 | 5080 |
5081 TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) { | 5081 TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) { |
5082 GURL url("http://foo"); | 5082 GURL url("http://foo"); |
5083 controller().LoadURL(url, Referrer(), ui::PAGE_TRANSITION_TYPED, | 5083 controller().LoadURL(url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
5084 std::string()); | 5084 std::string()); |
5085 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 5085 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
5086 params.nav_entry_id = 0; | 5086 params.nav_entry_id = 0; |
5087 params.did_create_new_entry = true; | 5087 params.did_create_new_entry = true; |
5088 params.url = url; | 5088 params.url = url; |
5089 params.transition = ui::PAGE_TRANSITION_LINK; | 5089 params.transition = ui::PAGE_TRANSITION_LINK; |
5090 params.gesture = NavigationGestureUser; | 5090 params.gesture = NavigationGestureUser; |
5091 params.page_state = PageState::CreateFromURL(url); | 5091 params.page_state = PageState::CreateFromURL(url); |
5092 params.was_within_same_page = false; | 5092 params.was_within_same_document = false; |
5093 params.method = "POST"; | 5093 params.method = "POST"; |
5094 params.post_id = 2; | 5094 params.post_id = 2; |
5095 params.url_is_unreachable = true; | 5095 params.url_is_unreachable = true; |
5096 | 5096 |
5097 // Navigate to new page. | 5097 // Navigate to new page. |
5098 { | 5098 { |
5099 LoadCommittedDetailsObserver observer(contents()); | 5099 LoadCommittedDetailsObserver observer(contents()); |
5100 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); | 5100 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
5101 main_test_rfh()->PrepareForCommit(); | 5101 main_test_rfh()->PrepareForCommit(); |
5102 main_test_rfh()->SendNavigateWithParams(¶ms); | 5102 main_test_rfh()->SendNavigateWithParams(¶ms); |
(...skipping 23 matching lines...) Expand all Loading... |
5126 params.transition = ui::PAGE_TRANSITION_TYPED; | 5126 params.transition = ui::PAGE_TRANSITION_TYPED; |
5127 { | 5127 { |
5128 LoadCommittedDetailsObserver observer(contents()); | 5128 LoadCommittedDetailsObserver observer(contents()); |
5129 main_test_rfh()->PrepareForCommit(); | 5129 main_test_rfh()->PrepareForCommit(); |
5130 main_test_rfh()->SendNavigateWithParams(¶ms); | 5130 main_test_rfh()->SendNavigateWithParams(¶ms); |
5131 EXPECT_EQ(PAGE_TYPE_ERROR, | 5131 EXPECT_EQ(PAGE_TYPE_ERROR, |
5132 controller_impl().GetLastCommittedEntry()->GetPageType()); | 5132 controller_impl().GetLastCommittedEntry()->GetPageType()); |
5133 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.navigation_type()); | 5133 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.navigation_type()); |
5134 } | 5134 } |
5135 | 5135 |
5136 // Navigate in page. | 5136 // Navigate without changing document. |
5137 params.url = GURL("http://foo#foo"); | 5137 params.url = GURL("http://foo#foo"); |
5138 params.transition = ui::PAGE_TRANSITION_LINK; | 5138 params.transition = ui::PAGE_TRANSITION_LINK; |
5139 params.was_within_same_page = true; | 5139 params.was_within_same_document = true; |
5140 { | 5140 { |
5141 LoadCommittedDetailsObserver observer(contents()); | 5141 LoadCommittedDetailsObserver observer(contents()); |
5142 main_test_rfh()->SendNavigateWithParams(¶ms); | 5142 main_test_rfh()->SendNavigateWithParams(¶ms); |
5143 EXPECT_EQ(PAGE_TYPE_ERROR, | 5143 EXPECT_EQ(PAGE_TYPE_ERROR, |
5144 controller_impl().GetLastCommittedEntry()->GetPageType()); | 5144 controller_impl().GetLastCommittedEntry()->GetPageType()); |
5145 EXPECT_TRUE(observer.is_in_page()); | 5145 EXPECT_TRUE(observer.is_in_page()); |
5146 } | 5146 } |
5147 } | 5147 } |
5148 | 5148 |
5149 // Tests that if a stale navigation comes back from the renderer, it is properly | 5149 // Tests that if a stale navigation comes back from the renderer, it is properly |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5284 main_test_rfh()->SimulateNavigationStart(url_1); | 5284 main_test_rfh()->SimulateNavigationStart(url_1); |
5285 EXPECT_EQ(url_1, controller.GetVisibleEntry()->GetURL()); | 5285 EXPECT_EQ(url_1, controller.GetVisibleEntry()->GetURL()); |
5286 EXPECT_EQ(ReloadType::NONE, last_reload_type_); | 5286 EXPECT_EQ(ReloadType::NONE, last_reload_type_); |
5287 | 5287 |
5288 main_test_rfh()->SimulateNavigationCommit(url_2); | 5288 main_test_rfh()->SimulateNavigationCommit(url_2); |
5289 main_test_rfh()->SimulateNavigationCommit(url_1); | 5289 main_test_rfh()->SimulateNavigationCommit(url_1); |
5290 main_test_rfh()->SimulateNavigationCommit(url_1); | 5290 main_test_rfh()->SimulateNavigationCommit(url_1); |
5291 } | 5291 } |
5292 | 5292 |
5293 } // namespace content | 5293 } // namespace content |
OLD | NEW |