diff options
author | rdevlin.cronin <rdevlin.cronin@chromium.org> | 2015-06-12 10:00:56 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-12 17:01:58 +0000 |
commit | 92503bacf38b62d3fca8a4abe74ed78b063dd2e5 (patch) | |
tree | b5ab4581cfb0e3cfaffa85c08d34d271c2e24068 /extensions/browser/extension_function_dispatcher.cc | |
parent | 32ef655504fc0d3ac78223cab669baa32e6118db (diff) | |
download | chromium_src-92503bacf38b62d3fca8a4abe74ed78b063dd2e5.zip chromium_src-92503bacf38b62d3fca8a4abe74ed78b063dd2e5.tar.gz chromium_src-92503bacf38b62d3fca8a4abe74ed78b063dd2e5.tar.bz2 |
[Extensions OOPI] Convert extension functions to use RenderFrameHosts
Make ExtensionHostMsg_Request/Response send to RenderFrameHosts/RenderFrames
so that OOPI work with extension api calls.
Also update ExtensionFunctions to only have RenderFrameHosts set, and remove
the |render_view_host_| parameter, and update ExtensionFunction's
internals to use RenderFrameHost.
Note that this doesn't update all the uses of
ExtensionFunction::render_view_host() (of which there are 100+).
BUG=498017
Review URL: https://codereview.chromium.org/1182493002
Cr-Commit-Position: refs/heads/master@{#334185}
Diffstat (limited to 'extensions/browser/extension_function_dispatcher.cc')
-rw-r--r-- | extensions/browser/extension_function_dispatcher.cc | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/extensions/browser/extension_function_dispatcher.cc b/extensions/browser/extension_function_dispatcher.cc index 9a30d2e..475d260 100644 --- a/extensions/browser/extension_function_dispatcher.cc +++ b/extensions/browser/extension_function_dispatcher.cc @@ -149,25 +149,26 @@ class ExtensionFunctionDispatcher::UIThreadResponseCallbackWrapper public: UIThreadResponseCallbackWrapper( const base::WeakPtr<ExtensionFunctionDispatcher>& dispatcher, - RenderViewHost* render_view_host) + content::RenderFrameHost* render_frame_host) : content::WebContentsObserver( - content::WebContents::FromRenderViewHost(render_view_host)), + content::WebContents::FromRenderFrameHost(render_frame_host)), dispatcher_(dispatcher), - render_view_host_(render_view_host), + render_frame_host_(render_frame_host), weak_ptr_factory_(this) { } ~UIThreadResponseCallbackWrapper() override {} // content::WebContentsObserver overrides. - void RenderViewDeleted(RenderViewHost* render_view_host) override { + void RenderFrameDeleted( + content::RenderFrameHost* render_frame_host) override { DCHECK_CURRENTLY_ON(BrowserThread::UI); - if (render_view_host != render_view_host_) + if (render_frame_host != render_frame_host_) return; if (dispatcher_.get()) { dispatcher_->ui_thread_response_callback_wrappers_ - .erase(render_view_host); + .erase(render_frame_host); } delete this; @@ -190,14 +191,15 @@ class ExtensionFunctionDispatcher::UIThreadResponseCallbackWrapper content::RenderProcessHost::run_renderer_in_process() ? base::Process::Current() : base::Process::DeprecatedGetProcessFromHandle( - render_view_host_->GetProcess()->GetHandle()); - CommonResponseCallback(render_view_host_, render_view_host_->GetRoutingID(), + render_frame_host_->GetProcess()->GetHandle()); + CommonResponseCallback(render_frame_host_, + render_frame_host_->GetRoutingID(), process, request_id, type, results, error, histogram_value); } base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_; - content::RenderViewHost* render_view_host_; + content::RenderFrameHost* render_frame_host_; base::WeakPtrFactory<UIThreadResponseCallbackWrapper> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(UIThreadResponseCallbackWrapper); @@ -310,29 +312,28 @@ ExtensionFunctionDispatcher::~ExtensionFunctionDispatcher() { void ExtensionFunctionDispatcher::Dispatch( const ExtensionHostMsg_Request_Params& params, - RenderViewHost* render_view_host) { + content::RenderFrameHost* render_frame_host) { UIThreadResponseCallbackWrapperMap::const_iterator - iter = ui_thread_response_callback_wrappers_.find(render_view_host); - UIThreadResponseCallbackWrapper* callback_wrapper = NULL; + iter = ui_thread_response_callback_wrappers_.find(render_frame_host); + UIThreadResponseCallbackWrapper* callback_wrapper = nullptr; if (iter == ui_thread_response_callback_wrappers_.end()) { callback_wrapper = new UIThreadResponseCallbackWrapper(AsWeakPtr(), - render_view_host); - ui_thread_response_callback_wrappers_[render_view_host] = callback_wrapper; + render_frame_host); + ui_thread_response_callback_wrappers_[render_frame_host] = callback_wrapper; } else { callback_wrapper = iter->second; } DispatchWithCallbackInternal( - params, render_view_host, NULL, + params, render_frame_host, callback_wrapper->CreateCallback(params.request_id)); } void ExtensionFunctionDispatcher::DispatchWithCallbackInternal( const ExtensionHostMsg_Request_Params& params, - RenderViewHost* render_view_host, content::RenderFrameHost* render_frame_host, const ExtensionFunction::ResponseCallback& callback) { - DCHECK(render_view_host || render_frame_host); + DCHECK(render_frame_host); // TODO(yzshen): There is some shared logic between this method and // DispatchOnIOThread(). It is nice to deduplicate. ProcessMap* process_map = ProcessMap::Get(browser_context_); @@ -347,8 +348,7 @@ void ExtensionFunctionDispatcher::DispatchWithCallbackInternal( registry->enabled_extensions().GetHostedAppByURL(params.source_url); } - int process_id = render_view_host ? render_view_host->GetProcess()->GetID() : - render_frame_host->GetProcess()->GetID(); + int process_id = render_frame_host->GetProcess()->GetID(); scoped_refptr<ExtensionFunction> function( CreateExtensionFunction(params, extension, @@ -366,11 +366,7 @@ void ExtensionFunctionDispatcher::DispatchWithCallbackInternal( NOTREACHED(); return; } - if (render_view_host) { - function_ui->SetRenderViewHost(render_view_host); - } else { - function_ui->SetRenderFrameHost(render_frame_host); - } + function_ui->SetRenderFrameHost(render_frame_host); function_ui->set_dispatcher(AsWeakPtr()); function_ui->set_browser_context(browser_context_); if (extension && |