summaryrefslogtreecommitdiffstats
path: root/extensions/browser/extension_function_dispatcher.cc
diff options
context:
space:
mode:
authorrdevlin.cronin <rdevlin.cronin@chromium.org>2015-06-12 10:00:56 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-12 17:01:58 +0000
commit92503bacf38b62d3fca8a4abe74ed78b063dd2e5 (patch)
treeb5ab4581cfb0e3cfaffa85c08d34d271c2e24068 /extensions/browser/extension_function_dispatcher.cc
parent32ef655504fc0d3ac78223cab669baa32e6118db (diff)
downloadchromium_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.cc44
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 &&