Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4966)

Unified Diff: chrome/renderer/pepper/pepper_extensions_common_host.cc

Issue 61383003: Pass pepper apps API calls through the existing js apps API bindings. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/pepper/pepper_extensions_common_host.cc
diff --git a/chrome/renderer/pepper/pepper_extensions_common_host.cc b/chrome/renderer/pepper/pepper_extensions_common_host.cc
index 3ad629aad01dcd79c4d580f40e8128e79e494db3..873fbcfa1354b4c305f325294cdd0e63ba13037f 100644
--- a/chrome/renderer/pepper/pepper_extensions_common_host.cc
+++ b/chrome/renderer/pepper/pepper_extensions_common_host.cc
@@ -26,14 +26,13 @@ PepperExtensionsCommonHost::PepperExtensionsCommonHost(
content::RendererPpapiHost* host,
PP_Instance instance,
PP_Resource resource,
- extensions::Dispatcher* dispatcher)
+ extensions::PepperRequestProxy* pepper_request_proxy)
: ResourceHost(host->GetPpapiHost(), instance, resource),
renderer_ppapi_host_(host),
- dispatcher_(dispatcher) {
-}
+ pepper_request_proxy_(pepper_request_proxy) {}
PepperExtensionsCommonHost::~PepperExtensionsCommonHost() {
- dispatcher_->request_sender()->InvalidateSource(this);
+ pepper_request_proxy_->InvalidateSource(this);
}
// static
@@ -48,11 +47,25 @@ PepperExtensionsCommonHost* PepperExtensionsCommonHost::Create(
extensions::ExtensionHelper::Get(render_view);
if (!extension_helper)
return NULL;
+ blink::WebPluginContainer* container =
yzshen1 2013/11/26 19:33:11 It seems better to move line 54-56 to be right bel
Sam McNally 2013/11/27 23:40:26 Done.
+ host->GetContainerForInstance(instance);
+ if (!container)
+ return NULL;
extensions::Dispatcher* dispatcher = extension_helper->dispatcher();
if (!dispatcher)
return NULL;
+ blink::WebFrame* frame = container->element().document().frame();
+ if (!frame)
+ return NULL;
+ v8::HandleScope scope(v8::Isolate::GetCurrent());
+ extensions::ChromeV8Context* context =
+ dispatcher->v8_context_set().GetByV8Context(
+ frame->mainWorldScriptContext());
+ if (!context)
+ return NULL;
- return new PepperExtensionsCommonHost(host, instance, resource, dispatcher);
+ return new PepperExtensionsCommonHost(
+ host, instance, resource, context->pepper_request_proxy());
}
int32_t PepperExtensionsCommonHost::OnResourceMessageReceived(
@@ -67,31 +80,14 @@ int32_t PepperExtensionsCommonHost::OnResourceMessageReceived(
return PP_ERROR_FAILED;
}
-extensions::ChromeV8Context* PepperExtensionsCommonHost::GetContext() {
- blink::WebPluginContainer* container =
- renderer_ppapi_host_->GetContainerForInstance(pp_instance());
- if (!container)
- return NULL;
-
- blink::WebFrame* frame = container->element().document().frame();
- v8::HandleScope scope(v8::Isolate::GetCurrent());
- return dispatcher_->v8_context_set().GetByV8Context(
- frame->mainWorldScriptContext());
-}
-
void PepperExtensionsCommonHost::OnResponseReceived(
- const std::string& /* name */,
int request_id,
bool success,
const base::ListValue& response,
const std::string& /* error */) {
PendingRequestMap::iterator iter = pending_request_map_.find(request_id);
- // Ignore responses resulted from calls to OnPost().
- if (iter == pending_request_map_.end()) {
- DCHECK_EQ(0u, response.GetSize());
- return;
- }
+ DCHECK(iter != pending_request_map_.end());
linked_ptr<ppapi::host::ReplyMessageContext> context = iter->second;
pending_request_map_.erase(iter);
@@ -104,11 +100,13 @@ int32_t PepperExtensionsCommonHost::OnPost(
ppapi::host::HostMessageContext* context,
const std::string& request_name,
base::ListValue& args) {
- // TODO(yzshen): Add support for calling into JS for APIs that have custom
- // bindings.
- int request_id = dispatcher_->request_sender()->GetNextRequestId();
- dispatcher_->request_sender()->StartRequest(this, request_name, request_id,
- false, false, &args);
+ int request_id;
+ std::string error;
+ bool success = pepper_request_proxy_->StartRequest(
yzshen1 2013/11/26 19:33:11 Please add a TODO (maybe in pepper_request_proxy f
Sam McNally 2013/11/27 23:40:26 Done.
+ this, request_name, false, args, &request_id, &error);
+ if (!success)
+ return PP_ERROR_FAILED;
+
return PP_OK;
}
@@ -116,15 +114,17 @@ int32_t PepperExtensionsCommonHost::OnCall(
ppapi::host::HostMessageContext* context,
const std::string& request_name,
base::ListValue& args) {
- // TODO(yzshen): Add support for calling into JS for APIs that have custom
- // bindings.
- int request_id = dispatcher_->request_sender()->GetNextRequestId();
+ int request_id;
+ std::string error;
+ bool success = pepper_request_proxy_->StartRequest(
+ this, request_name, true, args, &request_id, &error);
+ if (!success)
+ return PP_ERROR_FAILED;
+
pending_request_map_[request_id] =
linked_ptr<ppapi::host::ReplyMessageContext>(
new ppapi::host::ReplyMessageContext(
context->MakeReplyMessageContext()));
- dispatcher_->request_sender()->StartRequest(this, request_name, request_id,
- true, false, &args);
return PP_OK_COMPLETIONPENDING;
}

Powered by Google App Engine
This is Rietveld 408576698