Tidy up JS_Defines.h

This is a purely mechanical change, no new functionality.

- Expand some macros which were merely a short-cut to save
  typing but reduced transparency.

- Put GET_VALUE_TYPE() implementation into a .cpp file.

This is a portion of the patch from issue 908033002 at
patchset 40001 (http://crrev.com/908033002#ps40001)

R=brucedawson@chromium.org

Review URL: https://codereview.chromium.org/927263003
diff --git a/fpdfsdk/include/javascript/Document.h b/fpdfsdk/include/javascript/Document.h
index 764bbbc..75a8013 100644
--- a/fpdfsdk/include/javascript/Document.h
+++ b/fpdfsdk/include/javascript/Document.h
@@ -86,78 +86,78 @@
 	virtual ~Document();
 
 public:
-	FX_BOOL	ADBE(OBJ_PROP_PARAMS);
-	FX_BOOL	author(OBJ_PROP_PARAMS);
-	FX_BOOL	baseURL(OBJ_PROP_PARAMS);
-	FX_BOOL	bookmarkRoot(OBJ_PROP_PARAMS);
-	FX_BOOL	calculate(OBJ_PROP_PARAMS);
-	FX_BOOL	Collab(OBJ_PROP_PARAMS);
-	FX_BOOL	creationDate(OBJ_PROP_PARAMS);
-	FX_BOOL	creator(OBJ_PROP_PARAMS);
-	FX_BOOL	delay(OBJ_PROP_PARAMS);
-	FX_BOOL	dirty(OBJ_PROP_PARAMS);
-	FX_BOOL	documentFileName(OBJ_PROP_PARAMS);
-	FX_BOOL external(OBJ_PROP_PARAMS);
-	FX_BOOL	filesize(OBJ_PROP_PARAMS);
-	FX_BOOL	icons(OBJ_PROP_PARAMS);
-	FX_BOOL	info(OBJ_PROP_PARAMS);
-	FX_BOOL	keywords(OBJ_PROP_PARAMS);
-	FX_BOOL	layout(OBJ_PROP_PARAMS);
-	FX_BOOL	media(OBJ_PROP_PARAMS);
-	FX_BOOL	modDate(OBJ_PROP_PARAMS);
-	FX_BOOL	mouseX(OBJ_PROP_PARAMS);
-	FX_BOOL	mouseY(OBJ_PROP_PARAMS);
-	FX_BOOL	numFields(OBJ_PROP_PARAMS);
-	FX_BOOL	numPages(OBJ_PROP_PARAMS);
-	FX_BOOL	pageNum(OBJ_PROP_PARAMS);
-	FX_BOOL	pageWindowRect(OBJ_PROP_PARAMS);
-	FX_BOOL	path(OBJ_PROP_PARAMS);
-	FX_BOOL	producer(OBJ_PROP_PARAMS);
-	FX_BOOL	subject(OBJ_PROP_PARAMS);
-	FX_BOOL	title(OBJ_PROP_PARAMS);
-	FX_BOOL	zoom(OBJ_PROP_PARAMS);
-	FX_BOOL	zoomType(OBJ_PROP_PARAMS);
+	FX_BOOL	ADBE(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	author(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	baseURL(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	bookmarkRoot(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	calculate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	Collab(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	creationDate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	creator(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	delay(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	dirty(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL external(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	filesize(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	icons(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	info(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	keywords(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	layout(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	media(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	modDate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	mouseX(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	mouseY(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	numFields(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	numPages(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	pageNum(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	path(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	producer(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	subject(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	title(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	zoom(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL	zoomType(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
 
-	FX_BOOL addAnnot(OBJ_METHOD_PARAMS);
-	FX_BOOL	addField(OBJ_METHOD_PARAMS);
-	FX_BOOL	addLink(OBJ_METHOD_PARAMS);
-	FX_BOOL	addIcon(OBJ_METHOD_PARAMS);
-	FX_BOOL	calculateNow(OBJ_METHOD_PARAMS);
-	FX_BOOL	closeDoc(OBJ_METHOD_PARAMS);
-	FX_BOOL	createDataObject(OBJ_METHOD_PARAMS);
-	FX_BOOL deletePages(OBJ_METHOD_PARAMS);
-	FX_BOOL	exportAsText(OBJ_METHOD_PARAMS);
-	FX_BOOL	exportAsFDF(OBJ_METHOD_PARAMS);
-	FX_BOOL	exportAsXFDF(OBJ_METHOD_PARAMS);
-	FX_BOOL extractPages(OBJ_METHOD_PARAMS);
-	FX_BOOL	getAnnot(OBJ_METHOD_PARAMS);
-	FX_BOOL	getAnnots(OBJ_METHOD_PARAMS);
-	FX_BOOL	getAnnot3D(OBJ_METHOD_PARAMS);
-	FX_BOOL	getAnnots3D(OBJ_METHOD_PARAMS);
-	FX_BOOL	getField(OBJ_METHOD_PARAMS);
-	FX_BOOL	getIcon(OBJ_METHOD_PARAMS);
-	FX_BOOL	getLinks(OBJ_METHOD_PARAMS);
-	FX_BOOL	getNthFieldName(OBJ_METHOD_PARAMS);
-	FX_BOOL	getOCGs(OBJ_METHOD_PARAMS);
-	FX_BOOL	getPageBox(OBJ_METHOD_PARAMS);
-	FX_BOOL	getPageNthWord(OBJ_METHOD_PARAMS);
-	FX_BOOL	getPageNthWordQuads(OBJ_METHOD_PARAMS);
-	FX_BOOL	getPageNumWords(OBJ_METHOD_PARAMS);
-	FX_BOOL getPrintParams(OBJ_METHOD_PARAMS);
-	FX_BOOL getURL(OBJ_METHOD_PARAMS);
-	FX_BOOL	importAnFDF(OBJ_METHOD_PARAMS);
-	FX_BOOL	importAnXFDF(OBJ_METHOD_PARAMS);
-	FX_BOOL	importTextData(OBJ_METHOD_PARAMS);
-	FX_BOOL insertPages(OBJ_METHOD_PARAMS);
-	FX_BOOL	mailForm(OBJ_METHOD_PARAMS);
-	FX_BOOL	print(OBJ_METHOD_PARAMS);
-	FX_BOOL	removeField(OBJ_METHOD_PARAMS);
-	FX_BOOL replacePages(OBJ_METHOD_PARAMS);
-	FX_BOOL	resetForm(OBJ_METHOD_PARAMS);
-	FX_BOOL	saveAs(OBJ_METHOD_PARAMS);
-	FX_BOOL	submitForm(OBJ_METHOD_PARAMS);
-	FX_BOOL	mailDoc(OBJ_METHOD_PARAMS);
-	FX_BOOL	removeIcon(OBJ_METHOD_PARAMS);
+	FX_BOOL addAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	addField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	addLink(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	calculateNow(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	closeDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	createDataObject(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL deletePages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	exportAsText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	exportAsFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	exportAsXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL extractPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getAnnots(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getAnnot3D(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getAnnots3D(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getNthFieldName(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getOCGs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getPageBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getPageNthWordQuads(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL getURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	importAnFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	importAnXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	importTextData(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL insertPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	mailForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	print(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	removeField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL replacePages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	resetForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	saveAs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	mailDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL	removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 	
 public:
 	void AttachDoc(CPDFSDK_Document* pDoc);
diff --git a/fpdfsdk/include/javascript/Field.h b/fpdfsdk/include/javascript/Field.h
index 2aea85a..8bbb8cd 100644
--- a/fpdfsdk/include/javascript/Field.h
+++ b/fpdfsdk/include/javascript/Field.h
@@ -98,85 +98,85 @@
 	Field(CJS_Object* pJSObject);	
 	virtual ~Field(void);
 
-    FX_BOOL alignment(OBJ_PROP_PARAMS);
-    FX_BOOL borderStyle(OBJ_PROP_PARAMS);
-	FX_BOOL buttonAlignX(OBJ_PROP_PARAMS);
-	FX_BOOL buttonAlignY(OBJ_PROP_PARAMS);
-	FX_BOOL buttonFitBounds(OBJ_PROP_PARAMS);
-	FX_BOOL buttonPosition(OBJ_PROP_PARAMS);
-	FX_BOOL buttonScaleHow(OBJ_PROP_PARAMS);
-    FX_BOOL buttonScaleWhen(OBJ_PROP_PARAMS);
-	FX_BOOL calcOrderIndex(OBJ_PROP_PARAMS);
-	FX_BOOL charLimit(OBJ_PROP_PARAMS);
-	FX_BOOL comb(OBJ_PROP_PARAMS);
-	FX_BOOL commitOnSelChange(OBJ_PROP_PARAMS);
-	FX_BOOL currentValueIndices(OBJ_PROP_PARAMS);
-    FX_BOOL defaultStyle(OBJ_PROP_PARAMS);
-	FX_BOOL defaultValue(OBJ_PROP_PARAMS);
-	FX_BOOL doNotScroll(OBJ_PROP_PARAMS);
-	FX_BOOL doNotSpellCheck(OBJ_PROP_PARAMS);
-	FX_BOOL delay(OBJ_PROP_PARAMS);
-	FX_BOOL display(OBJ_PROP_PARAMS);
-    FX_BOOL doc(OBJ_PROP_PARAMS);
-	FX_BOOL editable(OBJ_PROP_PARAMS);
-	FX_BOOL exportValues(OBJ_PROP_PARAMS);
-	FX_BOOL fileSelect(OBJ_PROP_PARAMS);
-	FX_BOOL fillColor(OBJ_PROP_PARAMS);
-	FX_BOOL hidden(OBJ_PROP_PARAMS);
-    FX_BOOL highlight(OBJ_PROP_PARAMS);
-	FX_BOOL lineWidth(OBJ_PROP_PARAMS);
-	FX_BOOL multiline(OBJ_PROP_PARAMS);
-	FX_BOOL multipleSelection(OBJ_PROP_PARAMS);
-	FX_BOOL name(OBJ_PROP_PARAMS);
-	FX_BOOL numItems(OBJ_PROP_PARAMS);
-    FX_BOOL page(OBJ_PROP_PARAMS);
-	FX_BOOL password(OBJ_PROP_PARAMS);
-	FX_BOOL print(OBJ_PROP_PARAMS);
-	FX_BOOL radiosInUnison(OBJ_PROP_PARAMS);
-	FX_BOOL readonly(OBJ_PROP_PARAMS);
-	FX_BOOL rect(OBJ_PROP_PARAMS);
-    FX_BOOL required(OBJ_PROP_PARAMS);
-	FX_BOOL richText(OBJ_PROP_PARAMS);
-	FX_BOOL richValue(OBJ_PROP_PARAMS);
-	FX_BOOL rotation(OBJ_PROP_PARAMS);
-	FX_BOOL strokeColor(OBJ_PROP_PARAMS);
-	FX_BOOL style(OBJ_PROP_PARAMS);
-	FX_BOOL submitName(OBJ_PROP_PARAMS);
-	FX_BOOL textColor(OBJ_PROP_PARAMS);
-	FX_BOOL textFont(OBJ_PROP_PARAMS);
-	FX_BOOL textSize(OBJ_PROP_PARAMS);
-	FX_BOOL type(OBJ_PROP_PARAMS);
-	FX_BOOL userName(OBJ_PROP_PARAMS);
-	FX_BOOL value(OBJ_PROP_PARAMS);
-	FX_BOOL valueAsString(OBJ_PROP_PARAMS);
-	FX_BOOL source(OBJ_PROP_PARAMS);
+    FX_BOOL alignment(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+    FX_BOOL borderStyle(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL buttonAlignX(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL buttonAlignY(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL buttonFitBounds(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL buttonPosition(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL buttonScaleHow(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+    FX_BOOL buttonScaleWhen(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL calcOrderIndex(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL charLimit(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL comb(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL commitOnSelChange(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL currentValueIndices(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+    FX_BOOL defaultStyle(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL defaultValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL doNotScroll(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL doNotSpellCheck(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL delay(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL display(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+    FX_BOOL doc(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL editable(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL exportValues(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL fileSelect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL fillColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL hidden(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+    FX_BOOL highlight(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL lineWidth(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL multiline(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL multipleSelection(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL name(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL numItems(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+    FX_BOOL page(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL password(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL print(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL radiosInUnison(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL readonly(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL rect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+    FX_BOOL required(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL richText(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL richValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL rotation(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL strokeColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL style(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL submitName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL textColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL textFont(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL textSize(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL type(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL userName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL value(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL valueAsString(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL source(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
 
-	FX_BOOL browseForFileToSubmit(OBJ_METHOD_PARAMS);
-	FX_BOOL buttonGetCaption(OBJ_METHOD_PARAMS);
-	FX_BOOL buttonGetIcon(OBJ_METHOD_PARAMS);
-	FX_BOOL buttonImportIcon(OBJ_METHOD_PARAMS);
-	FX_BOOL buttonSetCaption(OBJ_METHOD_PARAMS);
-	FX_BOOL buttonSetIcon(OBJ_METHOD_PARAMS);
-	FX_BOOL checkThisBox(OBJ_METHOD_PARAMS);
-	FX_BOOL clearItems(OBJ_METHOD_PARAMS);
-	FX_BOOL defaultIsChecked(OBJ_METHOD_PARAMS);
-	FX_BOOL deleteItemAt(OBJ_METHOD_PARAMS);
-	FX_BOOL getArray(OBJ_METHOD_PARAMS);
-	FX_BOOL getItemAt(OBJ_METHOD_PARAMS);
-	FX_BOOL getLock(OBJ_METHOD_PARAMS);
-	FX_BOOL insertItemAt(OBJ_METHOD_PARAMS);
-	FX_BOOL isBoxChecked(OBJ_METHOD_PARAMS);
-	FX_BOOL isDefaultChecked(OBJ_METHOD_PARAMS);
-	FX_BOOL setAction(OBJ_METHOD_PARAMS);
-	FX_BOOL setFocus(OBJ_METHOD_PARAMS);
-	FX_BOOL setItems(OBJ_METHOD_PARAMS);
-	FX_BOOL setLock(OBJ_METHOD_PARAMS);
-	FX_BOOL signatureGetModifications(OBJ_METHOD_PARAMS);
-	FX_BOOL signatureGetSeedValue(OBJ_METHOD_PARAMS);
-	FX_BOOL signatureInfo(OBJ_METHOD_PARAMS);
-	FX_BOOL signatureSetSeedValue(OBJ_METHOD_PARAMS);
-	FX_BOOL signatureSign(OBJ_METHOD_PARAMS);
-	FX_BOOL signatureValidate(OBJ_METHOD_PARAMS);
+	FX_BOOL browseForFileToSubmit(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL buttonGetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL buttonGetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL buttonImportIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL buttonSetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL buttonSetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL clearItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL defaultIsChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL deleteItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL getArray(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL getItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL getLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL insertItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL isBoxChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL isDefaultChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL setAction(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL setFocus(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL setItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL setLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL signatureGetModifications(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL signatureGetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL signatureInfo(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL signatureSetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL signatureSign(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL signatureValidate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 
 public:
 	static void SetAlignment(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string);
diff --git a/fpdfsdk/include/javascript/Icon.h b/fpdfsdk/include/javascript/Icon.h
index 9426d32..0bb4d0a 100644
--- a/fpdfsdk/include/javascript/Icon.h
+++ b/fpdfsdk/include/javascript/Icon.h
@@ -14,7 +14,7 @@
 	virtual ~Icon();
 
 public:
-	FX_BOOL name(OBJ_PROP_PARAMS);
+	FX_BOOL name(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
 	
 public:
 	void				SetStream(CPDF_Stream* pIconStream);
diff --git a/fpdfsdk/include/javascript/JS_Define.h b/fpdfsdk/include/javascript/JS_Define.h
index 9a51f69..650bef0 100644
--- a/fpdfsdk/include/javascript/JS_Define.h
+++ b/fpdfsdk/include/javascript/JS_Define.h
@@ -46,8 +46,6 @@
 /* ====================================== PUBLIC DEFINE SPEC ============================================== */
 #define JS_WIDESTRING(widestring) L###widestring
 
-#define OBJ_PROP_PARAMS			IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError
-#define OBJ_METHOD_PARAMS		IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError
 #define BEGIN_JS_STATIC_CONST(js_class_name) JSConstSpec js_class_name::JS_Class_Consts[] = {
 #define JS_STATIC_CONST_ENTRY_NUMBER(const_name, pValue) {JS_WIDESTRING(const_name), pValue, L"", 0},
 #define JS_STATIC_CONST_ENTRY_STRING(const_name, pValue) {JS_WIDESTRING(const_name), 0, JS_WIDESTRING(pValue), 1},
@@ -89,7 +87,8 @@
 /* ======================================== PROP CALLBACK ============================================ */
 
 #define JS_STATIC_PROP_GET(prop_name, class_name)\
-	static void get_##prop_name##_static(JS_PROPGET_ARGS)\
+  static void get_##prop_name##_static(v8::Local<v8::String> property, \
+                                       const v8::PropertyCallbackInfo<v8::Value>& info) \
 {\
 	v8::Isolate* isolate = info.GetIsolate();\
 	v8::Local<v8::Context> context = isolate->GetCurrentContext();\
@@ -125,7 +124,9 @@
 }
 
 #define JS_STATIC_PROP_SET(prop_name, class_name)\
-	static void set_##prop_name##_static(JS_PROPPUT_ARGS)\
+  static void set_##prop_name##_static(v8::Local<v8::String> property, \
+                                       v8::Local<v8::Value> value, \
+                                       const v8::PropertyCallbackInfo<void>& info) \
 {\
 	v8::Isolate* isolate = info.GetIsolate();\
 	v8::Local<v8::Context> context = isolate->GetCurrentContext();\
@@ -166,7 +167,7 @@
 /* ========================================= METHOD CALLBACK =========================================== */
 
 #define JS_STATIC_METHOD(method_name, class_name)\
-	static void method_name##_static(JS_METHOD_ARGS)\
+  static void method_name##_static(const v8::FunctionCallbackInfo<v8::Value>& info) \
 {\
 	v8::Isolate* isolate = info.GetIsolate();\
 	v8::Local<v8::Context> context = isolate->GetCurrentContext();\
@@ -521,7 +522,7 @@
 }
 
 #define JS_SPECIAL_STATIC_METHOD(method_name, class_alternate, class_name)\
-	static void method_name##_static(JS_METHOD_ARGS)\
+	static void method_name##_static(const v8::FunctionCallbackInfo<v8::Value>& info)\
 {\
 	v8::Isolate* isolate = info.GetIsolate();\
 	v8::Local<v8::Context> context = isolate->GetCurrentContext();\
@@ -564,7 +565,7 @@
 
 /* ======================================== GLOBAL METHODS ============================================ */
 #define JS_STATIC_GLOBAL_FUN(fun_name) \
-static void fun_name##_static(JS_METHOD_ARGS)\
+static void fun_name##_static(const v8::FunctionCallbackInfo<v8::Value>& info)\
 {\
 	v8::Isolate* isolate = info.GetIsolate();\
 	v8::Local<v8::Context> context = isolate->GetCurrentContext();\
@@ -648,58 +649,6 @@
 #define CLASSNAME_DATE			L"Date"
 #define CLASSNAME_STRING		L"v8::String"
 
-extern const unsigned int JSCONST_nStringHash;
-extern const unsigned int JSCONST_nNumberHash;
-extern const unsigned int JSCONST_nBoolHash;
-extern const unsigned int JSCONST_nDateHash;
-extern const unsigned int JSCONST_nObjectHash;
-extern const unsigned int JSCONST_nFXobjHash;
-extern const unsigned int JSCONST_nNullHash;
-extern const unsigned int JSCONST_nUndefHash;
-
-static FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p)
-{
-
-		const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p));
-
-		if (nHash == JSCONST_nUndefHash)
-			return VT_undefined;
-		else if (nHash == JSCONST_nNullHash)
-			return VT_null;
-		else if (nHash == JSCONST_nStringHash)
-			return VT_string;
-		else if (nHash == JSCONST_nNumberHash)
-			return VT_number;
-		else if (nHash == JSCONST_nBoolHash)
-			return VT_boolean;
-		else if (nHash == JSCONST_nDateHash)
-			return VT_date;
-		else if (nHash == JSCONST_nObjectHash)
-			return VT_object;		
-		else if (nHash == JSCONST_nFXobjHash)
-			return VT_fxobject;
-
-		/*
-		const char * sType = p->getTypeof()->toDchars();
-		if (strcmp(sType,VALUE_NAME_STRING) == 0)
-			return VT_string;
-		else if (strcmp(sType,VALUE_NAME_NUMBER) == 0)
-			return VT_number;
-		else if (strcmp(sType,VALUE_NAME_BOOLEAN) == 0)
-			return VT_boolean;
-		else if (strcmp(sType,VALUE_NAME_DATE) == 0)
-			return VT_date;
-		else if (strcmp(sType,VALUE_NAME_OBJECT) == 0)
-			return VT_object;
-		else if (strcmp(sType,VALUE_NAME_FXOBJ) == 0)
-			return VT_object;
-		else if (strcmp(sType,VALUE_NAME_NULL) == 0)
-			return VT_null;
-		else if (strcmp(sType,VALUE_NAME_UNDEFINED) == 0)
-			return VT_undefined;
-			*/
-
-	return VT_unknown;
-}
+FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p);
 
 #endif //_JS_DEFINE_H_
diff --git a/fpdfsdk/include/javascript/PublicMethods.h b/fpdfsdk/include/javascript/PublicMethods.h
index 8d4e683..40b0ce9 100644
--- a/fpdfsdk/include/javascript/PublicMethods.h
+++ b/fpdfsdk/include/javascript/PublicMethods.h
@@ -14,28 +14,28 @@
 	virtual ~CJS_PublicMethods(void){};
 
 public:
-	static FX_BOOL AFNumber_Format(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFNumber_Keystroke(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFPercent_Format(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFPercent_Keystroke(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFDate_FormatEx(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFDate_KeystrokeEx(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFDate_Format(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFDate_Keystroke(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFTime_FormatEx(OBJ_METHOD_PARAMS); //
-	static FX_BOOL AFTime_KeystrokeEx(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFTime_Format(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFTime_Keystroke(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFSpecial_Format(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFSpecial_Keystroke(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFSpecial_KeystrokeEx(OBJ_METHOD_PARAMS);//
-	static FX_BOOL AFSimple(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFMakeNumber(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFSimple_Calculate(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFRange_Validate(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFMergeChange(OBJ_METHOD_PARAMS); 
-	static FX_BOOL AFParseDateEx(OBJ_METHOD_PARAMS);
-	static FX_BOOL AFExtractNums(OBJ_METHOD_PARAMS);
+	static FX_BOOL AFNumber_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFPercent_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFPercent_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFDate_FormatEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFDate_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFDate_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFDate_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFTime_FormatEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError); //
+	static FX_BOOL AFTime_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFTime_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFTime_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFSpecial_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFSpecial_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);//
+	static FX_BOOL AFSimple(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFMakeNumber(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFSimple_Calculate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFRange_Validate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFMergeChange(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError); 
+	static FX_BOOL AFParseDateEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	static FX_BOOL AFExtractNums(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 
 public:
 	JS_STATIC_GLOBAL_FUN(AFNumber_Format);
diff --git a/fpdfsdk/include/javascript/app.h b/fpdfsdk/include/javascript/app.h
index 1c95bf4..50d55ef 100644
--- a/fpdfsdk/include/javascript/app.h
+++ b/fpdfsdk/include/javascript/app.h
@@ -108,41 +108,41 @@
 	virtual ~app();
 
 public:
-	FX_BOOL						activeDocs(OBJ_PROP_PARAMS);
-	FX_BOOL						calculate(OBJ_PROP_PARAMS);
-	FX_BOOL						formsVersion(OBJ_PROP_PARAMS);
-	FX_BOOL						fs(OBJ_PROP_PARAMS);
-	FX_BOOL						fullscreen(OBJ_PROP_PARAMS);
-	FX_BOOL						language(OBJ_PROP_PARAMS);
-	FX_BOOL						media(OBJ_PROP_PARAMS);
-	FX_BOOL						platform(OBJ_PROP_PARAMS);
-	FX_BOOL						runtimeHighlight(OBJ_PROP_PARAMS);
-	FX_BOOL						viewerType(OBJ_PROP_PARAMS);
-	FX_BOOL						viewerVariation(OBJ_PROP_PARAMS);
-	FX_BOOL						viewerVersion(OBJ_PROP_PARAMS);	
+	FX_BOOL						activeDocs(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						calculate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						formsVersion(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						fs(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						fullscreen(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						language(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						media(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						platform(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						runtimeHighlight(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						viewerType(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						viewerVariation(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL						viewerVersion(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);	
 
 
-	FX_BOOL						alert(OBJ_METHOD_PARAMS);
-	FX_BOOL						beep(OBJ_METHOD_PARAMS);
-	FX_BOOL						browseForDoc(OBJ_METHOD_PARAMS);
-	FX_BOOL						clearInterval(OBJ_METHOD_PARAMS);
-	FX_BOOL						clearTimeOut(OBJ_METHOD_PARAMS);
-	FX_BOOL						execDialog(OBJ_METHOD_PARAMS);
-	FX_BOOL						execMenuItem(OBJ_METHOD_PARAMS);
-	FX_BOOL						findComponent(OBJ_METHOD_PARAMS);
-	FX_BOOL						goBack(OBJ_METHOD_PARAMS);
-	FX_BOOL						goForward(OBJ_METHOD_PARAMS);
-	FX_BOOL						launchURL(OBJ_METHOD_PARAMS);
-	FX_BOOL						mailMsg(OBJ_METHOD_PARAMS);
-	FX_BOOL						newFDF(OBJ_METHOD_PARAMS);
-	FX_BOOL						newDoc(OBJ_METHOD_PARAMS);
-	FX_BOOL						openDoc(OBJ_METHOD_PARAMS);
-	FX_BOOL						openFDF(OBJ_METHOD_PARAMS);
-	FX_BOOL						popUpMenuEx(OBJ_METHOD_PARAMS);
-	FX_BOOL						popUpMenu(OBJ_METHOD_PARAMS);
-	FX_BOOL						response(OBJ_METHOD_PARAMS);
-	FX_BOOL						setInterval(OBJ_METHOD_PARAMS);
-	FX_BOOL						setTimeOut(OBJ_METHOD_PARAMS);
+	FX_BOOL						alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						beep(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						browseForDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						clearInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						clearTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						execDialog(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						execMenuItem(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						findComponent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						goBack(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						goForward(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						launchURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						mailMsg(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						newFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						newDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						openDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						openFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						popUpMenuEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						popUpMenu(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						response(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						setInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL						setTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 
 private:
 //	FX_DWORD					AppGetTickCount(); 
diff --git a/fpdfsdk/include/javascript/color.h b/fpdfsdk/include/javascript/color.h
index d0aa72f..02588ac 100644
--- a/fpdfsdk/include/javascript/color.h
+++ b/fpdfsdk/include/javascript/color.h
@@ -13,21 +13,21 @@
 	color(CJS_Object* pJSObject);
 	virtual ~color(void);
 
-	FX_BOOL black(OBJ_PROP_PARAMS);
-	FX_BOOL blue(OBJ_PROP_PARAMS);
-	FX_BOOL cyan(OBJ_PROP_PARAMS);	
-	FX_BOOL dkGray(OBJ_PROP_PARAMS);
-	FX_BOOL gray(OBJ_PROP_PARAMS);
-	FX_BOOL green(OBJ_PROP_PARAMS);
-	FX_BOOL ltGray(OBJ_PROP_PARAMS);
-	FX_BOOL magenta(OBJ_PROP_PARAMS);
-	FX_BOOL red(OBJ_PROP_PARAMS);	
-	FX_BOOL transparent(OBJ_PROP_PARAMS);
-	FX_BOOL white(OBJ_PROP_PARAMS);
-	FX_BOOL yellow(OBJ_PROP_PARAMS);
+	FX_BOOL black(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL blue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL cyan(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);	
+	FX_BOOL dkGray(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL gray(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL green(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL ltGray(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL magenta(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL red(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);	
+	FX_BOOL transparent(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL white(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL yellow(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
 
-	FX_BOOL convert(OBJ_METHOD_PARAMS);
-	FX_BOOL equal(OBJ_METHOD_PARAMS);
+	FX_BOOL convert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL equal(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 
 public:  
 	static void		ConvertPWLColorToArray(const CPWL_Color& color, CJS_Array& array);
diff --git a/fpdfsdk/include/javascript/console.h b/fpdfsdk/include/javascript/console.h
index 70d993b..dc672ad 100644
--- a/fpdfsdk/include/javascript/console.h
+++ b/fpdfsdk/include/javascript/console.h
@@ -14,10 +14,10 @@
 	virtual ~console(void);
 
 public:
-	FX_BOOL clear(OBJ_METHOD_PARAMS);
-	FX_BOOL hide(OBJ_METHOD_PARAMS);
-	FX_BOOL println(OBJ_METHOD_PARAMS);
-	FX_BOOL show(OBJ_METHOD_PARAMS);
+	FX_BOOL clear(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL hide(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL println(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL show(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 };
 
 class CJS_Console : public CJS_Object  
diff --git a/fpdfsdk/include/javascript/event.h b/fpdfsdk/include/javascript/event.h
index 040a933..736962b 100644
--- a/fpdfsdk/include/javascript/event.h
+++ b/fpdfsdk/include/javascript/event.h
@@ -14,26 +14,26 @@
 	virtual ~event(void);
 
 public:
-	FX_BOOL change(OBJ_PROP_PARAMS);
-	FX_BOOL changeEx(OBJ_PROP_PARAMS);
-	FX_BOOL commitKey(OBJ_PROP_PARAMS);
-	FX_BOOL fieldFull(OBJ_PROP_PARAMS);
-	FX_BOOL keyDown(OBJ_PROP_PARAMS);
-	FX_BOOL modifier(OBJ_PROP_PARAMS);
-	FX_BOOL name(OBJ_PROP_PARAMS);
-	FX_BOOL rc(OBJ_PROP_PARAMS);
-	FX_BOOL richChange(OBJ_PROP_PARAMS);
-	FX_BOOL richChangeEx(OBJ_PROP_PARAMS);
-	FX_BOOL richValue(OBJ_PROP_PARAMS);
-	FX_BOOL selEnd(OBJ_PROP_PARAMS);
-	FX_BOOL selStart(OBJ_PROP_PARAMS);
-	FX_BOOL shift(OBJ_PROP_PARAMS);
-	FX_BOOL source(OBJ_PROP_PARAMS);
-	FX_BOOL target(OBJ_PROP_PARAMS);
-	FX_BOOL targetName(OBJ_PROP_PARAMS);
-	FX_BOOL type(OBJ_PROP_PARAMS);
-	FX_BOOL value(OBJ_PROP_PARAMS);
-	FX_BOOL willCommit(OBJ_PROP_PARAMS);
+	FX_BOOL change(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL changeEx(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL commitKey(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL fieldFull(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL keyDown(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL modifier(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL name(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL rc(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL richChange(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL richChangeEx(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL richValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL selEnd(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL selStart(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL shift(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL source(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL target(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL targetName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL type(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL value(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
+	FX_BOOL willCommit(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError);
 
 };
 
diff --git a/fpdfsdk/include/javascript/global.h b/fpdfsdk/include/javascript/global.h
index f5867c5..bc6dab3 100644
--- a/fpdfsdk/include/javascript/global.h
+++ b/fpdfsdk/include/javascript/global.h
@@ -41,7 +41,7 @@
 	virtual ~global_alternate();
 
 public:
-	FX_BOOL						setPersistent(OBJ_METHOD_PARAMS);
+	FX_BOOL						setPersistent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 
 public:
 	FX_BOOL						QueryProperty(FX_LPCWSTR propname);
diff --git a/fpdfsdk/include/javascript/report.h b/fpdfsdk/include/javascript/report.h
index fb5adf3..f01d593 100644
--- a/fpdfsdk/include/javascript/report.h
+++ b/fpdfsdk/include/javascript/report.h
@@ -14,8 +14,8 @@
 	virtual ~Report();
 
 public:
-	FX_BOOL save(OBJ_METHOD_PARAMS);
-	FX_BOOL writeText(OBJ_METHOD_PARAMS);
+	FX_BOOL save(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL writeText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 };
 
 class CJS_Report : public CJS_Object
diff --git a/fpdfsdk/include/javascript/util.h b/fpdfsdk/include/javascript/util.h
index 14857c9..b8de46c 100644
--- a/fpdfsdk/include/javascript/util.h
+++ b/fpdfsdk/include/javascript/util.h
@@ -14,11 +14,11 @@
 	virtual ~util(void);
 
 public:
-	FX_BOOL printd(OBJ_METHOD_PARAMS);
-	FX_BOOL printf(OBJ_METHOD_PARAMS);
-	FX_BOOL printx(OBJ_METHOD_PARAMS);
-	FX_BOOL scand(OBJ_METHOD_PARAMS);
-	FX_BOOL byteToChar(OBJ_METHOD_PARAMS);
+	FX_BOOL printd(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL printf(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL printx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL scand(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
+	FX_BOOL byteToChar(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError);
 
 public:
 	static void		printd(const std::wstring &cFormat,CJS_Date Date,bool bXFAPicture, std::wstring &cPurpose);
diff --git a/fpdfsdk/include/jsapi/fxjs_v8.h b/fpdfsdk/include/jsapi/fxjs_v8.h
index 3ea5054..e08196d 100644
--- a/fpdfsdk/include/jsapi/fxjs_v8.h
+++ b/fpdfsdk/include/jsapi/fxjs_v8.h
@@ -45,14 +45,12 @@
 #ifndef JSCRIPT_ARGS
 #define JSCRIPT_ARGS
 
-#define JS_PROPGET_ARGS			v8::Local<v8::String> property,const v8::PropertyCallbackInfo<v8::Value>& info
-#define JS_PROPPUT_ARGS			v8::Local<v8::String> property,v8::Local<v8::Value> value,const v8::PropertyCallbackInfo<void>& info
-#define JS_METHOD_ARGS			const v8::FunctionCallbackInfo<v8::Value>& info
 #define JS_CONSTRUCTOR_ARGS		IFXJS_Context* cc, v8::Handle<v8::Object> obj, v8::Handle<v8::Object> global
 #define JS_DESTRUCTOR_ARGS		v8::Handle<v8::Object> obj
 
 #define JS_PROPQUERY_ARGS		v8::Local<v8::String> property,const v8::PropertyCallbackInfo<v8::Integer>& info
-#define JS_NAMED_PROPGET_ARGS	JS_PROPGET_ARGS					
+#define JS_NAMED_PROPGET_ARGS	        v8::Local<v8::String> property, const v8::PropertyCallbackInfo<v8::Value>& info
+
 #define JS_NAMED_PROPPUT_ARGS	v8::Local<v8::String> property,v8::Local<v8::Value> value,const v8::PropertyCallbackInfo<v8::Value>& info
 #define JS_PROPDEL_ARGS			v8::Local<v8::String> property,const v8::PropertyCallbackInfo<v8::Boolean>& info
 
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
index 701107f..c9f17ba 100644
--- a/fpdfsdk/src/javascript/Document.cpp
+++ b/fpdfsdk/src/javascript/Document.cpp
@@ -190,7 +190,7 @@
 }
 
 //the total number of fileds in document.
-FX_BOOL Document::numFields(OBJ_PROP_PARAMS)
+FX_BOOL Document::numFields(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting()) return FALSE;
 
@@ -207,7 +207,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::dirty(OBJ_PROP_PARAMS)
+FX_BOOL Document::dirty(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -233,7 +233,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::ADBE(OBJ_PROP_PARAMS)
+FX_BOOL Document::ADBE(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -248,7 +248,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::pageNum(OBJ_PROP_PARAMS)
+FX_BOOL Document::pageNum(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -293,31 +293,31 @@
 	return TRUE;
 }
 
-FX_BOOL Document::addAnnot(OBJ_METHOD_PARAMS)
+FX_BOOL Document::addAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Not supported.
 	return TRUE;
 }
 
-FX_BOOL Document::addField(OBJ_METHOD_PARAMS)
+FX_BOOL Document::addField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Not supported.
 	return TRUE;
 }
 
-FX_BOOL Document::exportAsText(OBJ_METHOD_PARAMS)
+FX_BOOL Document::exportAsText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Unsafe, not supported.
 	return TRUE;
 }
 
-FX_BOOL Document::exportAsFDF(OBJ_METHOD_PARAMS)
+FX_BOOL Document::exportAsFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Unsafe, not supported.
 	return TRUE;
 }
 
-FX_BOOL Document::exportAsXFDF(OBJ_METHOD_PARAMS)
+FX_BOOL Document::exportAsXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Unsafe, not supported.
 	return TRUE;
@@ -327,7 +327,7 @@
 //comment:
 //note: the paremter cName, this is clue how to treat if the cName is not a valiable filed name in this document
 
-FX_BOOL Document::getField(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = GetIsolate(cc);
 	ASSERT(m_pDocument != NULL);
@@ -368,7 +368,7 @@
 }
 
 //Gets the name of the nth field in the document
-FX_BOOL Document::getNthFieldName(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getNthFieldName(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -389,19 +389,19 @@
 	return TRUE;
 }
 
-FX_BOOL Document::importAnFDF(OBJ_METHOD_PARAMS)
+FX_BOOL Document::importAnFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Unsafe, not supported.
 	return TRUE;
 }
 
-FX_BOOL Document::importAnXFDF(OBJ_METHOD_PARAMS)
+FX_BOOL Document::importAnXFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Unsafe, not supported.
 	return TRUE;
 }
 
-FX_BOOL Document::importTextData(OBJ_METHOD_PARAMS)
+FX_BOOL Document::importTextData(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	// Unsafe, not supported.
 	return TRUE;
@@ -412,7 +412,7 @@
 //note:
 //int CPDFSDK_Document::mailForm(FX_BOOL bUI,String cto,string ccc,string cbcc,string cSubject,string cms);
 
-FX_BOOL Document::mailForm(OBJ_METHOD_PARAMS)
+FX_BOOL Document::mailForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -447,7 +447,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::print(OBJ_METHOD_PARAMS)
+FX_BOOL Document::print(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -524,7 +524,7 @@
 //comment:
 //note: if the filed name is not retional, adobe is dumb for it.
 
-FX_BOOL Document::removeField(OBJ_METHOD_PARAMS)
+FX_BOOL Document::removeField(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -578,7 +578,7 @@
 //comment:
 //note: if the fields names r not rational, aodbe is dumb for it.
 
-FX_BOOL Document::resetForm(OBJ_METHOD_PARAMS)
+FX_BOOL Document::resetForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -639,14 +639,14 @@
 }
 
 
-FX_BOOL Document::saveAs(OBJ_METHOD_PARAMS)
+FX_BOOL Document::saveAs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
 }
 
 
-FX_BOOL Document::submitForm(OBJ_METHOD_PARAMS)
+FX_BOOL Document::submitForm(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -773,12 +773,12 @@
 	return FALSE;
 }
 
-FX_BOOL Document::bookmarkRoot(OBJ_PROP_PARAMS)
+FX_BOOL Document::bookmarkRoot(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::mailDoc(OBJ_METHOD_PARAMS)
+FX_BOOL Document::mailDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -836,7 +836,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::author(OBJ_PROP_PARAMS)
+FX_BOOL Document::author(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -860,7 +860,7 @@
 	}
 }
 
-FX_BOOL Document::info(OBJ_PROP_PARAMS)
+FX_BOOL Document::info(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -919,7 +919,7 @@
 	}
 }
 
-FX_BOOL Document::creationDate(OBJ_PROP_PARAMS)
+FX_BOOL Document::creationDate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -944,7 +944,7 @@
 	}
 }
 
-FX_BOOL Document::creator(OBJ_PROP_PARAMS)
+FX_BOOL Document::creator(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -968,7 +968,7 @@
 	}
 }
 
-FX_BOOL Document::delay(OBJ_PROP_PARAMS)
+FX_BOOL Document::delay(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -1010,7 +1010,7 @@
 	}
 }
 
-FX_BOOL Document::keywords(OBJ_PROP_PARAMS)
+FX_BOOL Document::keywords(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1034,7 +1034,7 @@
 	}
 }
 
-FX_BOOL Document::modDate(OBJ_PROP_PARAMS)
+FX_BOOL Document::modDate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1058,7 +1058,7 @@
 	}
 }
 
-FX_BOOL Document::producer(OBJ_PROP_PARAMS)
+FX_BOOL Document::producer(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1082,7 +1082,7 @@
 	}
 }
 
-FX_BOOL Document::subject(OBJ_PROP_PARAMS)
+FX_BOOL Document::subject(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1106,7 +1106,7 @@
 	}
 }
 
-FX_BOOL Document::title(OBJ_PROP_PARAMS)
+FX_BOOL Document::title(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1133,7 +1133,7 @@
 	}
 }
 
-FX_BOOL Document::numPages(OBJ_PROP_PARAMS)
+FX_BOOL Document::numPages(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -1147,14 +1147,14 @@
 	}
 }
 
-FX_BOOL Document::external(OBJ_PROP_PARAMS)
+FX_BOOL Document::external(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	//In Chrome case,should always return true.
 	vp << TRUE;
 	return TRUE;
 }
 
-FX_BOOL Document::filesize(OBJ_PROP_PARAMS)
+FX_BOOL Document::filesize(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -1162,17 +1162,17 @@
 	return TRUE;
 }
 
-FX_BOOL Document::mouseX(OBJ_PROP_PARAMS)
+FX_BOOL Document::mouseX(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::mouseY(OBJ_PROP_PARAMS)
+FX_BOOL Document::mouseY(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::baseURL(OBJ_PROP_PARAMS)
+FX_BOOL Document::baseURL(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -1186,7 +1186,7 @@
 	}
 }
 
-FX_BOOL Document::calculate(OBJ_PROP_PARAMS)
+FX_BOOL Document::calculate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1211,7 +1211,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::documentFileName(OBJ_PROP_PARAMS)
+FX_BOOL Document::documentFileName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())
 		return FALSE;
@@ -1280,7 +1280,7 @@
 	return cbRet;
 }
 
-FX_BOOL Document::path(OBJ_PROP_PARAMS)
+FX_BOOL Document::path(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting()) return FALSE;
 
@@ -1289,22 +1289,22 @@
 	return TRUE;
 }
 
-FX_BOOL Document::pageWindowRect(OBJ_PROP_PARAMS)
+FX_BOOL Document::pageWindowRect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::layout(OBJ_PROP_PARAMS)
+FX_BOOL Document::layout(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::addLink(OBJ_METHOD_PARAMS)
+FX_BOOL Document::addLink(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::closeDoc(OBJ_METHOD_PARAMS)
+FX_BOOL Document::closeDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1315,41 +1315,41 @@
 	return TRUE;
 }
 
-FX_BOOL Document::getPageBox(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getPageBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
 
-FX_BOOL Document::getAnnot(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getAnnot(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::getAnnots(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getAnnots(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	vRet.SetNull();
 	return TRUE;
 }
 
-FX_BOOL Document::getAnnot3D(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getAnnot3D(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	vRet.SetNull();
 	return TRUE;
 }
 
-FX_BOOL Document::getAnnots3D(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getAnnots3D(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	vRet = VT_undefined;
 	return TRUE;
 }
 
-FX_BOOL Document::getOCGs(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getOCGs(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::getLinks(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getLinks(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
@@ -1460,7 +1460,7 @@
 	}
 }
 
-FX_BOOL Document::addIcon(OBJ_METHOD_PARAMS)
+FX_BOOL Document::addIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() != 2)return FALSE;
 
@@ -1489,7 +1489,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::icons(OBJ_PROP_PARAMS)
+FX_BOOL Document::icons(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsSetting())
 		return FALSE;
@@ -1529,7 +1529,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::getIcon(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() != 1)return FALSE;
 	if(!m_pIconTree)
@@ -1565,7 +1565,7 @@
 	return FALSE;
 }
 
-FX_BOOL Document::removeIcon(OBJ_METHOD_PARAMS)
+FX_BOOL Document::removeIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() != 1)return FALSE;
 	if(!m_pIconTree)
@@ -1574,18 +1574,18 @@
 	return TRUE;
 }
 
-FX_BOOL Document::createDataObject(OBJ_METHOD_PARAMS)
+FX_BOOL Document::createDataObject(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not implemented.
   return TRUE;
 }
 
-FX_BOOL Document::media(OBJ_PROP_PARAMS)
+FX_BOOL Document::media(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::calculateNow(OBJ_METHOD_PARAMS)
+FX_BOOL Document::calculateNow(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1599,12 +1599,12 @@
 	return TRUE;
 }
 
-FX_BOOL Document::Collab(OBJ_PROP_PARAMS)
+FX_BOOL Document::Collab(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::getPageNthWord(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getPageNthWord(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1666,7 +1666,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::getPageNthWordQuads(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getPageNthWordQuads(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1675,7 +1675,7 @@
 	return FALSE;
 }
 
-FX_BOOL Document::getPageNumWords(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getPageNumWords(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1721,7 +1721,7 @@
 	return TRUE;
 }
 
-FX_BOOL Document::getPrintParams(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getPrintParams(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -1811,7 +1811,7 @@
 	return swRet;
 }
 
-FX_BOOL Document::zoom(OBJ_PROP_PARAMS)
+FX_BOOL Document::zoom(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 
 	return TRUE;
@@ -1827,12 +1827,12 @@
 (refW,	ReflowWidth)
 */
 
-FX_BOOL Document::zoomType(OBJ_PROP_PARAMS)
+FX_BOOL Document::zoomType(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Document::deletePages(OBJ_METHOD_PARAMS)
+FX_BOOL Document::deletePages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = GetIsolate(cc);
 	ASSERT(m_pDocument != NULL);
@@ -1885,25 +1885,25 @@
 	return TRUE;
 }
 
-FX_BOOL Document::extractPages(OBJ_METHOD_PARAMS)
+FX_BOOL Document::extractPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
 }
 
-FX_BOOL Document::insertPages(OBJ_METHOD_PARAMS)
+FX_BOOL Document::insertPages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
 }
 
-FX_BOOL Document::replacePages(OBJ_METHOD_PARAMS)
+FX_BOOL Document::replacePages(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
 }
 
-FX_BOOL Document::getURL(OBJ_METHOD_PARAMS)
+FX_BOOL Document::getURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
diff --git a/fpdfsdk/src/javascript/Field.cpp b/fpdfsdk/src/javascript/Field.cpp
index 7a9f9a0..e75b6dc 100644
--- a/fpdfsdk/src/javascript/Field.cpp
+++ b/fpdfsdk/src/javascript/Field.cpp
@@ -377,7 +377,7 @@
 
 /* ---------------------------------------- property ---------------------------------------- */
 
-FX_BOOL Field::alignment(OBJ_PROP_PARAMS)
+FX_BOOL Field::alignment(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -437,7 +437,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::borderStyle(OBJ_PROP_PARAMS)
+FX_BOOL Field::borderStyle(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {	
 	ASSERT(m_pDocument != NULL);
 
@@ -558,7 +558,7 @@
 	}
 }
 
-FX_BOOL Field::buttonAlignX(OBJ_PROP_PARAMS)
+FX_BOOL Field::buttonAlignX(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -609,7 +609,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::buttonAlignY(OBJ_PROP_PARAMS)
+FX_BOOL Field::buttonAlignY(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -660,7 +660,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::buttonFitBounds(OBJ_PROP_PARAMS)
+FX_BOOL Field::buttonFitBounds(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -707,7 +707,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::buttonPosition(OBJ_PROP_PARAMS)
+FX_BOOL Field::buttonPosition(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -752,7 +752,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::buttonScaleHow(OBJ_PROP_PARAMS)
+FX_BOOL Field::buttonScaleHow(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -802,7 +802,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::buttonScaleWhen(OBJ_PROP_PARAMS)
+FX_BOOL Field::buttonScaleWhen(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -864,7 +864,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::calcOrderIndex(OBJ_PROP_PARAMS)
+FX_BOOL Field::calcOrderIndex(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -913,7 +913,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::charLimit(OBJ_PROP_PARAMS)
+FX_BOOL Field::charLimit(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -955,7 +955,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::comb(OBJ_PROP_PARAMS)
+FX_BOOL Field::comb(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1001,7 +1001,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::commitOnSelChange(OBJ_PROP_PARAMS)
+FX_BOOL Field::commitOnSelChange(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1047,7 +1047,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::currentValueIndices(OBJ_PROP_PARAMS)
+FX_BOOL Field::currentValueIndices(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1152,7 +1152,7 @@
 	}
 }
 
-FX_BOOL Field::defaultStyle(OBJ_PROP_PARAMS)
+FX_BOOL Field::defaultStyle(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	// MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT);
 	return FALSE;
@@ -1175,7 +1175,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::defaultValue(OBJ_PROP_PARAMS)
+FX_BOOL Field::defaultValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1219,7 +1219,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::doNotScroll(OBJ_PROP_PARAMS)
+FX_BOOL Field::doNotScroll(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1265,7 +1265,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::doNotSpellCheck(OBJ_PROP_PARAMS)
+FX_BOOL Field::doNotSpellCheck(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1309,7 +1309,7 @@
 	}
 }
 
-FX_BOOL Field::delay(OBJ_PROP_PARAMS)
+FX_BOOL Field::delay(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsSetting())
 	{
@@ -1327,7 +1327,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::display(OBJ_PROP_PARAMS)
+FX_BOOL Field::display(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1498,7 +1498,7 @@
 	}
 }
 
-FX_BOOL Field::doc(OBJ_PROP_PARAMS)
+FX_BOOL Field::doc(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pJSDoc != NULL);
 
@@ -1509,7 +1509,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::editable(OBJ_PROP_PARAMS)
+FX_BOOL Field::editable(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1542,7 +1542,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::exportValues(OBJ_PROP_PARAMS)
+FX_BOOL Field::exportValues(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1591,7 +1591,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::fileSelect(OBJ_PROP_PARAMS)
+FX_BOOL Field::fileSelect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1624,7 +1624,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::fillColor(OBJ_PROP_PARAMS)
+FX_BOOL Field::fillColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1702,7 +1702,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::hidden(OBJ_PROP_PARAMS)
+FX_BOOL Field::hidden(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1833,7 +1833,7 @@
 	}
 }
 
-FX_BOOL Field::highlight(OBJ_PROP_PARAMS)
+FX_BOOL Field::highlight(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1897,7 +1897,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::lineWidth(OBJ_PROP_PARAMS)
+FX_BOOL Field::lineWidth(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -1995,7 +1995,7 @@
 	}
 }
 
-FX_BOOL Field::multiline(OBJ_PROP_PARAMS)
+FX_BOOL Field::multiline(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2041,7 +2041,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::multipleSelection(OBJ_PROP_PARAMS)
+FX_BOOL Field::multipleSelection(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2087,7 +2087,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::name(OBJ_PROP_PARAMS)
+FX_BOOL Field::name(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting()) return FALSE;
 
@@ -2100,7 +2100,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::numItems(OBJ_PROP_PARAMS)
+FX_BOOL Field::numItems(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {	
 	CFX_PtrArray FieldArray;
 	GetFormFields(m_FieldName, FieldArray);
@@ -2120,7 +2120,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::page(OBJ_PROP_PARAMS)
+FX_BOOL Field::page(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting()) return FALSE;
 
@@ -2165,7 +2165,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::password(OBJ_PROP_PARAMS)
+FX_BOOL Field::password(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2211,7 +2211,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::print(OBJ_PROP_PARAMS)
+FX_BOOL Field::print(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2298,7 +2298,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::radiosInUnison(OBJ_PROP_PARAMS)
+FX_BOOL Field::radiosInUnison(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2331,7 +2331,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::readonly(OBJ_PROP_PARAMS)
+FX_BOOL Field::readonly(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2361,7 +2361,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::rect(OBJ_PROP_PARAMS)
+FX_BOOL Field::rect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2516,7 +2516,7 @@
 	}
 }
 
-FX_BOOL Field::required(OBJ_PROP_PARAMS)
+FX_BOOL Field::required(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2550,7 +2550,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::richText(OBJ_PROP_PARAMS)
+FX_BOOL Field::richText(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2596,7 +2596,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::richValue(OBJ_PROP_PARAMS)
+FX_BOOL Field::richValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 	if (vp.IsSetting())
@@ -2616,7 +2616,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::rotation(OBJ_PROP_PARAMS)
+FX_BOOL Field::rotation(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2659,7 +2659,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::strokeColor(OBJ_PROP_PARAMS)
+FX_BOOL Field::strokeColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2738,7 +2738,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::style(OBJ_PROP_PARAMS)
+FX_BOOL Field::style(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2810,12 +2810,12 @@
 	//Not supported.
 }
 
-FX_BOOL Field::submitName(OBJ_PROP_PARAMS)
+FX_BOOL Field::submitName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Field::textColor(OBJ_PROP_PARAMS)
+FX_BOOL Field::textColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2878,7 +2878,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::textFont(OBJ_PROP_PARAMS)
+FX_BOOL Field::textFont(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2935,7 +2935,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::textSize(OBJ_PROP_PARAMS)
+FX_BOOL Field::textSize(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -2984,7 +2984,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::type(OBJ_PROP_PARAMS)
+FX_BOOL Field::type(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3031,7 +3031,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::userName(OBJ_PROP_PARAMS)
+FX_BOOL Field::userName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3071,7 +3071,7 @@
 	//Not supported.
 }
 
-FX_BOOL Field::value(OBJ_PROP_PARAMS)
+FX_BOOL Field::value(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3291,7 +3291,7 @@
 	}
 }
 
-FX_BOOL Field::valueAsString(OBJ_PROP_PARAMS)
+FX_BOOL Field::valueAsString(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3341,7 +3341,7 @@
 
 /* --------------------------------- methods --------------------------------- */
 
-FX_BOOL Field::browseForFileToSubmit(OBJ_METHOD_PARAMS)
+FX_BOOL Field::browseForFileToSubmit(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3372,7 +3372,7 @@
 }
 
 
-FX_BOOL Field::buttonGetCaption(OBJ_METHOD_PARAMS)
+FX_BOOL Field::buttonGetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3408,7 +3408,7 @@
 
 //#pragma warning(disable: 4800)
 
-FX_BOOL Field::buttonGetIcon(OBJ_METHOD_PARAMS)
+FX_BOOL Field::buttonGetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3463,7 +3463,7 @@
 
 //#pragma warning(default: 4800)
 
-FX_BOOL Field::buttonImportIcon(OBJ_METHOD_PARAMS)
+FX_BOOL Field::buttonImportIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 #if 0  
 	ASSERT(m_pDocument != NULL);
@@ -3506,17 +3506,17 @@
 	return TRUE;
 }
 
-FX_BOOL Field::buttonSetCaption(OBJ_METHOD_PARAMS)
+FX_BOOL Field::buttonSetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::buttonSetIcon(OBJ_METHOD_PARAMS)
+FX_BOOL Field::buttonSetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::checkThisBox(OBJ_METHOD_PARAMS)
+FX_BOOL Field::checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3554,12 +3554,12 @@
 	return TRUE;
 }
 
-FX_BOOL Field::clearItems(OBJ_METHOD_PARAMS)
+FX_BOOL Field::clearItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Field::defaultIsChecked(OBJ_METHOD_PARAMS)
+FX_BOOL Field::defaultIsChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3599,7 +3599,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::deleteItemAt(OBJ_METHOD_PARAMS)
+FX_BOOL Field::deleteItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
@@ -3613,7 +3613,7 @@
 }
 
 
-FX_BOOL Field::getArray(OBJ_METHOD_PARAMS)
+FX_BOOL Field::getArray(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3666,7 +3666,7 @@
 	return TRUE;
 }
 	
-FX_BOOL Field::getItemAt(OBJ_METHOD_PARAMS)
+FX_BOOL Field::getItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3709,17 +3709,17 @@
 	return TRUE;
 }
 
-FX_BOOL Field::getLock(OBJ_METHOD_PARAMS)
+FX_BOOL Field::getLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::insertItemAt(OBJ_METHOD_PARAMS)
+FX_BOOL Field::insertItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Field::isBoxChecked(OBJ_METHOD_PARAMS)
+FX_BOOL Field::isBoxChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3754,7 +3754,7 @@
 	return TRUE;
 }
 
-FX_BOOL Field::isDefaultChecked(OBJ_METHOD_PARAMS)
+FX_BOOL Field::isDefaultChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3788,12 +3788,12 @@
 	return TRUE;
 }
 
-FX_BOOL Field::setAction(OBJ_METHOD_PARAMS)
+FX_BOOL Field::setAction(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Field::setFocus(OBJ_METHOD_PARAMS)
+FX_BOOL Field::setFocus(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	ASSERT(m_pDocument != NULL);
 
@@ -3847,47 +3847,47 @@
 	return TRUE;
 }
 
-FX_BOOL Field::setItems(OBJ_METHOD_PARAMS)
+FX_BOOL Field::setItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL Field::setLock(OBJ_METHOD_PARAMS)
+FX_BOOL Field::setLock(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::signatureGetModifications(OBJ_METHOD_PARAMS)
+FX_BOOL Field::signatureGetModifications(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::signatureGetSeedValue(OBJ_METHOD_PARAMS)
+FX_BOOL Field::signatureGetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::signatureInfo(OBJ_METHOD_PARAMS)
+FX_BOOL Field::signatureInfo(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::signatureSetSeedValue(OBJ_METHOD_PARAMS)
+FX_BOOL Field::signatureSetSeedValue(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::signatureSign(OBJ_METHOD_PARAMS)
+FX_BOOL Field::signatureSign(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::signatureValidate(OBJ_METHOD_PARAMS)
+FX_BOOL Field::signatureValidate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL Field::source(OBJ_PROP_PARAMS)
+FX_BOOL Field::source(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
diff --git a/fpdfsdk/src/javascript/Icon.cpp b/fpdfsdk/src/javascript/Icon.cpp
index 286980c..333d1f8 100644
--- a/fpdfsdk/src/javascript/Icon.cpp
+++ b/fpdfsdk/src/javascript/Icon.cpp
@@ -57,7 +57,7 @@
 	return m_swIconName;
 }
 
-FX_BOOL Icon::name(OBJ_PROP_PARAMS)
+FX_BOOL Icon::name(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if(!vp.IsGetting())return FALSE;
 
diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp
index 3eb8a09..9affe41 100644
--- a/fpdfsdk/src/javascript/PublicMethods.cpp
+++ b/fpdfsdk/src/javascript/PublicMethods.cpp
@@ -1050,7 +1050,7 @@
 /* -------------------------------------------------------------------------- */
 
 //function AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend)
-FX_BOOL CJS_PublicMethods::AFNumber_Format(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 #if _FX_OS_ != _FX_ANDROID_
 	v8::Isolate* isolate = ::GetIsolate(cc);
@@ -1259,7 +1259,7 @@
 }
 
 //function AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend)
-FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -1391,7 +1391,7 @@
 }
 
 //function AFPercent_Format(nDec, sepStyle)
-FX_BOOL CJS_PublicMethods::AFPercent_Format(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 #if _FX_OS_ != _FX_ANDROID_
 	CJS_Context* pContext = (CJS_Context *)cc;
@@ -1510,13 +1510,13 @@
 	return TRUE;
 }
 //AFPercent_Keystroke(nDec, sepStyle)
-FX_BOOL CJS_PublicMethods::AFPercent_Keystroke(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFPercent_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return AFNumber_Keystroke(cc,params,vRet,sError);
 }
 
 //function AFDate_FormatEx(cFormat)
-FX_BOOL CJS_PublicMethods::AFDate_FormatEx(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -1625,7 +1625,7 @@
 }
 
 //AFDate_KeystrokeEx(cFormat)
-FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -1661,7 +1661,7 @@
 	return TRUE;
 }
 
-FX_BOOL CJS_PublicMethods::AFDate_Format(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFDate_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = ::GetIsolate(cc);
 
@@ -1692,7 +1692,7 @@
 }
 
 //AFDate_KeystrokeEx(cFormat)
-FX_BOOL CJS_PublicMethods::AFDate_Keystroke(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFDate_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = ::GetIsolate(cc);
 
@@ -1723,7 +1723,7 @@
 }
 
 //function AFTime_Format(ptf)
-FX_BOOL CJS_PublicMethods::AFTime_Format(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFTime_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = ::GetIsolate(cc);
 
@@ -1750,7 +1750,7 @@
 	return AFDate_FormatEx(cc,newParams,vRet,sError);
 }
 
-FX_BOOL CJS_PublicMethods::AFTime_Keystroke(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFTime_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = ::GetIsolate(cc);
 	if (params.size() != 1)
@@ -1776,18 +1776,18 @@
 	return AFDate_KeystrokeEx(cc,newParams,vRet,sError);
 }
 
-FX_BOOL CJS_PublicMethods::AFTime_FormatEx(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFTime_FormatEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return AFDate_FormatEx(cc,params,vRet,sError);
 }
 
-FX_BOOL CJS_PublicMethods::AFTime_KeystrokeEx(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFTime_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return AFDate_KeystrokeEx(cc,params,vRet,sError);
 }
 
 //function AFSpecial_Format(psf)
-FX_BOOL CJS_PublicMethods::AFSpecial_Format(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFSpecial_Format(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -1840,7 +1840,7 @@
 
 
 //function AFSpecial_KeystrokeEx(mask)
-FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -1940,7 +1940,7 @@
 
 
 //function AFSpecial_Keystroke(psf)
-FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = ::GetIsolate(cc);
 
@@ -1999,7 +1999,7 @@
     return AFSpecial_KeystrokeEx(cc,params2,vRet,sError);
 }
 
-FX_BOOL CJS_PublicMethods::AFMergeChange(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFMergeChange(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -2039,7 +2039,7 @@
 	return TRUE;
 }
 
-FX_BOOL CJS_PublicMethods::AFParseDateEx(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFParseDateEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -2069,7 +2069,7 @@
 	return TRUE;
 }
 
-FX_BOOL CJS_PublicMethods::AFSimple(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFSimple(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() != 3)
 	{
@@ -2084,7 +2084,7 @@
 	return TRUE;
 }
 
-FX_BOOL CJS_PublicMethods::AFMakeNumber(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFMakeNumber(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() != 1)
 	{
@@ -2098,7 +2098,7 @@
 	return TRUE;
 }
 
-FX_BOOL CJS_PublicMethods::AFSimple_Calculate(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = ::GetIsolate(cc);
 
@@ -2222,7 +2222,7 @@
 /* This function validates the current event to ensure that its value is 
 ** within the specified range. */
 
-FX_BOOL CJS_PublicMethods::AFRange_Validate(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFRange_Validate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context *)cc;
 	ASSERT(pContext != NULL);
@@ -2272,7 +2272,7 @@
 	return TRUE;
 }
 
-FX_BOOL CJS_PublicMethods::AFExtractNums(OBJ_METHOD_PARAMS)
+FX_BOOL CJS_PublicMethods::AFExtractNums(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = ::GetIsolate(cc);
 	CJS_Context* pContext = (CJS_Context*)cc;
diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp
index c1dd41f..ccdd8ab 100644
--- a/fpdfsdk/src/javascript/app.cpp
+++ b/fpdfsdk/src/javascript/app.cpp
@@ -133,7 +133,7 @@
 	m_aTimer.RemoveAll();
 }
 
-FX_BOOL app::activeDocs(OBJ_PROP_PARAMS)
+FX_BOOL app::activeDocs(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -191,7 +191,7 @@
 	return FALSE;
 }
 
-FX_BOOL app::calculate(OBJ_PROP_PARAMS)
+FX_BOOL app::calculate(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsSetting())
 	{
@@ -229,7 +229,7 @@
 	return TRUE;
 }
 
-FX_BOOL app::formsVersion(OBJ_PROP_PARAMS)
+FX_BOOL app::formsVersion(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -240,7 +240,7 @@
 	return FALSE;
 }
 
-FX_BOOL app::viewerType(OBJ_PROP_PARAMS)
+FX_BOOL app::viewerType(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -251,7 +251,7 @@
 	return FALSE;
 }
 
-FX_BOOL app::viewerVariation(OBJ_PROP_PARAMS)
+FX_BOOL app::viewerVariation(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -262,7 +262,7 @@
 	return FALSE;
 }
 
-FX_BOOL app::viewerVersion(OBJ_PROP_PARAMS)
+FX_BOOL app::viewerVersion(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -273,7 +273,7 @@
 	return FALSE;
 }
 
-FX_BOOL app::platform(OBJ_PROP_PARAMS)
+FX_BOOL app::platform(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -284,7 +284,7 @@
 	return FALSE;
 }
 
-FX_BOOL app::language(OBJ_PROP_PARAMS)
+FX_BOOL app::language(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsGetting())
 	{
@@ -299,7 +299,7 @@
 //comment: need reader support
 //note:
 //CFDF_Document * CPDFDoc_Environment::NewFDF();
-FX_BOOL app::newFDF(OBJ_METHOD_PARAMS)
+FX_BOOL app::newFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
@@ -308,12 +308,12 @@
 //note: as defined in js reference, the proto of this function's fourth parmeters, how old an fdf document while do not show it.
 //CFDF_Document * CPDFDoc_Environment::OpenFDF(string strPath,bool bUserConv);
 
-FX_BOOL app::openFDF(OBJ_METHOD_PARAMS)
+FX_BOOL app::openFDF(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL app::alert(OBJ_METHOD_PARAMS)
+FX_BOOL app::alert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	int iSize = params.size();
 	if (iSize < 1)
@@ -438,7 +438,7 @@
 }
 
 
-FX_BOOL app::beep(OBJ_METHOD_PARAMS)
+FX_BOOL app::beep(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() == 1)
 	{
@@ -456,22 +456,22 @@
 	}
 }
 
-FX_BOOL app::findComponent(OBJ_METHOD_PARAMS)
+FX_BOOL app::findComponent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
 
-FX_BOOL app::popUpMenuEx(OBJ_METHOD_PARAMS)
+FX_BOOL app::popUpMenuEx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL app::fs(OBJ_PROP_PARAMS)
+FX_BOOL app::fs(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL app::setInterval(OBJ_METHOD_PARAMS)
+FX_BOOL app::setInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() > 2 || params.size() == 0)
 	{
@@ -520,7 +520,7 @@
 	return TRUE;
 }
 
-FX_BOOL app::setTimeOut(OBJ_METHOD_PARAMS)
+FX_BOOL app::setTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() > 2 || params.size() == 0)
 	{
@@ -571,7 +571,7 @@
 	return TRUE;
 }
 
-FX_BOOL app::clearTimeOut(OBJ_METHOD_PARAMS)
+FX_BOOL app::clearTimeOut(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -619,7 +619,7 @@
 	return TRUE;
 }
 
-FX_BOOL app::clearInterval(OBJ_METHOD_PARAMS)
+FX_BOOL app::clearInterval(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -667,7 +667,7 @@
 	return TRUE;
 }
 
-FX_BOOL app::execMenuItem(OBJ_METHOD_PARAMS)
+FX_BOOL app::execMenuItem(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
@@ -707,19 +707,19 @@
 	}
 }
 
-FX_BOOL app::goBack(OBJ_METHOD_PARAMS)
+FX_BOOL app::goBack(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Not supported.
   return TRUE;
 }
 
-FX_BOOL app::goForward(OBJ_METHOD_PARAMS)
+FX_BOOL app::goForward(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Not supported.
   return TRUE;
 }
 
-FX_BOOL app::mailMsg(OBJ_METHOD_PARAMS)
+FX_BOOL app::mailMsg(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -783,13 +783,13 @@
 	return FALSE;
 }
 
-FX_BOOL app::launchURL(OBJ_METHOD_PARAMS)
+FX_BOOL app::launchURL(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
 }
 
-FX_BOOL app::runtimeHighlight(OBJ_PROP_PARAMS)
+FX_BOOL app::runtimeHighlight(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (vp.IsSetting())
 	{
@@ -803,18 +803,18 @@
 	return TRUE;
 }
 
-FX_BOOL app::fullscreen(OBJ_PROP_PARAMS)
+FX_BOOL app::fullscreen(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL app::popUpMenu(OBJ_METHOD_PARAMS)
+FX_BOOL app::popUpMenu(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
 
-FX_BOOL app::browseForDoc(OBJ_METHOD_PARAMS)
+FX_BOOL app::browseForDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
@@ -846,17 +846,17 @@
 	return sRet;
 }
 
-FX_BOOL app::newDoc(OBJ_METHOD_PARAMS)
+FX_BOOL app::newDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL app::openDoc(OBJ_METHOD_PARAMS)
+FX_BOOL app::openDoc(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL app::response(OBJ_METHOD_PARAMS)
+FX_BOOL app::response(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	CFX_WideString swQuestion = L"";
 	CFX_WideString swLabel = L"";
@@ -936,12 +936,12 @@
 	return TRUE;
 }
 
-FX_BOOL app::media(OBJ_PROP_PARAMS)
+FX_BOOL app::media(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return FALSE;
 }
 
-FX_BOOL app::execDialog(OBJ_METHOD_PARAMS)
+FX_BOOL app::execDialog(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
diff --git a/fpdfsdk/src/javascript/color.cpp b/fpdfsdk/src/javascript/color.cpp
index 3841706..536a64e 100644
--- a/fpdfsdk/src/javascript/color.cpp
+++ b/fpdfsdk/src/javascript/color.cpp
@@ -156,7 +156,7 @@
 }
 
 #define JS_IMPLEMENT_COLORPROP(prop, var)\
-FX_BOOL color::prop(OBJ_PROP_PARAMS)\
+FX_BOOL color::prop(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)\
 {\
 	CJS_Context* pContext = (CJS_Context*)cc;\
 	v8::Isolate* isolate = pContext->GetJSRuntime()->GetIsolate();\
@@ -188,7 +188,7 @@
 JS_IMPLEMENT_COLORPROP(gray, m_crGray)
 JS_IMPLEMENT_COLORPROP(ltGray, m_crLTGray)
 
-FX_BOOL color::convert(OBJ_METHOD_PARAMS)
+FX_BOOL color::convert(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = GetIsolate(cc);
 	int iSize = params.size();
@@ -229,7 +229,7 @@
 	return TRUE;
 }
 
-FX_BOOL color::equal(OBJ_METHOD_PARAMS)
+FX_BOOL color::equal(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = GetIsolate(cc);
 	if (params.size() < 2) return FALSE;
diff --git a/fpdfsdk/src/javascript/console.cpp b/fpdfsdk/src/javascript/console.cpp
index 350b4e1..d79ac34 100644
--- a/fpdfsdk/src/javascript/console.cpp
+++ b/fpdfsdk/src/javascript/console.cpp
@@ -42,7 +42,7 @@
 {
 }
 
-FX_BOOL console::clear(OBJ_METHOD_PARAMS)
+FX_BOOL console::clear(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 
 
@@ -50,7 +50,7 @@
 	return TRUE;
 }
 
-FX_BOOL console::hide(OBJ_METHOD_PARAMS)
+FX_BOOL console::hide(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 
 
@@ -59,7 +59,7 @@
 	return TRUE;
 }
 
-FX_BOOL console::println(OBJ_METHOD_PARAMS)
+FX_BOOL console::println(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() < 1)
 	{
@@ -69,7 +69,7 @@
 	return TRUE;
 }
 
-FX_BOOL console::show(OBJ_METHOD_PARAMS)
+FX_BOOL console::show(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	return TRUE;
 }
diff --git a/fpdfsdk/src/javascript/event.cpp b/fpdfsdk/src/javascript/event.cpp
index 5188765..196ab32 100644
--- a/fpdfsdk/src/javascript/event.cpp
+++ b/fpdfsdk/src/javascript/event.cpp
@@ -56,7 +56,7 @@
 {
 }
 
-FX_BOOL event::change(OBJ_PROP_PARAMS)
+FX_BOOL event::change(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -76,7 +76,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::changeEx(OBJ_PROP_PARAMS)
+FX_BOOL event::changeEx(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -89,7 +89,7 @@
 	return TRUE;	
 }
 
-FX_BOOL event::commitKey(OBJ_PROP_PARAMS)
+FX_BOOL event::commitKey(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -102,7 +102,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::fieldFull(OBJ_PROP_PARAMS)
+FX_BOOL event::fieldFull(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {	
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -119,7 +119,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::keyDown(OBJ_PROP_PARAMS)
+FX_BOOL event::keyDown(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -135,7 +135,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::modifier(OBJ_PROP_PARAMS)
+FX_BOOL event::modifier(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -151,7 +151,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::name(OBJ_PROP_PARAMS)
+FX_BOOL event::name(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -164,7 +164,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::rc(OBJ_PROP_PARAMS)
+FX_BOOL event::rc(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -183,7 +183,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::richChange(OBJ_PROP_PARAMS)
+FX_BOOL event::richChange(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 	if (vp.IsSetting())
@@ -196,7 +196,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::richChangeEx(OBJ_PROP_PARAMS)
+FX_BOOL event::richChangeEx(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 	if (vp.IsSetting())
@@ -210,7 +210,7 @@
 }
 
 
-FX_BOOL event::richValue(OBJ_PROP_PARAMS)
+FX_BOOL event::richValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	return TRUE;
 	if (vp.IsSetting())
@@ -223,7 +223,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::selEnd(OBJ_PROP_PARAMS)
+FX_BOOL event::selEnd(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -247,7 +247,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::selStart(OBJ_PROP_PARAMS)
+FX_BOOL event::selStart(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {	
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -270,7 +270,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::shift(OBJ_PROP_PARAMS)
+FX_BOOL event::shift(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -286,7 +286,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::source(OBJ_PROP_PARAMS)
+FX_BOOL event::source(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;	
 
@@ -299,7 +299,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::target(OBJ_PROP_PARAMS)
+FX_BOOL event::target(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -312,7 +312,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::targetName(OBJ_PROP_PARAMS)
+FX_BOOL event::targetName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -325,7 +325,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::type(OBJ_PROP_PARAMS)
+FX_BOOL event::type(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
@@ -338,7 +338,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::value(OBJ_PROP_PARAMS)
+FX_BOOL event::value(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	CJS_Context* pContext = (CJS_Context*)cc;
 	ASSERT(pContext != NULL);
@@ -361,7 +361,7 @@
 	return TRUE;
 }
 
-FX_BOOL event::willCommit(OBJ_PROP_PARAMS)
+FX_BOOL event::willCommit(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
 {
 	if (!vp.IsGetting())return FALSE;
 
diff --git a/fpdfsdk/src/javascript/global.cpp b/fpdfsdk/src/javascript/global.cpp
index b45fd04..587ba85 100644
--- a/fpdfsdk/src/javascript/global.cpp
+++ b/fpdfsdk/src/javascript/global.cpp
@@ -268,7 +268,7 @@
 	return FALSE;
 }
 
-FX_BOOL global_alternate::setPersistent(OBJ_METHOD_PARAMS)
+FX_BOOL global_alternate::setPersistent(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	if (params.size() != 2)
 	{
@@ -615,3 +615,28 @@
 
 	return TRUE;
 }
+
+FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p)
+{
+  const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p));
+
+  if (nHash == JSCONST_nUndefHash)
+    return VT_undefined;
+  if (nHash == JSCONST_nNullHash)
+    return VT_null;
+  if (nHash == JSCONST_nStringHash)
+    return VT_string;
+  if (nHash == JSCONST_nNumberHash)
+    return VT_number;
+  if (nHash == JSCONST_nBoolHash)
+    return VT_boolean;
+  if (nHash == JSCONST_nDateHash)
+    return VT_date;
+  if (nHash == JSCONST_nObjectHash)
+    return VT_object;
+  if (nHash == JSCONST_nFXobjHash)
+    return VT_fxobject;
+
+  return VT_unknown;
+}
+
diff --git a/fpdfsdk/src/javascript/report.cpp b/fpdfsdk/src/javascript/report.cpp
index 189ab87..24b7aee 100644
--- a/fpdfsdk/src/javascript/report.cpp
+++ b/fpdfsdk/src/javascript/report.cpp
@@ -36,13 +36,13 @@
 
 }
 
-FX_BOOL Report::writeText(OBJ_METHOD_PARAMS)
+FX_BOOL Report::writeText(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
 }
 
-FX_BOOL Report::save(OBJ_METHOD_PARAMS)
+FX_BOOL Report::save(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
   // Unsafe, not supported.
   return TRUE;
diff --git a/fpdfsdk/src/javascript/util.cpp b/fpdfsdk/src/javascript/util.cpp
index 83fb32c..a53bb17 100644
--- a/fpdfsdk/src/javascript/util.cpp
+++ b/fpdfsdk/src/javascript/util.cpp
@@ -137,7 +137,7 @@
 	return -1;
 }
 
-FX_BOOL util::printf(OBJ_METHOD_PARAMS)
+FX_BOOL util::printf(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	int iSize = params.size();
 	if (iSize < 1)
@@ -202,7 +202,7 @@
 	return TRUE;
 }
 
-FX_BOOL util::printd(OBJ_METHOD_PARAMS)
+FX_BOOL util::printd(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = GetIsolate(cc);
 
@@ -464,7 +464,7 @@
 		cPurpose = cFormat;
 }
 
-FX_BOOL util::printx(OBJ_METHOD_PARAMS)
+FX_BOOL util::printx(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	int iSize = params.size();
 	if (iSize<2)
@@ -578,7 +578,7 @@
 	}
 }
 
-FX_BOOL util::scand(OBJ_METHOD_PARAMS)
+FX_BOOL util::scand(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	v8::Isolate* isolate = GetIsolate(cc);
 	int iSize = params.size();
@@ -635,7 +635,7 @@
             return total;   /* return result, negated if necessary */
 }
 
-FX_BOOL util::byteToChar(OBJ_METHOD_PARAMS)
+FX_BOOL util::byteToChar(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
 {
 	int iSize = params.size();
 	if (iSize == 0)