| 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/render_frame_host_manager.h" | 5 #include "content/browser/frame_host/render_frame_host_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 return nullptr; | 276 return nullptr; |
| 277 return render_frame_host_->render_view_host(); | 277 return render_frame_host_->render_view_host(); |
| 278 } | 278 } |
| 279 | 279 |
| 280 RenderViewHostImpl* RenderFrameHostManager::pending_render_view_host() const { | 280 RenderViewHostImpl* RenderFrameHostManager::pending_render_view_host() const { |
| 281 if (!pending_render_frame_host_) | 281 if (!pending_render_frame_host_) |
| 282 return nullptr; | 282 return nullptr; |
| 283 return pending_render_frame_host_->render_view_host(); | 283 return pending_render_frame_host_->render_view_host(); |
| 284 } | 284 } |
| 285 | 285 |
| 286 WebUIImpl* RenderFrameHostManager::GetNavigatingWebUI() const { | |
| 287 if (current_web_ui_is_navigating_) | |
| 288 return render_frame_host_->web_ui(); | |
| 289 | |
| 290 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 291 switches::kEnableBrowserSideNavigation)) { | |
| 292 if (speculative_render_frame_host_) | |
| 293 return speculative_render_frame_host_->web_ui(); | |
| 294 } else { | |
| 295 if (pending_render_frame_host_) | |
| 296 return pending_render_frame_host_->web_ui(); | |
| 297 } | |
| 298 return nullptr; | |
| 299 } | |
| 300 | |
| 301 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { | 286 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { |
| 302 if (interstitial_page_) | 287 if (interstitial_page_) |
| 303 return interstitial_page_->GetView(); | 288 return interstitial_page_->GetView(); |
| 304 if (render_frame_host_) | 289 if (render_frame_host_) |
| 305 return render_frame_host_->GetView(); | 290 return render_frame_host_->GetView(); |
| 306 return nullptr; | 291 return nullptr; |
| 307 } | 292 } |
| 308 | 293 |
| 309 bool RenderFrameHostManager::ForInnerDelegate() { | 294 bool RenderFrameHostManager::ForInnerDelegate() { |
| 310 return delegate_->GetOuterDelegateFrameTreeNodeID() != | 295 return delegate_->GetOuterDelegateFrameTreeNodeID() != |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 // site that is handled via Mojo, then Mojo WebUI code in //chrome will | 386 // site that is handled via Mojo, then Mojo WebUI code in //chrome will |
| 402 // add a service to this RFH's ServiceRegistry). | 387 // add a service to this RFH's ServiceRegistry). |
| 403 dest_render_frame_host->SetUpMojoIfNeeded(); | 388 dest_render_frame_host->SetUpMojoIfNeeded(); |
| 404 | 389 |
| 405 // Recreate the opener chain. | 390 // Recreate the opener chain. |
| 406 CreateOpenerProxies(dest_render_frame_host->GetSiteInstance(), | 391 CreateOpenerProxies(dest_render_frame_host->GetSiteInstance(), |
| 407 frame_tree_node_); | 392 frame_tree_node_); |
| 408 if (!InitRenderView(dest_render_frame_host->render_view_host(), nullptr)) | 393 if (!InitRenderView(dest_render_frame_host->render_view_host(), nullptr)) |
| 409 return nullptr; | 394 return nullptr; |
| 410 | 395 |
| 411 if (GetNavigatingWebUI()) { | 396 if (dest_render_frame_host->web_ui()) { |
| 412 GetNavigatingWebUI()->RenderViewCreated( | 397 dest_render_frame_host->web_ui()->RenderViewCreated( |
| 413 dest_render_frame_host->render_view_host()); | 398 dest_render_frame_host->render_view_host()); |
| 414 } | 399 } |
| 415 | 400 |
| 416 // Now that we've created a new renderer, be sure to hide it if it isn't | 401 // Now that we've created a new renderer, be sure to hide it if it isn't |
| 417 // our primary one. Otherwise, we might crash if we try to call Show() | 402 // our primary one. Otherwise, we might crash if we try to call Show() |
| 418 // on it later. | 403 // on it later. |
| 419 if (dest_render_frame_host != render_frame_host_) { | 404 if (dest_render_frame_host != render_frame_host_) { |
| 420 if (dest_render_frame_host->GetView()) | 405 if (dest_render_frame_host->GetView()) |
| 421 dest_render_frame_host->GetView()->Hide(); | 406 dest_render_frame_host->GetView()->Hide(); |
| 422 } else { | 407 } else { |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 | 646 |
| 662 void RenderFrameHostManager::CommitPendingIfNecessary( | 647 void RenderFrameHostManager::CommitPendingIfNecessary( |
| 663 RenderFrameHostImpl* render_frame_host, | 648 RenderFrameHostImpl* render_frame_host, |
| 664 bool was_caused_by_user_gesture) { | 649 bool was_caused_by_user_gesture) { |
| 665 if (!pending_render_frame_host_ && !speculative_render_frame_host_) { | 650 if (!pending_render_frame_host_ && !speculative_render_frame_host_) { |
| 666 DCHECK(!current_web_ui_is_navigating_ || render_frame_host_->web_ui()); | 651 DCHECK(!current_web_ui_is_navigating_ || render_frame_host_->web_ui()); |
| 667 | 652 |
| 668 // We should only hear this from our current renderer. | 653 // We should only hear this from our current renderer. |
| 669 DCHECK_EQ(render_frame_host_, render_frame_host); | 654 DCHECK_EQ(render_frame_host_, render_frame_host); |
| 670 | 655 |
| 671 // Even when there is no pending RVH, there may be a pending Web UI. | 656 // If the current RenderFrameHost has a WebUI it must be committed (for |
| 672 if (GetNavigatingWebUI()) | 657 // proper focus setting). |
| 658 if (render_frame_host_->web_ui()) |
| 673 CommitPending(); | 659 CommitPending(); |
| 674 return; | 660 return; |
| 675 } | 661 } |
| 676 | 662 |
| 677 if (render_frame_host == pending_render_frame_host_ || | 663 if (render_frame_host == pending_render_frame_host_ || |
| 678 render_frame_host == speculative_render_frame_host_) { | 664 render_frame_host == speculative_render_frame_host_) { |
| 679 // The pending cross-process navigation completed, so show the renderer. | 665 // The pending cross-process navigation completed, so show the renderer. |
| 680 CommitPending(); | 666 CommitPending(); |
| 681 } else if (render_frame_host == render_frame_host_) { | 667 } else if (render_frame_host == render_frame_host_) { |
| 682 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 668 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1023 request.common_params().url, request.bindings()); | 1009 request.common_params().url, request.bindings()); |
| 1024 | 1010 |
| 1025 // If a change in WebUI happened, check this is an acceptable case. | 1011 // If a change in WebUI happened, check this is an acceptable case. |
| 1026 DCHECK(!changed_web_ui || | 1012 DCHECK(!changed_web_ui || |
| 1027 (IsAcceptableWebUITransition( | 1013 (IsAcceptableWebUITransition( |
| 1028 previous_web_ui_type, request.common_params().url, | 1014 previous_web_ui_type, request.common_params().url, |
| 1029 request.restore_type() != NavigationEntryImpl::RESTORE_NONE))); | 1015 request.restore_type() != NavigationEntryImpl::RESTORE_NONE))); |
| 1030 | 1016 |
| 1031 // If there is a WebUI in the current RenderFrameHost, it will navigate. | 1017 // If there is a WebUI in the current RenderFrameHost, it will navigate. |
| 1032 current_web_ui_is_navigating_ = !!render_frame_host_->web_ui(); | 1018 current_web_ui_is_navigating_ = !!render_frame_host_->web_ui(); |
| 1033 DCHECK_EQ(GetNavigatingWebUI(), render_frame_host_->web_ui()); | |
| 1034 | 1019 |
| 1035 // If the current RenderFrameHost has a WebUI and the associated RenderFrame | 1020 // If the current RenderFrameHost has a WebUI and the associated RenderFrame |
| 1036 // is alive, notify to the WebUI that the RenderView is being created or | 1021 // is alive, notify to the WebUI that the RenderView is being created or |
| 1037 // reused depending on whether the WebUI was changed or not. | 1022 // reused depending on whether the WebUI was changed or not. |
| 1038 if (GetNavigatingWebUI() && render_frame_host_->IsRenderFrameLive()) { | 1023 if (render_frame_host_->web_ui() && |
| 1024 render_frame_host_->IsRenderFrameLive()) { |
| 1039 if (changed_web_ui) { | 1025 if (changed_web_ui) { |
| 1040 GetNavigatingWebUI()->RenderViewCreated( | 1026 render_frame_host_->web_ui()->RenderViewCreated( |
| 1041 render_frame_host_->render_view_host()); | 1027 render_frame_host_->render_view_host()); |
| 1042 } else { | 1028 } else { |
| 1043 GetNavigatingWebUI()->RenderViewReused( | 1029 render_frame_host_->web_ui()->RenderViewReused( |
| 1044 render_frame_host_->render_view_host(), | 1030 render_frame_host_->render_view_host(), |
| 1045 frame_tree_node_->IsMainFrame()); | 1031 frame_tree_node_->IsMainFrame()); |
| 1046 } | 1032 } |
| 1047 } | 1033 } |
| 1048 | 1034 |
| 1049 DCHECK(!speculative_render_frame_host_); | 1035 DCHECK(!speculative_render_frame_host_); |
| 1050 } else { | 1036 } else { |
| 1051 // If the SiteInstance for the final URL doesn't match the one from the | 1037 // If the SiteInstance for the final URL doesn't match the one from the |
| 1052 // speculatively created RenderFrameHost, create a new RenderFrameHost using | 1038 // speculatively created RenderFrameHost, create a new RenderFrameHost using |
| 1053 // this new SiteInstance. | 1039 // this new SiteInstance. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1070 } else { | 1056 } else { |
| 1071 // Reuses the previous speculative RenderFrameHost. | 1057 // Reuses the previous speculative RenderFrameHost. |
| 1072 bool changed_web_ui = speculative_render_frame_host_->UpdateWebUI( | 1058 bool changed_web_ui = speculative_render_frame_host_->UpdateWebUI( |
| 1073 request.common_params().url, request.bindings()); | 1059 request.common_params().url, request.bindings()); |
| 1074 if (changed_web_ui && speculative_render_frame_host_->web_ui()) { | 1060 if (changed_web_ui && speculative_render_frame_host_->web_ui()) { |
| 1075 speculative_render_frame_host_->web_ui()->RenderViewCreated( | 1061 speculative_render_frame_host_->web_ui()->RenderViewCreated( |
| 1076 speculative_render_frame_host_->render_view_host()); | 1062 speculative_render_frame_host_->render_view_host()); |
| 1077 } | 1063 } |
| 1078 } | 1064 } |
| 1079 DCHECK(speculative_render_frame_host_); | 1065 DCHECK(speculative_render_frame_host_); |
| 1080 DCHECK_EQ(GetNavigatingWebUI(), speculative_render_frame_host_->web_ui()); | |
| 1081 | 1066 |
| 1082 navigation_rfh = speculative_render_frame_host_.get(); | 1067 navigation_rfh = speculative_render_frame_host_.get(); |
| 1083 | 1068 |
| 1084 // Check if our current RFH is live. | 1069 // Check if our current RFH is live. |
| 1085 if (!render_frame_host_->IsRenderFrameLive()) { | 1070 if (!render_frame_host_->IsRenderFrameLive()) { |
| 1086 // The current RFH is not live. There's no reason to sit around with a | 1071 // The current RFH is not live. There's no reason to sit around with a |
| 1087 // sad tab or a newly created RFH while we wait for the navigation to | 1072 // sad tab or a newly created RFH while we wait for the navigation to |
| 1088 // complete. Just switch to the speculative RFH now and go back to normal. | 1073 // complete. Just switch to the speculative RFH now and go back to normal. |
| 1089 // (Note that we don't care about on{before}unload handlers if the current | 1074 // (Note that we don't care about on{before}unload handlers if the current |
| 1090 // RFH isn't live.) | 1075 // RFH isn't live.) |
| 1091 CommitPending(); | 1076 CommitPending(); |
| 1092 } | 1077 } |
| 1093 DCHECK(!current_web_ui_is_navigating_); | 1078 DCHECK(!current_web_ui_is_navigating_); |
| 1094 } | 1079 } |
| 1095 DCHECK(navigation_rfh && | 1080 DCHECK(navigation_rfh && |
| 1096 (navigation_rfh == render_frame_host_.get() || | 1081 (navigation_rfh == render_frame_host_.get() || |
| 1097 navigation_rfh == speculative_render_frame_host_.get())); | 1082 navigation_rfh == speculative_render_frame_host_.get())); |
| 1098 | 1083 |
| 1099 // If the RenderFrame that needs to navigate is not live (its process was just | 1084 // If the RenderFrame that needs to navigate is not live (its process was just |
| 1100 // created or has crashed), initialize it. | 1085 // created or has crashed), initialize it. |
| 1101 if (!navigation_rfh->IsRenderFrameLive()) { | 1086 if (!navigation_rfh->IsRenderFrameLive()) { |
| 1102 // Recreate the opener chain. | 1087 // Recreate the opener chain. |
| 1103 CreateOpenerProxies(navigation_rfh->GetSiteInstance(), frame_tree_node_); | 1088 CreateOpenerProxies(navigation_rfh->GetSiteInstance(), frame_tree_node_); |
| 1104 if (!InitRenderView(navigation_rfh->render_view_host(), nullptr)) | 1089 if (!InitRenderView(navigation_rfh->render_view_host(), nullptr)) |
| 1105 return nullptr; | 1090 return nullptr; |
| 1106 | 1091 |
| 1107 if (GetNavigatingWebUI()) { | 1092 if (navigation_rfh->web_ui()) { |
| 1108 GetNavigatingWebUI()->RenderViewCreated( | 1093 navigation_rfh->web_ui()->RenderViewCreated( |
| 1109 navigation_rfh->render_view_host()); | 1094 navigation_rfh->render_view_host()); |
| 1110 } | 1095 } |
| 1111 | 1096 |
| 1112 if (navigation_rfh == render_frame_host_) { | 1097 if (navigation_rfh == render_frame_host_) { |
| 1113 // TODO(nasko): This is a very ugly hack. The Chrome extensions process | 1098 // TODO(nasko): This is a very ugly hack. The Chrome extensions process |
| 1114 // manager still uses NotificationService and expects to see a | 1099 // manager still uses NotificationService and expects to see a |
| 1115 // RenderViewHost changed notification after WebContents and | 1100 // RenderViewHost changed notification after WebContents and |
| 1116 // RenderFrameHostManager are completely initialized. This should be | 1101 // RenderFrameHostManager are completely initialized. This should be |
| 1117 // removed once the process manager moves away from NotificationService. | 1102 // removed once the process manager moves away from NotificationService. |
| 1118 // See https://crbug.com/462682. | 1103 // See https://crbug.com/462682. |
| (...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2104 void RenderFrameHostManager::CommitPending() { | 2089 void RenderFrameHostManager::CommitPending() { |
| 2105 TRACE_EVENT1("navigation", "RenderFrameHostManager::CommitPending", | 2090 TRACE_EVENT1("navigation", "RenderFrameHostManager::CommitPending", |
| 2106 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); | 2091 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); |
| 2107 // First check whether we're going to want to focus the location bar after | 2092 // First check whether we're going to want to focus the location bar after |
| 2108 // this commit. We do this now because the navigation hasn't formally | 2093 // this commit. We do this now because the navigation hasn't formally |
| 2109 // committed yet, so if we've already cleared the pending WebUI the call chain | 2094 // committed yet, so if we've already cleared the pending WebUI the call chain |
| 2110 // this triggers won't be able to figure out what's going on. | 2095 // this triggers won't be able to figure out what's going on. |
| 2111 bool will_focus_location_bar = delegate_->FocusLocationBarByDefault(); | 2096 bool will_focus_location_bar = delegate_->FocusLocationBarByDefault(); |
| 2112 | 2097 |
| 2113 if (!pending_render_frame_host_ && !speculative_render_frame_host_) { | 2098 if (!pending_render_frame_host_ && !speculative_render_frame_host_) { |
| 2114 DCHECK_EQ(current_web_ui_is_navigating_, !!render_frame_host_->web_ui()); | 2099 DCHECK(!current_web_ui_is_navigating_ || render_frame_host_->web_ui()); |
| 2115 current_web_ui_is_navigating_ = false; | 2100 current_web_ui_is_navigating_ = false; |
| 2116 // If there's no pending/speculative RenderFrameHost then the current | 2101 // If there's no pending/speculative RenderFrameHost then the current |
| 2117 // RenderFrameHost is committing. | 2102 // RenderFrameHost is committing. |
| 2118 if (will_focus_location_bar) | 2103 if (will_focus_location_bar) |
| 2119 delegate_->SetFocusToLocationBar(false); | 2104 delegate_->SetFocusToLocationBar(false); |
| 2120 return; | 2105 return; |
| 2121 } | 2106 } |
| 2122 | 2107 |
| 2123 // Remember if the page was focused so we can focus the new renderer in | 2108 // Remember if the page was focused so we can focus the new renderer in |
| 2124 // that case. | 2109 // that case. |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2320 return nullptr; | 2305 return nullptr; |
| 2321 | 2306 |
| 2322 pending_render_frame_host_->UpdateWebUI(dest_url, bindings); | 2307 pending_render_frame_host_->UpdateWebUI(dest_url, bindings); |
| 2323 if (pending_render_frame_host_->web_ui()) { | 2308 if (pending_render_frame_host_->web_ui()) { |
| 2324 pending_render_frame_host_->web_ui()->RenderViewCreated( | 2309 pending_render_frame_host_->web_ui()->RenderViewCreated( |
| 2325 pending_render_frame_host_->render_view_host()); | 2310 pending_render_frame_host_->render_view_host()); |
| 2326 } | 2311 } |
| 2327 | 2312 |
| 2328 // We now have a pending RFH and possibly an associated pending WebUI. | 2313 // We now have a pending RFH and possibly an associated pending WebUI. |
| 2329 DCHECK(pending_render_frame_host_); | 2314 DCHECK(pending_render_frame_host_); |
| 2330 DCHECK_EQ(GetNavigatingWebUI(), pending_render_frame_host_->web_ui()); | |
| 2331 | 2315 |
| 2332 // Check if our current RFH is live before we set up a transition. | 2316 // Check if our current RFH is live before we set up a transition. |
| 2333 if (!render_frame_host_->IsRenderFrameLive()) { | 2317 if (!render_frame_host_->IsRenderFrameLive()) { |
| 2334 // The current RFH is not live. There's no reason to sit around with a | 2318 // The current RFH is not live. There's no reason to sit around with a |
| 2335 // sad tab or a newly created RFH while we wait for the pending RFH to | 2319 // sad tab or a newly created RFH while we wait for the pending RFH to |
| 2336 // navigate. Just switch to the pending RFH now and go back to normal. | 2320 // navigate. Just switch to the pending RFH now and go back to normal. |
| 2337 // (Note that we don't care about on{before}unload handlers if the current | 2321 // (Note that we don't care about on{before}unload handlers if the current |
| 2338 // RFH isn't live.) | 2322 // RFH isn't live.) |
| 2339 CommitPending(); | 2323 CommitPending(); |
| 2340 return render_frame_host_.get(); | 2324 return render_frame_host_.get(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2384 WebUI::TypeID previous_web_ui_type = render_frame_host_->web_ui_type(); | 2368 WebUI::TypeID previous_web_ui_type = render_frame_host_->web_ui_type(); |
| 2385 bool changed_web_ui = render_frame_host_->UpdateWebUI(dest_url, bindings); | 2369 bool changed_web_ui = render_frame_host_->UpdateWebUI(dest_url, bindings); |
| 2386 | 2370 |
| 2387 // If a change in WebUI happened, check this is an acceptable case. | 2371 // If a change in WebUI happened, check this is an acceptable case. |
| 2388 DCHECK(!changed_web_ui || | 2372 DCHECK(!changed_web_ui || |
| 2389 IsAcceptableWebUITransition(previous_web_ui_type, dest_url, | 2373 IsAcceptableWebUITransition(previous_web_ui_type, dest_url, |
| 2390 dest_is_restore)); | 2374 dest_is_restore)); |
| 2391 | 2375 |
| 2392 // If there is a WebUI in the current RenderFrameHost, it will navigate. | 2376 // If there is a WebUI in the current RenderFrameHost, it will navigate. |
| 2393 current_web_ui_is_navigating_ = !!render_frame_host_->web_ui(); | 2377 current_web_ui_is_navigating_ = !!render_frame_host_->web_ui(); |
| 2394 DCHECK_EQ(GetNavigatingWebUI(), render_frame_host_->web_ui()); | |
| 2395 | 2378 |
| 2396 // If the current RenderFrameHost has a WebUI and the associated RenderFrame | 2379 // If the current RenderFrameHost has a WebUI and the associated RenderFrame |
| 2397 // is alive, notify to the WebUI that the RenderView is being created or | 2380 // is alive, notify to the WebUI that the RenderView is being created or |
| 2398 // reused depending on whether the WebUI was changed or not. | 2381 // reused depending on whether the WebUI was changed or not. |
| 2399 if (GetNavigatingWebUI() && render_frame_host_->IsRenderFrameLive()) { | 2382 if (render_frame_host_->web_ui() && render_frame_host_->IsRenderFrameLive()) { |
| 2400 if (changed_web_ui) { | 2383 if (changed_web_ui) { |
| 2401 GetNavigatingWebUI()->RenderViewCreated( | 2384 render_frame_host_->web_ui()->RenderViewCreated( |
| 2402 render_frame_host_->render_view_host()); | 2385 render_frame_host_->render_view_host()); |
| 2403 } else { | 2386 } else { |
| 2404 GetNavigatingWebUI()->RenderViewReused( | 2387 render_frame_host_->web_ui()->RenderViewReused( |
| 2405 render_frame_host_->render_view_host(), | 2388 render_frame_host_->render_view_host(), |
| 2406 frame_tree_node_->IsMainFrame()); | 2389 frame_tree_node_->IsMainFrame()); |
| 2407 } | 2390 } |
| 2408 } | 2391 } |
| 2409 | 2392 |
| 2410 // The renderer can exit view source mode when any error or cancellation | 2393 // The renderer can exit view source mode when any error or cancellation |
| 2411 // happen. We must overwrite to recover the mode. | 2394 // happen. We must overwrite to recover the mode. |
| 2412 if (dest_is_view_source_mode) { | 2395 if (dest_is_view_source_mode) { |
| 2413 render_frame_host_->render_view_host()->Send( | 2396 render_frame_host_->render_view_host()->Send( |
| 2414 new ViewMsg_EnableViewSourceMode( | 2397 new ViewMsg_EnableViewSourceMode( |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2666 } else { | 2649 } else { |
| 2667 // Going from having to not having a WebUI is acceptable for: | 2650 // Going from having to not having a WebUI is acceptable for: |
| 2668 // - Navigating to a special, renderer controlled URL. | 2651 // - Navigating to a special, renderer controlled URL. |
| 2669 DCHECK(IsRendererDebugURL( | 2652 DCHECK(IsRendererDebugURL( |
| 2670 SiteInstanceImpl::GetEffectiveURL(browser_context, dest_url))); | 2653 SiteInstanceImpl::GetEffectiveURL(browser_context, dest_url))); |
| 2671 } | 2654 } |
| 2672 return true; | 2655 return true; |
| 2673 } | 2656 } |
| 2674 | 2657 |
| 2675 } // namespace content | 2658 } // namespace content |
| OLD | NEW |