| 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 |