Index: content/browser/frame_host/render_frame_host_impl.cc |
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc |
index 73f143dc4dfc112f0efdd8a6b6dfd3f6fa7e6253..9a8810b3aa9a45c2ec8424f30fbbff6800fe5421 100644 |
--- a/content/browser/frame_host/render_frame_host_impl.cc |
+++ b/content/browser/frame_host/render_frame_host_impl.cc |
@@ -15,7 +15,6 @@ |
#include "content/browser/accessibility/ax_tree_id_registry.h" |
#include "content/browser/accessibility/browser_accessibility_manager.h" |
#include "content/browser/accessibility/browser_accessibility_state_impl.h" |
-#include "content/browser/child_process_security_policy_impl.h" |
#include "content/browser/child_process_security_policy_impl.h" |
#include "content/browser/devtools/render_frame_devtools_agent_host.h" |
#include "content/browser/frame_host/cross_process_frame_connector.h" |
@@ -44,7 +43,6 @@ |
#include "content/browser/renderer_host/render_widget_host_impl.h" |
#include "content/browser/renderer_host/render_widget_host_view_base.h" |
#include "content/browser/wake_lock/wake_lock_service_context.h" |
-#include "content/browser/webui/web_ui_controller_factory_registry.h" |
#include "content/common/accessibility_messages.h" |
#include "content/common/frame_messages.h" |
#include "content/common/input_messages.h" |
@@ -197,9 +195,6 @@ |
accessibility_reset_token_(0), |
accessibility_reset_count_(0), |
no_create_browser_accessibility_manager_for_testing_(false), |
- web_ui_type_(WebUI::kNoWebUI), |
- pending_web_ui_type_(WebUI::kNoWebUI), |
- should_reuse_web_ui_(false), |
weak_ptr_factory_(this) { |
bool is_swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT); |
bool hidden = !!(flags & CREATE_RF_HIDDEN); |
@@ -245,10 +240,6 @@ |
} |
RenderFrameHostImpl::~RenderFrameHostImpl() { |
- // Release the WebUI instances before all else as the WebUI may accesses the |
- // RenderFrameHost during cleanup. |
- ClearAllWebUI(); |
- |
GetProcess()->RemoveRoute(routing_id_); |
g_routing_id_frame_map.Get().erase( |
RenderFrameHostID(GetProcess()->GetID(), routing_id_)); |
@@ -1246,7 +1237,6 @@ |
TRACE_EVENT_ASYNC_END0("navigation", "RenderFrameHostImpl::SwapOut", this); |
swapout_event_monitor_timeout_->Stop(); |
- ClearAllWebUI(); |
// If this is a main frame RFH that's about to be deleted, update its RVH's |
// swapped-out state here, since SetState won't be called once this RFH is |
@@ -2083,97 +2073,6 @@ |
frame_tree_->GetFocusedFrame()->IsDescendantOf(frame_tree_node())); |
} |
-bool RenderFrameHostImpl::UpdatePendingWebUI(const GURL& dest_url, |
- int entry_bindings) { |
- WebUI::TypeID new_web_ui_type = |
- WebUIControllerFactoryRegistry::GetInstance()->GetWebUIType( |
- GetSiteInstance()->GetBrowserContext(), dest_url); |
- |
- // If the required WebUI matches the pending WebUI or if it matches the |
- // to-be-reused active WebUI, then leave everything as is. |
- if (new_web_ui_type == pending_web_ui_type_ || |
- (should_reuse_web_ui_ && new_web_ui_type == web_ui_type_)) { |
- return false; |
- } |
- |
- // Reset the pending WebUI as from this point it will certainly not be reused. |
- ClearPendingWebUI(); |
- |
- // If this navigation is not to a WebUI, skip directly to bindings work. |
- if (new_web_ui_type != WebUI::kNoWebUI) { |
- if (new_web_ui_type == web_ui_type_) { |
- // The active WebUI should be reused when dest_url requires a WebUI and |
- // its type matches the current. |
- DCHECK(web_ui_); |
- should_reuse_web_ui_ = true; |
- } else { |
- // Otherwise create a new pending WebUI. |
- pending_web_ui_ = delegate_->CreateWebUIForRenderFrameHost(dest_url); |
- DCHECK(pending_web_ui_); |
- pending_web_ui_type_ = new_web_ui_type; |
- |
- // If we have assigned (zero or more) bindings to the NavigationEntry in |
- // the past, make sure we're not granting it different bindings than it |
- // had before. If so, note it and don't give it any bindings, to avoid a |
- // potential privilege escalation. |
- if (entry_bindings != NavigationEntryImpl::kInvalidBindings && |
- pending_web_ui_->GetBindings() != entry_bindings) { |
- RecordAction( |
- base::UserMetricsAction("ProcessSwapBindingsMismatch_RVHM")); |
- ClearPendingWebUI(); |
- } |
- } |
- } |
- DCHECK_EQ(!pending_web_ui_, pending_web_ui_type_ == WebUI::kNoWebUI); |
- |
- // Either grant or check the RenderViewHost with/for proper bindings. |
- if (pending_web_ui_ && !render_view_host_->GetProcess()->IsForGuestsOnly()) { |
- // If a WebUI was created for the URL and the RenderView is not in a guest |
- // process, then enable missing bindings with the RenderViewHost. |
- int new_bindings = pending_web_ui_->GetBindings(); |
- if ((render_view_host_->GetEnabledBindings() & new_bindings) != |
- new_bindings) { |
- render_view_host_->AllowBindings(new_bindings); |
- } |
- } else if (render_view_host_->is_active()) { |
- // If the ongoing navigation is not to a WebUI or the RenderView is in a |
- // guest process, ensure that we don't create an unprivileged RenderView in |
- // a WebUI-enabled process unless it's swapped out. |
- bool url_acceptable_for_webui = |
- WebUIControllerFactoryRegistry::GetInstance()->IsURLAcceptableForWebUI( |
- GetSiteInstance()->GetBrowserContext(), dest_url); |
- if (!url_acceptable_for_webui) { |
- CHECK(!ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( |
- GetProcess()->GetID())); |
- } |
- } |
- return true; |
-} |
- |
-void RenderFrameHostImpl::CommitPendingWebUI() { |
- if (should_reuse_web_ui_) { |
- should_reuse_web_ui_ = false; |
- } else { |
- web_ui_ = pending_web_ui_.Pass(); |
- web_ui_type_ = pending_web_ui_type_; |
- pending_web_ui_type_ = WebUI::kNoWebUI; |
- } |
- DCHECK(!pending_web_ui_ && pending_web_ui_type_ == WebUI::kNoWebUI && |
- !should_reuse_web_ui_); |
-} |
- |
-void RenderFrameHostImpl::ClearPendingWebUI() { |
- pending_web_ui_.reset(); |
- pending_web_ui_type_ = WebUI::kNoWebUI; |
- should_reuse_web_ui_ = false; |
-} |
- |
-void RenderFrameHostImpl::ClearAllWebUI() { |
- ClearPendingWebUI(); |
- web_ui_type_ = WebUI::kNoWebUI; |
- web_ui_.reset(); |
-} |
- |
const image_downloader::ImageDownloaderPtr& |
RenderFrameHostImpl::GetMojoImageDownloader() { |
if (!mojo_image_downloader_.get() && GetServiceRegistry()) { |