summaryrefslogtreecommitdiffstats
path: root/webkit/plugins/ppapi/var.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/plugins/ppapi/var.cc')
-rw-r--r--webkit/plugins/ppapi/var.cc218
1 files changed, 2 insertions, 216 deletions
diff --git a/webkit/plugins/ppapi/var.cc b/webkit/plugins/ppapi/var.cc
index 097c613..86bfff2 100644
--- a/webkit/plugins/ppapi/var.cc
+++ b/webkit/plugins/ppapi/var.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -162,63 +162,6 @@ class ObjectAccessorWithIdentifierTryCatch : public ObjectAccessorTryCatch {
DISALLOW_COPY_AND_ASSIGN(ObjectAccessorWithIdentifierTryCatch);
};
-PP_Var RunJSFunction(PP_Var scope_var,
- const char* function_script,
- PP_Var* argv,
- unsigned argc,
- PP_Var* exception) {
- TryCatch try_catch(NULL, exception);
- if (try_catch.has_exception())
- return PP_MakeUndefined();
-
- scoped_refptr<ObjectVar> obj = ObjectVar::FromPPVar(scope_var);
- if (!obj) {
- try_catch.SetInvalidObjectException();
- return PP_MakeUndefined();
- }
-
- try_catch.set_module(obj->module());
-
- scoped_array<NPVariant> args;
- if (argc) {
- args.reset(new NPVariant[argc]);
- for (uint32_t i = 0; i < argc; ++i) {
- if (!PPVarToNPVariantNoCopy(argv[i], &args[i])) {
- // This argument was invalid, throw an exception & give up.
- try_catch.SetException(kInvalidValueException);
- return PP_MakeUndefined();
- }
- }
- }
-
- NPVariant function_var;
- VOID_TO_NPVARIANT(function_var);
- NPString function_string = { function_script, strlen(function_script) };
- if (!WebBindings::evaluate(NULL, obj->np_object(), &function_string,
- &function_var)) {
- try_catch.SetException(kInvalidValueException);
- return PP_MakeUndefined();
- }
- DCHECK(NPVARIANT_IS_OBJECT(function_var));
- DCHECK(!try_catch.has_exception());
-
- NPVariant result_var;
- VOID_TO_NPVARIANT(result_var);
- PP_Var result;
-
- if (WebBindings::invokeDefault(NULL, NPVARIANT_TO_OBJECT(function_var),
- args.get(), argc, &result_var)) {
- result = Var::NPVariantToPPVar(obj->instance(), &result_var);
- } else {
- DCHECK(try_catch.has_exception());
- result = PP_MakeUndefined();
- }
-
- WebBindings::releaseVariantValue(&function_var);
- WebBindings::releaseVariantValue(&result_var);
- return result;
-}
-
// PPB_Var methods -------------------------------------------------------------
PP_Var VarFromUtf8(PP_Module module_id, const char* data, uint32_t len) {
@@ -240,103 +183,10 @@ const char* VarToUtf8(PP_Var var, uint32_t* len) {
return str->value().data();
}
-PP_Var ConvertType(PP_Instance instance,
- struct PP_Var var,
- PP_VarType new_type,
- PP_Var* exception) {
- TryCatch try_catch(NULL, exception);
- if (try_catch.has_exception())
- return PP_MakeUndefined();
-
- if (var.type == new_type)
- return var;
-
- PluginInstance* plugin_instance =
- ResourceTracker::Get()->GetInstance(instance);
- if (!plugin_instance) {
- try_catch.SetInvalidObjectException();
- return PP_MakeUndefined();
- }
-
- try_catch.set_module(plugin_instance->module());
- PP_Var object = plugin_instance->GetWindowObject();
-
- PP_Var params[] = {
- var,
- PP_MakeInt32(new_type),
- PP_MakeInt32(PP_VARTYPE_NULL),
- PP_MakeInt32(PP_VARTYPE_BOOL),
- PP_MakeInt32(PP_VARTYPE_INT32),
- PP_MakeInt32(PP_VARTYPE_DOUBLE),
- PP_MakeInt32(PP_VARTYPE_STRING),
- PP_MakeInt32(PP_VARTYPE_OBJECT)
- };
- PP_Var result = RunJSFunction(object,
- "(function(v, new_type, type_null, type_bool, type_int32, type_double,"
- " type_string, type_object) {"
- " switch(new_type) {"
- " case type_null: return null;"
- " case type_bool: return Boolean(v);"
- " case type_int32: case type_double: return Number(v);"
- " case type_string: return String(v);"
- " case type_object: return Object(v);"
- " default: return undefined;"
- " }})",
- params, sizeof(params) / sizeof(PP_Var), exception);
-
- // Massage Number into the correct type.
- if (new_type == PP_VARTYPE_INT32 && result.type == PP_VARTYPE_DOUBLE) {
- double value = result.value.as_double;
- // Exclusive test wouldn't deal with NaNs correctly.
- if (value >= std::numeric_limits<int32_t>::max()
- && value <= std::numeric_limits<int32_t>::min())
- result = PP_MakeInt32(static_cast<int32_t>(value));
- else
- result = PP_MakeInt32(0);
- } else if (new_type == PP_VARTYPE_DOUBLE && result.type == PP_VARTYPE_INT32) {
- result = PP_MakeDouble(result.value.as_int);
- }
-
- Var::PluginReleasePPVar(object);
- return result;
-}
-
PP_Var BoolToPPVar(bool value) {
return PP_MakeBool(BoolToPPBool(value));
}
-void DefineProperty(struct PP_Var object,
- struct PP_ObjectProperty property,
- PP_Var* exception) {
- PP_Var params[] = {
- object, property.name,
- BoolToPPVar(!!(property.modifiers & PP_OBJECTPROPERTY_MODIFIER_HASVALUE)),
- property.value,
- BoolToPPVar(property.getter.type == PP_VARTYPE_OBJECT),
- property.getter,
- BoolToPPVar(property.setter.type == PP_VARTYPE_OBJECT),
- property.setter,
- BoolToPPVar(!!(property.modifiers & PP_OBJECTPROPERTY_MODIFIER_READONLY)),
- BoolToPPVar(!!(property.modifiers & PP_OBJECTPROPERTY_MODIFIER_DONTDELETE)),
- BoolToPPVar(!!(property.modifiers & PP_OBJECTPROPERTY_MODIFIER_DONTENUM))
- };
-
- RunJSFunction(object,
- "(function(o, name,"
- " has_value, value,"
- " has_getter, getter,"
- " has_setter, setter,"
- " modifier_readonly, modifier_dontdelete, modifier_dontenum) {"
- " prop = { 'enumerable': !modifier_dontenum,"
- " 'configurable': !modifier_dontdelete };"
- " if (has_value && !modifier_readonly) prop.writable = true;"
- " if (has_value) prop.value = value;"
- " if (has_getter) prop.get = getter;"
- " if (has_setter) prop.set = setter;"
- " return Object.defineProperty(o, name, prop); })",
- params, sizeof(params) / sizeof(PP_Var), exception);
-}
-
PP_Bool HasProperty(PP_Var var,
PP_Var name,
PP_Var* exception) {
@@ -434,19 +284,6 @@ void SetPropertyDeprecated(PP_Var var,
accessor.SetException(kUnableToSetPropertyException);
}
-PP_Bool DeleteProperty(PP_Var var,
- PP_Var name,
- PP_Var* exception) {
- ObjectAccessorWithIdentifierTryCatch accessor(var, name, exception);
- if (accessor.has_exception())
- return PP_FALSE;
-
- return BoolToPPBool(
- WebBindings::removeProperty(NULL,
- accessor.object()->np_object(),
- accessor.identifier()));
-}
-
void DeletePropertyDeprecated(PP_Var var,
PP_Var name,
PP_Var* exception) {
@@ -459,48 +296,6 @@ void DeletePropertyDeprecated(PP_Var var,
accessor.SetException(kUnableToRemovePropertyException);
}
-PP_Bool IsCallable(struct PP_Var object) {
- PP_Var result = RunJSFunction(object,
- "(function() { return typeof(this) == 'function' })", NULL, 0, NULL);
- if (result.type == PP_VARTYPE_BOOL)
- return result.value.as_bool;
- return PP_FALSE;
-}
-
-struct PP_Var Call(struct PP_Var object,
- struct PP_Var this_object,
- uint32_t argc,
- struct PP_Var* argv,
- struct PP_Var* exception) {
- ObjectAccessorTryCatch accessor(object, exception);
- if (accessor.has_exception())
- return PP_MakeUndefined();
-
- scoped_array<NPVariant> args;
- if (argc) {
- args.reset(new NPVariant[argc]);
- for (uint32_t i = 0; i < argc; ++i) {
- if (!PPVarToNPVariantNoCopy(argv[i], &args[i])) {
- // This argument was invalid, throw an exception & give up.
- accessor.SetException(kInvalidValueException);
- return PP_MakeUndefined();
- }
- }
- }
-
- NPVariant result;
- if (!WebBindings::invokeDefault(NULL, accessor.object()->np_object(),
- args.get(), argc, &result)) {
- // An exception may have been raised.
- accessor.SetException(kUnableToCallMethodException);
- return PP_MakeUndefined();
- }
-
- PP_Var ret = Var::NPVariantToPPVar(accessor.object()->instance(), &result);
- WebBindings::releaseVariantValue(&result);
- return ret;
-}
-
PP_Var CallDeprecated(PP_Var var,
PP_Var method_name,
uint32_t argc,
@@ -646,16 +441,7 @@ const PPB_Var var_interface = {
&Var::PluginAddRefPPVar,
&Var::PluginReleasePPVar,
&VarFromUtf8,
- &VarToUtf8,
- &ConvertType,
- &DefineProperty,
- &HasProperty,
- &GetProperty,
- &DeleteProperty,
- &EnumerateProperties,
- &IsCallable,
- &Call,
- &Construct,
+ &VarToUtf8
};