/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