/hg/icedtea-web: 2 new changesets
adomurad at icedtea.classpath.org
adomurad at icedtea.classpath.org
Fri Jun 21 11:13:18 PDT 2013
changeset 3216e845325e in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=3216e845325e
author: Adam Domurad <adomurad at redhat.com>
date: Fri Jun 21 12:47:45 2013 -0400
Move 'get_scriptable_java_package_object' and 'get_scriptable_java_object' into their correct respective classes.
changeset ee92f55c69a3 in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=ee92f55c69a3
author: Adam Domurad <adomurad at redhat.com>
date: Fri Jun 21 13:55:10 2013 -0400
IcedTeaScriptableJavaObject simplifications
diffstat:
ChangeLog | 16 +
plugin/icedteanp/IcedTeaNPPlugin.cc | 4 +-
plugin/icedteanp/IcedTeaPluginUtils.cc | 4 +-
plugin/icedteanp/IcedTeaScriptablePluginObject.cc | 164 +++----------
plugin/icedteanp/IcedTeaScriptablePluginObject.h | 115 ++++----
tests/cpp-unit-tests/IcedTeaScriptablePluginObjectTest.cc | 38 +-
6 files changed, 141 insertions(+), 200 deletions(-)
diffs (truncated from 630 to 500 lines):
diff -r cfdb17c00603 -r ee92f55c69a3 ChangeLog
--- a/ChangeLog Fri Jun 21 11:41:31 2013 -0400
+++ b/ChangeLog Fri Jun 21 13:55:10 2013 -0400
@@ -1,3 +1,19 @@
+2013-06-21 Adam Domurad <adomurad at redhat.com>
+
+ * plugin/icedteanp/IcedTeaScriptablePluginObject.cc: Simplify
+ IcedTeaScriptableJavaObject
+ * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Same
+
+2013-06-21 Adam Domurad <adomurad at redhat.com>
+
+ * plugin/icedteanp/IcedTeaScriptablePluginObject.cc:
+ Move 'get_scriptable_java_package_object' and
+ 'get_scriptable_java_object' into their correct respective classes.
+ * plugin/icedteanp/IcedTeaScriptablePluginObject.h: Same.
+ * plugin/icedteanp/IcedTeaNPPlugin.cc: Update references.
+ * plugin/icedteanp/IcedTeaPluginUtils.cc: Same.
+ * tests/cpp-unit-tests/IcedTeaScriptablePluginObjectTest.cc: Same.
+
2013-06-21 Adam Domurad <adomurad at redhat.com>
* plugin/icedteanp/IcedTeaScriptablePluginObject.cc
diff -r cfdb17c00603 -r ee92f55c69a3 plugin/icedteanp/IcedTeaNPPlugin.cc
--- a/plugin/icedteanp/IcedTeaNPPlugin.cc Fri Jun 21 11:41:31 2013 -0400
+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Fri Jun 21 13:55:10 2013 -0400
@@ -2175,11 +2175,11 @@
applet_class_id.append(*(java_result->return_string));
- obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(instance, applet_class_id, instance_id, false);
+ obj = IcedTeaScriptableJavaObject::get_scriptable_java_object(instance, applet_class_id, instance_id, false);
} else
{
- obj = IcedTeaScriptablePluginObject::get_scriptable_java_package_object(instance, "");
+ obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_package_object(instance, "");
}
return obj;
diff -r cfdb17c00603 -r ee92f55c69a3 plugin/icedteanp/IcedTeaPluginUtils.cc
--- a/plugin/icedteanp/IcedTeaPluginUtils.cc Fri Jun 21 11:41:31 2013 -0400
+++ b/plugin/icedteanp/IcedTeaPluginUtils.cc Fri Jun 21 13:55:10 2013 -0400
@@ -822,11 +822,11 @@
NPObject* obj;
if (jclass_id.at(0) == '[') // array
{
- obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(instance, jclass_id,
+ obj = IcedTeaScriptableJavaObject::get_scriptable_java_object(instance, jclass_id,
jobject_id, true);
} else
{
- obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(instance, jclass_id,
+ obj = IcedTeaScriptableJavaObject::get_scriptable_java_object(instance, jclass_id,
jobject_id, false);
}
diff -r cfdb17c00603 -r ee92f55c69a3 plugin/icedteanp/IcedTeaScriptablePluginObject.cc
--- a/plugin/icedteanp/IcedTeaScriptablePluginObject.cc Fri Jun 21 11:41:31 2013 -0400
+++ b/plugin/icedteanp/IcedTeaScriptablePluginObject.cc Fri Jun 21 13:55:10 2013 -0400
@@ -94,7 +94,7 @@
// Package request?
if (!strcmp(browser_functions.utf8fromidentifier(name), "java"))
{
- //NPObject* obj = IcedTeaScriptablePluginObject::get_scriptable_java_package_object(getInstanceFromMemberPtr(npobj), name);
+ //NPObject* obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_package_object(getInstanceFromMemberPtr(npobj), name);
//OBJECT_TO_NPVARIANT(obj, *result);
//printf ("Filling variant %p with object %p\n", result);
@@ -159,7 +159,7 @@
}
NPObject*
-IcedTeaScriptablePluginObject::get_scriptable_java_package_object(NPP instance, const NPUTF8* name)
+IcedTeaScriptableJavaPackageObject::get_scriptable_java_package_object(NPP instance, const NPUTF8* name)
{
/* Shared NPClass instance for IcedTeaScriptablePluginObject */
static NPClass np_class = scriptable_plugin_object_class();
@@ -308,14 +308,14 @@
if (isPropertyClass)
{
PLUGIN_DEBUG("Returning package object\n");
- obj = IcedTeaScriptablePluginObject::get_scriptable_java_package_object(
+ obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_package_object(
IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj),
property_name.c_str());
}
else
{
PLUGIN_DEBUG("Returning Java object\n");
- obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(
+ obj = IcedTeaScriptableJavaObject::get_scriptable_java_object(
IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj),
*(java_result->return_string), "0", false);
}
@@ -382,7 +382,7 @@
}
NPObject*
-IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(NPP instance,
+IcedTeaScriptableJavaObject::get_scriptable_java_object(NPP instance,
std::string class_id,
std::string instance_id,
bool isArray)
@@ -393,7 +393,7 @@
std::string obj_key = class_id + ":" + instance_id;
PLUGIN_DEBUG("get_scriptable_java_object searching for %s...\n", obj_key.c_str());
- NPObject* scriptable_object = IcedTeaPluginUtilities::getNPObjectFromJavaKey(obj_key);
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*) IcedTeaPluginUtilities::getNPObjectFromJavaKey(obj_key);
if (scriptable_object != NULL)
{
@@ -403,7 +403,7 @@
}
// try to create normally
- scriptable_object = browser_functions.createobject(instance, &np_class);
+ scriptable_object = (IcedTeaScriptableJavaObject*)browser_functions.createobject(instance, &np_class);
// didn't work? try creating asynch
if (!scriptable_object)
@@ -426,11 +426,11 @@
PLUGIN_DEBUG("Constructed new Java Object with classid=%s, instanceid=%s, isArray=%d and scriptable_object=%p\n", class_id.c_str(), instance_id.c_str(), isArray, scriptable_object);
- ((IcedTeaScriptableJavaObject*) scriptable_object)->setClassIdentifier(class_id);
- ((IcedTeaScriptableJavaObject*) scriptable_object)->setIsArray(isArray);
+ scriptable_object->class_id = class_id;
+ scriptable_object->is_object_array = isArray;
if (instance_id != "0")
- ((IcedTeaScriptableJavaObject*) scriptable_object)->setInstanceIdentifier(instance_id);
+ scriptable_object->instance_id = instance_id;
IcedTeaPluginUtilities::storeInstanceID(scriptable_object, instance);
IcedTeaPluginUtilities::storeObjectMapping(obj_key, scriptable_object);
@@ -461,64 +461,17 @@
return IcedTeaPluginUtilities::getInstanceFromMemberPtr(object_ptr) != NULL;
}
-IcedTeaScriptableJavaObject::IcedTeaScriptableJavaObject(NPP instance)
-{
- this->instance = instance;
- this->class_id = new std::string();
- this->instance_id = new std::string();
-}
-
-IcedTeaScriptableJavaObject::~IcedTeaScriptableJavaObject()
-{
- delete this->class_id;
- delete this->instance_id;
-}
-
-void
-IcedTeaScriptableJavaObject::setClassIdentifier(std::string class_id)
-{
- this->class_id->append(class_id);
-}
-
-void
-IcedTeaScriptableJavaObject::setInstanceIdentifier(std::string instance_id)
-{
- this->instance_id->append(instance_id);
-}
-
-void
-IcedTeaScriptableJavaObject::setIsArray(bool isArray)
-{
- this->isObjectArray = isArray;
-}
-
-void
-IcedTeaScriptableJavaObject::deAllocate(NPObject *npobj)
-{
- delete (IcedTeaScriptableJavaObject*)npobj;
-}
-
-void
-IcedTeaScriptableJavaObject::invalidate(NPObject *npobj)
-{
- IcedTeaPluginUtilities::removeInstanceID(npobj);
-
- std::string obj_key = std::string();
- obj_key += ((IcedTeaScriptableJavaObject*) npobj)->getClassID();
- obj_key += ":";
- obj_key += ((IcedTeaScriptableJavaObject*) npobj)->getInstanceID();
-
- IcedTeaPluginUtilities::removeObjectMapping(obj_key);
-}
-
bool
IcedTeaScriptableJavaObject::hasMethod(NPObject *npobj, NPIdentifier name)
{
+
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*) npobj;
+
PLUGIN_DEBUG("IcedTeaScriptableJavaObject::hasMethod %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
bool hasMethod = false;
// If object is an array and requested "method" may be a number, check for it first
- if ( !((IcedTeaScriptableJavaObject*) npobj)->isArray() ||
+ if ( scriptable_object->is_object_array ||
(browser_functions.intfromidentifier(name) < 0))
{
@@ -528,10 +481,9 @@
JavaResultData* java_result;
JavaRequestProcessor java_request = JavaRequestProcessor();
- std::string classId = std::string(((IcedTeaScriptableJavaObject*) npobj)->getClassID());
std::string methodName = browser_functions.utf8fromidentifier(name);
- java_result = java_request.hasMethod(classId, methodName);
+ java_result = java_request.hasMethod(scriptable_object->class_id, methodName);
hasMethod = java_result->return_identifier != 0;
}
@@ -555,11 +507,10 @@
JavaResultData* java_result;
JavaRequestProcessor java_request = JavaRequestProcessor();
- NPObject* obj;
- std::string instance_id = ((IcedTeaScriptableJavaObject*) npobj)->getInstanceID();
- std::string class_id = ((IcedTeaScriptableJavaObject*) npobj)->getClassID();
- std::string callee;
- std::string source;
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*)npobj;
+
+ std::string instance_id = scriptable_object->instance_id;
+ std::string class_id = scriptable_object->class_id;
NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj);
@@ -582,17 +533,15 @@
if (instance_id.length() == 0) // Static
{
PLUGIN_DEBUG("Calling static method\n");
- callee = ((IcedTeaScriptableJavaObject*) npobj)->getClassID();
java_result = java_request.callStaticMethod(
IcedTeaPluginUtilities::getSourceFromInstance(instance),
- callee, browser_functions.utf8fromidentifier(name), arg_ids);
+ scriptable_object->class_id, browser_functions.utf8fromidentifier(name), arg_ids);
} else
{
PLUGIN_DEBUG("Calling method normally\n");
- callee = ((IcedTeaScriptableJavaObject*) npobj)->getInstanceID();
java_result = java_request.callMethod(
IcedTeaPluginUtilities::getSourceFromInstance(instance),
- callee, browser_functions.utf8fromidentifier(name), arg_ids);
+ scriptable_object->instance_id, browser_functions.utf8fromidentifier(name), arg_ids);
}
if (java_result->error_occurred)
@@ -609,21 +558,14 @@
}
bool
-IcedTeaScriptableJavaObject::invokeDefault(NPObject *npobj, const NPVariant *args,
- uint32_t argCount, NPVariant *result)
-{
- printf ("** Unimplemented: IcedTeaScriptableJavaObject::invokeDefault %p\n", npobj);
- return false;
-}
-
-bool
IcedTeaScriptableJavaObject::hasProperty(NPObject *npobj, NPIdentifier name)
{
PLUGIN_DEBUG("IcedTeaScriptableJavaObject::hasProperty %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
bool hasProperty = false;
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*)npobj;
// If it is an array, only length and indexes are valid
- if (((IcedTeaScriptableJavaObject*) npobj)->isArray())
+ if (scriptable_object->is_object_array)
{
if (browser_functions.intfromidentifier(name) >= 0 ||
!strcmp(browser_functions.utf8fromidentifier(name), "length"))
@@ -643,10 +585,9 @@
JavaResultData* java_result;
JavaRequestProcessor java_request = JavaRequestProcessor();
- std::string class_id = std::string(((IcedTeaScriptableJavaObject*) npobj)->getClassID());
std::string fieldName = browser_functions.utf8fromidentifier(name);
- java_result = java_request.hasField(class_id, fieldName);
+ java_result = java_request.hasField(scriptable_object->class_id, fieldName);
hasProperty = java_result->return_identifier != 0;
}
@@ -661,24 +602,24 @@
{
PLUGIN_DEBUG("IcedTeaScriptableJavaObject::getProperty %s (ival=%d)\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
- bool isPropertyClass = false;
JavaResultData* java_result;
JavaRequestProcessor java_request = JavaRequestProcessor();
- NPObject* obj;
- std::string instance_id = ((IcedTeaScriptableJavaObject*) npobj)->getInstanceID();
- std::string class_id = ((IcedTeaScriptableJavaObject*) npobj)->getClassID();
- NPP instance = ((IcedTeaScriptableJavaObject*) npobj)->getInstance();
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*)npobj;
+
+ std::string instance_id = scriptable_object->getInstanceID();
+ std::string class_id = scriptable_object->getClassID();
+ NPP instance = scriptable_object->instance;
if (instance_id.length() > 0) // Could be an array or a simple object
{
// If array and requesting length
- if ( ((IcedTeaScriptableJavaObject*) npobj)->isArray() &&
+ if ( scriptable_object->is_object_array &&
browser_functions.utf8fromidentifier(name) &&
!strcmp(browser_functions.utf8fromidentifier(name), "length"))
{
java_result = java_request.getArrayLength(instance_id);
- } else if ( ((IcedTeaScriptableJavaObject*) npobj)->isArray() &&
+ } else if ( scriptable_object->is_object_array &&
browser_functions.intfromidentifier(name) >= 0) // else if array and requesting index
{
@@ -709,7 +650,7 @@
if (!strcmp(browser_functions.utf8fromidentifier(name), "Packages"))
{
- NPObject* pkgObject = IcedTeaScriptablePluginObject::get_scriptable_java_package_object(instance, "");
+ NPObject* pkgObject = IcedTeaScriptableJavaPackageObject::get_scriptable_java_package_object(instance, "");
OBJECT_TO_NPVARIANT(pkgObject, *result);
return true;
}
@@ -744,30 +685,29 @@
PLUGIN_DEBUG("IcedTeaScriptableJavaObject::setProperty %s (ival=%d) to:\n", browser_functions.utf8fromidentifier(name), browser_functions.intfromidentifier(name));
IcedTeaPluginUtilities::printNPVariant(*value);
- bool isPropertyClass = false;
JavaResultData* java_result;
JavaRequestProcessor java_request = JavaRequestProcessor();
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*)npobj;
- NPObject* obj;
- std::string instance_id = ((IcedTeaScriptableJavaObject*) npobj)->getInstanceID();
- std::string class_id = ((IcedTeaScriptableJavaObject*) npobj)->getClassID();
+ std::string instance_id = scriptable_object->getInstanceID();
+ std::string class_id = scriptable_object->getClassID();
NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj);
if (instance_id.length() > 0) // Could be an array or a simple object
{
// If array
- if ( ((IcedTeaScriptableJavaObject*) npobj)->isArray() &&
+ if ( scriptable_object->is_object_array &&
browser_functions.utf8fromidentifier(name) &&
!strcmp(browser_functions.utf8fromidentifier(name), "length"))
{
printf("ERROR: Array length is not a modifiable property\n");
return false;
- } else if ( ((IcedTeaScriptableJavaObject*) npobj)->isArray() &&
+ } else if ( scriptable_object->is_object_array &&
browser_functions.intfromidentifier(name) >= 0) // else if array and requesting index
{
- java_result = java_request.getArrayLength(instance_id);
+ JavaResultData* java_result = java_request.getArrayLength(instance_id);
if (java_result->error_occurred)
{
printf("ERROR: Couldn't fetch array length\n");
@@ -820,25 +760,12 @@
}
bool
-IcedTeaScriptableJavaObject::removeProperty(NPObject *npobj, NPIdentifier name)
-{
- printf ("** Unimplemented: IcedTeaScriptableJavaObject::removeProperty %p\n", npobj);
- return false;
-}
-
-bool
-IcedTeaScriptableJavaObject::enumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count)
-{
- printf ("** Unimplemented: IcedTeaScriptableJavaObject::enumerate %p\n", npobj);
- return false;
-}
-
-bool
IcedTeaScriptableJavaObject::construct(NPObject *npobj, const NPVariant *args, uint32_t argCount,
NPVariant *result)
{
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*)npobj;
// Extract arg type array
- PLUGIN_DEBUG("IcedTeaScriptableJavaObject::construct %s. Args follow.\n", ((IcedTeaScriptableJavaObject*) npobj)->getClassID().c_str());
+ PLUGIN_DEBUG("IcedTeaScriptableJavaObject::construct %s. Args follow.\n", scriptable_object->getClassID().c_str());
for (int i=0; i < argCount; i++)
{
IcedTeaPluginUtilities::printNPVariant(args[i]);
@@ -847,8 +774,6 @@
JavaResultData* java_result;
JavaRequestProcessor java_request = JavaRequestProcessor();
- NPObject* obj;
- std::string class_id = ((IcedTeaScriptableJavaObject*) npobj)->getClassID();
NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj);
// First, load the arguments into the java-side table
@@ -872,7 +797,7 @@
java_result = java_request.newObject(
IcedTeaPluginUtilities::getSourceFromInstance(instance),
- class_id,
+ scriptable_object->class_id,
arg_ids);
if (java_result->error_occurred)
@@ -886,11 +811,10 @@
return false;
}
- std::string return_obj_instance_id = std::string();
- std::string return_obj_class_id = class_id;
- return_obj_instance_id.append(*(java_result->return_string));
+ std::string return_obj_instance_id = *java_result->return_string;
+ std::string return_obj_class_id = scriptable_object->class_id;
- obj = IcedTeaScriptableJavaPackageObject::get_scriptable_java_object(
+ NPObject* obj = IcedTeaScriptableJavaObject::get_scriptable_java_object(
IcedTeaPluginUtilities::getInstanceFromMemberPtr(npobj),
return_obj_class_id, return_obj_instance_id, false);
diff -r cfdb17c00603 -r ee92f55c69a3 plugin/icedteanp/IcedTeaScriptablePluginObject.h
--- a/plugin/icedteanp/IcedTeaScriptablePluginObject.h Fri Jun 21 11:41:31 2013 -0400
+++ b/plugin/icedteanp/IcedTeaScriptablePluginObject.h Fri Jun 21 13:55:10 2013 -0400
@@ -87,7 +87,6 @@
static bool construct(NPObject *npobj, const NPVariant *args,
uint32_t argCount, NPVariant *result);
- static NPObject* get_scriptable_java_package_object(NPP instance, const NPUTF8* name);
};
NPObject* allocate_scriptable_jp_object(NPP npp, NPClass *aClass);
@@ -136,69 +135,71 @@
static bool construct(NPObject *npobj, const NPVariant *args,
uint32_t argCount, NPVariant *result);
- static NPObject* get_scriptable_java_object(NPP instance,
- std::string class_id,
- std::string instance_id,
- bool isArray);
+ static NPObject* get_scriptable_java_package_object(NPP instance, const NPUTF8* name);
static bool is_valid_java_object(NPObject* object_ptr);
};
class IcedTeaScriptableJavaObject: public NPObject
{
+private:
+ NPP instance;
+ bool is_object_array;
+ /* These may be empty if 'is_applet_instance' is true
+ * and the object has not yet been used */
+ std::string class_id, instance_id;
+public:
+ IcedTeaScriptableJavaObject(NPP instance) {
+ this->instance = instance;
+ is_object_array = false;
+ }
+ static void deAllocate(NPObject *npobj) {
+ delete (IcedTeaScriptableJavaObject*)npobj;
+ }
+ std::string getInstanceID() {
+ return instance_id;
+ }
+ std::string getClassID() {
+ return class_id;
+ }
+ std::string objectKey() {
+ return getClassID() + ":" + getInstanceID();
+ }
+ static void invalidate(NPObject *npobj) {
+ IcedTeaPluginUtilities::removeInstanceID(npobj);
+ IcedTeaScriptableJavaObject* scriptable_object = (IcedTeaScriptableJavaObject*) npobj;
+ IcedTeaPluginUtilities::removeObjectMapping(scriptable_object->objectKey());
+ }
+ static bool hasMethod(NPObject *npobj, NPIdentifier name);
+ static bool invoke(NPObject *npobj, NPIdentifier name,
+ const NPVariant *args, uint32_t argCount, NPVariant *result);
+ static bool invokeDefault(NPObject *npobj, const NPVariant *args,
+ uint32_t argCount, NPVariant *result) {
+ printf ("** Unimplemented: IcedTeaScriptableJavaObject::invokeDefault %p\n", npobj);
+ return false;
+ }
+ static bool hasProperty(NPObject *npobj, NPIdentifier name);
+ static bool getProperty(NPObject *npobj, NPIdentifier name,
+ NPVariant *result);
+ static bool setProperty(NPObject *npobj, NPIdentifier name,
+ const NPVariant *value);
- private:
- NPP instance;
- bool isObjectArray;
More information about the distro-pkg-dev
mailing list