Merge V8 API updates to xfa branch

Set pointers in internal fields directly instead of wrapping them
Review URL: https://codereview.chromium.org/1139853003

Use phantom handles instead of weak handles
Review URL: https://codereview.chromium.org/1129253004

Replace deprecated with non-deprecated V8 APIs
Review URL: https://codereview.chromium.org/1126203010

Add myself to OWNERS file
Review URL: https://codereview.chromium.org/1133333005

Replace v8::Handle with v8::Local and v8::Persistent with v8::Global
Review URL: https://codereview.chromium.org/1138823004

TBR=tsepez@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1140033004
diff --git a/fpdfsdk/src/javascript/global.cpp b/fpdfsdk/src/javascript/global.cpp
index 45b9248..daf5a85 100644
--- a/fpdfsdk/src/javascript/global.cpp
+++ b/fpdfsdk/src/javascript/global.cpp
@@ -169,19 +169,19 @@
 			{
 				double dData;
 				vp >> dData;
-				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, false, "", v8::Handle<v8::Object>(), FALSE);
+				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NUMBER, dData, false, "", v8::Local<v8::Object>(), FALSE);
 			}
 		case VT_boolean:
 			{
 				bool bData;
 				vp >> bData;
-				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, bData, "", v8::Handle<v8::Object>(), FALSE);
+				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_BOOLEAN, 0, bData, "", v8::Local<v8::Object>(), FALSE);
 			}
 		case VT_string:
 			{
 				CFX_ByteString sData;
 				vp >> sData;
-				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_STRING, 0, false, sData, v8::Handle<v8::Object>(), FALSE);
+				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_STRING, 0, false, sData, v8::Local<v8::Object>(), FALSE);
 			}
 		case VT_object:
 			{
@@ -191,7 +191,7 @@
 			}
 		case VT_null:
 			{
-				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NULL, 0, false, "", v8::Handle<v8::Object>(), FALSE);
+				return SetGlobalVariables(sPropName, JS_GLOBALDATA_TYPE_NULL, 0, false, "", v8::Local<v8::Object>(), FALSE);
 			}
 		case VT_undefined:
 			{
@@ -226,7 +226,7 @@
 						break;
 					case JS_GLOBALDATA_TYPE_OBJECT:
 						{
-							v8::Handle<v8::Object> obj = v8::Local<v8::Object>::New(vp.GetIsolate(),pData->pData);
+							v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(vp.GetIsolate(),pData->pData);
 							vp << obj;
 							break;
 						}
@@ -296,17 +296,17 @@
 		switch (pData->data.nType)
 		{
 		case JS_GLOBALDATA_TYPE_NUMBER:
-			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, pData->data.dData, false, "", v8::Handle<v8::Object>(), pData->bPersistent == 1);
+			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, pData->data.dData, false, "", v8::Local<v8::Object>(), pData->bPersistent == 1);
 			JS_PutObjectNumber(NULL,(JSFXObject)(*m_pJSObject),
 							   pData->data.sKey.UTF8Decode().c_str(), pData->data.dData);
 			break;
 		case JS_GLOBALDATA_TYPE_BOOLEAN:
-			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, (bool)(pData->data.bData == 1), "", v8::Handle<v8::Object>(), pData->bPersistent == 1);
+			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, (bool)(pData->data.bData == 1), "", v8::Local<v8::Object>(), pData->bPersistent == 1);
 			JS_PutObjectBoolean(NULL,(JSFXObject)(*m_pJSObject),
 								pData->data.sKey.UTF8Decode().c_str(), (bool)(pData->data.bData == 1));
 			break;
 		case JS_GLOBALDATA_TYPE_STRING:
-			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, false, pData->data.sData, v8::Handle<v8::Object>(), pData->bPersistent == 1);
+			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, false, pData->data.sData, v8::Local<v8::Object>(), pData->bPersistent == 1);
 			JS_PutObjectString(NULL, (JSFXObject)(*m_pJSObject),
 							   pData->data.sKey.UTF8Decode().c_str(),
 							   pData->data.sData.UTF8Decode().c_str());
@@ -314,7 +314,7 @@
 		case JS_GLOBALDATA_TYPE_OBJECT:
 			{
 				IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject));
-				v8::Handle<v8::Object> pObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
+				v8::Local<v8::Object> pObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
 
 				PutObjectProperty(pObj, &pData->data);
 
@@ -325,7 +325,7 @@
 			}
 			break;
 		case JS_GLOBALDATA_TYPE_NULL:
