Index: content/browser/frame_host/render_frame_host_manager_unittest.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc |
index b23ecc97c42afdce13cb883c2ecd2120e086a4a8..b756e904d30cc5bfc80fc6ed10fa86fee3848ffb 100644 |
--- a/content/browser/frame_host/render_frame_host_manager_unittest.cc |
+++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc |
@@ -993,6 +993,38 @@ TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) { |
manager2->DidNavigateFrame(host2); |
} |
+// Test that WebUI can be navigated to in single-process mode. |
+TEST_F(RenderFrameHostManagerTest, |
+ CanNavigateBetweenNormalPagesAndWebUIInSingleProcess) { |
+ const GURL kNormalUrl1("http://chromium.org"); |
+ const GURL kNormalUrl2("http://example.com"); |
+ const GURL kWebUIUrl("chrome://foo"); |
+ |
+ // We both set flag on RenderProcesHost and append the switch due to the fact |
+ // that some code checks the switch directly instead of relying |
+ // on RenderProcessHost |
nasko
2014/09/29 22:21:48
sidenote: It is best to have one source of truth i
Krzysztof Olczyk
2014/10/01 10:17:47
Done: https://code.google.com/p/chromium/issues/de
|
+ RenderProcessHost::SetRunRendererInProcess(true); |
+ CommandLine::ForCurrentProcess()->AppendSwitch(switches::kSingleProcess); |
+ set_should_create_webui(true); |
+ |
+ RenderFrameHostManager* manager = |
+ static_cast<TestWebContents*>( |
nasko
2014/09/29 22:21:48
nit: this line should be able to fit on the previo
Krzysztof Olczyk
2014/10/01 10:17:47
Done
|
+ web_contents())->GetRenderManagerForTesting(); |
+ |
+ NavigateAndCommit(kNormalUrl1); |
+ EXPECT_EQ(kNormalUrl1, |
+ manager->current_frame_host()->GetSiteInstance()->GetSiteURL()); |
+ EXPECT_FALSE(manager->web_ui()); |
+ NavigateAndCommit(kWebUIUrl); |
+ EXPECT_EQ(kWebUIUrl, |
+ manager->current_frame_host()->GetSiteInstance()->GetSiteURL()); |
+ EXPECT_TRUE(manager->web_ui()); |
+ NavigateAndCommit(kNormalUrl2); |
+ EXPECT_EQ(kNormalUrl2, |
+ manager->current_frame_host()->GetSiteInstance()->GetSiteURL()); |
+ EXPECT_FALSE(manager->web_ui()); |
+} |
+ |
// Tests that we don't end up in an inconsistent state if a page does a back and |
// then reload. http://crbug.com/51680 |
TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) { |