[Xfce4-commits] <parole:master> Re-work the broswer plugin the gecko-mediaplayer way instead of the Totem way, since i could understand fully its code, the gecko-mediaplayer code is simple, but anyway it seems that to be working better now.
Ali Abdallah
noreply at xfce.org
Tue Nov 17 22:06:01 CET 2009
Updating branch refs/heads/master
to 9c42f6a3d139fa5f926f8037c899a29a1280b1b4 (commit)
from dc92c89c56848596c374c265a98b26fcaafd7262 (commit)
commit 9c42f6a3d139fa5f926f8037c899a29a1280b1b4
Author: Ali Abdallah <ali at ali-xfce.org>
Date: Tue Nov 17 16:47:28 2009 +0100
Re-work the broswer plugin the gecko-mediaplayer way
instead of the Totem way, since i could understand
fully its code, the gecko-mediaplayer code is simple,
but anyway it seems that to be working better now.
browser-plugin/Makefile.am | 71 ++--
browser-plugin/media-plugin/main.c | 1 +
.../media-plugin/org.parole.media.plugin.xml | 2 +
browser-plugin/media-plugin/parole-gst.c | 12 +
browser-plugin/np_entry.cpp | 186 +++++++++
browser-plugin/npn_gate.cpp | 322 +++++++++++++++
browser-plugin/npp_gate.cpp | 282 +++++++++++++
browser-plugin/npruntime.h | 351 ----------------
browser-plugin/npupp.h | 248 ++++++------
browser-plugin/parole-plugin.cpp | 185 ---------
browser-plugin/parole-plugin.h | 71 ----
browser-plugin/plugin.cpp | 420 ++++++++------------
browser-plugin/plugin.h | 92 +++++
browser-plugin/plugin.symbols | 4 -
browser-plugin/plugin_setup.cpp | 80 ++++
browser-plugin/plugin_setup.h | 44 ++
browser-plugin/plugin_types.cpp | 135 +++++++
browser-plugin/plugin_types.h | 47 +++
configure.ac.in | 1 +
19 files changed, 1529 insertions(+), 1025 deletions(-)
diff --git a/browser-plugin/Makefile.am b/browser-plugin/Makefile.am
index f4fa674..ecd18c1 100644
--- a/browser-plugin/Makefile.am
+++ b/browser-plugin/Makefile.am
@@ -1,47 +1,40 @@
-SUBDIRS = \
- media-plugin
+## Process this file with automake to produce Makefile.in
-INCLUDES = \
- -fPIC \
- -I$(top_builddir) \
- -I$(top_srcdir) \
- -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
- -DG_LOG_DOMAIN=\"parole-browser-plugin\" \
- -DLIBEXECDIR="\"$(libexecdir)\"" \
- $(GTK_CFLAGS) \
- $(DBUS_GLIB_CFLAGS)
+SUBDIRS = media-plugin
-plugindir = $(BROWSER_PLUGIN_DIR)
+DEFINES = -DMOZILLA_STRICT_API -DXP_UNIX
-plugin_LTLIBRARIES = \
- parole-player.la
+INCLUDES = \
+ -fPIC \
+ -I$(top_builddir) \
+ -I$(top_srcdir) \
+ -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
+ -DG_LOG_DOMAIN=\"parole-browser-plugin\" \
+ -DLIBEXECDIR="\"$(libexecdir)\"" \
+ $(GTK_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(GECKO_CFLAGS) \
+ $(DEFINES)
-PLUGIN_FILES = \
- npupp.h \
- npapi.h \
- npruntime.h
-
-parole_player_la_SOURCES = \
- $(PLUGIN_FILES) \
- plugin.cpp \
- parole-plugin.cpp \
- parole-plugin.h
+install_libexecdir = $(libdir)/mozilla/plugins
+install_libexec_PROGRAMS = \
+ parole-player.so
-parole_player_la_CPPFLAGS = \
- -DXP_UNIX \
- -DMOZ_X11
- -I$(top_srcdir)/browser-plugin
-
-parole_player_la_LIBADD = \
- $(GTK_LIBS) \
- $(DBUS_GLIB_LIBS)
+parole_player_so_SOURCES = \
+ plugin.cpp \
+ plugin.h \
+ plugin_setup.cpp \
+ plugin_setup.h \
+ plugin_types.cpp \
+ plugin_types.h \
+ np_entry.cpp \
+ npupp.h \
+ npp_gate.cpp
-parole_player_la_LDFLAGS = \
- -avoid-version \
- -export-symbols $(srcdir)/plugin.symbols \
- -module
+parole_player_so_LDFLAGS = \
+ -Xcompiler \
+ -shared \
+ $(GTK_LIBS) \
+ $(DBUS_GLIB_LIBS)
-EXTRA_DIST = \
- $(PLUGIN_FILES)
- plugin.symbols
\ No newline at end of file
diff --git a/browser-plugin/media-plugin/main.c b/browser-plugin/media-plugin/main.c
index 34fbdd7..dad22c9 100644
--- a/browser-plugin/media-plugin/main.c
+++ b/browser-plugin/media-plugin/main.c
@@ -127,6 +127,7 @@ int main (int argc, char **argv)
g_signal_handler_disconnect (plug, sig_id);
gtk_widget_destroy (plug);
parole_dbus_release_name (dbus_name);
+ g_free (dbus_name);
}
gst_deinit ();
diff --git a/browser-plugin/media-plugin/org.parole.media.plugin.xml b/browser-plugin/media-plugin/org.parole.media.plugin.xml
index 0506de9..2da359c 100644
--- a/browser-plugin/media-plugin/org.parole.media.plugin.xml
+++ b/browser-plugin/media-plugin/org.parole.media.plugin.xml
@@ -8,6 +8,8 @@
<method name="Quit">
</method>
+ <method name="Terminate">
+ </method>
</interface>
</node>
diff --git a/browser-plugin/media-plugin/parole-gst.c b/browser-plugin/media-plugin/parole-gst.c
index 8151633..8ba5c06 100644
--- a/browser-plugin/media-plugin/parole-gst.c
+++ b/browser-plugin/media-plugin/parole-gst.c
@@ -749,6 +749,10 @@ GtkWidget *parole_gst_get_controls (ParoleGst *gst)
static gboolean parole_gst_dbus_quit (ParoleGst *gst,
GError **error);
+
+static gboolean parole_gst_dbus_terminate (ParoleGst *gst,
+ GError **error);
+
#include "org.parole.media.plugin.h"
/*
@@ -781,3 +785,11 @@ parole_gst_dbus_quit (ParoleGst *gst,
return TRUE;
}
+
+static gboolean
+parole_gst_dbus_terminate (ParoleGst *gst, GError **error)
+{
+ g_debug ("Terminate message received");
+ parole_gst_change_state (gst, GST_STATE_NULL);
+ return TRUE;
+}
diff --git a/browser-plugin/np_entry.cpp b/browser-plugin/np_entry.cpp
new file mode 100644
index 0000000..3e303c8
--- /dev/null
+++ b/browser-plugin/np_entry.cpp
@@ -0,0 +1,186 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Netscape 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/NPL/
+ *
+ * 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 NPL, 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 NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+//////////////////////////////////////////////////////////////
+//
+// Main plugin entry point implementation
+//
+#include "npapi.h"
+#include "npupp.h"
+
+#ifndef HIBYTE
+#define HIBYTE(x) ((((uint32)(x)) & 0xff00) >> 8)
+#endif
+
+NPNetscapeFuncs NPNFuncs;
+
+#ifdef XP_WIN
+
+NPError OSCALL NP_GetEntryPoints(NPPluginFuncs * pFuncs)
+{
+ if (pFuncs == NULL)
+ return NPERR_INVALID_FUNCTABLE_ERROR;
+
+ if (pFuncs->size < sizeof(NPPluginFuncs))
+ return NPERR_INVALID_FUNCTABLE_ERROR;
+
+ pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
+ pFuncs->newp = NPP_New;
+ pFuncs->destroy = NPP_Destroy;
+ pFuncs->setwindow = NPP_SetWindow;
+ pFuncs->newstream = NPP_NewStream;
+ pFuncs->destroystream = NPP_DestroyStream;
+ pFuncs->asfile = NPP_StreamAsFile;
+ pFuncs->writeready = NPP_WriteReady;
+ pFuncs->write = NPP_Write;
+ pFuncs->print = NPP_Print;
+ pFuncs->event = NPP_HandleEvent;
+ pFuncs->urlnotify = NPP_URLNotify;
+ pFuncs->getvalue = NPP_GetValue;
+ pFuncs->setvalue = NPP_SetValue;
+ pFuncs->javaClass = NULL;
+
+ return NPERR_NO_ERROR;
+}
+
+#endif /* XP_WIN */
+
+char *NPP_GetMIMEDescription();
+
+char *NP_GetMIMEDescription()
+{
+ return NPP_GetMIMEDescription();
+}
+
+NPError NP_GetValue(void *future, NPPVariable variable, void *value)
+{
+ return NPP_GetValue((NPP_t *) future, variable, value);
+}
+
+NPError OSCALL NP_Initialize(NPNetscapeFuncs * pFuncs
+#ifdef XP_UNIX
+ , NPPluginFuncs * pluginFuncs
+#endif
+ )
+{
+ if (pFuncs == NULL)
+ return NPERR_INVALID_FUNCTABLE_ERROR;
+
+ if (HIBYTE(pFuncs->version) > NP_VERSION_MAJOR)
+ return NPERR_INCOMPATIBLE_VERSION_ERROR;
+
+ if (pFuncs->size < sizeof(NPNetscapeFuncs))
+ return NPERR_INVALID_FUNCTABLE_ERROR;
+
+ NPNFuncs.size = pFuncs->size;
+ NPNFuncs.version = pFuncs->version;
+ NPNFuncs.geturlnotify = pFuncs->geturlnotify;
+ NPNFuncs.geturl = pFuncs->geturl;
+ NPNFuncs.posturlnotify = pFuncs->posturlnotify;
+ NPNFuncs.posturl = pFuncs->posturl;
+ NPNFuncs.requestread = pFuncs->requestread;
+ NPNFuncs.newstream = pFuncs->newstream;
+ NPNFuncs.write = pFuncs->write;
+ NPNFuncs.destroystream = pFuncs->destroystream;
+ NPNFuncs.status = pFuncs->status;
+ NPNFuncs.uagent = pFuncs->uagent;
+ NPNFuncs.memalloc = pFuncs->memalloc;
+ NPNFuncs.memfree = pFuncs->memfree;
+ NPNFuncs.memflush = pFuncs->memflush;
+ NPNFuncs.reloadplugins = pFuncs->reloadplugins;
+ NPNFuncs.getJavaEnv = pFuncs->getJavaEnv;
+ NPNFuncs.getJavaPeer = pFuncs->getJavaPeer;
+ NPNFuncs.getvalue = pFuncs->getvalue;
+ NPNFuncs.setvalue = pFuncs->setvalue;
+ NPNFuncs.invalidaterect = pFuncs->invalidaterect;
+ NPNFuncs.invalidateregion = pFuncs->invalidateregion;
+ NPNFuncs.forceredraw = pFuncs->forceredraw;
+ NPNFuncs.getstringidentifier = pFuncs->getstringidentifier;
+ NPNFuncs.getstringidentifiers = pFuncs->getstringidentifiers;
+ NPNFuncs.getintidentifier = pFuncs->getintidentifier;
+ NPNFuncs.identifierisstring = pFuncs->identifierisstring;
+ NPNFuncs.utf8fromidentifier = pFuncs->utf8fromidentifier;
+ NPNFuncs.intfromidentifier = pFuncs->intfromidentifier;
+ NPNFuncs.createobject = pFuncs->createobject;
+ NPNFuncs.retainobject = pFuncs->retainobject;
+ NPNFuncs.releaseobject = pFuncs->releaseobject;
+ NPNFuncs.invoke = pFuncs->invoke;
+ NPNFuncs.invokeDefault = pFuncs->invokeDefault;
+ NPNFuncs.evaluate = pFuncs->evaluate;
+ NPNFuncs.getproperty = pFuncs->getproperty;
+ NPNFuncs.setproperty = pFuncs->setproperty;
+ NPNFuncs.removeproperty = pFuncs->removeproperty;
+ NPNFuncs.hasproperty = pFuncs->hasproperty;
+ NPNFuncs.hasmethod = pFuncs->hasmethod;
+ NPNFuncs.releasevariantvalue = pFuncs->releasevariantvalue;
+ NPNFuncs.setexception = pFuncs->setexception;
+
+#ifdef XP_UNIX
+ /*
+ * Set up the plugin function table that Netscape will use to
+ * call us. Netscape needs to know about our version and size
+ * and have a UniversalProcPointer for every function we
+ * implement.
+ */
+ pluginFuncs->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
+ pluginFuncs->size = sizeof(NPPluginFuncs);
+ pluginFuncs->newp = NewNPP_NewProc(NPP_New);
+ pluginFuncs->destroy = NewNPP_DestroyProc(NPP_Destroy);
+ pluginFuncs->setwindow = NewNPP_SetWindowProc(NPP_SetWindow);
+ pluginFuncs->newstream = NewNPP_NewStreamProc(NPP_NewStream);
+ pluginFuncs->destroystream = NewNPP_DestroyStreamProc(NPP_DestroyStream);
+ pluginFuncs->asfile = NewNPP_StreamAsFileProc(NPP_StreamAsFile);
+ pluginFuncs->writeready = NewNPP_WriteReadyProc(NPP_WriteReady);
+ pluginFuncs->write = NewNPP_WriteProc(NPP_Write);
+ pluginFuncs->print = NewNPP_PrintProc(NPP_Print);
+ pluginFuncs->urlnotify = NewNPP_URLNotifyProc(NPP_URLNotify);
+ pluginFuncs->event = NULL;
+ pluginFuncs->getvalue = NewNPP_GetValueProc(NPP_GetValue);
+#ifdef OJI
+ pluginFuncs->javaClass = NPP_GetJavaClass();
+#endif
+
+ NPP_Initialize();
+#endif
+
+ return NPERR_NO_ERROR;
+}
+
+NPError OSCALL NP_Shutdown()
+{
+ return NPERR_NO_ERROR;
+}
diff --git a/browser-plugin/npn_gate.cpp b/browser-plugin/npn_gate.cpp
new file mode 100644
index 0000000..df3f14a
--- /dev/null
+++ b/browser-plugin/npn_gate.cpp
@@ -0,0 +1,322 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Netscape 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/NPL/
+ *
+ * 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 NPL, 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 NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+////////////////////////////////////////////////////////////
+//
+// Implementation of Netscape entry points (NPN_*)
+//
+#include "npapi.h"
+#include "npupp.h"
+
+#ifndef HIBYTE
+#define HIBYTE(x) ((((uint32)(x)) & 0xff00) >> 8)
+#endif
+
+#ifndef LOBYTE
+#define LOBYTE(W) ((W) & 0xFF)
+#endif
+
+extern NPNetscapeFuncs NPNFuncs;
+
+void NPN_Version(int *plugin_major, int *plugin_minor, int *netscape_major, int *netscape_minor)
+{
+ *plugin_major = NP_VERSION_MAJOR;
+ *plugin_minor = NP_VERSION_MINOR;
+ *netscape_major = HIBYTE(NPNFuncs.version);
+ *netscape_minor = LOBYTE(NPNFuncs.version);
+}
+
+NPError NPN_GetURLNotify(NPP instance, const char *url, const char *target, void *notifyData)
+{
+ int navMinorVers = NPNFuncs.version & 0xFF;
+ NPError rv = NPERR_NO_ERROR;
+
+ if (navMinorVers >= NPVERS_HAS_NOTIFICATION)
+ rv = NPNFuncs.geturlnotify(instance, url, target, notifyData);
+ else
+ rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
+ return rv;
+}
+
+NPError NPN_GetURL(NPP instance, const char *url, const char *target)
+{
+ NPError rv = NPNFuncs.geturl(instance, url, target);
+ return rv;
+}
+
+NPError NPN_PostURLNotify(NPP instance, const char *url, const char *window, uint32 len,
+ const char *buf, NPBool file, void *notifyData)
+{
+ int navMinorVers = NPNFuncs.version & 0xFF;
+ NPError rv = NPERR_NO_ERROR;
+
+ if (navMinorVers >= NPVERS_HAS_NOTIFICATION)
+ rv = NPNFuncs.posturlnotify(instance, url, window, len, buf, file, notifyData);
+ else
+ rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
+
+ return rv;
+}
+
+NPError NPN_PostURL(NPP instance, const char *url, const char *window, uint32 len, const char *buf,
+ NPBool file)
+{
+ NPError rv = NPNFuncs.posturl(instance, url, window, len, buf, file);
+ return rv;
+}
+
+NPError NPN_RequestRead(NPStream * stream, NPByteRange * rangeList)
+{
+ NPError rv = NPNFuncs.requestread(stream, rangeList);
+ return rv;
+}
+
+NPError NPN_NewStream(NPP instance, NPMIMEType type, const char *target, NPStream ** stream)
+{
+ int navMinorVersion = NPNFuncs.version & 0xFF;
+
+ NPError rv = NPERR_NO_ERROR;
+
+ if (navMinorVersion >= NPVERS_HAS_STREAMOUTPUT)
+ rv = NPNFuncs.newstream(instance, type, target, stream);
+ else
+ rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
+
+ return rv;
+}
+
+int32 NPN_Write(NPP instance, NPStream * stream, int32 len, void *buffer)
+{
+ int navMinorVersion = NPNFuncs.version & 0xFF;
+ int32 rv = 0;
+
+ if (navMinorVersion >= NPVERS_HAS_STREAMOUTPUT)
+ rv = NPNFuncs.write(instance, stream, len, buffer);
+ else
+ rv = -1;
+
+ return rv;
+}
+
+NPError NPN_DestroyStream(NPP instance, NPStream * stream, NPError reason)
+{
+ int navMinorVersion = NPNFuncs.version & 0xFF;
+ NPError rv = NPERR_NO_ERROR;
+
+ if (navMinorVersion >= NPVERS_HAS_STREAMOUTPUT)
+ rv = NPNFuncs.destroystream(instance, stream, reason);
+ else
+ rv = NPERR_INCOMPATIBLE_VERSION_ERROR;
+
+ return rv;
+}
+
+void NPN_Status(NPP instance, const char *message)
+{
+ NPNFuncs.status(instance, message);
+}
+
+const char *NPN_UserAgent(NPP instance)
+{
+ const char *rv = NULL;
+ rv = NPNFuncs.uagent(instance);
+ return rv;
+}
+
+void *NPN_MemAlloc(uint32 size)
+{
+ void *rv = NULL;
+ rv = NPNFuncs.memalloc(size);
+ return rv;
+}
+
+void NPN_MemFree(void *ptr)
+{
+ NPNFuncs.memfree(ptr);
+}
+
+uint32 NPN_MemFlush(uint32 size)
+{
+ uint32 rv = NPNFuncs.memflush(size);
+ return rv;
+}
+
+void NPN_ReloadPlugins(NPBool reloadPages)
+{
+ NPNFuncs.reloadplugins(reloadPages);
+}
+
+JRIEnv *NPN_GetJavaEnv(void)
+{
+ JRIEnv *rv = NULL;
+ rv = NPNFuncs.getJavaEnv();
+ return rv;
+}
+
+jref NPN_GetJavaPeer(NPP instance)
+{
+ jref rv;
+ rv = NPNFuncs.getJavaPeer(instance);
+ return rv;
+}
+
+NPError NPN_GetValue(NPP instance, NPNVariable variable, void *value)
+{
+ NPError rv = NPNFuncs.getvalue(instance, variable, value);
+ return rv;
+}
+
+NPError NPN_SetValue(NPP instance, NPPVariable variable, void *value)
+{
+ NPError rv = NPNFuncs.setvalue(instance, variable, value);
+ return rv;
+}
+
+void NPN_InvalidateRect(NPP instance, NPRect * invalidRect)
+{
+ NPNFuncs.invalidaterect(instance, invalidRect);
+}
+
+void NPN_InvalidateRegion(NPP instance, NPRegion invalidRegion)
+{
+ NPNFuncs.invalidateregion(instance, invalidRegion);
+}
+
+void NPN_ForceRedraw(NPP instance)
+{
+ NPNFuncs.forceredraw(instance);
+}
+
+NPIdentifier NPN_GetStringIdentifier(const NPUTF8 * name)
+{
+ if (!NPNFuncs.getstringidentifier)
+ return 0;
+
+ return NPNFuncs.getstringidentifier(name);
+}
+
+void NPN_GetStringIdentifiers(const NPUTF8 ** names, uint32_t nameCount, NPIdentifier * identifiers)
+{
+ return NPNFuncs.getstringidentifiers(names, nameCount, identifiers);
+}
+
+NPIdentifier NPN_GetStringIdentifier(int32_t intid)
+{
+ return NPNFuncs.getintidentifier(intid);
+}
+
+bool NPN_IdentifierIsString(NPIdentifier identifier)
+{
+ return NPNFuncs.identifierisstring(identifier);
+}
+
+NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier)
+{
+ return NPNFuncs.utf8fromidentifier(identifier);
+}
+
+int32_t NPN_IntFromIdentifier(NPIdentifier identifier)
+{
+ return NPNFuncs.intfromidentifier(identifier);
+}
+
+NPObject *NPN_CreateObject(NPP npp, NPClass * aClass)
+{
+ return NPNFuncs.createobject(npp, aClass);
+}
+
+NPObject *NPN_RetainObject(NPObject * obj)
+{
+ return NPNFuncs.retainobject(obj);
+}
+
+void NPN_ReleaseObject(NPObject * obj)
+{
+ return NPNFuncs.releaseobject(obj);
+}
+
+bool NPN_Invoke(NPP npp, NPObject * obj, NPIdentifier methodName,
+ const NPVariant * args, uint32_t argCount, NPVariant * result)
+{
+ return NPNFuncs.invoke(npp, obj, methodName, args, argCount, result);
+}
+
+bool NPN_InvokeDefault(NPP npp, NPObject * obj, const NPVariant * args,
+ uint32_t argCount, NPVariant * result)
+{
+ return NPNFuncs.invokeDefault(npp, obj, args, argCount, result);
+}
+
+bool NPN_Evaluate(NPP npp, NPObject * obj, NPString * script, NPVariant * result)
+{
+ return NPNFuncs.evaluate(npp, obj, script, result);
+}
+
+bool NPN_GetProperty(NPP npp, NPObject * obj, NPIdentifier propertyName, NPVariant * result)
+{
+ return NPNFuncs.getproperty(npp, obj, propertyName, result);
+}
+
+bool NPN_SetProperty(NPP npp, NPObject * obj, NPIdentifier propertyName, const NPVariant * value)
+{
+ return NPNFuncs.setproperty(npp, obj, propertyName, value);
+}
+
+bool NPN_RemoveProperty(NPP npp, NPObject * obj, NPIdentifier propertyName)
+{
+ return NPNFuncs.removeproperty(npp, obj, propertyName);
+}
+
+bool NPN_HasProperty(NPP npp, NPObject * obj, NPIdentifier propertyName)
+{
+ return NPNFuncs.hasproperty(npp, obj, propertyName);
+}
+
+bool NPN_HasMethod(NPP npp, NPObject * obj, NPIdentifier methodName)
+{
+ return NPNFuncs.hasmethod(npp, obj, methodName);
+}
+
+void NPN_ReleaseVariantValue(NPVariant * variant)
+{
+ NPNFuncs.releasevariantvalue(variant);
+}
+
+void NPN_SetException(NPObject * obj, const NPUTF8 * message)
+{
+ NPNFuncs.setexception(obj, message);
+}
diff --git a/browser-plugin/npp_gate.cpp b/browser-plugin/npp_gate.cpp
new file mode 100644
index 0000000..6c7023c
--- /dev/null
+++ b/browser-plugin/npp_gate.cpp
@@ -0,0 +1,282 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: NPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Netscape 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/NPL/
+ *
+ * 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 NPL, 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 NPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+////////////////////////////////////////////////////////////
+//
+// Implementation of plugin entry points (NPP_*)
+// most are just empty stubs for this particular plugin
+//
+#include "plugin.h"
+#include "plugin_types.h"
+#include "plugin_setup.h"
+
+char *NPP_GetMIMEDescription(void)
+{
+ return GetMIMEDescription();
+}
+
+
+NPError NPP_Initialize(void)
+{
+ return NPERR_NO_ERROR;
+}
+
+void NPP_Shutdown(void)
+{
+}
+
+// here the plugin creates an instance of our CPlugin object which
+// will be associated with this newly created plugin instance and
+// will do all the neccessary job
+NPError NPP_New(NPMIMEType pluginType,
+ NPP instance,
+ uint16 mode, int16 argc, char *argn[], char *argv[], NPSavedData * saved)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ NPError rv = NPERR_NO_ERROR;
+
+ g_debug ("NPP_New instance");
+ CPlugin *pPlugin = new CPlugin(instance);
+ if (pPlugin == NULL)
+ return NPERR_OUT_OF_MEMORY_ERROR;
+
+ instance->pdata = (void *) pPlugin;
+ pPlugin->mode = mode;
+ pPlugin->mimetype = g_strdup(pluginType);
+ pPlugin->mInstance = instance;
+ new_instance(pPlugin, argc, argn, argv);
+ return rv;
+}
+
+// here is the place to clean up and destroy the CPlugin object
+NPError NPP_Destroy(NPP instance, NPSavedData ** save)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ NPError rv = NPERR_NO_ERROR;
+
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+ if (pPlugin != NULL) {
+ pPlugin->shut();
+ delete pPlugin;
+ }
+ return rv;
+}
+
+// during this call we know when the plugin window is ready or
+// is about to be destroyed so we can do some gui specific
+// initialization and shutdown
+NPError NPP_SetWindow(NPP instance, NPWindow * pNPWindow)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ NPError rv = NPERR_NO_ERROR;
+
+ if (pNPWindow == NULL)
+ return NPERR_GENERIC_ERROR;
+
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+
+ if (pPlugin == NULL)
+ return NPERR_GENERIC_ERROR;
+
+ // window just created
+ if (!pPlugin->isInitialized() && (pNPWindow->window != NULL)) {
+ if (!pPlugin->init(pNPWindow)) {
+ delete pPlugin;
+ pPlugin = NULL;
+ return NPERR_MODULE_LOAD_FAILED_ERROR;
+ }
+ }
+ // window goes away
+ if ((pNPWindow->window == NULL) && pPlugin->isInitialized())
+ return NPERR_NO_ERROR;
+
+ // window resized
+ if (pPlugin->isInitialized() && (pNPWindow->window != NULL)) {
+ printf("Window resized\n");
+ pPlugin->SetWindow(pNPWindow);
+ return NPERR_NO_ERROR;
+ }
+ // this should not happen, nothing to do
+ if ((pNPWindow->window == NULL) && !pPlugin->isInitialized())
+ return NPERR_NO_ERROR;
+
+ return rv;
+}
+
+// ==============================
+// ! Scriptability related code !
+// ==============================
+//
+// here the plugin is asked by Mozilla to tell if it is scriptable
+// we should return a valid interface id and a pointer to
+// nsScriptablePeer interface which we should have implemented
+// and which should be defined in the corressponding *.xpt file
+// in the bin/components folder
+NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
+{
+ NPError rv = NPERR_NO_ERROR;
+
+ if (variable == NPPVpluginScriptableNPObject) {
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+ CPlugin *plugin = (CPlugin *) instance->pdata;
+ if (plugin == NULL)
+ return NPERR_GENERIC_ERROR;
+ } else {
+ rv = PluginGetValue(variable, value);
+ }
+
+ return rv;
+}
+
+NPError NPP_NewStream(NPP instance,
+ NPMIMEType type, NPStream * stream, NPBool seekable, uint16 * stype)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ NPError rv = NPERR_NO_ERROR;
+
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+
+ if (pPlugin == NULL)
+ return NPERR_GENERIC_ERROR;
+
+ pPlugin->NewStream(type, stream, seekable, stype);
+
+ return rv;
+}
+
+int32 NPP_WriteReady(NPP instance, NPStream * stream)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ int32 rv = 0x0fffffff;
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+
+ if (pPlugin == NULL)
+ return NPERR_GENERIC_ERROR;
+
+ //rv = pPlugin->WriteReady(stream);
+
+ return rv;
+}
+
+int32 NPP_Write(NPP instance, NPStream * stream, int32 offset, int32 len, void *buffer)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ int32 rv = len;
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+
+ if (pPlugin == NULL)
+ return NPERR_GENERIC_ERROR;
+
+ //rv = pPlugin->Write(stream, offset, len, buffer);
+ return rv;
+}
+
+NPError NPP_DestroyStream(NPP instance, NPStream * stream, NPError reason)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ NPError rv = NPERR_NO_ERROR;
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+
+ if (pPlugin == NULL)
+ return NPERR_GENERIC_ERROR;
+
+ pPlugin->DestroyStream(stream, reason);
+ return rv;
+}
+
+void NPP_StreamAsFile(NPP instance, NPStream * stream, const char *fname)
+{
+ if (instance == NULL)
+ return;
+}
+
+void NPP_Print(NPP instance, NPPrint * printInfo)
+{
+ if (instance == NULL)
+ return;
+}
+
+void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData)
+{
+ if (instance == NULL)
+ return;
+
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+
+ if (pPlugin == NULL)
+ return;
+
+ //pPlugin->URLNotify(url, reason, notifyData);
+
+}
+
+NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
+{
+ if (instance == NULL)
+ return NPERR_INVALID_INSTANCE_ERROR;
+
+ NPError rv = NPERR_NO_ERROR;
+ return rv;
+}
+
+int16 NPP_HandleEvent(NPP instance, void *event)
+{
+ if (instance == NULL)
+ return 0;
+
+ int16 rv = 0;
+ CPlugin *pPlugin = (CPlugin *) instance->pdata;
+ if (pPlugin)
+ //rv = pPlugin->handleEvent(event);
+
+ return rv;
+}
diff --git a/browser-plugin/npruntime.h b/browser-plugin/npruntime.h
deleted file mode 100644
index 5725b72..0000000
--- a/browser-plugin/npruntime.h
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright (C) 2004, Apple Computer, Inc. and The Mozilla Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the names of Apple Computer, Inc. ("Apple") or The Mozilla
- * Foundation ("Mozilla") nor the names of their contributors may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE, MOZILLA AND THEIR CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, MOZILLA OR
- * THEIR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Revision 1 (March 4, 2004):
- * Initial proposal.
- *
- * Revision 2 (March 10, 2004):
- * All calls into script were made asynchronous. Results are
- * provided via the NPScriptResultFunctionPtr callback.
- *
- * Revision 3 (March 10, 2004):
- * Corrected comments to not refer to class retain/release FunctionPtrs.
- *
- * Revision 4 (March 11, 2004):
- * Added additional convenience NPN_SetExceptionWithUTF8().
- * Changed NPHasPropertyFunctionPtr and NPHasMethodFunctionPtr to take NPClass
- * pointers instead of NPObject pointers.
- * Added NPIsValidIdentifier().
- *
- * Revision 5 (March 17, 2004):
- * Added context parameter to result callbacks from ScriptObject functions.
- *
- * Revision 6 (March 29, 2004):
- * Renamed functions implemented by user agent to NPN_*. Removed _ from
- * type names.
- * Renamed "JavaScript" types to "Script".
- *
- * Revision 7 (April 21, 2004):
- * NPIdentifier becomes a void*, was int32_t
- * Remove NP_IsValidIdentifier, renamed NP_IdentifierFromUTF8 to NP_GetIdentifier
- * Added NPVariant and modified functions to use this new type.
- *
- * Revision 8 (July 9, 2004):
- * Updated to joint Apple-Mozilla license.
- *
- * Revision 9 (August 12, 2004):
- * Changed NPVariantType enum values to form PVariantType_XXX
- * Added NPP arguments to NPObject functions.
- * Replaced NPVariant functions with macros.
- */
-#ifndef _NP_RUNTIME_H_
-#define _NP_RUNTIME_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-#include "npapi.h"
-
-/*
- This API is used to facilitate binding code written in C to script
- objects. The API in this header does not assume the presence of a
- user agent. That is, it can be used to bind C code to scripting
- environments outside of the context of a user agent.
-
- However, the normal use of the this API is in the context of a
- scripting environment running in a browser or other user agent.
- In particular it is used to support the extended Netscape
- script-ability API for plugins (NP-SAP). NP-SAP is an extension
- of the Netscape plugin API. As such we have adopted the use of
- the "NP" prefix for this API.
-
- The following NP{N|P}Variables were added to the Netscape plugin
- API (in npapi.h):
-
- NPNVWindowNPObject
- NPNVPluginElementNPObject
- NPPVpluginScriptableNPObject
-
- These variables are exposed through NPN_GetValue() and
- NPP_GetValue() (respectively) and are used to establish the
- initial binding between the user agent and native code. The DOM
- objects in the user agent can be examined and manipulated using
- the NPN_ functions that operate on NPObjects described in this
- header.
-
- To the extent possible the assumptions about the scripting
- language used by the scripting environment have been minimized.
-*/
-
-
-/*
- Objects (non-primitive data) passed between 'C' and script is
- always wrapped in an NPObject. The 'interface' of an NPObject is
- described by an NPClass.
-*/
-typedef struct NPObject NPObject;
-typedef struct NPClass NPClass;
-
-typedef char NPUTF8;
-typedef struct _NPString {
- const NPUTF8 *UTF8Characters;
- uint32_t UTF8Length;
-} NPString;
-
-typedef enum {
- NPVariantType_Void,
- NPVariantType_Null,
- NPVariantType_Bool,
- NPVariantType_Int32,
- NPVariantType_Double,
- NPVariantType_String,
- NPVariantType_Object
-} NPVariantType;
-
-typedef struct _NPVariant {
- NPVariantType type;
- union {
- bool boolValue;
- int32_t intValue;
- double doubleValue;
- NPString stringValue;
- NPObject *objectValue;
- } value;
-} NPVariant;
-
-/*
- NPN_ReleaseVariantValue is called on all 'out' parameters references.
- Specifically it is called on variants that are resultant out parameters
- in NPGetPropertyFunctionPtr and NPInvokeFunctionPtr. Resultant variants
- from these two functions should be initialized using the
- NPN_InitializeVariantXXX() functions.
-
- After calling NPReleaseVariantValue, the type of the variant will
- be set to NPVariantUndefinedType.
-*/
-void NPN_ReleaseVariantValue (NPVariant *variant);
-
-#define NPVARIANT_IS_VOID(_v) ((_v).type == NPVariantType_Void)
-#define NPVARIANT_IS_NULL(_v) ((_v).type == NPVariantType_Null)
-#define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool)
-#define NPVARIANT_IS_INT32(_v) ((_v).type == NPVariantType_Int32)
-#define NPVARIANT_IS_DOUBLE(_v) ((_v).type == NPVariantType_Double)
-#define NPVARIANT_IS_STRING(_v) ((_v).type == NPVariantType_String)
-#define NPVARIANT_IS_OBJECT(_v) ((_v).type == NPVariantType_Object)
-
-#define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue)
-#define NPVARIANT_TO_INT32(_v) ((_v).value.intValue)
-#define NPVARIANT_TO_DOUBLE(_v) ((_v).value.doubleValue)
-#define NPVARIANT_TO_STRING(_v) ((_v).value.stringValue)
-#define NPVARIANT_TO_OBJECT(_v) ((_v).value.objectValue)
-
-#define NP_BEGIN_MACRO do {
-#define NP_END_MACRO } while (0)
-
-#define VOID_TO_NPVARIANT(_v) NP_BEGIN_MACRO (_v).type = NPVariantType_Void; (_v).value.objectValue = NULL; NP_END_MACRO
-#define NULL_TO_NPVARIANT(_v) NP_BEGIN_MACRO (_v).type = NPVariantType_Null; (_v).value.objectValue = NULL; NP_END_MACRO
-#define BOOLEAN_TO_NPVARIANT(_val, _v) NP_BEGIN_MACRO (_v).type = NPVariantType_Bool; (_v).value.boolValue = !!(_val); NP_END_MACRO
-#define INT32_TO_NPVARIANT(_val, _v) NP_BEGIN_MACRO (_v).type = NPVariantType_Int32; (_v).value.intValue = _val; NP_END_MACRO
-#define DOUBLE_TO_NPVARIANT(_val, _v) NP_BEGIN_MACRO (_v).type = NPVariantType_Double; (_v).value.doubleValue = _val; NP_END_MACRO
-#define STRINGZ_TO_NPVARIANT(_val, _v) NP_BEGIN_MACRO (_v).type = NPVariantType_String; NPString str = { _val, strlen(_val) }; (_v).value.stringValue = str; NP_END_MACRO
-#define STRINGN_TO_NPVARIANT(_val, _len, _v) NP_BEGIN_MACRO (_v).type = NPVariantType_String; NPString str = { _val, _len }; (_v).value.stringValue = str; NP_END_MACRO
-#define OBJECT_TO_NPVARIANT(_val, _v) NP_BEGIN_MACRO (_v).type = NPVariantType_Object; (_v).value.objectValue = _val; NP_END_MACRO
-
-/*
- Type mappings (JavaScript types have been used for illustration
- purposes):
-
- JavaScript to C (NPVariant with type:)
- undefined NPVariantType_Void
- null NPVariantType_Null
- Boolean NPVariantType_Bool
- Number NPVariantType_Double or NPVariantType_Int32
- String NPVariantType_String
- Object NPVariantType_Object
-
- C (NPVariant with type:) to JavaScript
- NPVariantType_Void undefined
- NPVariantType_Null null
- NPVariantType_Bool Boolean
- NPVariantType_Int32 Number
- NPVariantType_Double Number
- NPVariantType_String String
- NPVariantType_Object Object
-*/
-
-typedef void *NPIdentifier;
-
-/*
- NPObjects have methods and properties. Methods and properties are
- identified with NPIdentifiers. These identifiers may be reflected
- in script. NPIdentifiers can be either strings or integers, IOW,
- methods and properties can be identified by either strings or
- integers (i.e. foo["bar"] vs foo[1]). NPIdentifiers can be
- compared using ==. In case of any errors, the requested
- NPIdentifier(s) will be NULL.
-*/
-NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name);
-void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t nameCount, NPIdentifier *identifiers);
-NPIdentifier NPN_GetIntIdentifier(int32_t intid);
-bool NPN_IdentifierIsString(NPIdentifier identifier);
-
-/*
- The NPUTF8 returned from NPN_UTF8FromIdentifier SHOULD be freed.
-*/
-NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier);
-
-/*
- Get the integer represented by identifier. If identifier is not an
- integer identifier, the behaviour is undefined.
-*/
-int32_t NPN_IntFromIdentifier(NPIdentifier identifier);
-
-/*
- NPObject behavior is implemented using the following set of
- callback functions.
-
- The NPVariant *result argument of these functions (where
- applicable) should be released using NPN_ReleaseVariantValue().
-*/
-typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass);
-typedef void (*NPDeallocateFunctionPtr)(NPObject *obj);
-typedef void (*NPInvalidateFunctionPtr)(NPObject *obj);
-typedef bool (*NPHasMethodFunctionPtr)(NPObject *obj, NPIdentifier name);
-typedef bool (*NPInvokeFunctionPtr)(NPObject *obj, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result);
-typedef bool (*NPInvokeDefaultFunctionPtr)(NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result);
-typedef bool (*NPHasPropertyFunctionPtr)(NPObject *obj, NPIdentifier name);
-typedef bool (*NPGetPropertyFunctionPtr)(NPObject *obj, NPIdentifier name, NPVariant *result);
-typedef bool (*NPSetPropertyFunctionPtr)(NPObject *obj, NPIdentifier name, const NPVariant *value);
-typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj, NPIdentifier name);
-typedef bool (*NPEnumerationFunctionPtr)(NPObject *npobj, NPIdentifier **value, uint32_t *count);
-
-/*
- NPObjects returned by create have a reference count of one. It is the caller's responsibility
- to release the returned object.
-
- NPInvokeFunctionPtr function may return false to indicate a the method could not be invoked.
-
- NPGetPropertyFunctionPtr and NPSetPropertyFunctionPtr may return false to indicate a property doesn't
- exist.
-
- NPInvalidateFunctionPtr is called by the scripting environment when the native code is
- shutdown. Any attempt to message a NPObject instance after the invalidate
- callback has been called will result in undefined behavior, even if the
- native code is still retaining those NPObject instances.
- (The runtime will typically return immediately, with 0 or NULL, from an attempt to
- dispatch to a NPObject, but this behavior should not be depended upon.)
-
- The NPEnumerationFunctionPtr function may pass an array of
- NPIdentifiers back to the caller. The callee allocs the memory of
- the array using NPN_MemAlloc(), and it's the caller's responsibility
- to release it using NPN_MemFree().
-*/
-struct NPClass
-{
- uint32_t structVersion;
- NPAllocateFunctionPtr allocate;
- NPDeallocateFunctionPtr deallocate;
- NPInvalidateFunctionPtr invalidate;
- NPHasMethodFunctionPtr hasMethod;
- NPInvokeFunctionPtr invoke;
- NPInvokeDefaultFunctionPtr invokeDefault;
- NPHasPropertyFunctionPtr hasProperty;
- NPGetPropertyFunctionPtr getProperty;
- NPSetPropertyFunctionPtr setProperty;
- NPRemovePropertyFunctionPtr removeProperty;
- NPEnumerationFunctionPtr enumerate;
-};
-
-#define NP_CLASS_STRUCT_VERSION 2
-#define NP_CLASS_STRUCT_VERSION_ENUM 2
-#define NP_CLASS_STRUCT_VERSION_HAS_ENUM(npclass) \
- ((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_ENUM)
-
-struct NPObject {
- NPClass *_class;
- uint32_t referenceCount;
- // Additional space may be allocated here by types of NPObjects
-};
-
-/*
- If the class has an allocate function, NPN_CreateObject invokes that function,
- otherwise a NPObject is allocated and returned. If a class has an allocate
- function it is the responsibility of that implementation to set the initial retain
- count to 1.
-*/
-NPObject *NPN_CreateObject(NPP npp, NPClass *aClass);
-
-/*
- Increment the NPObject's reference count.
-*/
-NPObject *NPN_RetainObject (NPObject *obj);
-
-/*
- Decremented the NPObject's reference count. If the reference
- count goes to zero, the class's destroy function is invoke if
- specified, otherwise the object is freed directly.
-*/
-void NPN_ReleaseObject (NPObject *obj);
-
-/*
- Functions to access script objects represented by NPObject.
-
- Calls to script objects are synchronous. If a function returns a
- value, it will be supplied via the result NPVariant
- argument. Successful calls will return true, false will be
- returned in case of an error.
-
- Calls made from plugin code to script must be made from the thread
- on which the plugin was initialized.
-*/
-bool NPN_Invoke(NPP npp, NPObject *npobj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result);
-bool NPN_InvokeDefault(NPP npp, NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result);
-bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script, NPVariant *result);
-bool NPN_GetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName, NPVariant *result);
-bool NPN_SetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName, const NPVariant *value);
-bool NPN_RemoveProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
-bool NPN_HasProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
-bool NPN_HasMethod(NPP npp, NPObject *npobj, NPIdentifier methodName);
-bool NPN_Enumerate(NPP npp, NPObject *npobj, NPIdentifier **identifier, uint32_t *count);
-bool NPN_Construct(NPP npp, NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result);
-
-/*
- NPN_SetException may be called to trigger a script exception upon return
- from entry points into NPObjects.
-*/
-void NPN_SetException (NPObject *obj, const NPUTF8 *message);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/browser-plugin/npupp.h b/browser-plugin/npupp.h
index 94712da..a8ccaaf 100644
--- a/browser-plugin/npupp.h
+++ b/browser-plugin/npupp.h
@@ -59,11 +59,7 @@
#include "npruntime.h"
-#ifdef OJI
#include "jri.h"
-#else
-typedef void* JRIGlobalRef;
-#endif
/******************************************************************************************
@@ -76,105 +72,110 @@ typedef void* JRIGlobalRef;
/* NPP_Initialize */
-typedef void (* NP_LOADDS NPP_InitializeUPP)(void);
+typedef void (*NP_LOADDS NPP_InitializeUPP) (void);
#define NewNPP_InitializeProc(FUNC) \
((NPP_InitializeUPP) (FUNC))
#define CallNPP_InitializeProc(FUNC) \
(*(FUNC))()
/* NPP_Shutdown */
-typedef void (* NP_LOADDS NPP_ShutdownUPP)(void);
+typedef void (*NP_LOADDS NPP_ShutdownUPP) (void);
#define NewNPP_ShutdownProc(FUNC) \
((NPP_ShutdownUPP) (FUNC))
#define CallNPP_ShutdownProc(FUNC) \
(*(FUNC))()
/* NPP_New */
-typedef NPError (* NP_LOADDS NPP_NewUPP)(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
+typedef NPError(*NP_LOADDS NPP_NewUPP) (NPMIMEType pluginType, NPP instance, uint16 mode,
+ int16 argc, char *argn[], char *argv[],
+ NPSavedData * saved);
#define NewNPP_NewProc(FUNC) \
((NPP_NewUPP) (FUNC))
#define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
/* NPP_Destroy */
-typedef NPError (* NP_LOADDS NPP_DestroyUPP)(NPP instance, NPSavedData** save);
+typedef NPError(*NP_LOADDS NPP_DestroyUPP) (NPP instance, NPSavedData ** save);
#define NewNPP_DestroyProc(FUNC) \
((NPP_DestroyUPP) (FUNC))
#define CallNPP_DestroyProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
/* NPP_SetWindow */
-typedef NPError (* NP_LOADDS NPP_SetWindowUPP)(NPP instance, NPWindow* window);
+typedef NPError(*NP_LOADDS NPP_SetWindowUPP) (NPP instance, NPWindow * window);
#define NewNPP_SetWindowProc(FUNC) \
((NPP_SetWindowUPP) (FUNC))
#define CallNPP_SetWindowProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
/* NPP_NewStream */
-typedef NPError (* NP_LOADDS NPP_NewStreamUPP)(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
+typedef NPError(*NP_LOADDS NPP_NewStreamUPP) (NPP instance, NPMIMEType type, NPStream * stream,
+ NPBool seekable, uint16 * stype);
#define NewNPP_NewStreamProc(FUNC) \
((NPP_NewStreamUPP) (FUNC))
#define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
/* NPP_DestroyStream */
-typedef NPError (* NP_LOADDS NPP_DestroyStreamUPP)(NPP instance, NPStream* stream, NPReason reason);
+typedef NPError(*NP_LOADDS NPP_DestroyStreamUPP) (NPP instance, NPStream * stream, NPReason reason);
#define NewNPP_DestroyStreamProc(FUNC) \
((NPP_DestroyStreamUPP) (FUNC))
#define CallNPP_DestroyStreamProc(FUNC, NPParg, NPStreamPtr, NPReasonArg) \
(*(FUNC))((NPParg), (NPStreamPtr), (NPReasonArg))
/* NPP_WriteReady */
-typedef int32 (* NP_LOADDS NPP_WriteReadyUPP)(NPP instance, NPStream* stream);
+typedef int32(*NP_LOADDS NPP_WriteReadyUPP) (NPP instance, NPStream * stream);
#define NewNPP_WriteReadyProc(FUNC) \
((NPP_WriteReadyUPP) (FUNC))
#define CallNPP_WriteReadyProc(FUNC, NPParg, NPStreamPtr) \
(*(FUNC))((NPParg), (NPStreamPtr))
/* NPP_Write */
-typedef int32 (* NP_LOADDS NPP_WriteUPP)(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
+typedef int32(*NP_LOADDS NPP_WriteUPP) (NPP instance, NPStream * stream, int32 offset, int32 len,
+ void *buffer);
#define NewNPP_WriteProc(FUNC) \
((NPP_WriteUPP) (FUNC))
#define CallNPP_WriteProc(FUNC, NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr) \
(*(FUNC))((NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr))
/* NPP_StreamAsFile */
-typedef void (* NP_LOADDS NPP_StreamAsFileUPP)(NPP instance, NPStream* stream, const char* fname);
+typedef void (*NP_LOADDS NPP_StreamAsFileUPP) (NPP instance, NPStream * stream, const char *fname);
#define NewNPP_StreamAsFileProc(FUNC) \
((NPP_StreamAsFileUPP) (FUNC))
#define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPP_Print */
-typedef void (* NP_LOADDS NPP_PrintUPP)(NPP instance, NPPrint* platformPrint);
+typedef void (*NP_LOADDS NPP_PrintUPP) (NPP instance, NPPrint * platformPrint);
#define NewNPP_PrintProc(FUNC) \
((NPP_PrintUPP) (FUNC))
#define CallNPP_PrintProc(FUNC, NPParg, NPPrintArg) \
(*(FUNC))((NPParg), (NPPrintArg))
/* NPP_HandleEvent */
-typedef int16 (* NP_LOADDS NPP_HandleEventUPP)(NPP instance, void* event);
+typedef int16(*NP_LOADDS NPP_HandleEventUPP) (NPP instance, void *event);
#define NewNPP_HandleEventProc(FUNC) \
((NPP_HandleEventUPP) (FUNC))
#define CallNPP_HandleEventProc(FUNC, NPParg, voidPtr) \
(*(FUNC))((NPParg), (voidPtr))
/* NPP_URLNotify */
-typedef void (* NP_LOADDS NPP_URLNotifyUPP)(NPP instance, const char* url, NPReason reason, void* notifyData);
+typedef void (*NP_LOADDS NPP_URLNotifyUPP) (NPP instance, const char *url, NPReason reason,
+ void *notifyData);
#define NewNPP_URLNotifyProc(FUNC) \
((NPP_URLNotifyUPP) (FUNC))
#define CallNPP_URLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
/* NPP_GetValue */
-typedef NPError (* NP_LOADDS NPP_GetValueUPP)(NPP instance, NPPVariable variable, void *ret_alue);
+typedef NPError(*NP_LOADDS NPP_GetValueUPP) (NPP instance, NPPVariable variable, void *ret_alue);
#define NewNPP_GetValueProc(FUNC) \
((NPP_GetValueUPP) (FUNC))
#define CallNPP_GetValueProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPP_SetValue */
-typedef NPError (* NP_LOADDS NPP_SetValueUPP)(NPP instance, NPNVariable variable, void *ret_alue);
+typedef NPError(*NP_LOADDS NPP_SetValueUPP) (NPP instance, NPNVariable variable, void *ret_alue);
#define NewNPP_SetValueProc(FUNC) \
((NPP_SetValueUPP) (FUNC))
#define CallNPP_SetValueProc(FUNC, ARG1, ARG2, ARG3) \
@@ -186,317 +187,331 @@ typedef NPError (* NP_LOADDS NPP_SetValueUPP)(NPP instance, NPNVariable variable
/* NPN_GetValue */
-typedef NPError (* NP_LOADDS NPN_GetValueUPP)(NPP instance, NPNVariable variable, void *ret_alue);
+typedef NPError(*NP_LOADDS NPN_GetValueUPP) (NPP instance, NPNVariable variable, void *ret_alue);
#define NewNPN_GetValueProc(FUNC) \
((NPN_GetValueUPP) (FUNC))
#define CallNPN_GetValueProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_SetValue */
-typedef NPError (* NP_LOADDS NPN_SetValueUPP)(NPP instance, NPPVariable variable, void *ret_alue);
+typedef NPError(*NP_LOADDS NPN_SetValueUPP) (NPP instance, NPPVariable variable, void *ret_alue);
#define NewNPN_SetValueProc(FUNC) \
((NPN_SetValueUPP) (FUNC))
#define CallNPN_SetValueProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_GetUrlNotify */
-typedef NPError (* NP_LOADDS NPN_GetURLNotifyUPP)(NPP instance, const char* url, const char* window, void* notifyData);
+typedef NPError(*NP_LOADDS NPN_GetURLNotifyUPP) (NPP instance, const char *url, const char *window,
+ void *notifyData);
#define NewNPN_GetURLNotifyProc(FUNC) \
((NPN_GetURLNotifyUPP) (FUNC))
#define CallNPN_GetURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
/* NPN_PostUrlNotify */
-typedef NPError (* NP_LOADDS NPN_PostURLNotifyUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file, void* notifyData);
+typedef NPError(*NP_LOADDS NPN_PostURLNotifyUPP) (NPP instance, const char *url, const char *window,
+ uint32 len, const char *buf, NPBool file,
+ void *notifyData);
#define NewNPN_PostURLNotifyProc(FUNC) \
((NPN_PostURLNotifyUPP) (FUNC))
#define CallNPN_PostURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
/* NPN_GetUrl */
-typedef NPError (* NP_LOADDS NPN_GetURLUPP)(NPP instance, const char* url, const char* window);
+typedef NPError(*NP_LOADDS NPN_GetURLUPP) (NPP instance, const char *url, const char *window);
#define NewNPN_GetURLProc(FUNC) \
((NPN_GetURLUPP) (FUNC))
#define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_PostUrl */
-typedef NPError (* NP_LOADDS NPN_PostURLUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file);
+typedef NPError(*NP_LOADDS NPN_PostURLUPP) (NPP instance, const char *url, const char *window,
+ uint32 len, const char *buf, NPBool file);
#define NewNPN_PostURLProc(FUNC) \
((NPN_PostURLUPP) (FUNC))
#define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
/* NPN_RequestRead */
-typedef NPError (* NP_LOADDS NPN_RequestReadUPP)(NPStream* stream, NPByteRange* rangeList);
+typedef NPError(*NP_LOADDS NPN_RequestReadUPP) (NPStream * stream, NPByteRange * rangeList);
#define NewNPN_RequestReadProc(FUNC) \
((NPN_RequestReadUPP) (FUNC))
#define CallNPN_RequestReadProc(FUNC, stream, range) \
(*(FUNC))((stream), (range))
/* NPN_NewStream */
-typedef NPError (* NP_LOADDS NPN_NewStreamUPP)(NPP instance, NPMIMEType type, const char* window, NPStream** stream);
+typedef NPError(*NP_LOADDS NPN_NewStreamUPP) (NPP instance, NPMIMEType type, const char *window,
+ NPStream ** stream);
#define NewNPN_NewStreamProc(FUNC) \
((NPN_NewStreamUPP) (FUNC))
#define CallNPN_NewStreamProc(FUNC, npp, type, window, stream) \
(*(FUNC))((npp), (type), (window), (stream))
/* NPN_Write */
-typedef int32 (* NP_LOADDS NPN_WriteUPP)(NPP instance, NPStream* stream, int32 len, void* buffer);
+typedef int32(*NP_LOADDS NPN_WriteUPP) (NPP instance, NPStream * stream, int32 len, void *buffer);
#define NewNPN_WriteProc(FUNC) \
((NPN_WriteUPP) (FUNC))
#define CallNPN_WriteProc(FUNC, npp, stream, len, buffer) \
(*(FUNC))((npp), (stream), (len), (buffer))
/* NPN_DestroyStream */
-typedef NPError (* NP_LOADDS NPN_DestroyStreamUPP)(NPP instance, NPStream* stream, NPReason reason);
+typedef NPError(*NP_LOADDS NPN_DestroyStreamUPP) (NPP instance, NPStream * stream, NPReason reason);
#define NewNPN_DestroyStreamProc(FUNC) \
((NPN_DestroyStreamUPP) (FUNC))
#define CallNPN_DestroyStreamProc(FUNC, npp, stream, reason) \
(*(FUNC))((npp), (stream), (reason))
/* NPN_Status */
-typedef void (* NP_LOADDS NPN_StatusUPP)(NPP instance, const char* message);
+typedef void (*NP_LOADDS NPN_StatusUPP) (NPP instance, const char *message);
#define NewNPN_StatusProc(FUNC) \
((NPN_StatusUPP) (FUNC))
#define CallNPN_StatusProc(FUNC, npp, msg) \
- (*(FUNC))((npp), (msg))
+ (*(FUNC))((npp), (msg))
/* NPN_UserAgent */
-typedef const char* (* NP_LOADDS NPN_UserAgentUPP)(NPP instance);
+typedef const char *(*NP_LOADDS NPN_UserAgentUPP) (NPP instance);
#define NewNPN_UserAgentProc(FUNC) \
((NPN_UserAgentUPP) (FUNC))
#define CallNPN_UserAgentProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_MemAlloc */
-typedef void* (* NP_LOADDS NPN_MemAllocUPP)(uint32 size);
+typedef void *(*NP_LOADDS NPN_MemAllocUPP) (uint32 size);
#define NewNPN_MemAllocProc(FUNC) \
((NPN_MemAllocUPP) (FUNC))
#define CallNPN_MemAllocProc(FUNC, ARG1) \
- (*(FUNC))((ARG1))
+ (*(FUNC))((ARG1))
/* NPN__MemFree */
-typedef void (* NP_LOADDS NPN_MemFreeUPP)(void* ptr);
+typedef void (*NP_LOADDS NPN_MemFreeUPP) (void *ptr);
#define NewNPN_MemFreeProc(FUNC) \
((NPN_MemFreeUPP) (FUNC))
#define CallNPN_MemFreeProc(FUNC, ARG1) \
- (*(FUNC))((ARG1))
+ (*(FUNC))((ARG1))
/* NPN_MemFlush */
-typedef uint32 (* NP_LOADDS NPN_MemFlushUPP)(uint32 size);
+typedef uint32(*NP_LOADDS NPN_MemFlushUPP) (uint32 size);
#define NewNPN_MemFlushProc(FUNC) \
((NPN_MemFlushUPP) (FUNC))
#define CallNPN_MemFlushProc(FUNC, ARG1) \
- (*(FUNC))((ARG1))
+ (*(FUNC))((ARG1))
/* NPN_ReloadPlugins */
-typedef void (* NP_LOADDS NPN_ReloadPluginsUPP)(NPBool reloadPages);
+typedef void (*NP_LOADDS NPN_ReloadPluginsUPP) (NPBool reloadPages);
#define NewNPN_ReloadPluginsProc(FUNC) \
((NPN_ReloadPluginsUPP) (FUNC))
#define CallNPN_ReloadPluginsProc(FUNC, ARG1) \
- (*(FUNC))((ARG1))
+ (*(FUNC))((ARG1))
/* NPN_GetJavaEnv */
-typedef JRIEnv* (* NP_LOADDS NPN_GetJavaEnvUPP)(void);
+typedef JRIEnv *(*NP_LOADDS NPN_GetJavaEnvUPP) (void);
#define NewNPN_GetJavaEnvProc(FUNC) \
((NPN_GetJavaEnvUPP) (FUNC))
#define CallNPN_GetJavaEnvProc(FUNC) \
- (*(FUNC))()
+ (*(FUNC))()
/* NPN_GetJavaPeer */
-typedef jref (* NP_LOADDS NPN_GetJavaPeerUPP)(NPP instance);
+typedef jref(*NP_LOADDS NPN_GetJavaPeerUPP) (NPP instance);
#define NewNPN_GetJavaPeerProc(FUNC) \
((NPN_GetJavaPeerUPP) (FUNC))
#define CallNPN_GetJavaPeerProc(FUNC, ARG1) \
- (*(FUNC))((ARG1))
+ (*(FUNC))((ARG1))
/* NPN_InvalidateRect */
-typedef void (* NP_LOADDS NPN_InvalidateRectUPP)(NPP instance, NPRect *rect);
+typedef void (*NP_LOADDS NPN_InvalidateRectUPP) (NPP instance, NPRect * rect);
#define NewNPN_InvalidateRectProc(FUNC) \
((NPN_InvalidateRectUPP) (FUNC))
#define CallNPN_InvalidateRectProc(FUNC, ARG1, ARG2) \
- (*(FUNC))((ARG1), (ARG2))
+ (*(FUNC))((ARG1), (ARG2))
/* NPN_InvalidateRegion */
-typedef void (* NP_LOADDS NPN_InvalidateRegionUPP)(NPP instance, NPRegion region);
+typedef void (*NP_LOADDS NPN_InvalidateRegionUPP) (NPP instance, NPRegion region);
#define NewNPN_InvalidateRegionProc(FUNC) \
((NPN_InvalidateRegionUPP) (FUNC))
#define CallNPN_InvalidateRegionProc(FUNC, ARG1, ARG2) \
- (*(FUNC))((ARG1), (ARG2))
+ (*(FUNC))((ARG1), (ARG2))
/* NPN_ForceRedraw */
-typedef void (* NP_LOADDS NPN_ForceRedrawUPP)(NPP instance);
+typedef void (*NP_LOADDS NPN_ForceRedrawUPP) (NPP instance);
#define NewNPN_ForceRedrawProc(FUNC) \
((NPN_ForceRedrawUPP) (FUNC))
#define CallNPN_ForceRedrawProc(FUNC, ARG1) \
- (*(FUNC))((ARG1))
+ (*(FUNC))((ARG1))
/* NPN_GetStringIdentifier */
-typedef NPIdentifier (* NP_LOADDS NPN_GetStringIdentifierUPP)(const NPUTF8* name);
+typedef NPIdentifier(*NP_LOADDS NPN_GetStringIdentifierUPP) (const NPUTF8 * name);
#define NewNPN_GetStringIdentifierProc(FUNC) \
((NPN_GetStringIdentifierUPP) (FUNC))
#define CallNPN_GetStringIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_GetStringIdentifiers */
-typedef void (* NP_LOADDS NPN_GetStringIdentifiersUPP)(const NPUTF8** names,
- int32_t nameCount,
- NPIdentifier* identifiers);
+typedef void (*NP_LOADDS NPN_GetStringIdentifiersUPP) (const NPUTF8 ** names,
+ int32_t nameCount,
+ NPIdentifier * identifiers);
#define NewNPN_GetStringIdentifiersProc(FUNC) \
((NPN_GetStringIdentifiersUPP) (FUNC))
#define CallNPN_GetStringIdentifiersProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_GetIntIdentifier */
-typedef NPIdentifier (* NP_LOADDS NPN_GetIntIdentifierUPP)(int32_t intid);
+typedef NPIdentifier(*NP_LOADDS NPN_GetIntIdentifierUPP) (int32_t intid);
#define NewNPN_GetIntIdentifierProc(FUNC) \
((NPN_GetIntIdentifierUPP) (FUNC))
#define CallNPN_GetIntIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_IdentifierIsString */
-typedef bool (* NP_LOADDS NPN_IdentifierIsStringUPP)(NPIdentifier identifier);
+typedef bool(*NP_LOADDS NPN_IdentifierIsStringUPP) (NPIdentifier identifier);
#define NewNPN_IdentifierIsStringProc(FUNC) \
((NPN_IdentifierIsStringUPP) (FUNC))
#define CallNPN_IdentifierIsStringProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_UTF8FromIdentifier */
-typedef NPUTF8* (* NP_LOADDS NPN_UTF8FromIdentifierUPP)(NPIdentifier identifier);
+typedef NPUTF8 *(*NP_LOADDS NPN_UTF8FromIdentifierUPP) (NPIdentifier identifier);
#define NewNPN_UTF8FromIdentifierProc(FUNC) \
((NPN_UTF8FromIdentifierUPP) (FUNC))
#define CallNPN_UTF8FromIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_IntFromIdentifier */
-typedef int32_t (* NP_LOADDS NPN_IntFromIdentifierUPP)(NPIdentifier identifier);
+typedef int32_t(*NP_LOADDS NPN_IntFromIdentifierUPP) (NPIdentifier identifier);
#define NewNPN_IntFromIdentifierProc(FUNC) \
((NPN_IntFromIdentifierUPP) (FUNC))
#define CallNPN_IntFromIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_CreateObject */
-typedef NPObject* (* NP_LOADDS NPN_CreateObjectUPP)(NPP npp, NPClass *aClass);
+typedef NPObject *(*NP_LOADDS NPN_CreateObjectUPP) (NPP npp, NPClass * aClass);
#define NewNPN_CreateObjectProc(FUNC) \
((NPN_CreateObjectUPP) (FUNC))
#define CallNPN_CreateObjectProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
/* NPN_RetainObject */
-typedef NPObject* (* NP_LOADDS NPN_RetainObjectUPP)(NPObject *obj);
+typedef NPObject *(*NP_LOADDS NPN_RetainObjectUPP) (NPObject * obj);
#define NewNPN_RetainObjectProc(FUNC) \
((NPN_RetainObjectUPP) (FUNC))
#define CallNPN_RetainObjectProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_ReleaseObject */
-typedef void (* NP_LOADDS NPN_ReleaseObjectUPP)(NPObject *obj);
+typedef void (*NP_LOADDS NPN_ReleaseObjectUPP) (NPObject * obj);
#define NewNPN_ReleaseObjectProc(FUNC) \
((NPN_ReleaseObjectUPP) (FUNC))
#define CallNPN_ReleaseObjectProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_Invoke */
-typedef bool (* NP_LOADDS NPN_InvokeUPP)(NPP npp, NPObject* obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result);
+typedef bool(*NP_LOADDS NPN_InvokeUPP) (NPP npp, NPObject * obj, NPIdentifier methodName,
+ const NPVariant * args, uint32_t argCount,
+ NPVariant * result);
#define NewNPN_InvokeProc(FUNC) \
((NPN_InvokeUPP) (FUNC))
#define CallNPN_InvokeProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
/* NPN_InvokeDefault */
-typedef bool (* NP_LOADDS NPN_InvokeDefaultUPP)(NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
+typedef bool(*NP_LOADDS NPN_InvokeDefaultUPP) (NPP npp, NPObject * obj, const NPVariant * args,
+ uint32_t argCount, NPVariant * result);
#define NewNPN_InvokeDefaultProc(FUNC) \
((NPN_InvokeDefaultUPP) (FUNC))
#define CallNPN_InvokeDefaultProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
/* NPN_Evaluate */
-typedef bool (* NP_LOADDS NPN_EvaluateUPP)(NPP npp, NPObject *obj, NPString *script, NPVariant *result);
+typedef bool(*NP_LOADDS NPN_EvaluateUPP) (NPP npp, NPObject * obj, NPString * script,
+ NPVariant * result);
#define NewNPN_EvaluateProc(FUNC) \
((NPN_EvaluateUPP) (FUNC))
#define CallNPN_EvaluateProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
/* NPN_GetProperty */
-typedef bool (* NP_LOADDS NPN_GetPropertyUPP)(NPP npp, NPObject *obj, NPIdentifier propertyName, NPVariant *result);
+typedef bool(*NP_LOADDS NPN_GetPropertyUPP) (NPP npp, NPObject * obj, NPIdentifier propertyName,
+ NPVariant * result);
#define NewNPN_GetPropertyProc(FUNC) \
((NPN_GetPropertyUPP) (FUNC))
#define CallNPN_GetPropertyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
/* NPN_SetProperty */
-typedef bool (* NP_LOADDS NPN_SetPropertyUPP)(NPP npp, NPObject *obj, NPIdentifier propertyName, const NPVariant *value);
+typedef bool(*NP_LOADDS NPN_SetPropertyUPP) (NPP npp, NPObject * obj, NPIdentifier propertyName,
+ const NPVariant * value);
#define NewNPN_SetPropertyProc(FUNC) \
((NPN_SetPropertyUPP) (FUNC))
#define CallNPN_SetPropertyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
/* NPN_RemoveProperty */
-typedef bool (* NP_LOADDS NPN_RemovePropertyUPP)(NPP npp, NPObject *obj, NPIdentifier propertyName);
+typedef bool(*NP_LOADDS NPN_RemovePropertyUPP) (NPP npp, NPObject * obj, NPIdentifier propertyName);
#define NewNPN_RemovePropertyProc(FUNC) \
((NPN_RemovePropertyUPP) (FUNC))
#define CallNPN_RemovePropertyProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_HasProperty */
-typedef bool (* NP_LOADDS NPN_HasPropertyUPP)(NPP npp, NPObject *obj, NPIdentifier propertyName);
+typedef bool(*NP_LOADDS NPN_HasPropertyUPP) (NPP npp, NPObject * obj, NPIdentifier propertyName);
#define NewNPN_HasPropertyProc(FUNC) \
((NPN_HasPropertyUPP) (FUNC))
#define CallNPN_HasPropertyProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_HasMethod */
-typedef bool (* NP_LOADDS NPN_HasMethodUPP)(NPP npp, NPObject *obj, NPIdentifier propertyName);
+typedef bool(*NP_LOADDS NPN_HasMethodUPP) (NPP npp, NPObject * obj, NPIdentifier propertyName);
#define NewNPN_HasMethodProc(FUNC) \
((NPN_HasMethodUPP) (FUNC))
#define CallNPN_HasMethodProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_ReleaseVariantValue */
-typedef void (* NP_LOADDS NPN_ReleaseVariantValueUPP)(NPVariant *variant);
+typedef void (*NP_LOADDS NPN_ReleaseVariantValueUPP) (NPVariant * variant);
#define NewNPN_ReleaseVariantValueProc(FUNC) \
((NPN_ReleaseVariantValueUPP) (FUNC))
#define CallNPN_ReleaseVariantValueProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_SetException */
-typedef void (* NP_LOADDS NPN_SetExceptionUPP)(NPObject *obj, const NPUTF8 *message);
+typedef void (*NP_LOADDS NPN_SetExceptionUPP) (NPObject * obj, const NPUTF8 * message);
#define NewNPN_SetExceptionProc(FUNC) \
((NPN_SetExceptionUPP) (FUNC))
#define CallNPN_SetExceptionProc(FUNC, ARG1, ARG2) \
- (*(FUNC))((ARG1), (ARG2))
+ (*(FUNC))((ARG1), (ARG2))
/* NPN_PushPopupsEnabledStateUPP */
-typedef bool (* NP_LOADDS NPN_PushPopupsEnabledStateUPP)(NPP npp, NPBool enabled);
+typedef bool(*NP_LOADDS NPN_PushPopupsEnabledStateUPP) (NPP npp, NPBool enabled);
#define NewNPN_PushPopupsEnabledStateProc(FUNC) \
((NPN_PushPopupsEnabledStateUPP) (FUNC))
#define CallNPN_PushPopupsEnabledStateProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
/* NPN_PopPopupsEnabledState */
-typedef bool (* NP_LOADDS NPN_PopPopupsEnabledStateUPP)(NPP npp);
+typedef bool(*NP_LOADDS NPN_PopPopupsEnabledStateUPP) (NPP npp);
#define NewNPN_PopPopupsEnabledStateProc(FUNC) \
((NPN_PopPopupsEnabledStateUPP) (FUNC))
#define CallNPN_PopPopupsEnabledStateProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
/* NPN_Enumerate */
-typedef bool (* NP_LOADDS NPN_EnumerateUPP)(NPP npp, NPObject *obj, NPIdentifier **identifier, uint32_t *count);
+typedef bool(*NP_LOADDS NPN_EnumerateUPP) (NPP npp, NPObject * obj, NPIdentifier ** identifier,
+ uint32_t * count);
#define NewNPN_EnumerateProc(FUNC) \
((NPN_EnumerateUPP) (FUNC))
#define CallNPN_EnumerateProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
/* NPN_PluginThreadAsyncCall */
-typedef void (* NP_LOADDS NPN_PluginThreadAsyncCallUPP)(NPP instance, void (*func)(void *), void *userData);
+typedef void (*NP_LOADDS NPN_PluginThreadAsyncCallUPP) (NPP instance, void (*func) (void *),
+ void *userData);
#define NewNPN_PluginThreadAsyncCallProc(FUNC) \
((NPN_PluginThreadAsyncCallUPP) (FUNC))
#define CallNPN_PluginThreadAsyncCallProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
/* NPN_Construct */
-typedef bool (* NP_LOADDS NPN_ConstructUPP)(NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
+typedef bool(*NP_LOADDS NPN_ConstructUPP) (NPP npp, NPObject * obj, const NPVariant * args,
+ uint32_t argCount, NPVariant * result);
#define NewNPN_ConstructProc(FUNC) \
((NPN_ConstructUPP) (FUNC))
#define CallNPN_ConstructProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
@@ -572,9 +587,9 @@ typedef struct _NPNetscapeFuncs {
NPN_SetExceptionUPP setexception;
NPN_PushPopupsEnabledStateUPP pushpopupsenabledstate;
NPN_PopPopupsEnabledStateUPP poppopupsenabledstate;
- NPN_EnumerateUPP enumerate;
- NPN_PluginThreadAsyncCallUPP pluginthreadasynccall;
- NPN_ConstructUPP construct;
+ // NPN_EnumerateUPP enumerate;
+ // NPN_PluginThreadAsyncCallUPP pluginthreadasynccall;
+ // NPN_ConstructUPP construct;
} NPNetscapeFuncs;
@@ -589,7 +604,8 @@ typedef struct _NPNetscapeFuncs {
* tables are passed in and the plugin fills in the NPPluginFuncs table
* and NPPShutdownUPP for Netscape's use.
*/
-typedef NPError (* NP_LOADDS NPP_MainEntryUPP)(NPNetscapeFuncs*, NPPluginFuncs*, NPP_ShutdownUPP*);
+typedef NPError(*NP_LOADDS NPP_MainEntryUPP) (NPNetscapeFuncs *, NPPluginFuncs *,
+ NPP_ShutdownUPP *);
#define NewNPP_MainEntryProc(FUNC) \
((NPP_MainEntryUPP) (FUNC))
#define CallNPP_MainEntryProc(FUNC, netscapeFunc, pluginFunc, shutdownUPP) \
@@ -604,35 +620,33 @@ typedef NPError (* NP_LOADDS NPP_MainEntryUPP)(NPNetscapeFuncs*, NPPluginFuncs*,
* in furture version -- use NP_GetMIMEDescription instead
*/
-enum
-{
- kBPSupportedMIMETypesStructVers_1 = 1
+enum {
+ kBPSupportedMIMETypesStructVers_1 = 1
};
-typedef struct _BPSupportedMIMETypes
-{
- SInt32 structVersion; /* struct version */
- Handle typeStrings; /* STR# formated handle, allocated by plug-in */
- Handle infoStrings; /* STR# formated handle, allocated by plug-in */
+typedef struct _BPSupportedMIMETypes {
+ SInt32 structVersion; /* struct version */
+ Handle typeStrings; /* STR# formated handle, allocated by plug-in */
+ Handle infoStrings; /* STR# formated handle, allocated by plug-in */
} BPSupportedMIMETypes;
-OSErr BP_GetSupportedMIMETypes(BPSupportedMIMETypes *mimeInfo, UInt32 flags);
+OSErr BP_GetSupportedMIMETypes(BPSupportedMIMETypes * mimeInfo, UInt32 flags);
/* NP_GetMIMEDescription */
#define NP_GETMIMEDESCRIPTION_NAME "NP_GetMIMEDescription"
-typedef const char* (* NP_LOADDS NP_GetMIMEDescriptionUPP)();
+typedef const char *(*NP_LOADDS NP_GetMIMEDescriptionUPP) ();
#define NewNP_GetMIMEDescEntryProc(FUNC) \
((NP_GetMIMEDescriptionUPP) (FUNC))
#define CallNP_GetMIMEDescEntryProc(FUNC) \
(*(FUNC))()
/* BP_GetSupportedMIMETypes */
-typedef OSErr (* NP_LOADDS BP_GetSupportedMIMETypesUPP)(BPSupportedMIMETypes*, UInt32);
+typedef OSErr(*NP_LOADDS BP_GetSupportedMIMETypesUPP) (BPSupportedMIMETypes *, UInt32);
#define NewBP_GetSupportedMIMETypesEntryProc(FUNC) \
((BP_GetSupportedMIMETypesUPP) (FUNC))
#define CallBP_GetMIMEDescEntryProc(FUNC, mimeInfo, flags) \
(*(FUNC))((mimeInfo), (flags))
-#endif /* XP_MACOSX */
+#endif /* XP_MACOSX */
#if defined(_WINDOWS)
#define OSCALL WINAPI
@@ -665,55 +679,49 @@ extern "C" {
/* plugin meta member functions */
#if defined(__OS2__)
-typedef struct _NPPluginData { /* Alternate OS2 Plugin interface */
- char *pMimeTypes;
- char *pFileExtents;
- char *pFileOpenTemplate;
- char *pProductName;
- char *pProductDescription;
- unsigned long dwProductVersionMS;
- unsigned long dwProductVersionLS;
-} NPPluginData;
+ typedef struct _NPPluginData { /* Alternate OS2 Plugin interface */
+ char *pMimeTypes;
+ char *pFileExtents;
+ char *pFileOpenTemplate;
+ char *pProductName;
+ char *pProductDescription;
+ unsigned long dwProductVersionMS;
+ unsigned long dwProductVersionLS;
+ } NPPluginData;
-NPError OSCALL NP_GetPluginData(NPPluginData * pPluginData);
+ NPError OSCALL NP_GetPluginData(NPPluginData * pPluginData);
#endif
-NPError OSCALL NP_GetEntryPoints(NPPluginFuncs* pFuncs);
+ NPError OSCALL NP_GetEntryPoints(NPPluginFuncs * pFuncs);
-NPError OSCALL NP_Initialize(NPNetscapeFuncs* pFuncs);
+ NPError OSCALL NP_Initialize(NPNetscapeFuncs * pFuncs);
-NPError OSCALL NP_Shutdown();
+ NPError OSCALL NP_Shutdown();
-char* NP_GetMIMEDescription();
+ char *NP_GetMIMEDescription();
#ifdef __cplusplus
}
#endif
-
-#endif /* _WINDOWS || __OS2__ */
-
+#endif /* _WINDOWS || __OS2__ */
#if defined(__OS2__)
#pragma pack()
#endif
-
#ifdef XP_UNIX
-
#ifdef __cplusplus
extern "C" {
#endif
/* plugin meta member functions */
-NP_EXPORT(char*) NP_GetMIMEDescription(void);
-NP_EXPORT(NPError) NP_Initialize(NPNetscapeFuncs*, NPPluginFuncs*);
-NP_EXPORT(NPError) NP_Shutdown(void);
-NP_EXPORT(NPError) NP_GetValue(void *future, NPPVariable aVariable, void *aValue);
+ NP_EXPORT(char *) NP_GetMIMEDescription(void);
+ NP_EXPORT(NPError) NP_Initialize(NPNetscapeFuncs *, NPPluginFuncs *);
+ NP_EXPORT(NPError) NP_Shutdown(void);
+ NP_EXPORT(NPError) NP_GetValue(void *future, NPPVariable aVariable, void *aValue);
#ifdef __cplusplus
}
#endif
-
-#endif /* XP_UNIX */
-
-#endif /* _NPUPP_H_ */
+#endif /* XP_UNIX */
+#endif /* _NPUPP_H_ */
diff --git a/browser-plugin/parole-plugin.cpp b/browser-plugin/parole-plugin.cpp
deleted file mode 100644
index bf5f4ca..0000000
--- a/browser-plugin/parole-plugin.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Modified version of totemPluginGlue
- *
- * Totem Mozilla plugin
- *
- * Copyright © 2004-2006 Bastien Nocera <hadess at hadess.net>
- * Copyright © 2002 David A. Schleef <ds at schleef.org>
- * Copyright © 2006, 2008 Christian Persch
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-
-#include <glib.h>
-
-#include "parole-plugin.h"
-
-NPError ParolePlugin::Init (NPMIMEType mimetype,
- uint16_t mode,
- int16_t argc,
- char *argn[],
- char *argv[],
- NPSavedData *saved)
-{
- g_debug ("Init");
-
- for (int i = 0; i < argc; i++)
- {
- g_print ("argv[%d] %s %s\n", i, argn[i], argv[i] ? argv[i] : "");
- }
-
- return NPERR_NO_ERROR;
-}
-
-NPError ParolePlugin::Shutdown (void)
-{
- return NPERR_NO_ERROR;
-}
-
-NPError ParolePlugin::Initialize (void)
-{
- return NPERR_NO_ERROR;
-}
-
-NPError ParolePlugin::NewStream (NPMIMEType type, NPStream *stream,
- NPBool seekable, uint16 *stype)
-{
- g_debug ("New stream callback %s", stream->url);
-
- if ( !url )
- {
- gchar *command[6];
- gchar *socket;
- gchar *app;
- GError *error = NULL;
-
- url = g_strdup (stream->url);
-
- socket = g_strdup_printf ("%ld", window);
-#ifdef PAROLE_ENABLE_DEBUG
- app = g_strdup ("media-plugin/parole-media-plugin");
-#else
- app = g_build_filename (LIBEXECDIR, "parole-media-plugin", NULL);
-#endif
-
- command[0] = app;
- command[1] = (gchar *)"--socket-id";
- command[2] = socket;
- command[3] = (gchar *)"--url";
- command[4] = url;
- command[5] = NULL;
-
- if ( !g_spawn_async (NULL,
- command,
- NULL,
- (GSpawnFlags) 0,
- NULL, NULL,
- NULL,
- &error) )
- {
- g_critical ("Failed to spawn command : %s", error->message);
- g_error_free (error);
- }
-
- g_free (socket);
- g_free (app);
-
- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
- if ( error )
- {
- g_critical ("%s : ", error->message);
- g_error_free (error);
- return NPERR_GENERIC_ERROR;
- }
- }
-
- return NPERR_NO_ERROR;
-}
-
-ParolePlugin::ParolePlugin (NPP pNPInstance)
-{
- g_debug ("Constructor");
- window_set = FALSE;
- url = NULL;
- bus = NULL;
- proxy = NULL;
-}
-
-ParolePlugin::~ParolePlugin ()
-{
- g_debug ("Destructor");
- if ( bus )
- {
- if ( window_set )
- {
- gchar *dbus_name;
- dbus_name = g_strdup_printf ("org.Parole.Media.Plugin%ld", window);
-
- proxy = dbus_g_proxy_new_for_name (bus,
- dbus_name,
- "/org/Parole/Media/Plugin",
- "org.Parole.Media.Plugin");
-
- if ( !proxy )
- g_critical ("Unable to create proxy for %s", dbus_name);
- else
- dbus_g_proxy_call_no_reply (proxy, "Quit",
- G_TYPE_INVALID,
- G_TYPE_INVALID);
-
- dbus_g_connection_unref (bus);
- g_free (dbus_name);
- }
- }
-
- if ( url )
- g_free (url);
-
-}
-
-char *ParolePlugin::PluginName (void)
-{
- return (char*)"Parole media player plugin-in";
-}
-
-char *ParolePlugin::PluginDescription (void)
-{
- return (char*)"Media player browser plugin for various media format";
-}
-
-NPError ParolePlugin::SetWindow (NPWindow* aWindow)
-{
- g_debug ("SetWindow");
-
- if ( aWindow == NULL )
- return FALSE;
-
- if ( !window_set )
- {
- window = (Window) aWindow->window;
-
- window_set = TRUE;
- }
-
- return NPERR_NO_ERROR;
-}
diff --git a/browser-plugin/parole-plugin.h b/browser-plugin/parole-plugin.h
deleted file mode 100644
index d1d4a7f..0000000
--- a/browser-plugin/parole-plugin.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Modified version of totemPluginGlue
- *
- * Totem Mozilla plugin
- *
- * Copyright © 2004-2006 Bastien Nocera <hadess at hadess.net>
- * Copyright © 2002 David A. Schleef <ds at schleef.org>
- * Copyright © 2006, 2008 Christian Persch
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- */
-
-
-#ifndef __PAROLE_PLUGIN_H__
-#define __PAROLE_PLUGIN_H__
-
-#include <npapi.h>
-#include <npruntime.h>
-#include <npupp.h>
-
-#include <gtk/gtk.h>
-#include <dbus/dbus-glib.h>
-
-class ParolePlugin
-{
-public:
- ParolePlugin (NPP pNPInstance);
-
- ~ParolePlugin (void);
-
- static NPError Initialize (void);
- static NPError Shutdown (void);
-
- NPError Init (NPMIMEType mimetype,
- uint16_t mode,
- int16_t argc,
- char *argn[],
- char *argv[],
- NPSavedData *saved);
-
- NPError SetWindow (NPWindow* aWindow);
-
- NPError NewStream (NPMIMEType type, NPStream *stream,
- NPBool seekable, uint16 *stype);
-
- static char *PluginName (void);
- static char *PluginDescription(void);
-
-private:
- DBusGConnection *bus;
- DBusGProxy *proxy;
-
- gboolean window_set;
- gchar *url;
- Window window;
-};
-
-#endif // __PAROLE_PLUGIN_H__
diff --git a/browser-plugin/plugin.cpp b/browser-plugin/plugin.cpp
index 4b78bd7..3f2f8e2 100644
--- a/browser-plugin/plugin.cpp
+++ b/browser-plugin/plugin.cpp
@@ -1,300 +1,210 @@
-/*
- * Taken from totemPluginGlue modified to fit our needs.
- *
- * Totem Mozilla plugin
- *
- * Copyright © 2004-2006 Bastien Nocera <hadess at hadess.net>
- * Copyright © 2002 David A. Schleef <ds at schleef.org>
- * Copyright © 2006, 2008 Christian Persch
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * 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/
*
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * 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.
*
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include "parole-plugin.h"
-
-NPNetscapeFuncs NPNFuncs; /* used in npn_gate.cpp */
-static gchar *mime_types = NULL;
-
-static NPError
-parole_plugin_new_instance (NPMIMEType mimetype,
- NPP instance,
- uint16_t mode,
- int16_t argc,
- char *argn[],
- char *argv[],
- NPSavedData *savedData)
+ * 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 ***** */
+
+#include "plugin.h"
+#include "npupp.h"
+#include "plugin_setup.h"
+#include "plugin_types.h"
+
+//////////////////////////////////////
+//
+// general initialization and shutdown
+//
+NPError NS_PluginInitialize()
{
- if (!instance)
- return NPERR_INVALID_INSTANCE_ERROR;
-
- ParolePlugin *plugin = new ParolePlugin (instance);
-
- if (!plugin)
- return NPERR_OUT_OF_MEMORY_ERROR;
-
- instance->pdata = reinterpret_cast<void*> (plugin);
-
- NPError rv = plugin->Init (mimetype, mode, argc, argn, argv, savedData);
-
- if (rv != NPERR_NO_ERROR)
- {
- delete plugin;
- instance->pdata = 0;
- }
+ return NPERR_NO_ERROR;
+}
- return rv;
+void NS_PluginShutdown()
+{
}
-static NPError
-parole_plugin_destroy_instance (NPP instance,
- NPSavedData **save)
+// get values per plugin
+NPError NS_PluginGetValue(NPPVariable aVariable, void *aValue)
{
- if (!instance)
- return NPERR_INVALID_INSTANCE_ERROR;
+ return PluginGetValue(aVariable, aValue);
+}
- ParolePlugin *plugin = reinterpret_cast<ParolePlugin*> (instance->pdata);
+////////////////////////////////////////
+//
+// CPlugin class implementation
+//
+CPlugin::CPlugin (NPP pNPInstance)
+{
+ g_debug ("Constructor");
- if (!plugin)
- return NPERR_NO_ERROR;
-
- delete plugin;
-
- instance->pdata = 0;
-
- return NPERR_NO_ERROR;
+ mInstance = pNPInstance;
+ mInitialized = TRUE;
+ window_set = FALSE;
+ url = NULL;
+ bus = NULL;
+ proxy = NULL;
}
-static NPError
-parole_plugin_set_window (NPP instance,
- NPWindow* window)
+CPlugin::~CPlugin()
{
- if (!instance)
- return NPERR_INVALID_INSTANCE_ERROR;
-
- ParolePlugin *plugin = reinterpret_cast<ParolePlugin*> (instance->pdata);
+ g_debug ("Destructor");
+ if ( bus )
+ {
+ if ( proxy )
+ {
+ dbus_g_proxy_call_no_reply (proxy, "Quit",
+ G_TYPE_INVALID,
+ G_TYPE_INVALID);
+ }
+ dbus_g_connection_unref (bus);
+ }
- if (!plugin)
- return NPERR_INVALID_INSTANCE_ERROR;
-
- return plugin->SetWindow (window);
+ if ( url )
+ g_free (url);
+ mInstance = NULL;
}
-static NPError
-parole_plugin_new_stream (NPP instance,
- NPMIMEType type,
- NPStream* stream_ptr,
- NPBool seekable,
- uint16* stype)
+NPBool CPlugin::init(NPWindow * pNPWindow)
{
- if (!instance)
- return NPERR_INVALID_INSTANCE_ERROR;
+ if (pNPWindow == NULL)
+ return FALSE;
- ParolePlugin *plugin = reinterpret_cast<ParolePlugin*> (instance->pdata);
-
- if (!plugin)
- return NPERR_INVALID_INSTANCE_ERROR;
+ m_Window = pNPWindow;
+ mInitialized = TRUE;
- return plugin->NewStream (type, stream_ptr, seekable, stype);
+ return mInitialized;
}
-static NPError
-parole_plugin_get_value (NPP instance,
- NPPVariable variable,
- void *value)
+NPError CPlugin::SetWindow(NPWindow * aWindow)
{
- ParolePlugin *plugin = 0;
-
- NPError err = NPERR_NO_ERROR;
+ g_debug ("SetWindow");
+
+ if ( aWindow == NULL )
+ return FALSE;
- if (instance)
+ if ( !window_set )
{
- plugin = reinterpret_cast<ParolePlugin*> (instance->pdata);
+ window = (Window) aWindow->window;
+
+ window_set = TRUE;
}
+ return NPERR_NO_ERROR;
+}
- /* See NPPVariable in npapi.h */
- switch (variable)
+void CPlugin::shut()
+{
+ g_debug ("shut");
+
+ if ( proxy )
{
- case NPPVpluginNameString:
- *((char **)value) = ParolePlugin::PluginName ();
- break;
- case NPPVpluginDescriptionString:
- *((char **)value) = ParolePlugin::PluginDescription ();
- break;
- case NPPVpluginNeedsXEmbed:
- // FIXMEchpe fix webkit which passes a (unsigned int*) here...
- *((NPBool *)value) = TRUE;
- break;
- case NPPVpluginScriptableIID:
- case NPPVpluginScriptableInstance:
- /* XPCOM scripting, obsolete */
- err = NPERR_GENERIC_ERROR;
- break;
- default:
- err = NPERR_INVALID_PARAM;
- break;
- }
-
- return err;
+ dbus_g_proxy_call_no_reply (proxy, "Terminate",
+ G_TYPE_INVALID,
+ G_TYPE_INVALID);
+ }
}
-static NPError
-parole_plugin_set_value (NPP instance,
- NPNVariable variable,
- void *value)
+NPBool CPlugin::isInitialized()
{
- return NPERR_NO_ERROR;
+ return mInitialized;
}
-NPError NP_Initialize (NPNetscapeFuncs *aMozillaVTable, NPPluginFuncs *aPluginVTable)
+NPError CPlugin::NewStream(NPMIMEType type, NPStream * stream, NPBool seekable, uint16 * stype)
{
- g_debug ("Initialize");
-
- if (aMozillaVTable == NULL || aPluginVTable == NULL)
- return NPERR_INVALID_FUNCTABLE_ERROR;
-
- if ((aMozillaVTable->version >> 8) > NP_VERSION_MAJOR)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
-
- if (aMozillaVTable->size < sizeof (NPNetscapeFuncs))
- return NPERR_INVALID_FUNCTABLE_ERROR;
-
- if (aPluginVTable->size < sizeof (NPPluginFuncs))
- return NPERR_INVALID_FUNCTABLE_ERROR;
-
- /* Copy the function table. We can use memcpy here since we've already
- * established that the aMozillaVTable is at least as big as the compile-
- * time NPNetscapeFuncs.
- */
- memcpy (&NPNFuncs, aMozillaVTable, sizeof (NPNetscapeFuncs));
- NPNFuncs.size = sizeof (NPNetscapeFuncs);
-
+ g_debug ("New stream callback %s", stream->url);
- aPluginVTable->size = sizeof (NPPluginFuncs);
- aPluginVTable->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
- aPluginVTable->newp = NewNPP_NewProc (parole_plugin_new_instance);
- aPluginVTable->destroy = NewNPP_DestroyProc (parole_plugin_destroy_instance);
- aPluginVTable->setwindow = NewNPP_SetWindowProc (parole_plugin_set_window);
- aPluginVTable->newstream = NewNPP_NewStreamProc (parole_plugin_new_stream);
+ if ( !url )
+ {
+ gchar *command[6];
+ gchar *socket;
+ gchar *app;
+ GError *error = NULL;
+ gchar *dbus_name;
- aPluginVTable->javaClass = NULL;
- aPluginVTable->getvalue = NewNPP_GetValueProc (parole_plugin_get_value);
- aPluginVTable->setvalue = NewNPP_SetValueProc (parole_plugin_set_value);
+ url = g_strdup (stream->url);
- return ParolePlugin::Initialize ();
-}
+ socket = g_strdup_printf ("%ld", window);
+#ifdef PAROLE_ENABLE_DEBUG
+ app = g_strdup ("media-plugin/parole-media-plugin");
+#else
+ app = g_build_filename (LIBEXECDIR, "parole-media-plugin", NULL);
+#endif
-NPError NP_Shutdown (void)
-{
- if ( mime_types )
- g_free (mime_types);
+ command[0] = app;
+ command[1] = (gchar *)"--socket-id";
+ command[2] = socket;
+ command[3] = (gchar *)"--url";
+ command[4] = url;
+ command[5] = NULL;
- return ParolePlugin::Shutdown ();
-}
-
-NPError NP_GetValue (void *future, NPPVariable var, void *value)
-{
- return parole_plugin_get_value (NULL, var, value);
-}
-
-char *NP_GetMIMEDescription ()
-{
- if ( mime_types != NULL )
- return mime_types;
+ if ( !g_spawn_async (NULL,
+ command,
+ NULL,
+ (GSpawnFlags) 0,
+ NULL, NULL,
+ NULL,
+ &error) )
+ {
+ g_critical ("Failed to spawn command : %s", error->message);
+ g_error_free (error);
+ }
- const gchar *mime_types_list = /* Wmp mime types */
- "application/asx:*:Media Files;"
- "video/x-ms-asf-plugin:*:Media Files;"
- "video/x-msvideo:avi,*:AVI;"
- "video/msvideo:avi,*:AVI;"
- "application/x-mplayer2:*:Media Files;"
- "application/x-ms-wmv:wmv,*:Microsoft WMV video;"
- "video/x-ms-asf:asf,asx,*:Media Files;"
- "video/x-ms-wm:wm,*:Media Files;"
- "video/x-ms-wmv:wmv,*:Microsoft WMV video;"
- "audio/x-ms-wmv:wmv,*:Windows Media;"
- "video/x-ms-wmp:wmp,*:Windows Media;"
- "application/x-ms-wmp:wmp,*:Windows Media;"
- "video/x-ms-wvx:wvx,*:Windows Media;"
- "audio/x-ms-wax:wax,*:Windows Media;"
- "audio/x-ms-wma:wma,*:Windows Media;"
- "application/x-drm-v2:asx,*:Windows Media;"
- "audio/wav:wav,*:Microsoft wave file;"
- "audio/x-wav:wav,*:Microsoft wave file;"
- /* Standard mime types */
- "audio/x-mpegurl:m3u:MPEG Playlist;"
- "video/mpeg:mpg,mpeg:MPEG;"
- "audio/mpeg:mpg,mpeg:MPEG;"
- "video/x-mpeg:mpg,mpeg:MPEG;"
- "video/x-mpeg2:mpv2,mp2ve:MPEG2;"
- "audio/mpeg:mpg,mpeg:MPEG;"
- "audio/x-mpeg:mpg,mpeg:MPEG;"
- "audio/mpeg2:mp2:MPEG audio;"
- "audio/x-mpeg2:mp2:MPEG audio;"
- "audio/mp4:mp4:MPEG 4 audio;"
- "audio/x-mp4:mp4:MPEG 4 audio;"
- "video/mp4:mp4:MPEG 4 Video;"
- "video/x-m4v:m4v:MPEG 4 Video;"
- "video/3gpp:mp4,3gp:MPEG 4 Video;"
- "application/x-ogg:ogg:Ogg Vorbis Media;"
- "audio/flac:ogg:FLAC Lossless Audio;"
- "audio/x-flac:ogg:FLAC Lossless Audio;"
- "audio/ogg:ogg:Ogg Vorbis Audio;"
- "audio/ogg:x-ogg:Ogg Vorbis Audio;"
- "application/ogg:ogg:Ogg Vorbis / Ogg Theora;"
- "video/ogg:ogg:Ogg Vorbis Video;"
- "video/ogg:x-ogg:Ogg Vorbis Video;"
- /* Real audio */
- "audio/x-pn-realaudio:ram,rm:RealAudio;"
- "application/vnd.rn-realmedia:rm:RealMedia;"
- "application/vnd.rn-realaudio:ra,ram:RealAudio;"
- "video/vnd.rn-realvideo:rv:RealVideo;"
- "audio/x-realaudio:ra:RealAudio;"
- "audio/x-pn-realaudio-plugin:rpm:RealAudio;"
- "application/smil:smil:SMIL;"
- /* DivX Mime type */
- "video/divx:divx:DivX Media Format;"
- "video/vnd.divx:divx:DivX Media Format;"
- /*Quick time */
- "video/quicktime:mov:Quicktime;"
- "video/x-quicktime:mov:Quicktime;"
- "image/x-quicktime:mov:Quicktime;"
- "video/quicktime:mp4:Quicktime;"
- "video/quicktime:sdp:Quicktime - Session Description Protocol;"
- "application/x-quicktimeplayer:mov:Quicktime;";
-
- g_debug ("GetMimeDescription");
-
- mime_types = g_strdup (mime_types_list);
+ g_free (socket);
+ g_free (app);
+
+ bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- return mime_types;
+ if ( error )
+ {
+ g_critical ("%s : ", error->message);
+ g_error_free (error);
+ return NPERR_GENERIC_ERROR;
+ }
+
+ dbus_name = g_strdup_printf ("org.Parole.Media.Plugin%ld", window);
+
+ proxy = dbus_g_proxy_new_for_name (bus,
+ dbus_name,
+ "/org/Parole/Media/Plugin",
+ "org.Parole.Media.Plugin");
+ if ( !proxy )
+ g_critical ("Unable to create proxy for %s", dbus_name);
+
+ g_free (dbus_name);
+ }
+ return NPERR_NO_ERROR;
}
-NPError NPP_NewStream (NPP instance, NPMIMEType type, NPStream *stream,
- NPBool seekable, uint16 *stype)
+NPError CPlugin::DestroyStream(NPStream * stream, NPError reason)
{
- g_debug ("New stream callback %s", stream->url);
-
return NPERR_NO_ERROR;
}
diff --git a/browser-plugin/plugin.h b/browser-plugin/plugin.h
new file mode 100644
index 0000000..6cf0b01
--- /dev/null
+++ b/browser-plugin/plugin.h
@@ -0,0 +1,92 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** 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 ***** */
+
+#ifndef __PLUGIN_H__
+#define __PLUGIN_H__
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <npapi.h>
+#include <npruntime.h>
+#include "npupp.h"
+
+#include <X11/Xlib.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n.h>
+
+class CPlugin {
+ private:
+ NPWindow *m_Window;
+ NPStream *m_pNPStream;
+ NPBool mInitialized;
+
+ public:
+ CPlugin (NPP pNPInstance);
+ ~CPlugin ();
+
+ NPBool init (NPWindow * aWindow);
+ void shut ();
+ NPBool isInitialized();
+
+ NPError GetValue (NPPVariable variable, void *value);
+ NPError SetWindow (NPWindow * aWindow);
+ NPError NewStream (NPMIMEType type, NPStream * stream, NPBool seekable, uint16 * stype);
+ NPError DestroyStream (NPStream * stream, NPError reason);
+
+ private:
+ DBusGConnection *bus;
+ DBusGProxy *proxy;
+
+ gboolean window_set;
+ gchar *url;
+ Window window;
+
+ public:
+ NPP mInstance;
+ uint16 mode;
+ gchar *mimetype;
+
+};
+
+#endif // __PLUGIN_H__
diff --git a/browser-plugin/plugin.symbols b/browser-plugin/plugin.symbols
deleted file mode 100644
index c13252c..0000000
--- a/browser-plugin/plugin.symbols
+++ /dev/null
@@ -1,4 +0,0 @@
-NP_GetMIMEDescription
-NP_GetValue
-NP_Initialize
-NP_Shutdown
diff --git a/browser-plugin/plugin_setup.cpp b/browser-plugin/plugin_setup.cpp
new file mode 100644
index 0000000..f6f0f19
--- /dev/null
+++ b/browser-plugin/plugin_setup.cpp
@@ -0,0 +1,80 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** 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 ***** */
+
+#include "plugin.h"
+#include "plugin_setup.h"
+
+// void new_instance(CPlugin * instance, nsPluginCreateData * parameters)
+void new_instance(CPlugin * instance, int16 argc, char *argn[], char *argv[])
+{
+}
+
+gint streaming (gchar * url)
+{
+ gint ret = 0;
+ char *p;
+
+ if (g_ascii_strncasecmp(url, "mms://", 6) == 0)
+ ret = 1;
+
+ if (g_ascii_strncasecmp(url, "mmst://", 7) == 0)
+ ret = 1;
+
+ if (g_ascii_strncasecmp(url, "mmsu://", 7) == 0)
+ ret = 1;
+
+ if (g_ascii_strncasecmp(url, "rtsp://", 7) == 0)
+ ret = 1;
+
+ if (g_ascii_strncasecmp(url, "tv://", 5) == 0)
+ ret = 1;
+
+ if (g_ascii_strncasecmp(url, "dvd://", 6) == 0)
+ ret = 1;
+
+ if (g_ascii_strncasecmp(url, "file://", 7) == 0) {
+ p = g_filename_from_uri(url, NULL, NULL);
+ if (p != NULL) {
+ if (g_file_test(p, G_FILE_TEST_EXISTS)) {
+ g_strlcpy(url, p, 1024);
+ ret = 1;
+ }
+ g_free(p);
+ }
+ }
+ return ret;
+}
diff --git a/browser-plugin/plugin_setup.h b/browser-plugin/plugin_setup.h
new file mode 100644
index 0000000..6626cdd
--- /dev/null
+++ b/browser-plugin/plugin_setup.h
@@ -0,0 +1,44 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** 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 ***** */
+
+#ifndef _PLUGIN_SETUP_H
+#define _PLUGIN_SETUP_H
+
+void new_instance(CPlugin * instance, int16 argc, char *argn[], char *argv[]);
+gint streaming(gchar * url);
+
+#endif // _PLUGIN_SETUP_H
diff --git a/browser-plugin/plugin_types.cpp b/browser-plugin/plugin_types.cpp
new file mode 100644
index 0000000..4bd7c14
--- /dev/null
+++ b/browser-plugin/plugin_types.cpp
@@ -0,0 +1,135 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** 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 ***** */
+
+#include "plugin_types.h"
+
+gchar *GetMIMEDescription()
+{
+ const gchar *mime_types_list = /* Wmp mime types */
+ "application/asx:*:Media Files;"
+ "video/x-ms-asf-plugin:*:Media Files;"
+ "video/x-msvideo:avi,*:AVI;"
+ "video/msvideo:avi,*:AVI;"
+ "application/x-mplayer2:*:Media Files;"
+ "application/x-ms-wmv:wmv,*:Microsoft WMV video;"
+ "video/x-ms-asf:asf,asx,*:Media Files;"
+ "video/x-ms-wm:wm,*:Media Files;"
+ "video/x-ms-wmv:wmv,*:Microsoft WMV video;"
+ "audio/x-ms-wmv:wmv,*:Windows Media;"
+ "video/x-ms-wmp:wmp,*:Windows Media;"
+ "application/x-ms-wmp:wmp,*:Windows Media;"
+ "video/x-ms-wvx:wvx,*:Windows Media;"
+ "audio/x-ms-wax:wax,*:Windows Media;"
+ "audio/x-ms-wma:wma,*:Windows Media;"
+ "application/x-drm-v2:asx,*:Windows Media;"
+ "audio/wav:wav,*:Microsoft wave file;"
+ "audio/x-wav:wav,*:Microsoft wave file;"
+ /* Standard mime types */
+ "audio/x-mpegurl:m3u:MPEG Playlist;"
+ "video/mpeg:mpg,mpeg:MPEG;"
+ "audio/mpeg:mpg,mpeg:MPEG;"
+ "video/x-mpeg:mpg,mpeg:MPEG;"
+ "video/x-mpeg2:mpv2,mp2ve:MPEG2;"
+ "audio/mpeg:mpg,mpeg:MPEG;"
+ "audio/x-mpeg:mpg,mpeg:MPEG;"
+ "audio/mpeg2:mp2:MPEG audio;"
+ "audio/x-mpeg2:mp2:MPEG audio;"
+ "audio/mp4:mp4:MPEG 4 audio;"
+ "audio/x-mp4:mp4:MPEG 4 audio;"
+ "video/mp4:mp4:MPEG 4 Video;"
+ "video/x-m4v:m4v:MPEG 4 Video;"
+ "video/3gpp:mp4,3gp:MPEG 4 Video;"
+ "application/x-ogg:ogg:Ogg Vorbis Media;"
+ "audio/flac:ogg:FLAC Lossless Audio;"
+ "audio/x-flac:ogg:FLAC Lossless Audio;"
+ "audio/ogg:ogg:Ogg Vorbis Audio;"
+ "audio/ogg:x-ogg:Ogg Vorbis Audio;"
+ "application/ogg:ogg:Ogg Vorbis / Ogg Theora;"
+ "video/ogg:ogg:Ogg Vorbis Video;"
+ "video/ogg:x-ogg:Ogg Vorbis Video;"
+ /* Real audio */
+ "audio/x-pn-realaudio:ram,rm:RealAudio;"
+ "application/vnd.rn-realmedia:rm:RealMedia;"
+ "application/vnd.rn-realaudio:ra,ram:RealAudio;"
+ "video/vnd.rn-realvideo:rv:RealVideo;"
+ "audio/x-realaudio:ra:RealAudio;"
+ "audio/x-pn-realaudio-plugin:rpm:RealAudio;"
+ "application/smil:smil:SMIL;"
+ /* DivX Mime type */
+ "video/divx:divx:DivX Media Format;"
+ "video/vnd.divx:divx:DivX Media Format;"
+ /*Quick time */
+ "video/quicktime:mov:Quicktime;"
+ "video/x-quicktime:mov:Quicktime;"
+ "image/x-quicktime:mov:Quicktime;"
+ "video/quicktime:mp4:Quicktime;"
+ "video/quicktime:sdp:Quicktime - Session Description Protocol;"
+ "application/x-quicktimeplayer:mov:Quicktime;";
+
+ g_debug ("GetMimeDescription");
+
+ return g_strdup (mime_types_list);
+}
+
+NPError PluginGetValue(NPPVariable variable, void *value)
+{
+ NPError err = NPERR_NO_ERROR;
+
+ // some sites use this description to figure out what formats can be played. So we have to make sure the
+ // description matches the features
+
+ if (variable == NPPVpluginNameString) {
+ *((const char **) value) = "Parole media player plugin-in";
+ }
+ if (variable == NPPVpluginDescriptionString) {
+ *((const char **) value) =
+ "Media player browser plugin for various media format version " VERSION;
+
+ }
+
+ if (variable == NPPVpluginNeedsXEmbed) {
+ *((PRBool *) value) = PR_TRUE;
+ }
+
+ if ((variable != NPPVpluginNameString)
+ && (variable != NPPVpluginDescriptionString)
+ && (variable != NPPVpluginNeedsXEmbed)) {
+ err = NPERR_INVALID_PARAM;
+ }
+
+ return err;
+}
diff --git a/browser-plugin/plugin_types.h b/browser-plugin/plugin_types.h
new file mode 100644
index 0000000..a1164b0
--- /dev/null
+++ b/browser-plugin/plugin_types.h
@@ -0,0 +1,47 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* ***** 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 ***** */
+
+#ifndef _PLUGIN_TYPES_H
+#define _PLUGIN_TYPES_H
+#include <glib.h>
+#include "plugin.h"
+#include "config.h"
+
+gchar *GetMIMEDescription();
+NPError PluginGetValue(NPPVariable variable, void *value);
+
+#endif // _PLUGIN_TYPES_H
diff --git a/configure.ac.in b/configure.ac.in
index 08ad2bb..816877d 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -199,6 +199,7 @@ AM_CONDITIONAL([ENABLE_BROWSER_PLUGIN], [test x"$ac_browser_plugin" = x"yes"])
AC_MSG_RESULT([$ac_browser_plugin])
if test x"$ac_browser_plugin" = x"yes"; then
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
+ XDT_CHECK_PACKAGE([GECKO], [libxul], [])
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the browser plugin])
AC_DEFINE(BUILD_BROWSER_PLUGIN, 1, [whether to build with browser plugin support])
fi
More information about the Xfce4-commits
mailing list