Index: content/renderer/pepper/ppb_var_deprecated_impl.cc |
diff --git a/content/renderer/pepper/ppb_var_deprecated_impl.cc b/content/renderer/pepper/ppb_var_deprecated_impl.cc |
index 9f86e6b5141fe09806ba98d806a93cff88f6991a..def6a8d50069d7fecf783f86a97067f7d32b795d 100644 |
--- a/content/renderer/pepper/ppb_var_deprecated_impl.cc |
+++ b/content/renderer/pepper/ppb_var_deprecated_impl.cc |
@@ -42,6 +42,10 @@ class ObjectAccessor { |
ObjectAccessor(PP_Var var) |
: object_var_(V8ObjectVar::FromPPVar(var).get()), |
instance_(object_var_ ? object_var_->instance() : NULL) { |
+ if (instance_) { |
+ converter_.reset(new V8VarConverter(instance_->pp_instance(), |
+ V8VarConverter::kAllowObjectVars)); |
+ } |
} |
// Check if the object is valid. If it isn't, set an exception and return |
@@ -61,10 +65,12 @@ class ObjectAccessor { |
// scope. |
v8::Handle<v8::Object> GetObject() { return object_var_->GetHandle(); } |
PepperPluginInstanceImpl* instance() { return instance_; } |
+ V8VarConverter* converter() { return converter_.get(); } |
private: |
V8ObjectVar* object_var_; |
PepperPluginInstanceImpl* instance_; |
+ scoped_ptr<V8VarConverter> converter_; |
}; |
bool IsValidIdentifer(PP_Var identifier, PP_Var* exception) { |
@@ -82,7 +88,8 @@ bool HasPropertyDeprecated(PP_Var var, PP_Var name, PP_Var* exception) { |
if (!accessor.IsValid(exception) || !IsValidIdentifer(name, exception)) |
return false; |
- PepperTryCatchVar try_catch(accessor.instance(), exception); |
+ PepperTryCatchVar try_catch(accessor.instance(), accessor.converter(), |
+ exception); |
v8::Handle<v8::Value> v8_name = try_catch.ToV8(name); |
if (try_catch.HasException()) |
return false; |
@@ -98,7 +105,8 @@ bool HasMethodDeprecated(PP_Var var, PP_Var name, PP_Var* exception) { |
if (!accessor.IsValid(exception) || !IsValidIdentifer(name, exception)) |
return false; |
- PepperTryCatchVar try_catch(accessor.instance(), exception); |
+ PepperTryCatchVar try_catch(accessor.instance(), accessor.converter(), |
+ exception); |
v8::Handle<v8::Value> v8_name = try_catch.ToV8(name); |
if (try_catch.HasException()) |
return false; |
@@ -115,7 +123,8 @@ PP_Var GetProperty(PP_Var var, PP_Var name, PP_Var* exception) { |
if (!accessor.IsValid(exception) || !IsValidIdentifer(name, exception)) |
return PP_MakeUndefined(); |
- PepperTryCatchVar try_catch(accessor.instance(), exception); |
+ PepperTryCatchVar try_catch(accessor.instance(), accessor.converter(), |
+ exception); |
v8::Handle<v8::Value> v8_name = try_catch.ToV8(name); |
if (try_catch.HasException()) |
return PP_MakeUndefined(); |
@@ -135,7 +144,8 @@ void EnumerateProperties(PP_Var var, |
if (!accessor.IsValid(exception)) |
return; |
- PepperTryCatchVar try_catch(accessor.instance(), exception); |
+ PepperTryCatchVar try_catch(accessor.instance(), accessor.converter(), |
+ exception); |
*properties = NULL; |
*property_count = 0; |
@@ -165,7 +175,8 @@ void SetPropertyDeprecated(PP_Var var, |
if (!accessor.IsValid(exception) || !IsValidIdentifer(name, exception)) |
return; |
- PepperTryCatchVar try_catch(accessor.instance(), exception); |
+ PepperTryCatchVar try_catch(accessor.instance(), accessor.converter(), |
+ exception); |
v8::Handle<v8::Value> v8_name = try_catch.ToV8(name); |
v8::Handle<v8::Value> v8_value = try_catch.ToV8(value); |
@@ -181,7 +192,8 @@ void DeletePropertyDeprecated(PP_Var var, PP_Var name, PP_Var* exception) { |
if (!accessor.IsValid(exception) || !IsValidIdentifer(name, exception)) |
return; |
- PepperTryCatchVar try_catch(accessor.instance(), exception); |
+ PepperTryCatchVar try_catch(accessor.instance(), accessor.converter(), |
+ exception); |
v8::Handle<v8::Value> v8_name = try_catch.ToV8(name); |
if (try_catch.HasException()) |
@@ -208,7 +220,8 @@ PP_Var CallDeprecatedInternal(PP_Var var, |
StringVar::StringToPPVar("")); |
} |
- PepperTryCatchVar try_catch(accessor.instance(), exception); |
+ PepperTryCatchVar try_catch(accessor.instance(), accessor.converter(), |
+ exception); |
v8::Handle<v8::Value> v8_method_name = try_catch.ToV8(scoped_name.get()); |
if (try_catch.HasException()) |
return PP_MakeUndefined(); |