Remove GetType from CJS_Value

This CL removes the GetType method from CJS_Value and, instead,
retrieves the value from the v8 object directly.

Change-Id: Ia8390f3ead163c09a39cae493e75fccdd41a0961
Reviewed-on: https://pdfium-review.googlesource.com/16615
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/fpdfsdk/javascript/global.cpp b/fpdfsdk/javascript/global.cpp
index f095440..aae7c93 100644
--- a/fpdfsdk/javascript/global.cpp
+++ b/fpdfsdk/javascript/global.cpp
@@ -325,31 +325,33 @@
                                     const wchar_t* propname,
                                     const CJS_Value& vp) {
   ByteString sPropName = ByteString::FromUnicode(propname);
-  switch (vp.GetType()) {
-    case CJS_Value::VT_number:
-      return SetGlobalVariables(sPropName, JS_GlobalDataType::NUMBER,
-                                pRuntime->ToDouble(vp.ToV8Value()), false, "",
-                                v8::Local<v8::Object>(), false);
-    case CJS_Value::VT_boolean:
-      return SetGlobalVariables(sPropName, JS_GlobalDataType::BOOLEAN, 0,
-                                pRuntime->ToBoolean(vp.ToV8Value()), "",
-                                v8::Local<v8::Object>(), false);
-    case CJS_Value::VT_string:
-      return SetGlobalVariables(
-          sPropName, JS_GlobalDataType::STRING, 0, false,
-          ByteString::FromUnicode(pRuntime->ToWideString(vp.ToV8Value())),
-          v8::Local<v8::Object>(), false);
-    case CJS_Value::VT_object:
-      return SetGlobalVariables(sPropName, JS_GlobalDataType::OBJECT, 0, false,
-                                "", pRuntime->ToObject(vp.ToV8Value()), false);
-    case CJS_Value::VT_null:
-      return SetGlobalVariables(sPropName, JS_GlobalDataType::NULLOBJ, 0, false,
-                                "", v8::Local<v8::Object>(), false);
-    case CJS_Value::VT_undefined:
-      DelProperty(pRuntime, propname);
-      return true;
-    default:
-      break;
+  if (vp.ToV8Value()->IsNumber()) {
+    return SetGlobalVariables(sPropName, JS_GlobalDataType::NUMBER,
+                              pRuntime->ToDouble(vp.ToV8Value()), false, "",
+                              v8::Local<v8::Object>(), false);
+  }
+  if (vp.ToV8Value()->IsBoolean()) {
+    return SetGlobalVariables(sPropName, JS_GlobalDataType::BOOLEAN, 0,
+                              pRuntime->ToBoolean(vp.ToV8Value()), "",
+                              v8::Local<v8::Object>(), false);
+  }
+  if (vp.ToV8Value()->IsString()) {
+    return SetGlobalVariables(
+        sPropName, JS_GlobalDataType::STRING, 0, false,
+        ByteString::FromUnicode(pRuntime->ToWideString(vp.ToV8Value())),
+        v8::Local<v8::Object>(), false);
+  }
+  if (vp.ToV8Value()->IsObject()) {
+    return SetGlobalVariables(sPropName, JS_GlobalDataType::OBJECT, 0, false,
+                              "", pRuntime->ToObject(vp.ToV8Value()), false);
+  }
+  if (vp.ToV8Value()->IsNull()) {
+    return SetGlobalVariables(sPropName, JS_GlobalDataType::NULLOBJ, 0, false,
+                              "", v8::Local<v8::Object>(), false);
+  }
+  if (vp.ToV8Value()->IsUndefined()) {
+    DelProperty(pRuntime, propname);
+    return true;
   }
   return false;
 }
@@ -471,44 +473,44 @@
   for (const auto& ws : pKeyList) {
     ByteString sKey = ws.UTF8Encode();
     v8::Local<v8::Value> v = pRuntime->GetObjectProperty(pObj, ws);
-    switch (CJS_Value::GetValueType(v)) {
-      case CJS_Value::VT_number: {
-        CJS_KeyValue* pObjElement = new CJS_KeyValue;
-        pObjElement->nType = JS_GlobalDataType::NUMBER;
-        pObjElement->sKey = sKey;
-        pObjElement->dData = pRuntime->ToDouble(v);
-        array.Add(pObjElement);
-      } break;
-      case CJS_Value::VT_boolean: {
-        CJS_KeyValue* pObjElement = new CJS_KeyValue;
-        pObjElement->nType = JS_GlobalDataType::BOOLEAN;
-        pObjElement->sKey = sKey;
-        pObjElement->dData = pRuntime->ToBoolean(v);
-        array.Add(pObjElement);
-      } break;
-      case CJS_Value::VT_string: {
-        ByteString sValue = ByteString::FromUnicode(pRuntime->ToWideString(v));
-        CJS_KeyValue* pObjElement = new CJS_KeyValue;
-        pObjElement->nType = JS_GlobalDataType::STRING;
-        pObjElement->sKey = sKey;
-        pObjElement->sData = sValue;
-        array.Add(pObjElement);
-      } break;
-      case CJS_Value::VT_object: {
-        CJS_KeyValue* pObjElement = new CJS_KeyValue;
-        pObjElement->nType = JS_GlobalDataType::OBJECT;
-        pObjElement->sKey = sKey;
-        ObjectToArray(pRuntime, pRuntime->ToObject(v), pObjElement->objData);
-        array.Add(pObjElement);
-      } break;
-      case CJS_Value::VT_null: {
-        CJS_KeyValue* pObjElement = new CJS_KeyValue;
-        pObjElement->nType = JS_GlobalDataType::NULLOBJ;
-        pObjElement->sKey = sKey;
-        array.Add(pObjElement);
-      } break;
-      default:
-        break;
+    if (v->IsNumber()) {
+      CJS_KeyValue* pObjElement = new CJS_KeyValue;
+      pObjElement->nType = JS_GlobalDataType::NUMBER;
+      pObjElement->sKey = sKey;
+      pObjElement->dData = pRuntime->ToDouble(v);
+      array.Add(pObjElement);
+      continue;
+    }
+    if (v->IsBoolean()) {
+      CJS_KeyValue* pObjElement = new CJS_KeyValue;
+      pObjElement->nType = JS_GlobalDataType::BOOLEAN;
+      pObjElement->sKey = sKey;
+      pObjElement->dData = pRuntime->ToBoolean(v);
+      array.Add(pObjElement);
+      continue;
+    }
+    if (v->IsString()) {
+      ByteString sValue = ByteString::FromUnicode(pRuntime->ToWideString(v));
+      CJS_KeyValue* pObjElement = new CJS_KeyValue;
+      pObjElement->nType = JS_GlobalDataType::STRING;
+      pObjElement->sKey = sKey;
+      pObjElement->sData = sValue;
+      array.Add(pObjElement);
+      continue;
+    }
+    if (v->IsObject()) {
+      CJS_KeyValue* pObjElement = new CJS_KeyValue;
+      pObjElement->nType = JS_GlobalDataType::OBJECT;
+      pObjElement->sKey = sKey;
+      ObjectToArray(pRuntime, pRuntime->ToObject(v), pObjElement->objData);
+      array.Add(pObjElement);
+      continue;
+    }
+    if (v->IsNull()) {
+      CJS_KeyValue* pObjElement = new CJS_KeyValue;
+      pObjElement->nType = JS_GlobalDataType::NULLOBJ;
+      pObjElement->sKey = sKey;
+      array.Add(pObjElement);
     }
   }
 }