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

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

Issue 1418853003: Remove RFHM::GetNavigatingWebUI() and RFHM::web_ui(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@webui-refactor
Patch Set: Addressed nits. Created 5 years, 1 month 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/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/compositor/test/no_transport_image_transport_factory.h " 10 #include "content/browser/compositor/test/no_transport_image_transport_factory.h "
(...skipping 1079 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 TEST_F(RenderFrameHostManagerTest, WebUI) { 1090 TEST_F(RenderFrameHostManagerTest, WebUI) {
1091 set_should_create_webui(true); 1091 set_should_create_webui(true);
1092 SiteInstance* instance = SiteInstance::Create(browser_context()); 1092 SiteInstance* instance = SiteInstance::Create(browser_context());
1093 1093
1094 scoped_ptr<TestWebContents> web_contents( 1094 scoped_ptr<TestWebContents> web_contents(
1095 TestWebContents::Create(browser_context(), instance)); 1095 TestWebContents::Create(browser_context(), instance));
1096 RenderFrameHostManager* manager = web_contents->GetRenderManagerForTesting(); 1096 RenderFrameHostManager* manager = web_contents->GetRenderManagerForTesting();
1097 RenderFrameHostImpl* initial_rfh = manager->current_frame_host(); 1097 RenderFrameHostImpl* initial_rfh = manager->current_frame_host();
1098 1098
1099 EXPECT_FALSE(manager->current_host()->IsRenderViewLive()); 1099 EXPECT_FALSE(manager->current_host()->IsRenderViewLive());
1100 EXPECT_FALSE(manager->web_ui()); 1100 EXPECT_FALSE(manager->current_frame_host()->web_ui());
1101 EXPECT_TRUE(initial_rfh); 1101 EXPECT_TRUE(initial_rfh);
1102 1102
1103 const GURL kUrl("chrome://foo"); 1103 const GURL kUrl("chrome://foo");
1104 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl, 1104 NavigationEntryImpl entry(NULL /* instance */, -1 /* page_id */, kUrl,
1105 Referrer(), base::string16() /* title */, 1105 Referrer(), base::string16() /* title */,
1106 ui::PAGE_TRANSITION_TYPED, 1106 ui::PAGE_TRANSITION_TYPED,
1107 false /* is_renderer_init */); 1107 false /* is_renderer_init */);
1108 RenderFrameHostImpl* host = NavigateToEntry(manager, entry); 1108 RenderFrameHostImpl* host = NavigateToEntry(manager, entry);
1109 1109
1110 // We commit the pending RenderFrameHost immediately because the previous 1110 // We commit the pending RenderFrameHost immediately because the previous
1111 // RenderFrameHost was not live. We test a case where it is live in 1111 // RenderFrameHost was not live. We test a case where it is live in
1112 // WebUIInNewTab. 1112 // WebUIInNewTab.
1113 EXPECT_TRUE(host); 1113 EXPECT_TRUE(host);
1114 EXPECT_NE(initial_rfh, host); 1114 EXPECT_NE(initial_rfh, host);
1115 EXPECT_EQ(host, manager->current_frame_host()); 1115 EXPECT_EQ(host, manager->current_frame_host());
1116 EXPECT_FALSE(GetPendingFrameHost(manager)); 1116 EXPECT_FALSE(GetPendingFrameHost(manager));
1117 1117
1118 // It's important that the SiteInstance get set on the Web UI page as soon 1118 // It's important that the SiteInstance get set on the Web UI page as soon
1119 // as the navigation starts, rather than lazily after it commits, so we don't 1119 // as the navigation starts, rather than lazily after it commits, so we don't
1120 // try to re-use the SiteInstance/process for non Web UI things that may 1120 // try to re-use the SiteInstance/process for non Web UI things that may
1121 // get loaded in between. 1121 // get loaded in between.
1122 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); 1122 EXPECT_TRUE(host->GetSiteInstance()->HasSite());
1123 EXPECT_EQ(kUrl, host->GetSiteInstance()->GetSiteURL()); 1123 EXPECT_EQ(kUrl, host->GetSiteInstance()->GetSiteURL());
1124 1124
1125 // The Web UI is committed immediately because the RenderViewHost has not been 1125 // The Web UI is committed immediately because the RenderViewHost has not been
1126 // used yet. UpdateStateForNavigate() took the short cut path. 1126 // used yet. UpdateStateForNavigate() took the short cut path.
1127 EXPECT_FALSE(manager->GetNavigatingWebUI()); 1127 EXPECT_TRUE(manager->current_frame_host()->web_ui());
1128 EXPECT_TRUE(manager->web_ui());
1129 1128
1130 // Commit. 1129 // Commit.
1131 manager->DidNavigateFrame(host, true); 1130 manager->DidNavigateFrame(host, true);
1132 EXPECT_TRUE( 1131 EXPECT_TRUE(
1133 host->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 1132 host->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
1134 } 1133 }
1135 1134
1136 // Tests that we can open a WebUI link in a new tab from a WebUI page and still 1135 // Tests that we can open a WebUI link in a new tab from a WebUI page and still
1137 // grant the correct bindings. http://crbug.com/189101. 1136 // grant the correct bindings. http://crbug.com/189101.
1138 TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) { 1137 TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1187 const GURL kUrl2("chrome://foo/bar"); 1186 const GURL kUrl2("chrome://foo/bar");
1188 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, 1187 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2,
1189 Referrer(), base::string16() /* title */, 1188 Referrer(), base::string16() /* title */,
1190 ui::PAGE_TRANSITION_LINK, 1189 ui::PAGE_TRANSITION_LINK,
1191 true /* is_renderer_init */); 1190 true /* is_renderer_init */);
1192 RenderFrameHostImpl* host2 = NavigateToEntry(manager2, entry2); 1191 RenderFrameHostImpl* host2 = NavigateToEntry(manager2, entry2);
1193 1192
1194 // No cross-process transition happens because we are already in the right 1193 // No cross-process transition happens because we are already in the right
1195 // SiteInstance. We should grant bindings immediately. 1194 // SiteInstance. We should grant bindings immediately.
1196 EXPECT_EQ(host2, manager2->current_frame_host()); 1195 EXPECT_EQ(host2, manager2->current_frame_host());
1197 EXPECT_TRUE(manager2->GetNavigatingWebUI()); 1196 EXPECT_TRUE(host2->web_ui());
1198 EXPECT_TRUE( 1197 EXPECT_TRUE(
1199 host2->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 1198 host2->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
1200 1199
1201 manager2->DidNavigateFrame(host2, true); 1200 manager2->DidNavigateFrame(host2, true);
1202 } 1201 }
1203 1202
1204 // Tests that a WebUI is correctly reused between chrome:// pages. 1203 // Tests that a WebUI is correctly reused between chrome:// pages.
1205 TEST_F(RenderFrameHostManagerTest, WebUIWasReused) { 1204 TEST_F(RenderFrameHostManagerTest, WebUIWasReused) {
1206 set_should_create_webui(true); 1205 set_should_create_webui(true);
1207 1206
1208 // Navigate to a WebUI page. 1207 // Navigate to a WebUI page.
1209 const GURL kUrl1("chrome://foo"); 1208 const GURL kUrl1("chrome://foo");
1210 contents()->NavigateAndCommit(kUrl1); 1209 contents()->NavigateAndCommit(kUrl1);
1211 RenderFrameHostManager* manager = 1210 WebUIImpl* web_ui = main_test_rfh()->web_ui();
1212 main_test_rfh()->frame_tree_node()->render_manager();
1213 WebUIImpl* web_ui = manager->web_ui();
1214 EXPECT_TRUE(web_ui); 1211 EXPECT_TRUE(web_ui);
1215 1212
1216 // Navigate to another WebUI page which should be same-site and keep the 1213 // Navigate to another WebUI page which should be same-site and keep the
1217 // current WebUI. 1214 // current WebUI.
1218 const GURL kUrl2("chrome://foo/bar"); 1215 const GURL kUrl2("chrome://foo/bar");
1219 contents()->NavigateAndCommit(kUrl2); 1216 contents()->NavigateAndCommit(kUrl2);
1220 EXPECT_EQ(web_ui, manager->web_ui()); 1217 EXPECT_EQ(web_ui, main_test_rfh()->web_ui());
1221 } 1218 }
1222 1219
1223 // Tests that a WebUI is correctly cleaned up when navigating from a chrome:// 1220 // Tests that a WebUI is correctly cleaned up when navigating from a chrome://
1224 // page to a non-chrome:// page. 1221 // page to a non-chrome:// page.
1225 TEST_F(RenderFrameHostManagerTest, WebUIWasCleared) { 1222 TEST_F(RenderFrameHostManagerTest, WebUIWasCleared) {
1226 set_should_create_webui(true); 1223 set_should_create_webui(true);
1227 1224
1228 // Navigate to a WebUI page. 1225 // Navigate to a WebUI page.
1229 const GURL kUrl1("chrome://foo"); 1226 const GURL kUrl1("chrome://foo");
1230 contents()->NavigateAndCommit(kUrl1); 1227 contents()->NavigateAndCommit(kUrl1);
1231 EXPECT_TRUE(main_test_rfh()->frame_tree_node()->render_manager()->web_ui()); 1228 EXPECT_TRUE(main_test_rfh()->web_ui());
1232 1229
1233 // Navigate to a non-WebUI page. 1230 // Navigate to a non-WebUI page.
1234 const GURL kUrl2("http://www.google.com"); 1231 const GURL kUrl2("http://www.google.com");
1235 contents()->NavigateAndCommit(kUrl2); 1232 contents()->NavigateAndCommit(kUrl2);
1236 EXPECT_FALSE(main_test_rfh()->frame_tree_node()->render_manager()->web_ui()); 1233 EXPECT_FALSE(main_test_rfh()->web_ui());
1237 } 1234 }
1238 1235
1239 // Tests that we don't end up in an inconsistent state if a page does a back and 1236 // Tests that we don't end up in an inconsistent state if a page does a back and
1240 // then reload. http://crbug.com/51680 1237 // then reload. http://crbug.com/51680
1241 // Also tests that only user-gesture navigations can interrupt cross-process 1238 // Also tests that only user-gesture navigations can interrupt cross-process
1242 // navigations. http://crbug.com/75195 1239 // navigations. http://crbug.com/75195
1243 TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) { 1240 TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) {
1244 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 1241 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
1245 switches::kEnableBrowserSideNavigation)) { 1242 switches::kEnableBrowserSideNavigation)) {
1246 // PlzNavigate uses a significantly different logic for renderer initiated 1243 // PlzNavigate uses a significantly different logic for renderer initiated
(...skipping 1407 matching lines...) Expand 10 before | Expand all | Expand 10 after
2654 root->render_manager()->GetRenderFrameProxyHost(hostC->GetSiteInstance()); 2651 root->render_manager()->GetRenderFrameProxyHost(hostC->GetSiteInstance());
2655 EXPECT_TRUE(proxy); 2652 EXPECT_TRUE(proxy);
2656 2653
2657 // Since the B->C navigation happened while the current page was focused, 2654 // Since the B->C navigation happened while the current page was focused,
2658 // page focus should propagate to the new subframe process. Check that 2655 // page focus should propagate to the new subframe process. Check that
2659 // process C received the proper focus message. 2656 // process C received the proper focus message.
2660 VerifyPageFocusMessage(hostC->GetProcess(), true, proxy->GetRoutingID()); 2657 VerifyPageFocusMessage(hostC->GetProcess(), true, proxy->GetRoutingID());
2661 } 2658 }
2662 2659
2663 } // namespace content 2660 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_manager_browsertest.cc ('k') | content/browser/web_contents/web_contents_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698