]> git.sesse.net Git - vlc/blobdiff - projects/mozilla/support/npwin.cpp
Spell developer properly
[vlc] / projects / mozilla / support / npwin.cpp
index c277f846e338b5ff5771878df2fb92ea21d467e9..463c7606cd83c35b53e8d6d3834ce5e25c3ee0d7 100644 (file)
@@ -1,16 +1,21 @@
-/* -*- 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)
@@ -68,10 +73,11 @@ 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
 //
@@ -86,7 +92,7 @@ static NPPluginFuncs* g_pluginFuncs;
 ////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
 // 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
 //
@@ -97,12 +103,12 @@ NPError WINAPI NP_EXPORT
 #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;
@@ -118,7 +124,7 @@ NP_GetEntryPoints(NPPluginFuncs* pFuncs)
     pFuncs->getvalue      = NPP_GetValue;
     pFuncs->setvalue      = NPP_SetValue;
 
-    g_pluginFuncs             = pFuncs;
+    g_pluginFuncs         = pFuncs;
 
     return NPERR_NO_ERROR;
 }
@@ -127,7 +133,7 @@ NP_GetEntryPoints(NPPluginFuncs* pFuncs)
 ////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
 // 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
@@ -136,14 +142,14 @@ NPError WINAPI NP_EXPORT
 #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;
 
@@ -153,11 +159,11 @@ NP_Initialize(NPNetscapeFuncs* pFuncs)
     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();
 }
@@ -166,14 +172,14 @@ NP_Initialize(NPNetscapeFuncs* pFuncs)
 ////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
 // 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()
 {
@@ -182,7 +188,12 @@ NP_Shutdown()
     return NPERR_NO_ERROR;
 }
 
-//                                              END - PLUGIN DLL entry points
+char * NP_GetMIMEDescription()
+{
+  return NPP_GetMIMEDescription();
+}
+
+//                                             END - PLUGIN DLL entry points   
 ////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
 //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
 
@@ -193,11 +204,11 @@ NP_Shutdown()
    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;
@@ -206,156 +217,6 @@ void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int*
     *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);
@@ -567,3 +428,151 @@ void NPN_SetException(NPObject *npobj, const NPUTF8 *message)
     }
 }
 
+/* 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