XFA: merge patch from CL 733693003, getting rid of more casts

Getting rid of more (FX_LPCWSTR) casts and fixing two bugs revealed by this.

Since casts to FX_LPCWSTR have been shown to hide bugs I tried removing
more of them, targeting those places where a cast was used to force a
conversion from CFX_WideString to FX_LPCWSTR, replacing these casts with
calls to the newly added .c_str() function. This revealed two places
where the cast was hiding a bug -- where ->c_str() was required instead!

This removes ~33 FX_LPCWSTR casts and there are ~31 left, many of which
will go away in some future change.

Also includes this change:

Removing unnecessary casts from wchar_t* to wchar_t*, by various names.

Original patch from Bruce Dawson(brucedawson@chromium.org)

TBR=bo_xu@foxitsoftware.com, tsepez@chromium.org

Review URL: https://codereview.chromium.org/811593007
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
index 9ee9639..2c12068 100644
--- a/fpdfsdk/src/javascript/Document.cpp
+++ b/fpdfsdk/src/javascript/Document.cpp
@@ -605,7 +605,7 @@
 	ASSERT(pRuntime != NULL);
 
 	pRuntime->BeginBlock();
-    pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, (FX_LPCWSTR)cTo, (FX_LPCWSTR)cSubject, (FX_LPCWSTR)cCc, (FX_LPCWSTR)cBcc, (FX_LPCWSTR)cMsg);
+	pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
 	pRuntime->EndBlock();
 	return TRUE;
 }
@@ -999,7 +999,7 @@
 
 	pRuntime->BeginBlock();
 	CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp();
-	pEnv->JS_docmailForm(NULL, 0, bUI, (FX_LPCWSTR)cTo, (FX_LPCWSTR)cSubject, (FX_LPCWSTR)cCc, (FX_LPCWSTR)cBcc, (FX_LPCWSTR)cMsg);
+	pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
 	pRuntime->EndBlock();
 
 	return TRUE;
diff --git a/fpdfsdk/src/javascript/Field.cpp b/fpdfsdk/src/javascript/Field.cpp
index 4b1f20a..24de66d 100644
--- a/fpdfsdk/src/javascript/Field.cpp
+++ b/fpdfsdk/src/javascript/Field.cpp
@@ -194,7 +194,7 @@
 	{
 		std::wstring strFieldName;
 		int iControlNo = -1;
-		ParseFieldName((FX_LPCWSTR)swFieldNameTemp, strFieldName, iControlNo);
+		ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
 		if (iControlNo == -1) return FALSE;
 		
 		m_FieldName = strFieldName.c_str();
@@ -1573,7 +1573,7 @@
 				CPDF_FormControl* pFormControl = pFormField->GetControl(i);
 				ASSERT(pFormControl != NULL);
 
-				ExportValusArray.SetElement(i, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue()));
+				ExportValusArray.SetElement(i, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
 			}
 		}
 		else
@@ -1582,7 +1582,7 @@
 			CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex);
 			if (!pFormControl) return FALSE;
 
-			ExportValusArray.SetElement(0, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue()));
+			ExportValusArray.SetElement(0, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
 		}
 
 		vp << ExportValusArray;
@@ -3322,7 +3322,7 @@
 		{
 			if (pFormField->GetControl(i)->IsChecked())
 			{
-				vp << (FX_LPCWSTR)pFormField->GetControl(i)->GetExportValue();
+				vp << pFormField->GetControl(i)->GetExportValue().c_str();
 				break;
 			}
 			else
@@ -3334,7 +3334,7 @@
 		vp << L"";
 	}
 	else
-		vp << (FX_LPCWSTR)pFormField->GetValue();
+		vp << pFormField->GetValue().c_str();
 
 	return TRUE;
 }
diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp
index 4c51c9a..82bffe6 100644
--- a/fpdfsdk/src/javascript/PublicMethods.cpp
+++ b/fpdfsdk/src/javascript/PublicMethods.cpp
@@ -1554,7 +1554,7 @@
 	if (JS_PortIsNan(dDate))
 	{
 		CFX_WideString swMsg;
-		swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), (FX_LPCWSTR)sFormat);
+		swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
 		Alert(pContext, swMsg);
 		return FALSE;
 	}
@@ -1652,7 +1652,7 @@
 		if (bWrongFormat || JS_PortIsNan(dRet))
 		{
 			CFX_WideString swMsg;
-			swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), (FX_LPCWSTR)sFormat);
+			swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
 			Alert(pContext, swMsg);
 			pEvent->Rc() = FALSE;
 			return TRUE;
@@ -2059,7 +2059,7 @@
 	if (JS_PortIsNan(dDate))
 	{
 		CFX_WideString swMsg;
-		swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), (FX_LPCWSTR)sFormat);
+		swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
 		Alert((CJS_Context *)cc, swMsg);
 		return FALSE;
 	}
@@ -2304,7 +2304,7 @@
 		{
 			if (sPart.GetLength() > 0)
 			{
-				nums.SetElement(nIndex,CJS_Value(isolate,(FX_LPCWSTR)sPart));
+				nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));
 				sPart = L"";
 				nIndex ++;
 			}
@@ -2313,7 +2313,7 @@
 
 	if (sPart.GetLength() > 0)
 	{
-		nums.SetElement(nIndex,CJS_Value(isolate,(FX_LPCWSTR)sPart));	
+		nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));	
 	}
 
 	if (nums.GetLength() > 0)
diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp
index 602bfae..7cf2663 100644
--- a/fpdfsdk/src/javascript/app.cpp
+++ b/fpdfsdk/src/javascript/app.cpp
@@ -810,7 +810,7 @@
 	ASSERT(pApp != NULL);
 
 	pRuntime->BeginBlock();
-	pApp->JS_docmailForm(NULL, 0, bUI, (FX_LPCWSTR)cTo, (FX_LPCWSTR)cSubject, (FX_LPCWSTR)cCc, (FX_LPCWSTR)cBcc, (FX_LPCWSTR)cMsg);
+	pApp->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
 	///////////////////////////////////////////////////////////////////////////////////////////////
 	pRuntime->EndBlock();
 
diff --git a/fpdfsdk/src/javascript/global.cpp b/fpdfsdk/src/javascript/global.cpp
index f845ee0..f5bc82c 100644
--- a/fpdfsdk/src/javascript/global.cpp
+++ b/fpdfsdk/src/javascript/global.cpp
@@ -351,7 +351,7 @@
 		CFX_WideString ws = JS_ToString(JS_GetArrayElemnet(pKeyList, i));
 		CFX_ByteString sKey = ws.UTF8Encode();
 
-		v8::Handle<v8::Value> v = JS_GetObjectElement(isolate, pObj, (FX_LPCWSTR)ws);
+		v8::Handle<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str());
 		FXJSVALUETYPE vt = GET_VALUE_TYPE(v);
 		switch (vt)
 		{