-			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, "", v8::Handle<v8::Object>(), pData->bPersistent == 1);
+			this->SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, "", v8::Local<v8::Object>(), pData->bPersistent == 1);
 			JS_PutObjectNull(NULL,(JSFXObject)(*m_pJSObject),
 							 pData->data.sKey.UTF8Decode().c_str());
 			break;
@@ -370,7 +370,7 @@
 					//if (pData->pData)
 					{
 						CJS_GlobalVariableArray array;
-						v8::Handle<v8::Object> obj = v8::Local<v8::Object>::New(GetJSObject()->GetIsolate(),pData->pData);
+						v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(GetJSObject()->GetIsolate(),pData->pData);
 						ObjectToArray(obj, array);
 						m_pGlobalData->SetGlobalVariableObject(name, array);
 						m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPersistent);
@@ -386,21 +386,20 @@
 	}
 }
 
-void global_alternate::ObjectToArray(v8::Handle<v8::Object> pObj, CJS_GlobalVariableArray& array)
+void global_alternate::ObjectToArray(v8::Local<v8::Object> pObj, CJS_GlobalVariableArray& array)
 {
-	v8::Handle<v8::Array> pKeyList = JS_GetObjectElementNames(pObj);
-	int	nObjElements = pKeyList->Length();
-
 	v8::Local<v8::Context> context = pObj->CreationContext();
 	v8::Isolate* isolate = context->GetIsolate();
+	v8::Local<v8::Array> pKeyList = JS_GetObjectElementNames(isolate, pObj);
+	int	nObjElements = pKeyList->Length();
 
 	for (int i=0; i<nObjElements; i++)
 	{
 		
-		CFX_WideString ws = JS_ToString(JS_GetArrayElemnet(pKeyList, i));
+		CFX_WideString ws = JS_ToString(isolate, JS_GetArrayElement(isolate, pKeyList, i));
 		CFX_ByteString sKey = ws.UTF8Encode();
 
-		v8::Handle<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str());
+		v8::Local<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str());
 		FXJSVALUETYPE vt = GET_VALUE_TYPE(v);
 		switch (vt)
 		{
@@ -409,7 +408,7 @@
 				CJS_KeyValue* pObjElement = new CJS_KeyValue;
 				pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
 				pObjElement->sKey = sKey;
-				pObjElement->dData = JS_ToNumber(v);
+				pObjElement->dData = JS_ToNumber(isolate, v);
 				array.Add(pObjElement);
 			}
 			break;
@@ -418,7 +417,7 @@
 				CJS_KeyValue* pObjElement = new CJS_KeyValue;
 				pObjElement->nType = JS_GLOBALDATA_TYPE_BOOLEAN;
 				pObjElement->sKey = sKey;
-				pObjElement->dData = JS_ToBoolean(v);
+				pObjElement->dData = JS_ToBoolean(isolate, v);
 				array.Add(pObjElement);
 			}
 			break;
@@ -437,7 +436,7 @@
 				CJS_KeyValue* pObjElement = new CJS_KeyValue;
 				pObjElement->nType = JS_GLOBALDATA_TYPE_OBJECT;
 				pObjElement->sKey = sKey;
-				ObjectToArray(JS_ToObject(v), pObjElement->objData);
+				ObjectToArray(JS_ToObject(isolate, v), pObjElement->objData);
 				array.Add(pObjElement);
 			}
 			break;
@@ -455,7 +454,7 @@
 	}
 }
 
-void global_alternate::PutObjectProperty(v8::Handle<v8::Object> pObj, CJS_KeyValue* pData)
+void global_alternate::PutObjectProperty(v8::Local<v8::Object> pObj, CJS_KeyValue* pData)
 {
 	ASSERT(pData != NULL);
 
@@ -478,7 +477,7 @@
 		case JS_GLOBALDATA_TYPE_OBJECT:
 			{
 				IJS_Runtime* pRuntime = JS_GetRuntime((JSFXObject)(*m_pJSObject));
-				v8::Handle<v8::Object> pNewObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
+				v8::Local<v8::Object> pNewObj = JS_NewFxDynamicObj(pRuntime, NULL, -1);
 				PutObjectProperty(pNewObj, pObjData);
 				JS_PutObjectObject(NULL, (JSObject)pObj, pObjData->sKey.UTF8Decode().c_str(), (JSObject)pNewObj);
 			}
@@ -608,7 +607,7 @@
 	return TRUE;
 }
 
-FXJSVALUETYPE GET_VALUE_TYPE(v8::Handle<v8::Value> p)
+FXJSVALUETYPE GET_VALUE_TYPE(v8::Local<v8::Value> p)
 {
   const unsigned int nHash = JS_CalcHash(JS_GetTypeof(p));