WebKit:
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Aug 2004 03:41:56 +0000 (03:41 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Aug 2004 03:41:56 +0000 (03:41 +0000)
        More changes to np headers.

        Reviewed by Darin.

        * Plugins.subproj/WebNetscapePluginPackage.m:
        (-[WebNetscapePluginPackage load]):
        * Plugins.subproj/npapi.h:
        * Plugins.subproj/npfunctions.h:
        * Plugins.subproj/npruntime.h:

JavaScriptCore:
More updates to np headers.  Implemented new NPN functions.

        Reviewed by Darin.

        * bindings/NP_jsobject.cpp:
        (NPN_HasProperty):
        (NPN_HasMethod):
        * bindings/npapi.h:
        * bindings/npruntime.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7260 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/bindings/NP_jsobject.cpp
JavaScriptCore/bindings/npapi.h
JavaScriptCore/bindings/npruntime.h
WebKit/ChangeLog
WebKit/Plugins.subproj/WebNetscapePluginPackage.m
WebKit/Plugins.subproj/npapi.h
WebKit/Plugins.subproj/npfunctions.h
WebKit/Plugins.subproj/npruntime.h

index 01aeeaebbf0f7ad9be5d5e841cbbdb73ab0cb868..408f6c12ab84c6b444ca6eacce1abaa637b81ed5 100644 (file)
@@ -1,3 +1,15 @@
+2004-08-15  Richard Williamson   <rjw@apple.com>
+
+       More updates to np headers.  Implemented new NPN functions.
+
+        Reviewed by Darin.
+
+        * bindings/NP_jsobject.cpp:
+        (NPN_HasProperty):
+        (NPN_HasMethod):
+        * bindings/npapi.h:
+        * bindings/npruntime.h:
+
 2004-08-13  Darin Adler  <darin@apple.com>
 
         - fix build so we can compile again
index acd32c8dcc15762f25a23a9c706e68302c19ac38..4f09dd4c793cf8b6f5a9edeb955a1e13953ed5aa 100644 (file)
@@ -278,3 +278,60 @@ bool NPN_RemoveProperty (NPP npp, NPObject *o, NPIdentifier propertyName)
     return false;
 }
 
+bool NPN_HasProperty(NPP npp, NPObject *o, NPIdentifier propertyName)
+{
+    if (o->_class == NPScriptObjectClass) {
+        JavaScriptObject *obj = (JavaScriptObject *)o; 
+        ExecState *exec = obj->root->interpreter()->globalExec();
+
+        PrivateIdentifier *i = (PrivateIdentifier *)propertyName;
+        // String identifier?
+        if (i->isString) {
+            ExecState *exec = obj->root->interpreter()->globalExec();
+            Interpreter::lock();
+            bool result = obj->imp->hasProperty (exec, identiferFromNPIdentifier(i->value.string));
+            Interpreter::unlock();
+            return result;
+        }
+        
+        // Numeric identifer
+        Interpreter::lock();
+        bool result = obj->imp->hasProperty (exec, i->value.number);
+        Interpreter::unlock();
+        return result;
+    }
+    else if (o->_class->hasProperty) {
+        return o->_class->hasProperty (o->_class, propertyName);
+    }
+    
+    return false;
+}
+
+bool NPN_HasMethod(NPP npp, NPObject *o, NPIdentifier methodName)
+{
+    if (o->_class == NPScriptObjectClass) {
+        JavaScriptObject *obj = (JavaScriptObject *)o; 
+        
+        PrivateIdentifier *i = (PrivateIdentifier *)methodName;
+        if (!i->isString)
+            return false;
+            
+        // Lookup the function object.
+        ExecState *exec = obj->root->interpreter()->globalExec();
+        Interpreter::lock();
+        Value func = obj->imp->get (exec, identiferFromNPIdentifier(i->value.string));
+        Interpreter::unlock();
+
+        if (func.isNull() || func.type() == UndefinedType) {
+            return false;
+        }
+        
+        return true;
+    }
+    
+    else if (o->_class->hasMethod) {
+        return o->_class->hasMethod (o->_class, methodName);
+    }
+    
+    return false;
+}
index ece0284ec55e73a9ae7c28d9fb6d2fa707e0f686..f0a25dc0b4ac91322d74f1013781fb3a0d4ed239 100644 (file)
@@ -1,8 +1,44 @@
-/* -*- Mode: C; tab-width: 4; -*- */
-/*
- *  npapi.h $Revision$
- *  Netscape client plug-in API spec
- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+ /*
+  *  Netscape client plug-in API spec
+  */
 
 #ifndef _NPAPI_H_
 #define _NPAPI_H_
@@ -60,7 +96,7 @@
 /*----------------------------------------------------------------------*/
 
 #define NP_VERSION_MAJOR 0
-#define NP_VERSION_MINOR 12
+#define NP_VERSION_MINOR 14
 
 
 
