michael@0: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: * vim: sw=4 ts=4 et : michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef PluginPRLibrary_h michael@0: #define PluginPRLibrary_h 1 michael@0: michael@0: #include "mozilla/PluginLibrary.h" michael@0: #include "nsNPAPIPlugin.h" michael@0: #include "npfunctions.h" michael@0: michael@0: namespace mozilla { michael@0: michael@0: class PluginPRLibrary : public PluginLibrary michael@0: { michael@0: public: michael@0: PluginPRLibrary(const char* aFilePath, PRLibrary* aLibrary) : michael@0: #if defined(XP_UNIX) && !defined(XP_MACOSX) michael@0: mNP_Initialize(nullptr), michael@0: #else michael@0: mNP_Initialize(nullptr), michael@0: #endif michael@0: mNP_Shutdown(nullptr), michael@0: mNP_GetMIMEDescription(nullptr), michael@0: #if defined(XP_UNIX) && !defined(XP_MACOSX) michael@0: mNP_GetValue(nullptr), michael@0: #endif michael@0: #if defined(XP_WIN) || defined(XP_MACOSX) michael@0: mNP_GetEntryPoints(nullptr), michael@0: #endif michael@0: mNPP_New(nullptr), michael@0: mNPP_ClearSiteData(nullptr), michael@0: mNPP_GetSitesWithData(nullptr), michael@0: mLibrary(aLibrary), michael@0: mFilePath(aFilePath) michael@0: { michael@0: NS_ASSERTION(mLibrary, "need non-null lib"); michael@0: // addref here?? michael@0: } michael@0: michael@0: virtual ~PluginPRLibrary() michael@0: { michael@0: // unref here?? michael@0: } michael@0: michael@0: virtual void SetPlugin(nsNPAPIPlugin*) { } michael@0: michael@0: virtual bool HasRequiredFunctions() { michael@0: mNP_Initialize = (NP_InitializeFunc) michael@0: PR_FindFunctionSymbol(mLibrary, "NP_Initialize"); michael@0: if (!mNP_Initialize) michael@0: return false; michael@0: michael@0: mNP_Shutdown = (NP_ShutdownFunc) michael@0: PR_FindFunctionSymbol(mLibrary, "NP_Shutdown"); michael@0: if (!mNP_Shutdown) michael@0: return false; michael@0: michael@0: mNP_GetMIMEDescription = (NP_GetMIMEDescriptionFunc) michael@0: PR_FindFunctionSymbol(mLibrary, "NP_GetMIMEDescription"); michael@0: #ifndef XP_MACOSX michael@0: if (!mNP_GetMIMEDescription) michael@0: return false; michael@0: #endif michael@0: michael@0: #if defined(XP_UNIX) && !defined(XP_MACOSX) michael@0: mNP_GetValue = (NP_GetValueFunc) michael@0: PR_FindFunctionSymbol(mLibrary, "NP_GetValue"); michael@0: if (!mNP_GetValue) michael@0: return false; michael@0: #endif michael@0: michael@0: #if defined(XP_WIN) || defined(XP_MACOSX) michael@0: mNP_GetEntryPoints = (NP_GetEntryPointsFunc) michael@0: PR_FindFunctionSymbol(mLibrary, "NP_GetEntryPoints"); michael@0: if (!mNP_GetEntryPoints) michael@0: return false; michael@0: #endif michael@0: return true; michael@0: } michael@0: michael@0: #if defined(XP_UNIX) && !defined(XP_MACOSX) && !defined(MOZ_WIDGET_GONK) michael@0: virtual nsresult NP_Initialize(NPNetscapeFuncs* bFuncs, michael@0: NPPluginFuncs* pFuncs, NPError* error); michael@0: #else michael@0: virtual nsresult NP_Initialize(NPNetscapeFuncs* bFuncs, michael@0: NPError* error); michael@0: #endif michael@0: michael@0: virtual nsresult NP_Shutdown(NPError* error); michael@0: virtual nsresult NP_GetMIMEDescription(const char** mimeDesc); michael@0: michael@0: virtual nsresult NP_GetValue(void *future, NPPVariable aVariable, michael@0: void *aValue, NPError* error); michael@0: michael@0: #if defined(XP_WIN) || defined(XP_MACOSX) michael@0: virtual nsresult NP_GetEntryPoints(NPPluginFuncs* pFuncs, NPError* error); michael@0: #endif michael@0: michael@0: virtual nsresult NPP_New(NPMIMEType pluginType, NPP instance, michael@0: uint16_t mode, int16_t argc, char* argn[], michael@0: char* argv[], NPSavedData* saved, michael@0: NPError* error); michael@0: michael@0: virtual nsresult NPP_ClearSiteData(const char* site, uint64_t flags, michael@0: uint64_t maxAge); michael@0: virtual nsresult NPP_GetSitesWithData(InfallibleTArray& result); michael@0: michael@0: virtual nsresult AsyncSetWindow(NPP instance, NPWindow* window); michael@0: virtual nsresult GetImageContainer(NPP instance, mozilla::layers::ImageContainer** aContainer); michael@0: virtual nsresult GetImageSize(NPP instance, nsIntSize* aSize); michael@0: virtual bool IsOOP() MOZ_OVERRIDE { return false; } michael@0: #if defined(XP_MACOSX) michael@0: virtual nsresult IsRemoteDrawingCoreAnimation(NPP instance, bool *aDrawing); michael@0: virtual nsresult ContentsScaleFactorChanged(NPP instance, double aContentsScaleFactor); michael@0: #endif michael@0: virtual nsresult SetBackgroundUnknown(NPP instance) MOZ_OVERRIDE; michael@0: virtual nsresult BeginUpdateBackground(NPP instance, michael@0: const nsIntRect&, gfxContext** aCtx) MOZ_OVERRIDE; michael@0: virtual nsresult EndUpdateBackground(NPP instance, michael@0: gfxContext* aCtx, const nsIntRect&) MOZ_OVERRIDE; michael@0: virtual void GetLibraryPath(nsACString& aPath) { aPath.Assign(mFilePath); } michael@0: michael@0: private: michael@0: NP_InitializeFunc mNP_Initialize; michael@0: NP_ShutdownFunc mNP_Shutdown; michael@0: NP_GetMIMEDescriptionFunc mNP_GetMIMEDescription; michael@0: #if defined(XP_UNIX) && !defined(XP_MACOSX) michael@0: NP_GetValueFunc mNP_GetValue; michael@0: #endif michael@0: #if defined(XP_WIN) || defined(XP_MACOSX) michael@0: NP_GetEntryPointsFunc mNP_GetEntryPoints; michael@0: #endif michael@0: NPP_NewProcPtr mNPP_New; michael@0: NPP_ClearSiteDataPtr mNPP_ClearSiteData; michael@0: NPP_GetSitesWithDataPtr mNPP_GetSitesWithData; michael@0: PRLibrary* mLibrary; michael@0: nsCString mFilePath; michael@0: }; michael@0: michael@0: michael@0: } // namespace mozilla michael@0: michael@0: #endif // ifndef PluginPRLibrary_h