-/* -*- 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
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
- * 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/
+ * Mozilla/Firefox plugin for VLC
+ * Copyright (C) 2009, Jean-Paul Saman <jpsaman@videolan.org>
*
- * 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.
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser 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
*
* The Original Code is Mozilla Communicator client code.
*
* 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 ***** */
+ */
#include "config.h"
+//#define OJI 1
+
#ifdef HAVE_MOZILLA_CONFIG_H
# include <mozilla-config.h>
#endif
-#include "npapi.h"
-#include "npupp.h"
+#ifndef _NPAPI_H_
+# include "npapi.h"
+#endif
+#ifdef HAVE_NPFUNCTIONS_H
+# include "npfunctions.h"
+#else
+# ifndef _NPUPP_H_
+# include "npupp.h"
+# endif
+#endif
+
+#include "../vlcshell.h"
//\\// DEFINE
#define NP_EXPORT
//\\// GLOBAL DATA
NPNetscapeFuncs* g_pNavigatorFuncs = 0;
+
+#ifdef OJI
JRIGlobalRef Private_GetJavaClass(void);
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
// Private_GetJavaClass (global function)
//
-// Given a Java class reference (thru NPP_GetJavaClass) inform JRT
-// of this class existence
+// Given a Java class reference (thru NPP_GetJavaClass) inform JRT
+// of this class existence
//
JRIGlobalRef
Private_GetJavaClass(void)
}
return NULL;
}
+#endif /* OJI */
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
-// PLUGIN DLL entry points
+// PLUGIN DLL entry points
//
// These are the Windows specific DLL entry points. They must be exoprted
//
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
// NP_GetEntryPoints
//
-// fills in the func table used by Navigator to call entry points in
+// fills in the func table used by Navigator to call entry points in
// plugin DLL. Note that these entry points ensure that DS is loaded
// by using the NP_LOADDS macro, when compiling for Win16
//
#endif
NP_GetEntryPoints(NPPluginFuncs* pFuncs)
{
- // trap a NULL ptr
+ // trap a NULL ptr
if(pFuncs == NULL)
return NPERR_INVALID_FUNCTABLE_ERROR;
// if the plugin's function table is smaller than the plugin expects,
- // then they are incompatible, and should return an error
+ // then they are incompatible, and should return an error
pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
pFuncs->newp = NPP_New;
pFuncs->getvalue = NPP_GetValue;
pFuncs->setvalue = NPP_SetValue;
- g_pluginFuncs = pFuncs;
+ g_pluginFuncs = pFuncs;
return NPERR_NO_ERROR;
}
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
// NP_Initialize
//
-// called immediately after the plugin DLL is loaded
+// called immediately after the plugin DLL is loaded
//
#ifdef __MINGW32__
extern "C" __declspec(dllexport) NPError WINAPI
#endif
NP_Initialize(NPNetscapeFuncs* pFuncs)
{
- // trap a NULL ptr
+ // trap a NULL ptr
if(pFuncs == NULL)
return NPERR_INVALID_FUNCTABLE_ERROR;
- g_pNavigatorFuncs = pFuncs; // save it for future reference
+ g_pNavigatorFuncs = pFuncs; // save it for future reference
// if the plugin's major ver level is lower than the Navigator's,
- // then they are incompatible, and should return an error
+ // then they are incompatible, and should return an error
if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR)
return NPERR_INCOMPATIBLE_VERSION_ERROR;
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
g_pluginFuncs->urlnotify = NPP_URLNotify;
}
-
+#ifdef OJI
if( navMinorVers >= NPVERS_HAS_LIVECONNECT ) {
g_pluginFuncs->javaClass = Private_GetJavaClass();
}
-
+#endif
// NPP_Initialize is a standard (cross-platform) initialize function.
return NPP_Initialize();
}
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
// NP_Shutdown
//
-// called immediately before the plugin DLL is unloaded.
-// This functio shuold check for some ref count on the dll to see if it is
-// unloadable or it needs to stay in memory.
+// called immediately before the plugin DLL is unloaded.
+// This function should check for some ref count on the dll to see if it is
+// unloadable or it needs to stay in memory.
//
#ifdef __MINGW32__
extern "C" __declspec(dllexport) NPError WINAPI
#else
-NPError WINAPI NP_EXPORT
+NPError WINAPI NP_EXPORT
#endif
NP_Shutdown()
{
return NPERR_NO_ERROR;
}
-// END - PLUGIN DLL entry points
+char * NP_GetMIMEDescription()
+{
+ return NPP_GetMIMEDescription();
+}
+
+// END - PLUGIN DLL entry points
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
plugin's DLL data segment. Don't call these functions from outside
the plugin without ensuring DS is set to the DLLs data segment first,
typically using the NP_LOADDS macro
-*/
+ */
/* returns the major/minor version numbers of the Plugin API for the plugin
and the Navigator
-*/
+ */
void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor)
{
*plugin_major = NP_VERSION_MAJOR;
*netscape_minor = LOBYTE(g_pNavigatorFuncs->version);
}
-/* causes the specified URL to be fetched and streamed in
-*/
-NPError NPN_GetURLNotify(NPP instance, const char *url, const char *target, void* notifyData)
-
-{
- int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
- NPError err;
- if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
- err = g_pNavigatorFuncs->geturlnotify(instance, url, target, notifyData);
- }
- else {
- err = NPERR_INCOMPATIBLE_VERSION_ERROR;
- }
- return err;
-}
-
-
-NPError NPN_GetURL(NPP instance, const char *url, const char *target)
-{
- return g_pNavigatorFuncs->geturl(instance, url, target);
-}
-
-NPError NPN_PostURLNotify(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file, void* notifyData)
-{
- int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
- NPError err;
- if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
- err = g_pNavigatorFuncs->posturlnotify(instance, url, window, len, buf, file, notifyData);
- }
- else {
- err = NPERR_INCOMPATIBLE_VERSION_ERROR;
- }
- return err;
-}
-
-
-NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file)
-{
- return g_pNavigatorFuncs->posturl(instance, url, window, len, buf, file);
-}
-
-/* Requests that a number of bytes be provided on a stream. Typically
- this would be used if a stream was in "pull" mode. An optional
- position can be provided for streams which are seekable.
-*/
-NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList)
-{
- return g_pNavigatorFuncs->requestread(stream, rangeList);
-}
-
-/* Creates a new stream of data from the plug-in to be interpreted
- by Netscape in the current window.
-*/
-NPError NPN_NewStream(NPP instance, NPMIMEType type,
- const char* target, NPStream** stream)
-{
- int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
- NPError err;
-
- if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
- err = g_pNavigatorFuncs->newstream(instance, type, target, stream);
- }
- else {
- err = NPERR_INCOMPATIBLE_VERSION_ERROR;
- }
- return err;
-}
-
-/* Provides len bytes of data.
-*/
-int32 NPN_Write(NPP instance, NPStream *stream,
- int32 len, void *buffer)
-{
- int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
- int32 result;
-
- if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
- result = g_pNavigatorFuncs->write(instance, stream, len, buffer);
- }
- else {
- result = -1;
- }
- return result;
-}
-
-/* Closes a stream object.
-reason indicates why the stream was closed.
-*/
-NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
-{
- int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
- NPError err;
-
- if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
- err = g_pNavigatorFuncs->destroystream(instance, stream, reason);
- }
- else {
- err = NPERR_INCOMPATIBLE_VERSION_ERROR;
- }
- return err;
-}
-
-/* Provides a text status message in the Netscape client user interface
-*/
-void NPN_Status(NPP instance, const char *message)
-{
- g_pNavigatorFuncs->status(instance, message);
-}
-
-/* returns the user agent string of Navigator, which contains version info
-*/
-const char* NPN_UserAgent(NPP instance)
-{
- return g_pNavigatorFuncs->uagent(instance);
-}
-
-/* allocates memory from the Navigator's memory space. Necessary so that
- saved instance data may be freed by Navigator when exiting.
-*/
-
-
-void* NPN_MemAlloc(uint32 size)
-{
- return g_pNavigatorFuncs->memalloc(size);
-}
-
-/* reciprocal of MemAlloc() above
-*/
-void NPN_MemFree(void* ptr)
-{
- g_pNavigatorFuncs->memfree(ptr);
-}
-
-/* private function to Netscape. do not use!
-*/
-void NPN_ReloadPlugins(NPBool reloadPages)
-{
- g_pNavigatorFuncs->reloadplugins(reloadPages);
-}
-
-JRIEnv* NPN_GetJavaEnv(void)
-{
- return g_pNavigatorFuncs->getJavaEnv();
-}
-
-jref NPN_GetJavaPeer(NPP instance)
-{
- return g_pNavigatorFuncs->getJavaPeer(instance);
-}
-
NPError NPN_GetValue(NPP instance, NPNVariable variable, void *result)
{
return g_pNavigatorFuncs->getvalue(instance, variable, result);
}
}
+/* causes the specified URL to be fetched and streamed in
+ */
+NPError NPN_GetURLNotify(NPP instance, const char *url, const char *target, void* notifyData)
+
+{
+ int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
+ NPError err;
+ if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
+ err = g_pNavigatorFuncs->geturlnotify(instance, url, target, notifyData);
+ }
+ else {
+ err = NPERR_INCOMPATIBLE_VERSION_ERROR;
+ }
+ return err;
+}
+
+NPError NPN_GetURL(NPP instance, const char *url, const char *target)
+{
+ return g_pNavigatorFuncs->geturl(instance, url, target);
+}
+
+NPError NPN_PostURLNotify(NPP instance, const char* url, const char* window, uint32_t len, const char* buf, NPBool file, void* notifyData)
+{
+ int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
+ NPError err;
+ if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
+ err = g_pNavigatorFuncs->posturlnotify(instance, url, window, len, buf, file, notifyData);
+ }
+ else {
+ err = NPERR_INCOMPATIBLE_VERSION_ERROR;
+ }
+ return err;
+}
+
+
+NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32_t len, const char* buf, NPBool file)
+{
+ return g_pNavigatorFuncs->posturl(instance, url, window, len, buf, file);
+}
+
+/* Requests that a number of bytes be provided on a stream. Typically
+ this would be used if a stream was in "pull" mode. An optional
+ position can be provided for streams which are seekable.
+ */
+NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList)
+{
+ return g_pNavigatorFuncs->requestread(stream, rangeList);
+}
+
+/* Creates a new stream of data from the plug-in to be interpreted
+ * by Netscape in the current window.
+ */
+NPError NPN_NewStream(NPP instance, NPMIMEType type,
+ const char* target, NPStream** stream)
+{
+ int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
+ NPError err;
+
+ if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
+ err = g_pNavigatorFuncs->newstream(instance, type, target, stream);
+ }
+ else {
+ err = NPERR_INCOMPATIBLE_VERSION_ERROR;
+ }
+ return err;
+}
+
+/* Provides len bytes of data.
+ */
+int32_t NPN_Write(NPP instance, NPStream *stream,
+ int32_t len, void *buffer)
+{
+ int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
+ int32_t result;
+
+ if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
+ result = g_pNavigatorFuncs->write(instance, stream, len, buffer);
+ }
+ else {
+ result = -1;
+ }
+ return result;
+}
+
+/* Closes a stream object.
+ * reason indicates why the stream was closed.
+ */
+NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
+{
+ int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
+ NPError err;
+
+ if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
+ err = g_pNavigatorFuncs->destroystream(instance, stream, reason);
+ }
+ else {
+ err = NPERR_INCOMPATIBLE_VERSION_ERROR;
+ }
+ return err;
+}
+
+/* Provides a text status message in the Netscape client user interface
+ */
+void NPN_Status(NPP instance, const char *message)
+{
+ g_pNavigatorFuncs->status(instance, message);
+}
+
+/* returns the user agent string of Navigator, which contains version info
+ */
+const char* NPN_UserAgent(NPP instance)
+{
+ return g_pNavigatorFuncs->uagent(instance);
+}
+
+/* allocates memory from the Navigator's memory space. Necessary so that
+ * saved instance data may be freed by Navigator when exiting.
+ */
+void *NPN_MemAlloc(uint32 size)
+{
+ return g_pNavigatorFuncs->memalloc(size);
+}
+
+/* reciprocal of MemAlloc() above
+ */
+void NPN_MemFree(void* ptr)
+{
+ g_pNavigatorFuncs->memfree(ptr);
+}
+
+#ifdef OJI
+/* private function to Netscape. do not use!
+ */
+void NPN_ReloadPlugins(NPBool reloadPages)
+{
+ g_pNavigatorFuncs->reloadplugins(reloadPages);
+}
+
+JRIEnv* NPN_GetJavaEnv(void)
+{
+ return g_pNavigatorFuncs->getJavaEnv();
+}
+
+jref NPN_GetJavaPeer(NPP instance)
+{
+ return g_pNavigatorFuncs->getJavaPeer(instance);
+}
+#endif