@@ -99,10 +135,7 @@ typedef long int32;
 #define NULL (0L)
 #endif
 
-//#ifndef _NP_RUNTIME_H_
-// Ack!  Temporary hack to get build working.
-typedef unsigned char NPBool;
-//#endif
+typedef unsigned char    NPBool;
 typedef int16            NPError;
 typedef int16            NPReason;
 typedef char*            NPMIMEType;
@@ -264,7 +297,7 @@ typedef enum {
     NPPVpluginNeedsXEmbed         = 14, /* Not implemented in WebKit */
 
     /* Get the NPObject for scripting the plugin. */
-    NPPVpluginScriptableNPObject
+    NPPVpluginScriptableNPObject  = 15
 } NPPVariable;
 
 /*
@@ -286,7 +319,7 @@ typedef enum {
     NPNVSupportsXEmbedBool = 14,              /* Not implemented in WebKit */
 
     /* Get the NPObject wrapper for the browser window. */
-    NPNVWindowNPObject,
+    NPNVWindowNPObject = 15,
 
     /* Get the NPObject wrapper for the plugins DOM element. */
     NPNVPluginElementNPObject                 /* Not implemented in WebKit */
index a30a5a2d55b6fef1e075535dc9e05150fcbe9c06..ccc181e91a2bb7f5e34f652fa41382412ce4db8c 100644 (file)
@@ -102,7 +102,8 @@ extern "C" {
     header.
 
     To the extent possible the assumptions about the scripting
-    language used by the scripting environment have been minimized.*/
+    language used by the scripting environment have been minimized.
+*/
 
 
 /*
index 6465c845b2dfcaa2030b5a0dfd78a45b72941253..748733c239fda9786b43ce2e7f50070e1d04d3ff 100644 (file)
@@ -1,3 +1,15 @@
+2004-08-15  Richard Williamson   <rjw@apple.com>
+
+        More changes to np headers.
+        
+        Reviewed by Darin.
+
+        * Plugins.subproj/WebNetscapePluginPackage.m:
+        (-[WebNetscapePluginPackage load]):
+        * Plugins.subproj/npapi.h:
+        * Plugins.subproj/npfunctions.h:
+        * Plugins.subproj/npruntime.h:
+
 2004-08-13  Darin Adler  <darin@apple.com>
 
         Reviewed by Chris.
index 41694d3c879d694d7b71584358a4ca4cff597f65..7bde7863225bc0641324a92111f07a33308925f8 100644 (file)
@@ -457,7 +457,7 @@ static TransitionVector tVectorForFunctionPointer(FunctionPointer);
         browserFuncs.retainobject = (NPN_RetainObjectProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_RetainObject);
         browserFuncs.releaseobject = (NPN_ReleaseObjectProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_ReleaseObject);
         browserFuncs.call = (NPN_CallProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_Call);
-        browserFuncs.evalute = (NPN_EvaluateProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_Evaluate);
+        browserFuncs.evaluate = (NPN_EvaluateProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_Evaluate);
         browserFuncs.getproperty = (NPN_GetPropertyProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_GetProperty);
         browserFuncs.setproperty = (NPN_SetPropertyProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_SetProperty);
         browserFuncs.removeproperty = (NPN_RemovePropertyProcPtr)tVectorForFunctionPointer((FunctionPointer)NPN_RemoveProperty);
@@ -551,7 +551,7 @@ static TransitionVector tVectorForFunctionPointer(FunctionPointer);
         browserFuncs.retainobject = NPN_RetainObject;
         browserFuncs.releaseobject = NPN_ReleaseObject;
         browserFuncs.call = NPN_Call;
-        browserFuncs.evalute = NPN_Evaluate;
+        browserFuncs.evaluate = NPN_Evaluate;
         browserFuncs.getproperty = NPN_GetProperty;
         browserFuncs.setproperty = NPN_SetProperty;
         browserFuncs.removeproperty = NPN_RemoveProperty;
index ece0284ec55e73a9ae7c28d9fb6d2fa707e0f686..f0a25dc0b4ac91322d74f1013781fb3a0d4ed239 100644 (file)
@@ -1,8 +1,44 @@
-/* -*- Mode: C; tab-width: 4; -*- */
-/*
- *  npapi.h $Revision$
- *  Netscape client plug-in API spec
- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+ /*
+  *  Netscape client plug-in API spec
+  */
 
 #ifndef _NPAPI_H_
 #define _NPAPI_H_
@@ -60,7 +96,7 @@
 /*----------------------------------------------------------------------*/
 
 #define NP_VERSION_MAJOR 0
-#define NP_VERSION_MINOR 12
+#define NP_VERSION_MINOR 14
 
 
 
@@ -99,10 +135,7 @@ typedef long int32;
 #define NULL (0L)
 #endif
 
-//#ifndef _NP_RUNTIME_H_
-// Ack!  Temporary hack to get build working.
-typedef unsigned char NPBool;
-//#endif
+typedef unsigned char    NPBool;
 typedef int16            NPError;
 typedef int16            NPReason;
 typedef char*            NPMIMEType;
@@ -264,7 +297,7 @@ typedef enum {
     NPPVpluginNeedsXEmbed         = 14, /* Not implemented in WebKit */
 
     /* Get the NPObject for scripting the plugin. */
-    NPPVpluginScriptableNPObject
+    NPPVpluginScriptableNPObject  = 15
 } NPPVariable;
 
 /*
@@ -286,7 +319,7 @@ typedef enum {
     NPNVSupportsXEmbedBool = 14,              /* Not implemented in WebKit */
 
     /* Get the NPObject wrapper for the browser window. */
-    NPNVWindowNPObject,
+    NPNVWindowNPObject = 15,
 
     /* Get the NPObject wrapper for the plugins DOM element. */
     NPNVPluginElementNPObject                 /* Not implemented in WebKit */
index d23501fe79126db55b0db6d7549cbbb74cff23be..4af2daacd04ecc9056977ec32a59f6110263813a 100644 (file)
@@ -35,6 +35,7 @@ typedef void (*NPN_ReleaseVariantValueProcPtr) (NPVariant *variant);
 typedef NPIdentifier (*NPN_GetStringIdentifierProcPtr) (const NPUTF8 *name);
 typedef void (*NPN_GetStringIdentifiersProcPtr) (const NPUTF8 **names, int32_t nameCount, NPIdentifier *identifiers);
 typedef NPIdentifier (*NPN_GetIntIdentifierProcPtr) (int32_t intid);
+typedef NPIdentifier (*NPN_IntFromIdentifierProcPtr) (NPIdentifier identifier);
 typedef bool (*NPN_IdentifierIsStringProcPtr) (NPIdentifier identifier);
 typedef NPUTF8 *(*NPN_UTF8FromIdentifierProcPtr) (NPIdentifier identifier);
 
@@ -45,6 +46,8 @@ typedef bool (*NPN_CallProcPtr) (NPP npp, NPObject *obj, NPIdentifier methodName
 typedef bool (*NPN_EvaluateProcPtr) (NPP npp, NPObject *obj, NPString *script, NPVariant *result);
 typedef bool (*NPN_GetPropertyProcPtr) (NPP npp, NPObject *obj, NPIdentifier  propertyName, NPVariant *result);
 typedef bool (*NPN_SetPropertyProcPtr) (NPP npp, NPObject *obj, NPIdentifier  propertyName, const NPVariant *value);
+typedef bool (*NPN_HasPropertyProcPtr) (NPP, NPObject *npobj, NPIdentifier propertyName);
+typedef bool (*NPN_HasMethodProcPtr) (NPP npp, NPObject *npobj, NPIdentifier methodName);
 typedef bool (*NPN_RemovePropertyProcPtr) (NPP npp, NPObject *obj, NPIdentifier propertyName);
 typedef void (*NPN_SetExceptionProcPtr) (NPObject *obj, NPString *message);
 
@@ -92,20 +95,23 @@ typedef struct _NPNetscapeFuncs {
     NPN_InvalidateRegionProcPtr invalidateregion;
     NPN_ForceRedrawProcPtr forceredraw;
     
-    NPN_ReleaseVariantValueProcPtr releasevariantvalue;
     NPN_GetStringIdentifierProcPtr getstringidentifier;
     NPN_GetStringIdentifiersProcPtr getstringidentifiers;
     NPN_GetIntIdentifierProcPtr getintidentifier;
     NPN_IdentifierIsStringProcPtr identifierisstring;
     NPN_UTF8FromIdentifierProcPtr utf8fromidentifier;
+    NPN_IntFromIdentifierProcPtr intfromidentifier;
     NPN_CreateObjectProcPtr createobject;
     NPN_RetainObjectProcPtr retainobject;
     NPN_ReleaseObjectProcPtr releaseobject;
     NPN_CallProcPtr call;
-    NPN_EvaluateProcPtr evalute;
+    NPN_EvaluateProcPtr evaluate;
     NPN_GetPropertyProcPtr getproperty;
     NPN_SetPropertyProcPtr setproperty;
     NPN_RemovePropertyProcPtr removeproperty;
+    NPN_HasPropertyProcPtr hasproperty;
+    NPN_HasMethodProcPtr hasmethod;
+    NPN_ReleaseVariantValueProcPtr releasevariantvalue;
     NPN_SetExceptionProcPtr setexception;
 } NPNetscapeFuncs;
 
index a30a5a2d55b6fef1e075535dc9e05150fcbe9c06..ccc181e91a2bb7f5e34f652fa41382412ce4db8c 100644 (file)
@@ -102,7 +102,8 @@ extern "C" {
     header.
 
     To the extent possible the assumptions about the scripting
-    language used by the scripting environment have been minimized.*/
+    language used by the scripting environment have been minimized.
+*/
 
 
 /*