;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; This is a sample NPAPI plugin script file with all NPAPI calls present.
;;
;;
;; [Options] section specifies how to conduct the script.
;; 'first' key says from where to start the script (default 1).
;; 'last' key MUST present, and it says when to stop the script cycle.
;; All sections with numbers less than that of specified in the 'first' key and 
;; more than that of specified in the 'last' key are ignored by the script 
;; reading code.
;; So you can pick any part of existing long script for executing.
;;
;; Two other keys are optional, 'repetitions' being the number of times
;; the script cycle is going to be executed (default 1), and 'delay' being
;; the time delay in milliseconds between cycle repetitions (default 0)
;;
;; ['Numeric'] sections are actual script, each representing one NPAPI call.
;; Calls will be executed in their numeric order, some numbers could be
;; missing, so you can start to write your script with numbers multiple
;; by say ten in order to be able to insert new script items later.
;;
;; 'arg*' keys represent NPAPI function call arguments and they depend on
;; actual call. 
;;
;; In some cases you may not specify an argument if you have no control
;; over it. E.g. pointer to the plugin instance or pointer to a stream
;; created by NPN_NewStream. Scripter code will pick up right ones for you.
;; If you specify them explicitely it will take them but be prepared for
;; boom. This is appropriate if you want to test an API call with invalid
;; arguments.
;;
;; String should can be represented by actual string.
;;
;; Arguments other than numeric like NPPVariable, NPReason etc. should be 
;; represented by their enum types from npapi.h like NPPVpluginNameString 
;; or NPRES_DONE. Also NPBool should read TRUE or FALSE
;;
;; If you want to test real numeric values in place of this args, say
;; 0x00000000 for string pointers, use a special prefix '_true_numeric_value_'
;; The following example will execute NPN_GetURL(instance, -1, "some_target")
;; with real instance, invalid URL and valid target:
;;
;;    [1]
;;    APICall=NPN_GetURL
;;    arg2=true_numeric_value_-1
;;    arg3=some_target
;;
;; The latter is also true for NPBool, NPReason, NPNVariable ans NPPVariable.
;;
;; In case of NPRect* or NPSize* type of argument you can use either arg*=0x0000
;; (or any other value) or not using arg* use top=..., left=..., right=...,
;; bottom=... or width=..., height=...
;;
;; All these sections may also contain 'delay' key (default 0) which would insert
;; sleep time (in ms) after the corresponding call.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[Options]
first=1
last=23
repetitions=1
delay=0

[1]
APICall=NPN_Version
delay=0

[2]
APICall=NPN_GetURL
arg2=http://mozilla.org
arg3=_npapi_Display

[3]
APICall=NPN_GetURLNotify
arg2=http://mozilla.org
arg3=_npapi_Display
arg4=1

[4]
APICall=NPN_PostURL
arg2=http://mozilla.org
arg3=_npapi_Display
arg4=4
arg5=test
arg6=FALSE

[5]
APICall=NPN_PostURLNotify
arg2=http://mozilla.org
arg3=_npapi_Display
arg4=4
arg5=test
arg6=FALSE
arg7=1

;[6]
;APICall=NPN_RequestRead

[7]
APICall=NPN_NewStream
arg2=text/plain
arg3=_npapi_Display

[8]
APICall=NPN_Write
arg3=21
arg4=this is a test string

[9]
APICall=NPN_DestroyStream
arg3=NPRES_DONE

[10]
APICall=NPN_Status
arg2=Some message

[11]
APICall=NPN_UserAgent

[12]
APICall=NPN_MemAlloc
arg1=256

[13]
APICall=NPN_MemFree

[14]
APICall=NPN_MemFlush
arg1=256

[15]
APICall=NPN_ReloadPlugins
arg1=TRUE

[16]
APICall=NPN_GetJavaEnv

[17]
APICall=NPN_GetJavaPeer

[18]
APICall=NPN_GetValue
arg2=NPNVnetscapeWindow

[19]
APICall=NPN_SetValue
arg2=NPPVpluginNameString
arg3=NPAPI Tester Plugin

;; Case for setting new embed size
[20]
APICall=NPN_SetValue
arg2=NPPVpluginWindowSize
width=200
height=400

[21]
APICall=NPN_InvalidateRect
top=0
left=0
right=200
bottom=100

[22]
APICall=NPN_InvalidateRegion
arg2=0

[23]
APICall=NPN_ForceRedraw