--- a/browserplugins/browseraudiovideoplugin/src/BavpNPObject.cpp Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,821 +0,0 @@
-/*
-* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "BavpNPObject.h"
-#include "BavpLogger.h"
-
-#include <badesca.h>
-#include <stdlib.h>
-#include <string.h>
-#include <npscript.h>
-
-#include "BavpPlugin.h"
-#include "BavpController.h"
-#include "BavpControllerVideo.h"
-#include "BavpControllerAudio.h"
-
-
-const int NUM_METHOD_IDENTIFIERS = 5;
-const int ID_PLAY = 0;
-const int ID_STOP = 1;
-const int ID_PAUSE = 2;
-const int ID_FASTFORWARD = 3;
-const int ID_REWIND = 4;
-static NPIdentifier bavpMethodIdentifiers[NUM_METHOD_IDENTIFIERS];
-static const NPUTF8 *bavpIdentifierNames[NUM_METHOD_IDENTIFIERS] = {
- "play",
- "stop",
- "pause",
- "fastforward",
- "rewind",
-};
-
-const int NUM_PROPERTY_IDENTIFIERS = 10;
-const int ID_VOLUME = 0;
-const int ID_POSITION = 1;
-const int ID_DURATION = 2;
-const int ID_STATE_CHANGED_CALLBACK = 3;
-const int ID_STATE = 4;
-const int ID_ISVIDEOCLIP = 5;
-const int ID_ISSEEKABLE = 6;
-const int ID_CLIPNAME = 7;
-const int ID_FULLSCREENMODE = 8;
-const int ID_MIMETYPE = 9;
-static NPIdentifier bavpPropertyIdentifiers[NUM_PROPERTY_IDENTIFIERS];
-static const NPUTF8 *bavpPropertyIdentifierNames[NUM_PROPERTY_IDENTIFIERS] = {
- "volume",
- "position",
- "duration",
- "statechangedcallback",
- "state",
- "isvideoclip",
- "isseekable",
- "clipname",
- "fullscreenmode",
- "mimetype",
-};
-
-static bool _initializedIdentifiers = false;
-static void initializeIdentifiers()
-{
- if (!_initializedIdentifiers) {
- _initializedIdentifiers = true;
- NPN_GetStringIdentifiers (bavpPropertyIdentifierNames, NUM_PROPERTY_IDENTIFIERS, bavpPropertyIdentifiers);
- NPN_GetStringIdentifiers (bavpIdentifierNames, NUM_METHOD_IDENTIFIERS, bavpMethodIdentifiers);
- }
-};
-
-
-_LIT8(KNone,"None");
-_LIT8(KBuffering,"Buffering");
-_LIT8(KPlaying,"Playing");
-_LIT8(KPlayComplete,"Playcomplete");
-_LIT8(KStopped,"Stopped");
-_LIT8(KPaused,"Paused");
-_LIT8(KBadContent,"Badcontent");
-_LIT8(KFastForwarding,"Fastforwarding");
-_LIT8(KFFComplete,"Fastforward complete");
-_LIT8(KRewinding,"Rewinding");
-_LIT8(KRewindComplete,"Rewinding complete");
-_LIT8(KInvalidState,"Invalid State");
-
-
-static const TPtrC8 getState(int state)
-{
- TPtrC8 ret;
-
- switch (state)
- {
- case EBavpNone:
- ret.Set(KNone);
- break;
-
- case EBavpBuffering:
- ret.Set(KBuffering);
- break;
-
- case EBavpPlaying:
- ret.Set(KPlaying);
- break;
-
- case EBavpPlayComplete:
- ret.Set(KPlayComplete);
- break;
-
- case EBavpStopped:
- ret.Set(KStopped);
- break;
-
- case EBavpPaused:
- ret.Set(KPaused);
- break;
-
- case EBavpBadContent:
- ret.Set(KBadContent);
- break;
-
- case EBavpFastForwarding:
- ret.Set(KFastForwarding);
- break;
-
- case EBavpFastForwardComplete:
- ret.Set(KFFComplete);
- break;
-
- case EBavpRewinding:
- ret.Set(KRewinding);
- break;
-
- case EBavpRewindComplete:
- ret.Set(KRewindComplete);
- break;
-
- default:
- ret.Set(KInvalidState);
- break;
- }
- return ret;
-}
-
-static void reportVolumeResults(int vol,CBavpController *ctlr)
-{
- Log(ETrue,_L("SetProperty: Volume"));
-
- TInt setvol = ctlr->GetPlayerVolume();
- Log(ETrue,_L("Requested volume: "), vol);
- Log(ETrue,_L("Volume set to: "),setvol);
-
-
- if ( setvol == vol || setvol == KCRVolumeMax || setvol == KCRVolume0 )
- {
- Log(ETrue,_L("Result: Passed"));
- }
- else
- {
- Log(ETrue,_L("Result: Failed"));
- }
-}
-
-static void reportPositionResultsL(int pos, CBavpController *ctlr)
-{
- Log(ETrue,_L("SetProperty: Position"));
-
- if ( !(ctlr->IsClipSeekable()) && !(ctlr->IsClipLocalMedia()) )
- {
- Log(ETrue,_L("Cannot set position for non-seekable and non-local media content"));
- return;
- }
-
- TTimeIntervalMicroSeconds ms = ctlr->getPositionL();
- TTimeIntervalMicroSeconds durationms = ctlr->Duration();
-
- int setpos = (int)ms.Int64();
- int duration = (int)durationms.Int64();
-
- Log(ETrue,_L("Requested position: "), pos);
- Log(ETrue,_L("Position set to: "),setpos);
-
- if ( setpos == pos || setpos == duration || setpos == 0)
- {
- Log(ETrue,_L("Result: Passed"));
- }
- else
- {
- Log(ETrue,_L("Result: Failed"));
- }
-}
-
-static void reportPlayResultsL(int initState, CBavpController *ctlr)
-{
- if ( ctlr->IsClipVideo())
- {
- TPtrC8 expectedState = getState(EBavpPlaying);
- TPtrC8 expectedState2 = getState(EBavpBuffering);
- TPtrC8 actualState = getState(ctlr->State());
-
- if ( initState == EBavpStopped ||
- initState == EBavpPlayComplete ||
- initState == EBavpRewindComplete ||
- initState == EBavpFastForwardComplete ||
- initState == EBavpBadContent)
- {
- TTimeIntervalMicroSeconds ms = ctlr->getPositionL();
- int actualpos = (int)ms.Int64();
-
- Log(ETrue,_L("Expected Position: "), 0);
- Log(ETrue,_L("Actual Position: "),actualpos);
-
- if ( actualpos != 0)
- {
- Log(ETrue,_L("Result: Position test failed"));
- }
- else
- {
- Log(ETrue,_L("Result:Position test passed"));
- }
- }
-
- if ( ctlr->IsClipOnDemand() && initState == EBavpStopped )
- {
- Log(ETrue,_L8("Expected State: "), expectedState2);
- Log(ETrue,_L8("Actual State: "), actualState);
- }
- else
- {
- Log(ETrue,_L8("Expected State: "), expectedState);
- Log(ETrue,_L8("Actual State: "), actualState);
- }
-
- if ( actualState.Compare(expectedState) != 0 && actualState.Compare(expectedState2) != 0)
- {
- Log(ETrue,_L("Result: State test failed"));
- }
- else
- {
- Log(ETrue,_L("Result: State test passed"));
- }
- }
- else
- {
- TPtrC8 expectedState = getState(EBavpPlaying);
- TPtrC8 actualState = getState(ctlr->State());
-
- Log(ETrue,_L8("Expected State: "), expectedState);
- Log(ETrue,_L8("Actual State: "), actualState);
-
- if ( expectedState.Compare(actualState) != 0)
- {
- Log(ETrue,_L("Result: Failed"));
- }
- else
- {
- Log(ETrue,_L("Result: Passed"));
- }
- }
-}
-
-static void reportStopResultsL(CBavpController *ctlr)
-{
- TPtrC8 expectedState = getState(EBavpStopped);
- TPtrC8 actualState = getState(ctlr->State());
- TTimeIntervalMicroSeconds ms = ctlr->getPositionL();
- int position = (int)ms.Int64();
-
- Log(ETrue,_L8("Expected State: "), expectedState);
- Log(ETrue,_L8("Actual State: "), actualState);
- Log(ETrue,_L("Current Position: "), position);
-
- if ( (position != 0) || (expectedState.Compare(actualState) != 0) )
- {
- Log(ETrue,_L("Result: Failed"));
- }
- else
- {
- Log(ETrue,_L("Result: Passed"));
- }
-}
-
-static void reportRewindResults(CBavpController *ctlr)
-{
- if ( ctlr->IsClipVideo() )
- {
- if ( !(ctlr->IsClipSeekable()) && !(ctlr->IsClipLocalMedia()) )
- {
- Log(ETrue,_L("Result: Rewind is not applicable to non-seekable and non-local media content"));
- }
- else
- {
- TPtrC8 expectedState = getState(EBavpRewinding);
- TPtrC8 expectedState2 = getState(EBavpRewindComplete);
- TPtrC8 actualState = getState(ctlr->State());
-
- Log(ETrue,_L8("Expected State: "), expectedState);
- Log(ETrue,_L8("Actual State: "), actualState);
-
- if ( (expectedState.Compare(actualState) != 0) && (expectedState2.Compare(actualState) != 0) )
- {
- Log(ETrue,_L("Result: Failed"));
- }
- else
- {
- Log(ETrue,_L("Result: Passed"));
- }
- }
- }
- else
- {
- Log(ETrue,_L("Result: Rewind is not applicable to Audio"));
- }
-
-}
-
-static void reportFFResults(CBavpController *ctlr)
-{
- if ( ctlr->IsClipVideo() )
- {
- if ( !(ctlr->IsClipSeekable()) && !(ctlr->IsClipLocalMedia()) )
- {
- Log(ETrue,_L("Result: Fastforward is not applicable to non-seekable and non-local media content"));
- }
- else
- {
- TPtrC8 expectedState = getState(EBavpFastForwarding);
- TPtrC8 expectedState2 = getState(EBavpFastForwardComplete);
- TPtrC8 actualState = getState(ctlr->State());
-
- Log(ETrue,_L8("Expected State: "), expectedState);
- Log(ETrue,_L8("Actual State: "), actualState);
-
- if ( (expectedState.Compare(actualState) != 0) && (expectedState2.Compare(actualState) != 0) )
- {
- Log(ETrue,_L("Result: Failed"));
- }
- else
- {
- Log(ETrue,_L("Result: Passed"));
- }
- }
- }
- else
- {
- Log(ETrue,_L("Result: Fastforward is not applicable to Audio"));
- }
-
-}
-
-static void reportPauseResultsL(CBavpController *ctlr)
-{
- TBool seekablevideo = (ctlr->IsClipSeekable() && ctlr->IsClipVideo());
- TBool seekableaudio = (ctlr->IsClipSeekable() && !ctlr->IsClipVideo()
- && (ctlr->State() == EBavpPaused || ctlr->State() == EBavpPlaying));
-
- if ( seekablevideo || seekableaudio )
- {
- TPtrC8 expectedState = getState(EBavpPaused);
- TPtrC8 actualState = getState(ctlr->State());
-
- Log(ETrue,_L8("Expected State: "), expectedState);
- Log(ETrue,_L8("Actual State: "), actualState);
-
- if ( (expectedState.Compare(actualState) != 0) )
- {
- Log(ETrue,_L("Result: Failed"));
- }
- else
- {
- Log(ETrue,_L("Result: Passed"));
- }
-
- }
- else
- {
- reportStopResultsL(ctlr);
- }
-}
-
-static void BavpDesToNpvariant(TPtrC& string, NPVariant*& variant)
-{
- char* newString = NULL;
- if (string.Length()) {
- newString = new char[string.Length()];
- }
- if (newString) {
- TPtr8 newStringPtr((unsigned char*)newString, 0, string.Length());
- newStringPtr.Copy(string);
- STRINGN_TO_NPVARIANT(newString, string.Length(), *variant);
- }
-}
-
-static void BavpDesToNpvariant(TPtrC8& string, NPVariant*& variant)
-{
- char* newString = NULL;
- if (string.Length()) {
- newString = new char[string.Length()];
- }
- if (newString) {
- Mem::Copy(newString, string.Ptr(), string.Length());
- STRINGN_TO_NPVARIANT(newString, string.Length(), *variant);
- }
-}
-
-NPObject *BavpAllocate ()
-{
- BavpNPObject *newInstance = (BavpNPObject *)User::AllocZ (sizeof(BavpNPObject));
-
- return (NPObject *)newInstance;
-}
-
-void BavpInvalidate ()
-{
- // Make sure we've released any remainging references to JavaScript
- // objects.
-}
-
-void BavpDeallocate (BavpNPObject *obj)
-{
- if (obj->stateChangedCallback)
- NPN_ReleaseObject((struct NPObject*)obj->stateChangedCallback);
- User::Free ((void *)obj);
-}
-
-bool BavpHasMethod(BavpNPObject */*obj*/, NPIdentifier name)
-{
- int i;
- for (i = 0; i < NUM_METHOD_IDENTIFIERS; i++) {
- if (name == bavpMethodIdentifiers[i]){
- return true;
- }
- }
- return false;
-}
-
-
-bool BavpInvokeL(BavpNPObject *obj, NPIdentifier name, const NPVariant */* args */, uint32_t /* argCount */, NPVariant *result)
-{
- if (!obj->plugin) {
- NULL_TO_NPVARIANT(*result);
- return true;
- }
-
- CBavpController *ctlr = obj->plugin->Controller();
-
- if (!ctlr)
- {
- NULL_TO_NPVARIANT(*result);
- return true;
- }
-
- int initState = ctlr->State();
- Log( ETrue, _L("\n"));
- Log( ETrue, _L8("Initial state:"), getState(initState));
-
- if (name == bavpMethodIdentifiers[ID_PLAY])
- {
- Log( ETrue, _L("Method Invoked: Play"));
- if ( ctlr->State() != EBavpPlaying )
- {
- ctlr->PlayL();
- }
- VOID_TO_NPVARIANT(*result);
- reportPlayResultsL(initState,ctlr);
- }
- else if (name == bavpMethodIdentifiers[ID_STOP])
- {
- Log( ETrue, _L("Method Invoked: Stop"));
- if ( ctlr->State() != EBavpStopped )
- {
- ctlr->Stop();
- }
- VOID_TO_NPVARIANT(*result);
- reportStopResultsL(ctlr);
- }
- else if (name == bavpMethodIdentifiers[ID_PAUSE])
- {
- Log( ETrue, _L("Method Invoked: Pause"));
- if ( ctlr->State() != EBavpPaused )
- {
- ctlr->PauseL();
- }
- VOID_TO_NPVARIANT(*result);
- reportPauseResultsL(ctlr);
- }
- else if (name == bavpMethodIdentifiers[ID_FASTFORWARD])
- {
- Log( ETrue, _L("Method Invoked: FastForward"));
- if ( ctlr->State() == EBavpRewinding )
- {
- ctlr->PauseL();
- }
-
- if ( ctlr->State() != EBavpFastForwarding )
- {
- ctlr->FastForwardL();
- }
- VOID_TO_NPVARIANT(*result);
- reportFFResults(ctlr);
- }
- else if (name == bavpMethodIdentifiers[ID_REWIND])
- {
- Log( ETrue, _L("Method Invoked: Rewind"));
- if ( ctlr->State() == EBavpFastForwarding )
- {
- ctlr->PauseL();
- }
-
- if ( ctlr->State() != EBavpRewinding )
- {
- ctlr->RewindL();
- }
- VOID_TO_NPVARIANT(*result);
- reportRewindResults(ctlr);
- }
- else
- {
- Log( ETrue, _L("Unknown method invoked"));
- return false;
- }
-
- return true;
-}
-
-bool BavpHasProperty(BavpNPObject */*obj*/, NPIdentifier name)
-{
- int i;
- for (i = 0; i < NUM_PROPERTY_IDENTIFIERS; i++)
- {
- if (name == bavpPropertyIdentifiers[i]){
- return true;
- }
- }
- return false;
-}
-
-bool BavpGetPropertyL (BavpNPObject *obj, NPIdentifier name, NPVariant *variant)
-{
- if (!obj->plugin || !(obj->plugin->Controller())){
- NULL_TO_NPVARIANT(*variant);
- return false;
- }
-
-
- if (name == bavpPropertyIdentifiers[ID_VOLUME])
- {
- INT32_TO_NPVARIANT(obj->plugin->Controller()->GetPlayerVolume(), *variant);
- }
-
- else if (name == bavpPropertyIdentifiers[ID_POSITION])
- {
- TTimeIntervalMicroSeconds ms = obj->plugin->Controller()->getPositionL();
- int time = (int)ms.Int64();
- INT32_TO_NPVARIANT(time, *variant);
-
- }
-
- else if (name == bavpPropertyIdentifiers[ID_DURATION])
- {
- TTimeIntervalMicroSeconds ms = obj->plugin->Controller()->Duration();
- int time = (int)ms.Int64();
- INT32_TO_NPVARIANT(time, *variant);
- }
-
- else if (name == bavpPropertyIdentifiers[ID_STATE_CHANGED_CALLBACK])
- {
- if (obj->stateChangedCallback)
- OBJECT_TO_NPVARIANT(obj->stateChangedCallback, *variant);
- else
- NULL_TO_NPVARIANT(*variant);
- }
- else if (name == bavpPropertyIdentifiers[ID_STATE])
- {
- TPtrC8 state = getState((TInt)(obj->plugin->Controller()->State()));
- BavpDesToNpvariant(state, variant);
- }
- else if (name == bavpPropertyIdentifiers[ID_ISVIDEOCLIP])
- {
- BOOLEAN_TO_NPVARIANT(obj->plugin->Controller()->IsClipVideo(), *variant);
- }
- else if (name == bavpPropertyIdentifiers[ID_ISSEEKABLE])
- {
- BOOLEAN_TO_NPVARIANT(obj->plugin->Controller()->IsClipSeekable(), *variant);
- }
- else if (name == bavpPropertyIdentifiers[ID_CLIPNAME])
- {
- const HBufC& name = obj->plugin->Controller()->ClipName();
-
- TInt lastSlashPos = name.LocateReverse( '/' );
- //retrieve the clip name
- if( lastSlashPos == KErrNotFound ) {
- lastSlashPos = 0;
- }
-
- TInt len = name.Length()-lastSlashPos-1;
- TPtrC namePtr( name.Right(len));
- BavpDesToNpvariant(namePtr, variant);
- }
- else if (name == bavpPropertyIdentifiers[ID_FULLSCREENMODE])
- {
- BOOLEAN_TO_NPVARIANT(obj->plugin->Controller()->IsClipFullScreen(), *variant);
- }
- else if (name == bavpPropertyIdentifiers[ID_MIMETYPE])
- {
- const HBufC8& name = obj->plugin->Controller()->MimeType();
- TPtrC8 namePtr(name);
- BavpDesToNpvariant(namePtr, variant);
- }
- else
- {
- return false;
- }
-
- return true;
-
-}
-
-
-bool BavpSetPropertyL (BavpNPObject *obj, NPIdentifier name, NPVariant *variant)
-{
- if (!obj->plugin)
- return false;
-
- CBavpController *ctlr = obj->plugin->Controller();
-
- if (!ctlr)
- return false;
-
- Log(ETrue,_L("\n"));
-
- if (name == bavpPropertyIdentifiers[ID_VOLUME])
- {
- int vol = 0;
-
- if (NPVARIANT_IS_DOUBLE(*variant))
- vol = (int)NPVARIANT_TO_DOUBLE(*variant);
- else if (NPVARIANT_IS_INT32(*variant))
- vol = NPVARIANT_TO_INT32(*variant);
- else
- {
- Log(ETrue,_L("SetProperty: Not a valid value for volume"));
- return false;
- }
-
- ctlr->SetPlayerVolume(vol);
- reportVolumeResults(vol,ctlr);
- }
-
- else if (name == bavpPropertyIdentifiers[ID_POSITION])
- {
- int pos = 0;
-
- if (NPVARIANT_IS_DOUBLE(*variant))
- pos = (int)NPVARIANT_TO_DOUBLE(*variant);
- else if (NPVARIANT_IS_INT32(*variant))
- pos = NPVARIANT_TO_INT32(*variant);
- else
- {
- Log(ETrue,_L("SetProperty: Not a valid value for position"));
- return false;
- }
-
- TInt64 ms(pos);
- CBavpController *ctlr = obj->plugin->Controller();
- int state = ctlr->State();
-
- if ( state != EBavpRewinding && state != EBavpFastForwarding )
- {
- ctlr->setPositionL(TTimeIntervalMicroSeconds(ms));
- }
- else
- {
- ctlr->Stop();
- ctlr->setPositionL(TTimeIntervalMicroSeconds(ms));
- }
-
- reportPositionResultsL(pos,ctlr);
- }
-
- else if (name == bavpPropertyIdentifiers[ID_STATE_CHANGED_CALLBACK])
- {
- //int count = 0;
- if (NPVARIANT_IS_NULL(*variant))
- {
- if (obj->stateChangedCallback)
- {
- NPN_ReleaseObject((struct NPObject*)obj->stateChangedCallback);
- obj->stateChangedCallback = 0;
- }
- }
- else if (NPVARIANT_IS_OBJECT(*variant))
- {
- NPObject* callback = NPVARIANT_TO_OBJECT(*variant);
- if (obj->stateChangedCallback)
- {
- NPN_ReleaseObject((struct NPObject*)obj->stateChangedCallback);
- obj->stateChangedCallback = 0;
- }
- NPN_RetainObject((struct NPObject*)callback);
- obj->stateChangedCallback = callback;
- }
- return true;
- }
-
- else if (name == bavpPropertyIdentifiers[ID_FULLSCREENMODE])
- {
- int pos = 0;
- TBool newmode, needtochange;
- CBavpController *ctlr = obj->plugin->Controller();
-
- if ( !(ctlr->IsClipVideo()) )
- {
- Log(ETrue,_L("Fullscreenmode not applicable for audio"));
- return false;
- }
-
- if (NPVARIANT_IS_INT32(*variant))
- {
- pos = NPVARIANT_TO_INT32(*variant);
- }
- else if (NPVARIANT_IS_DOUBLE(*variant))
- {
- pos = (int)NPVARIANT_TO_DOUBLE(*variant);
- }
- else if (NPVARIANT_IS_BOOLEAN(*variant))
- {
- pos = NPVARIANT_TO_BOOLEAN(*variant) ? 1 : 0;
- }
-
- else
- {
- Log(ETrue,_L("SetProperty: Not a valid value for fullscreenmode"));
- return false;
- }
-
- Log(ETrue,_L("SetProperty: Fullscreenmode"));
-
- newmode = (pos == 1);
- needtochange = (ctlr->IsClipFullScreen() != newmode);
-
- if ( ctlr->IsClipFullScreen() )
- {
- Log(ETrue,_L("Current mode: Fullscreen"));
- }
- else
- {
- Log(ETrue,_L("Current mode: Normalscreen"));
- }
-
- if ( newmode )
- {
- Log(ETrue,_L("Requested mode: Fullscreen"));
- }
- else
- {
- Log(ETrue,_L("Requested mode: Normalscreen"));
- }
-
-
- if ( !needtochange )
- {
- Log(ETrue,_L("No need for mode change"));
- return false;
- }
-
- ((CBavpControllerVideo *)ctlr)->HandleCommandL(EBavpCmdPlayFullScreen);
- }
- else
- {
- return false;
- }
-
- return true;
-}
-
-
-static NPClass _BavpNPClass = {
- 0,
- (NPAllocateFunctionPtr) BavpAllocate,
- (NPDeallocateFunctionPtr) BavpDeallocate,
- (NPInvalidateFunctionPtr) BavpInvalidate,
- (NPHasMethodFunctionPtr) BavpHasMethod,
- (NPInvokeFunctionPtr) BavpInvokeL,
- (NPInvokeDefaultFunctionPtr) 0,
- (NPHasPropertyFunctionPtr) BavpHasProperty,
- (NPGetPropertyFunctionPtr) BavpGetPropertyL,
- (NPSetPropertyFunctionPtr) BavpSetPropertyL,
- (NPRemovePropertyFunctionPtr) 0
-};
-static NPClass *BavpNPClass = &_BavpNPClass;
-
-
-BavpNPObject* BavpNPObject_new(NPP instance)
-{
- initializeIdentifiers();
- BavpNPObject *self = (BavpNPObject *)NPN_CreateObject (instance, BavpNPClass);
- return self;
-}
-
-void BavpNPObject_stateChanged(BavpNPObject* obj, char* state)
-{
- if (!obj || !obj->stateChangedCallback)
- return;
- NPVariant arg;
- NPVariant res;
- STRINGZ_TO_NPVARIANT(state, arg);
- NPN_InvokeDefault(obj->nppInstance, obj->stateChangedCallback, &arg, 1, &res);
-}