Author: toshok
Date: 2007-07-12 16:38:04 -0400 (Thu, 12 Jul 2007)
New Revision: 81901
Modified:
trunk/moon/plugin/plugin-class.cpp
trunk/moon/plugin/plugin-class.h
Log:
add a skeleton for MoonlightScriptableObject
Modified: trunk/moon/plugin/plugin-class.cpp
===================================================================
--- trunk/moon/plugin/plugin-class.cpp 2007-07-12 20:17:32 UTC (rev 81900)
+++ trunk/moon/plugin/plugin-class.cpp 2007-07-12 20:38:04 UTC (rev 81901)
@@ -1610,7 +1610,86 @@
MoonlightDownloaderType* MoonlightDownloaderClass;
+/*** MoonlightScriptableObjectClass
***************************************************/
+static NPObject*
+moonlight_scriptable_object_allocate (NPP instance, NPClass*)
+{
+ return new MoonlightScriptableObjectObject (instance);
+}
+
+static void
+moonlight_scriptable_object_deallocate (NPObject *npobj)
+{
+ // XXX is delete broken in plugins?
+ // delete (MoonlightScriptableObjectObject*)npobj;
+}
+
+static void
+moonlight_scriptable_object_invalidate (NPObject *npobj)
+{
+ MoonlightScriptableObjectObject *sobj =
(MoonlightScriptableObjectObject*)npobj;
+
+ if (sobj->scriptable) {
+ // XXX unref the scriptable object however we need to.
+ }
+ sobj->scriptable = NULL;
+}
+
+static bool
+moonlight_scriptable_object_has_property (NPObject *npobj, NPIdentifier name)
+{
+ DEBUG_WARN_NOTIMPLEMENTED ();
+ return false;
+}
+
+static bool
+moonlight_scriptable_object_get_property (NPObject *npobj, NPIdentifier name,
NPVariant *result)
+{
+ DEBUG_WARN_NOTIMPLEMENTED ();
+ return true;
+}
+
+static bool
+moonlight_scriptable_object_set_property (NPObject *npobj, NPIdentifier name,
const NPVariant *value)
+{
+ DEBUG_WARN_NOTIMPLEMENTED ();
+ return true;
+}
+
+static bool
+moonlight_scriptable_object_has_method (NPObject *npobj, NPIdentifier name)
+{
+ DEBUG_WARN_NOTIMPLEMENTED ();
+ return false;
+}
+
+static bool
+moonlight_scriptable_object_invoke (NPObject *npobj, NPIdentifier name,
+ const NPVariant *args, uint32_t argCount,
+ NPVariant *result)
+{
+ DEBUG_WARN_NOTIMPLEMENTED ();
+ return true;
+}
+
+
+MoonlightScriptableObjectType::MoonlightScriptableObjectType ()
+{
+ allocate = moonlight_scriptable_object_allocate;
+ deallocate = moonlight_scriptable_object_deallocate;
+ invalidate = moonlight_scriptable_object_invalidate;
+
+ hasProperty = moonlight_scriptable_object_has_property;
+ setProperty = moonlight_scriptable_object_set_property;
+ getProperty = moonlight_scriptable_object_get_property;
+
+ hasMethod = moonlight_scriptable_object_has_method;
+ invoke = moonlight_scriptable_object_invoke;
+}
+
+MoonlightScriptableObjectType* MoonlightScriptableObjectClass;
+
void
plugin_init_classes ()
{
@@ -1625,5 +1704,6 @@
MoonlightMediaElementClass = new MoonlightMediaElementType ();
MoonlightDownloaderClass = new MoonlightDownloaderType ();
MoonlightMouseEventArgsClass = new MoonlightMouseEventArgsType ();
+ MoonlightScriptableObjectClass = new MoonlightScriptableObjectType ();
}
Modified: trunk/moon/plugin/plugin-class.h
===================================================================
--- trunk/moon/plugin/plugin-class.h 2007-07-12 20:17:32 UTC (rev 81900)
+++ trunk/moon/plugin/plugin-class.h 2007-07-12 20:38:04 UTC (rev 81901)
@@ -163,7 +163,7 @@
/*** MoonlightStoryboardClass
***************************************************/
struct MoonlightStoryboardType : MoonlightDependencyObjectType {
- MoonlightStoryboardType ();
+ MoonlightStoryboardType ();
};
extern MoonlightStoryboardType* MoonlightStoryboardClass;
@@ -171,7 +171,7 @@
/*** MoonlightMediaElement ***************************************************/
struct MoonlightMediaElementType : MoonlightDependencyObjectType {
- MoonlightMediaElementType ();
+ MoonlightMediaElementType ();
};
extern MoonlightMediaElementType* MoonlightMediaElementClass;
@@ -179,10 +179,30 @@
/*** MoonlightDownloader ***************************************************/
struct MoonlightDownloaderType : MoonlightDependencyObjectType {
- MoonlightDownloaderType ();
+ MoonlightDownloaderType ();
};
extern MoonlightDownloaderType* MoonlightDownloaderClass;
+/*** MoonlightScriptableObject
***************************************************/
+
+struct MoonlightScriptableObjectType : MoonlightObjectType {
+ MoonlightScriptableObjectType ();
+};
+
+extern MoonlightScriptableObjectType* MoonlightScriptableObjectClass;
+
+struct MoonlightScriptableObjectObject : public MoonlightObject
+{
+ MoonlightScriptableObjectObject (NPP instance) : MoonlightObject
(instance)
+ {
+ scriptable = NULL;
+ }
+
+ // XXX this should be a MonoObject? what does a GCHandle in
+ // p/invoke result in on the unmanaged side?
+ void *scriptable;
+};
+
#endif /* PLUGIN_CLASS */
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches