[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