np_pluginbase.h 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /* ***** BEGIN LICENSE BLOCK *****
  2. * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3. *
  4. * The contents of this file are subject to the Mozilla Public License Version
  5. * 1.1 (the "License"); you may not use this file except in compliance with
  6. * the License. You may obtain a copy of the License at
  7. * http://www.mozilla.org/MPL/
  8. *
  9. * Software distributed under the License is distributed on an "AS IS" basis,
  10. * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. * for the specific language governing rights and limitations under the
  12. * License.
  13. *
  14. * The Original Code is mozilla.org code.
  15. *
  16. * The Initial Developer of the Original Code is
  17. * Netscape Communications Corporation.
  18. * Portions created by the Initial Developer are Copyright (C) 1998
  19. * the Initial Developer. All Rights Reserved.
  20. *
  21. * Contributor(s):
  22. *
  23. * Alternatively, the contents of this file may be used under the terms of
  24. * either the GNU General Public License Version 2 or later (the "GPL"), or
  25. * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  26. * in which case the provisions of the GPL or the LGPL are applicable instead
  27. * of those above. If you wish to allow use of your version of this file only
  28. * under the terms of either the GPL or the LGPL, and not to allow others to
  29. * use your version of this file under the terms of the MPL, indicate your
  30. * decision by deleting the provisions above and replace them with the notice
  31. * and other provisions required by the GPL or the LGPL. If you do not delete
  32. * the provisions above, a recipient may use your version of this file under
  33. * the terms of any one of the MPL, the GPL or the LGPL.
  34. *
  35. * ***** END LICENSE BLOCK ***** */
  36. #ifndef N_NP_PLUGIN_BASE_H
  37. #define N_NP_PLUGIN_BASE_H
  38. #include "np_plat.h"
  39. struct NPPluginCreateData
  40. {
  41. NPP instance;
  42. NPMIMEType type;
  43. uint16 mode;
  44. int16 argc;
  45. char** argn;
  46. char** argv;
  47. NPSavedData* saved;
  48. };
  49. class NPPluginBase
  50. {
  51. public:
  52. // these three methods must be implemented in the derived
  53. // class platform specific way
  54. virtual NPBool Open(NPWindow* aWindow) = 0;
  55. virtual void Close() = 0;
  56. virtual NPBool IsOpen() = 0;
  57. // implement all or part of those methods in the derived
  58. // class as needed
  59. virtual NPError SetWindow(NPWindow* pNPWindow) { return NPERR_NO_ERROR; }
  60. virtual NPError NewStream(NPMIMEType type, NPStream* stream,
  61. NPBool seekable, uint16* stype) { return NPERR_NO_ERROR; }
  62. virtual NPError DestroyStream(NPStream *stream, NPError reason) { return NPERR_NO_ERROR; }
  63. virtual void StreamAsFile(NPStream* stream, const char* fname) { return; }
  64. virtual int32 WriteReady(NPStream *stream) { return 0x0fffffff; }
  65. virtual int32 Write(NPStream *stream, int32 offset,
  66. int32 len, void *buffer) { return len; }
  67. virtual void Print(NPPrint* printInfo) { return; }
  68. virtual uint16 HandleEvent(void* event) { return 0; }
  69. virtual void URLNotify(const char* url, NPReason reason,
  70. void* notifyData) { return; }
  71. virtual NPError GetValue(NPPVariable variable, void *value) { return NPERR_NO_ERROR; }
  72. virtual NPError SetValue(NPNVariable variable, void *value) { return NPERR_NO_ERROR; }
  73. };
  74. // functions that should be implemented for each specific plugin
  75. NPError NS_PluginInitialize();
  76. void NS_PluginShutdown();
  77. // creation and destruction of the object of the derived class
  78. NPPluginBase* NS_NewPluginInstance(NPPluginCreateData * aCreateDataStruct);
  79. void NS_DestroyPluginInstance(NPPluginBase * aPlugin);
  80. #ifdef XP_UNIX
  81. // global to get plugins name & description
  82. NPError NS_PluginGetValue(NPPVariable aVariable, void *aValue);
  83. #endif
  84. #endif // N_NP_PLUGIN_BASE_H