Chromium Code Reviews| 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "base/test/histogram_tester.h" | 8 #include "base/test/histogram_tester.h" |
| 9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
| 10 #include "content/browser/frame_host/cross_site_transferring_request.h" | 10 #include "content/browser/frame_host/cross_site_transferring_request.h" |
| (...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 894 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), | 894 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), |
| 895 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, | 895 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, |
| 896 false /* is_renderer_init */); | 896 false /* is_renderer_init */); |
| 897 host = manager->Navigate(entry1); | 897 host = manager->Navigate(entry1); |
| 898 | 898 |
| 899 // The RenderFrameHost created in Init will be reused. | 899 // The RenderFrameHost created in Init will be reused. |
| 900 EXPECT_TRUE(host == manager->current_frame_host()); | 900 EXPECT_TRUE(host == manager->current_frame_host()); |
| 901 EXPECT_FALSE(manager->pending_frame_host()); | 901 EXPECT_FALSE(manager->pending_frame_host()); |
| 902 | 902 |
| 903 // Commit. | 903 // Commit. |
| 904 manager->DidNavigateFrame(host); | 904 manager->DidNavigateFrame(host, true); |
| 905 // Commit to SiteInstance should be delayed until RenderView commit. | 905 // Commit to SiteInstance should be delayed until RenderView commit. |
| 906 EXPECT_TRUE(host == manager->current_frame_host()); | 906 EXPECT_TRUE(host == manager->current_frame_host()); |
| 907 ASSERT_TRUE(host); | 907 ASSERT_TRUE(host); |
| 908 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); | 908 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); |
| 909 host->GetSiteInstance()->SetSite(kUrl1); | 909 host->GetSiteInstance()->SetSite(kUrl1); |
| 910 | 910 |
| 911 // 2) Navigate to next site. ------------------------- | 911 // 2) Navigate to next site. ------------------------- |
| 912 const GURL kUrl2("http://www.google.com/foo"); | 912 const GURL kUrl2("http://www.google.com/foo"); |
| 913 NavigationEntryImpl entry2( | 913 NavigationEntryImpl entry2( |
| 914 NULL /* instance */, -1 /* page_id */, kUrl2, | 914 NULL /* instance */, -1 /* page_id */, kUrl2, |
| 915 Referrer(kUrl1, blink::WebReferrerPolicyDefault), | 915 Referrer(kUrl1, blink::WebReferrerPolicyDefault), |
| 916 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, | 916 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, |
| 917 true /* is_renderer_init */); | 917 true /* is_renderer_init */); |
| 918 host = manager->Navigate(entry2); | 918 host = manager->Navigate(entry2); |
| 919 | 919 |
| 920 // The RenderFrameHost created in Init will be reused. | 920 // The RenderFrameHost created in Init will be reused. |
| 921 EXPECT_TRUE(host == manager->current_frame_host()); | 921 EXPECT_TRUE(host == manager->current_frame_host()); |
| 922 EXPECT_FALSE(manager->pending_frame_host()); | 922 EXPECT_FALSE(manager->pending_frame_host()); |
| 923 | 923 |
| 924 // Commit. | 924 // Commit. |
| 925 manager->DidNavigateFrame(host); | 925 manager->DidNavigateFrame(host, true); |
| 926 EXPECT_TRUE(host == manager->current_frame_host()); | 926 EXPECT_TRUE(host == manager->current_frame_host()); |
| 927 ASSERT_TRUE(host); | 927 ASSERT_TRUE(host); |
| 928 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 928 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
| 929 | 929 |
| 930 // 3) Cross-site navigate to next site. -------------- | 930 // 3) Cross-site navigate to next site. -------------- |
| 931 const GURL kUrl3("http://webkit.org/"); | 931 const GURL kUrl3("http://webkit.org/"); |
| 932 NavigationEntryImpl entry3( | 932 NavigationEntryImpl entry3( |
| 933 NULL /* instance */, -1 /* page_id */, kUrl3, | 933 NULL /* instance */, -1 /* page_id */, kUrl3, |
| 934 Referrer(kUrl2, blink::WebReferrerPolicyDefault), | 934 Referrer(kUrl2, blink::WebReferrerPolicyDefault), |
| 935 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, | 935 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, |
| 936 false /* is_renderer_init */); | 936 false /* is_renderer_init */); |
| 937 host = manager->Navigate(entry3); | 937 host = manager->Navigate(entry3); |
| 938 | 938 |
| 939 // A new RenderFrameHost should be created. | 939 // A new RenderFrameHost should be created. |
| 940 EXPECT_TRUE(manager->pending_frame_host()); | 940 EXPECT_TRUE(manager->pending_frame_host()); |
| 941 ASSERT_EQ(host, manager->pending_frame_host()); | 941 ASSERT_EQ(host, manager->pending_frame_host()); |
| 942 | 942 |
| 943 notifications.Reset(); | 943 notifications.Reset(); |
| 944 | 944 |
| 945 // Commit. | 945 // Commit. |
| 946 manager->DidNavigateFrame(manager->pending_frame_host()); | 946 manager->DidNavigateFrame(manager->pending_frame_host(), true); |
| 947 EXPECT_TRUE(host == manager->current_frame_host()); | 947 EXPECT_TRUE(host == manager->current_frame_host()); |
| 948 ASSERT_TRUE(host); | 948 ASSERT_TRUE(host); |
| 949 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 949 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
| 950 // Check the pending RenderFrameHost has been committed. | 950 // Check the pending RenderFrameHost has been committed. |
| 951 EXPECT_FALSE(manager->pending_frame_host()); | 951 EXPECT_FALSE(manager->pending_frame_host()); |
| 952 | 952 |
| 953 // We should observe a notification. | 953 // We should observe a notification. |
| 954 EXPECT_TRUE( | 954 EXPECT_TRUE( |
| 955 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); | 955 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); |
| 956 } | 956 } |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 986 // get loaded in between. | 986 // get loaded in between. |
| 987 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 987 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
| 988 EXPECT_EQ(kUrl, host->GetSiteInstance()->GetSiteURL()); | 988 EXPECT_EQ(kUrl, host->GetSiteInstance()->GetSiteURL()); |
| 989 | 989 |
| 990 // The Web UI is committed immediately because the RenderViewHost has not been | 990 // The Web UI is committed immediately because the RenderViewHost has not been |
| 991 // used yet. UpdateStateForNavigate() took the short cut path. | 991 // used yet. UpdateStateForNavigate() took the short cut path. |
| 992 EXPECT_FALSE(manager->pending_web_ui()); | 992 EXPECT_FALSE(manager->pending_web_ui()); |
| 993 EXPECT_TRUE(manager->web_ui()); | 993 EXPECT_TRUE(manager->web_ui()); |
| 994 | 994 |
| 995 // Commit. | 995 // Commit. |
| 996 manager->DidNavigateFrame(host); | 996 manager->DidNavigateFrame(host, true); |
| 997 EXPECT_TRUE( | 997 EXPECT_TRUE( |
| 998 host->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 998 host->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
| 999 } | 999 } |
| 1000 | 1000 |
| 1001 // Tests that we can open a WebUI link in a new tab from a WebUI page and still | 1001 // Tests that we can open a WebUI link in a new tab from a WebUI page and still |
| 1002 // grant the correct bindings. http://crbug.com/189101. | 1002 // grant the correct bindings. http://crbug.com/189101. |
| 1003 TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) { | 1003 TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) { |
| 1004 set_should_create_webui(true); | 1004 set_should_create_webui(true); |
| 1005 SiteInstance* blank_instance = SiteInstance::Create(browser_context()); | 1005 SiteInstance* blank_instance = SiteInstance::Create(browser_context()); |
| 1006 | 1006 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1024 RenderFrameHostImpl* host1 = manager1->Navigate(entry1); | 1024 RenderFrameHostImpl* host1 = manager1->Navigate(entry1); |
| 1025 | 1025 |
| 1026 // We should have a pending navigation to the WebUI RenderViewHost. | 1026 // We should have a pending navigation to the WebUI RenderViewHost. |
| 1027 // It should already have bindings. | 1027 // It should already have bindings. |
| 1028 EXPECT_EQ(host1, manager1->pending_frame_host()); | 1028 EXPECT_EQ(host1, manager1->pending_frame_host()); |
| 1029 EXPECT_NE(host1, manager1->current_frame_host()); | 1029 EXPECT_NE(host1, manager1->current_frame_host()); |
| 1030 EXPECT_TRUE( | 1030 EXPECT_TRUE( |
| 1031 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 1031 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
| 1032 | 1032 |
| 1033 // Commit and ensure we still have bindings. | 1033 // Commit and ensure we still have bindings. |
| 1034 manager1->DidNavigateFrame(host1); | 1034 manager1->DidNavigateFrame(host1, true); |
| 1035 SiteInstance* webui_instance = host1->GetSiteInstance(); | 1035 SiteInstance* webui_instance = host1->GetSiteInstance(); |
| 1036 EXPECT_EQ(host1, manager1->current_frame_host()); | 1036 EXPECT_EQ(host1, manager1->current_frame_host()); |
| 1037 EXPECT_TRUE( | 1037 EXPECT_TRUE( |
| 1038 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 1038 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
| 1039 | 1039 |
| 1040 // Now simulate clicking a link that opens in a new tab. | 1040 // Now simulate clicking a link that opens in a new tab. |
| 1041 scoped_ptr<TestWebContents> web_contents2( | 1041 scoped_ptr<TestWebContents> web_contents2( |
| 1042 TestWebContents::Create(browser_context(), webui_instance)); | 1042 TestWebContents::Create(browser_context(), webui_instance)); |
| 1043 RenderFrameHostManager* manager2 = | 1043 RenderFrameHostManager* manager2 = |
| 1044 web_contents2->GetRenderManagerForTesting(); | 1044 web_contents2->GetRenderManagerForTesting(); |
| 1045 // Make sure the new RVH is considered live. This is usually done in | 1045 // Make sure the new RVH is considered live. This is usually done in |
| 1046 // RenderWidgetHost::Init when opening a new tab from a link. | 1046 // RenderWidgetHost::Init when opening a new tab from a link. |
| 1047 manager2->current_host()->CreateRenderView( | 1047 manager2->current_host()->CreateRenderView( |
| 1048 base::string16(), -1, MSG_ROUTING_NONE, -1, false); | 1048 base::string16(), -1, MSG_ROUTING_NONE, -1, false); |
| 1049 | 1049 |
| 1050 const GURL kUrl2("chrome://foo/bar"); | 1050 const GURL kUrl2("chrome://foo/bar"); |
| 1051 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, | 1051 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, |
| 1052 Referrer(), base::string16() /* title */, | 1052 Referrer(), base::string16() /* title */, |
| 1053 ui::PAGE_TRANSITION_LINK, | 1053 ui::PAGE_TRANSITION_LINK, |
| 1054 true /* is_renderer_init */); | 1054 true /* is_renderer_init */); |
| 1055 RenderFrameHostImpl* host2 = manager2->Navigate(entry2); | 1055 RenderFrameHostImpl* host2 = manager2->Navigate(entry2); |
| 1056 | 1056 |
| 1057 // No cross-process transition happens because we are already in the right | 1057 // No cross-process transition happens because we are already in the right |
| 1058 // SiteInstance. We should grant bindings immediately. | 1058 // SiteInstance. We should grant bindings immediately. |
| 1059 EXPECT_EQ(host2, manager2->current_frame_host()); | 1059 EXPECT_EQ(host2, manager2->current_frame_host()); |
| 1060 EXPECT_TRUE( | 1060 EXPECT_TRUE( |
| 1061 host2->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 1061 host2->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
| 1062 | 1062 |
| 1063 manager2->DidNavigateFrame(host2); | 1063 manager2->DidNavigateFrame(host2, true); |
| 1064 } | 1064 } |
| 1065 | 1065 |
| 1066 // Tests that we don't end up in an inconsistent state if a page does a back and | 1066 // Tests that we don't end up in an inconsistent state if a page does a back and |
| 1067 // then reload. http://crbug.com/51680 | 1067 // then reload. http://crbug.com/51680 |
|
Charlie Reis
2014/12/05 19:37:42
Please add:
Also tests that only user-gesture navi
| |
| 1068 TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) { | 1068 TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) { |
| 1069 const GURL kUrl1("http://www.google.com/"); | 1069 const GURL kUrl1("http://www.google.com/"); |
| 1070 const GURL kUrl2("http://www.evil-site.com/"); | 1070 const GURL kUrl2("http://www.evil-site.com/"); |
| 1071 | 1071 |
| 1072 // Navigate to a safe site, then an evil site. | 1072 // Navigate to a safe site, then an evil site. |
| 1073 // This will switch RenderFrameHosts. We cannot assert that the first and | 1073 // This will switch RenderFrameHosts. We cannot assert that the first and |
| 1074 // second RFHs are different, though, because the first one may be promptly | 1074 // second RFHs are different, though, because the first one may be promptly |
| 1075 // deleted. | 1075 // deleted. |
| 1076 contents()->NavigateAndCommit(kUrl1); | 1076 contents()->NavigateAndCommit(kUrl1); |
| 1077 contents()->NavigateAndCommit(kUrl2); | 1077 contents()->NavigateAndCommit(kUrl2); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1093 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; | 1093 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; |
| 1094 params.should_update_history = false; | 1094 params.should_update_history = false; |
| 1095 params.gesture = NavigationGestureAuto; | 1095 params.gesture = NavigationGestureAuto; |
| 1096 params.was_within_same_page = false; | 1096 params.was_within_same_page = false; |
| 1097 params.is_post = false; | 1097 params.is_post = false; |
| 1098 params.page_state = PageState::CreateFromURL(kUrl2); | 1098 params.page_state = PageState::CreateFromURL(kUrl2); |
| 1099 | 1099 |
| 1100 contents()->GetFrameTree()->root()->navigator()->DidNavigate(evil_rfh, | 1100 contents()->GetFrameTree()->root()->navigator()->DidNavigate(evil_rfh, |
| 1101 params); | 1101 params); |
| 1102 | 1102 |
| 1103 // That should have cancelled the pending RFH, and the evil RFH should be the | 1103 // That should NOT have cancelled the pending RFH. |
|
Charlie Reis
2014/12/05 19:37:42
Please add: ", because the reload did not have a u
| |
| 1104 // current one. | 1104 EXPECT_TRUE(contents()->GetRenderManagerForTesting()-> |
| 1105 pending_render_view_host() != NULL); | |
|
Charlie Reis
2014/12/05 19:37:43
Style nit: 4 space indent on an unfinished line.
| |
| 1106 EXPECT_TRUE(contents()->GetRenderManagerForTesting()->pending_frame_host() != | |
| 1107 NULL); | |
| 1108 EXPECT_EQ(evil_rfh, | |
| 1109 contents()->GetRenderManagerForTesting()->current_frame_host()); | |
| 1110 EXPECT_EQ(evil_rfh->GetRenderViewHost(), | |
| 1111 contents()->GetRenderManagerForTesting()->current_host()); | |
| 1112 | |
| 1113 // Also we should not have a pending navigation entry. | |
| 1114 EXPECT_TRUE(contents()->GetController().GetPendingEntry() == NULL); | |
| 1115 NavigationEntry* entry = contents()->GetController().GetVisibleEntry(); | |
| 1116 ASSERT_TRUE(entry != NULL); | |
| 1117 EXPECT_EQ(kUrl2, entry->GetURL()); | |
| 1118 | |
| 1119 // Now do the same but as a user gesture. | |
| 1120 params.gesture = NavigationGestureUser; | |
| 1121 contents()->GetFrameTree()->root()->navigator()->DidNavigate(evil_rfh, | |
| 1122 params); | |
| 1123 | |
| 1124 // User navigation should have cancelled the pending RFH. | |
| 1105 EXPECT_TRUE(contents()->GetRenderManagerForTesting()-> | 1125 EXPECT_TRUE(contents()->GetRenderManagerForTesting()-> |
| 1106 pending_render_view_host() == NULL); | 1126 pending_render_view_host() == NULL); |
| 1107 EXPECT_TRUE(contents()->GetRenderManagerForTesting()->pending_frame_host() == | 1127 EXPECT_TRUE(contents()->GetRenderManagerForTesting()->pending_frame_host() == |
| 1108 NULL); | 1128 NULL); |
| 1109 EXPECT_EQ(evil_rfh, | 1129 EXPECT_EQ(evil_rfh, |
| 1110 contents()->GetRenderManagerForTesting()->current_frame_host()); | 1130 contents()->GetRenderManagerForTesting()->current_frame_host()); |
| 1111 EXPECT_EQ(evil_rfh->GetRenderViewHost(), | 1131 EXPECT_EQ(evil_rfh->GetRenderViewHost(), |
| 1112 contents()->GetRenderManagerForTesting()->current_host()); | 1132 contents()->GetRenderManagerForTesting()->current_host()); |
| 1113 | 1133 |
| 1114 // Also we should not have a pending navigation entry. | 1134 // Also we should not have a pending navigation entry. |
| 1115 EXPECT_TRUE(contents()->GetController().GetPendingEntry() == NULL); | 1135 EXPECT_TRUE(contents()->GetController().GetPendingEntry() == NULL); |
| 1116 NavigationEntry* entry = contents()->GetController().GetVisibleEntry(); | 1136 entry = contents()->GetController().GetVisibleEntry(); |
| 1117 ASSERT_TRUE(entry != NULL); | 1137 ASSERT_TRUE(entry != NULL); |
| 1118 EXPECT_EQ(kUrl2, entry->GetURL()); | 1138 EXPECT_EQ(kUrl2, entry->GetURL()); |
| 1119 } | 1139 } |
| 1120 | 1140 |
| 1121 // Ensure that we can go back and forward even if a SwapOut ACK isn't received. | 1141 // Ensure that we can go back and forward even if a SwapOut ACK isn't received. |
| 1122 // See http://crbug.com/93427. | 1142 // See http://crbug.com/93427. |
| 1123 TEST_F(RenderFrameHostManagerTest, NavigateAfterMissingSwapOutACK) { | 1143 TEST_F(RenderFrameHostManagerTest, NavigateAfterMissingSwapOutACK) { |
| 1124 const GURL kUrl1("http://www.google.com/"); | 1144 const GURL kUrl1("http://www.google.com/"); |
| 1125 const GURL kUrl2("http://www.chromium.org/"); | 1145 const GURL kUrl2("http://www.chromium.org/"); |
| 1126 | 1146 |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1493 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, | 1513 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, |
| 1494 false /* is_renderer_init */); | 1514 false /* is_renderer_init */); |
| 1495 host = manager->Navigate(entry1); | 1515 host = manager->Navigate(entry1); |
| 1496 | 1516 |
| 1497 // The RenderFrameHost created in Init will be reused. | 1517 // The RenderFrameHost created in Init will be reused. |
| 1498 EXPECT_TRUE(host == manager->current_frame_host()); | 1518 EXPECT_TRUE(host == manager->current_frame_host()); |
| 1499 EXPECT_FALSE(manager->pending_frame_host()); | 1519 EXPECT_FALSE(manager->pending_frame_host()); |
| 1500 EXPECT_EQ(manager->current_frame_host()->GetSiteInstance(), instance); | 1520 EXPECT_EQ(manager->current_frame_host()->GetSiteInstance(), instance); |
| 1501 | 1521 |
| 1502 // Commit. | 1522 // Commit. |
| 1503 manager->DidNavigateFrame(host); | 1523 manager->DidNavigateFrame(host, true); |
| 1504 // Commit to SiteInstance should be delayed until RenderView commit. | 1524 // Commit to SiteInstance should be delayed until RenderView commit. |
| 1505 EXPECT_EQ(host, manager->current_frame_host()); | 1525 EXPECT_EQ(host, manager->current_frame_host()); |
| 1506 ASSERT_TRUE(host); | 1526 ASSERT_TRUE(host); |
| 1507 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 1527 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
| 1508 | 1528 |
| 1509 // 2) Navigate to a different domain. ------------------------- | 1529 // 2) Navigate to a different domain. ------------------------- |
| 1510 // Guests stay in the same process on navigation. | 1530 // Guests stay in the same process on navigation. |
| 1511 const GURL kUrl2("http://www.chromium.org"); | 1531 const GURL kUrl2("http://www.chromium.org"); |
| 1512 NavigationEntryImpl entry2( | 1532 NavigationEntryImpl entry2( |
| 1513 NULL /* instance */, -1 /* page_id */, kUrl2, | 1533 NULL /* instance */, -1 /* page_id */, kUrl2, |
| 1514 Referrer(kUrl1, blink::WebReferrerPolicyDefault), | 1534 Referrer(kUrl1, blink::WebReferrerPolicyDefault), |
| 1515 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, | 1535 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, |
| 1516 true /* is_renderer_init */); | 1536 true /* is_renderer_init */); |
| 1517 host = manager->Navigate(entry2); | 1537 host = manager->Navigate(entry2); |
| 1518 | 1538 |
| 1519 // The RenderFrameHost created in Init will be reused. | 1539 // The RenderFrameHost created in Init will be reused. |
| 1520 EXPECT_EQ(host, manager->current_frame_host()); | 1540 EXPECT_EQ(host, manager->current_frame_host()); |
| 1521 EXPECT_FALSE(manager->pending_frame_host()); | 1541 EXPECT_FALSE(manager->pending_frame_host()); |
| 1522 | 1542 |
| 1523 // Commit. | 1543 // Commit. |
| 1524 manager->DidNavigateFrame(host); | 1544 manager->DidNavigateFrame(host, true); |
| 1525 EXPECT_EQ(host, manager->current_frame_host()); | 1545 EXPECT_EQ(host, manager->current_frame_host()); |
| 1526 ASSERT_TRUE(host); | 1546 ASSERT_TRUE(host); |
| 1527 EXPECT_EQ(host->GetSiteInstance(), instance); | 1547 EXPECT_EQ(host->GetSiteInstance(), instance); |
| 1528 } | 1548 } |
| 1529 | 1549 |
| 1530 // Test that we cancel a pending RVH if we close the tab while it's pending. | 1550 // Test that we cancel a pending RVH if we close the tab while it's pending. |
| 1531 // http://crbug.com/294697. | 1551 // http://crbug.com/294697. |
| 1532 TEST_F(RenderFrameHostManagerTest, NavigateWithEarlyClose) { | 1552 TEST_F(RenderFrameHostManagerTest, NavigateWithEarlyClose) { |
| 1533 TestNotificationTracker notifications; | 1553 TestNotificationTracker notifications; |
| 1534 | 1554 |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1554 // The RenderFrameHost created in Init will be reused. | 1574 // The RenderFrameHost created in Init will be reused. |
| 1555 EXPECT_EQ(host, manager->current_frame_host()); | 1575 EXPECT_EQ(host, manager->current_frame_host()); |
| 1556 EXPECT_FALSE(manager->pending_frame_host()); | 1576 EXPECT_FALSE(manager->pending_frame_host()); |
| 1557 | 1577 |
| 1558 // We should observe a notification. | 1578 // We should observe a notification. |
| 1559 EXPECT_TRUE( | 1579 EXPECT_TRUE( |
| 1560 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); | 1580 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); |
| 1561 notifications.Reset(); | 1581 notifications.Reset(); |
| 1562 | 1582 |
| 1563 // Commit. | 1583 // Commit. |
| 1564 manager->DidNavigateFrame(host); | 1584 manager->DidNavigateFrame(host, true); |
| 1565 | 1585 |
| 1566 // Commit to SiteInstance should be delayed until RenderFrame commits. | 1586 // Commit to SiteInstance should be delayed until RenderFrame commits. |
| 1567 EXPECT_EQ(host, manager->current_frame_host()); | 1587 EXPECT_EQ(host, manager->current_frame_host()); |
| 1568 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); | 1588 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); |
| 1569 host->GetSiteInstance()->SetSite(kUrl1); | 1589 host->GetSiteInstance()->SetSite(kUrl1); |
| 1570 | 1590 |
| 1571 // 2) Cross-site navigate to next site. ------------------------- | 1591 // 2) Cross-site navigate to next site. ------------------------- |
| 1572 const GURL kUrl2("http://www.example.com"); | 1592 const GURL kUrl2("http://www.example.com"); |
| 1573 NavigationEntryImpl entry2( | 1593 NavigationEntryImpl entry2( |
| 1574 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(), | 1594 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(), |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1798 pending_rfh->GetSiteInstance()->increment_active_frame_count(); | 1818 pending_rfh->GetSiteInstance()->increment_active_frame_count(); |
| 1799 | 1819 |
| 1800 contents()->GetMainFrame()->OnMessageReceived( | 1820 contents()->GetMainFrame()->OnMessageReceived( |
| 1801 FrameHostMsg_BeforeUnload_ACK(0, false, now, now)); | 1821 FrameHostMsg_BeforeUnload_ACK(0, false, now, now)); |
| 1802 EXPECT_FALSE(contents()->cross_navigation_pending()); | 1822 EXPECT_FALSE(contents()->cross_navigation_pending()); |
| 1803 EXPECT_FALSE(rfh_deleted_observer.deleted()); | 1823 EXPECT_FALSE(rfh_deleted_observer.deleted()); |
| 1804 } | 1824 } |
| 1805 } | 1825 } |
| 1806 | 1826 |
| 1807 } // namespace content | 1827 } // namespace content |
| OLD | NEW |