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

Unified Diff: content/renderer/pepper/message_channel.cc

Issue 635593004: PPAPI: Make V8VarConverter longer-lived (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months 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: content/renderer/pepper/message_channel.cc
diff --git a/content/renderer/pepper/message_channel.cc b/content/renderer/pepper/message_channel.cc
index 490a6fb013fe0c387244c6205cd9d33d751ecbcd..ed8ee129aacfe5c482eb782dc3ff1bebc9ba1abb 100644
--- a/content/renderer/pepper/message_channel.cc
+++ b/content/renderer/pepper/message_channel.cc
@@ -122,8 +122,7 @@ void MessageChannel::PostMessageToJavaScript(PP_Var message_data) {
v8::Context::Scope context_scope(context);
v8::Handle<v8::Value> v8_val;
- if (!V8VarConverter(instance_->pp_instance())
- .ToV8Value(message_data, context, &v8_val)) {
+ if (!var_converter_.ToV8Value(message_data, context, &v8_val)) {
PpapiGlobals::Get()->LogWithSource(instance_->pp_instance(),
PP_LOGLEVEL_ERROR,
std::string(),
@@ -187,6 +186,8 @@ MessageChannel::MessageChannel(PepperPluginInstanceImpl* instance)
js_message_queue_state_(WAITING_TO_START),
blocking_message_depth_(0),
plugin_message_queue_state_(WAITING_TO_START),
+ var_converter_(instance->pp_instance(),
+ V8VarConverter::kDisallowObjectVars),
weak_ptr_factory_(this) {
}
@@ -214,8 +215,7 @@ v8::Local<v8::Value> MessageChannel::GetNamedProperty(
if (!instance_)
return v8::Local<v8::Value>();
- PepperTryCatchV8 try_catch(instance_, V8VarConverter::kDisallowObjectVars,
- isolate);
+ PepperTryCatchV8 try_catch(instance_, &var_converter_, isolate);
if (identifier == kPostMessage) {
return gin::CreateFunctionTemplate(isolate,
base::Bind(&MessageChannel::PostMessageToNative,
@@ -246,8 +246,7 @@ bool MessageChannel::SetNamedProperty(v8::Isolate* isolate,
v8::Local<v8::Value> value) {
if (!instance_)
return false;
- PepperTryCatchV8 try_catch(instance_, V8VarConverter::kDisallowObjectVars,
- isolate);
+ PepperTryCatchV8 try_catch(instance_, &var_converter_, isolate);
if (identifier == kPostMessage ||
(identifier == kPostMessageAndAwaitResponse)) {
try_catch.ThrowException("Cannot set properties with the name postMessage"
@@ -294,8 +293,7 @@ void MessageChannel::PostMessageToNative(gin::Arguments* args) {
void MessageChannel::PostBlockingMessageToNative(gin::Arguments* args) {
if (!instance_)
return;
- PepperTryCatchV8 try_catch(instance_, V8VarConverter::kDisallowObjectVars,
- args->isolate());
+ PepperTryCatchV8 try_catch(instance_, &var_converter_, args->isolate());
if (args->Length() != 1) {
try_catch.ThrowException(
"postMessageAndAwaitResponse requires one argument");
@@ -389,14 +387,13 @@ PluginObject* MessageChannel::GetPluginObject(v8::Isolate* isolate) {
void MessageChannel::EnqueuePluginMessage(v8::Handle<v8::Value> v8_value) {
plugin_message_queue_.push_back(VarConversionResult());
- // Convert NPVariantType_Object in to an appropriate PP_Var like Dictionary,
- // Array, etc. Note NPVariantToVar would convert to an "Object" PP_Var,
- // which we don't support for Messaging.
+ // Convert the v8 value in to an appropriate PP_Var like Dictionary,
+ // Array, etc. (We explicitly don't want an "Object" PP_Var, which we don't
+ // support for Messaging.)
// TODO(raymes): Possibly change this to use TryCatch to do the conversion and
// throw an exception if necessary.
- V8VarConverter v8_var_converter(instance_->pp_instance());
V8VarConverter::VarResult conversion_result =
- v8_var_converter.FromV8Value(
+ var_converter_.FromV8Value(
v8_value,
v8::Isolate::GetCurrent()->GetCurrentContext(),
base::Bind(&MessageChannel::FromV8ValueComplete,

Powered by Google App Engine
This is Rietveld 408576698