123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- /* -*- 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"
- char*
- NPP_GetMIMEDescription(void)
- {
- return "application/x-winampx-1.0.0.1::Winamp Application Detector";
- }
- 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;
- CPlugin * pPlugin = new CPlugin(instance);
- if(pPlugin == NULL)
- return NPERR_OUT_OF_MEMORY_ERROR;
- instance->pdata = (void *)pPlugin;
- 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))
- 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)
- {
- if(instance == NULL)
- return NPERR_INVALID_INSTANCE_ERROR;
- NPError rv = NPERR_NO_ERROR;
- if(instance == NULL)
- return NPERR_GENERIC_ERROR;
- CPlugin * plugin = (CPlugin *)instance->pdata;
- if(plugin == NULL)
- return NPERR_GENERIC_ERROR;
- switch (variable) {
- case NPPVpluginNameString:
- *((char **)value) = "Winamp Application Detector";
- break;
- case NPPVpluginDescriptionString:
- *((char **)value) = "Winamp Application Detector";
- break;
- case NPPVpluginScriptableNPObject:
- *(NPObject **)value = plugin->GetScriptableObject();
- break;
- default:
- rv = NPERR_GENERIC_ERROR;
- }
- 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;
- return rv;
- }
- int32 NPP_WriteReady (NPP instance, NPStream *stream)
- {
- if(instance == NULL)
- return NPERR_INVALID_INSTANCE_ERROR;
- int32 rv = 0x0fffffff;
- 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;
- return rv;
- }
- NPError NPP_DestroyStream (NPP instance, NPStream *stream, NPError reason)
- {
- if(instance == NULL)
- return NPERR_INVALID_INSTANCE_ERROR;
- NPError rv = NPERR_NO_ERROR;
- 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;
- }
- 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;
- }
|