public static object GetValue(this CefV8Value val) { if (val.IsNull || val.IsUndefined) { return(null); } if (val.IsArray) { return(new V8Array(val)); } if (val.IsBool) { return(val.GetBoolValue()); } if (val.IsDouble) { return(val.GetDoubleValue()); } if (val.IsInt) { return(val.GetIntValue()); } if (val.IsString) { return(val.GetStringValue()); } if (val.IsUInt) { return(val.GetUIntValue()); } return(null); }
public bool GetSimpleValue(IJavascriptObject ijsvalue, out object res, Type iTargetType = null) { res = null; CefV8Value value = CefV8_JavascriptObject.Convert(ijsvalue); if ((value.IsUndefined) || (value.IsNull)) { return(true); } if (value.IsString) { res = ijsvalue.GetStringValue(); return(true); } if (value.IsBool) { res = value.GetBoolValue(); return(true); } if (IsUnsigned(iTargetType)) { if (value.IsUInt) { res = value.GetUIntValue(); } } else { if (value.IsInt) { res = value.GetIntValue(); } } if ((res == null) && (value.IsDouble)) { res = value.GetDoubleValue(); } if (res != null) { if (iTargetType != null) { res = Convert.ChangeType(res, iTargetType); } return(true); } if (value.IsDate) { res = value.GetDateValue(); return(true); } return(false); }
public dynamic ConvertToV8Value(CefV8Value result) { if (result != null) { if (result.IsBool) { return(result.GetBoolValue()); } else if (result.IsDate) { return(result.GetDateValue()); } else if (result.IsDouble) { return(result.GetDoubleValue()); } else if (result.IsInt) { return(result.GetIntValue()); } else if (result.IsNull || result.IsUndefined) { return(null); } else if (result.IsString) { return(result.GetStringValue()); } else if (result.IsUInt) { return(result.GetUIntValue()); } else if (result.IsArray) { var values = new List <dynamic>(); for (int i = 0; i < result.GetArrayLength(); i++) { var value = result.GetValue(i); values.Add(ConvertToV8Value(value)); } return(values); } else if (result.IsFunction) { } else if (result.IsObject) { } } return(null); }
public static object GetClrValue(CefV8Value v) { if (v.IsArray) { int length = v.GetArrayLength(); object[] objs = new object[length]; for (int i = 0; i < length; i++) { var value = v.GetValue(i); objs[i] = GetClrValue(value); } return(objs); } if (v.IsBool) { return(v.GetBoolValue()); } if (v.IsDate) { return(v.GetDateValue()); } if (v.IsInt) { return(v.GetIntValue()); } if (v.IsDouble) { return(v.GetDoubleValue()); } if (v.IsFunction) { throw new NotSupportedException("IsFunction"); } if (v.IsNull) { return(null); } if (v.IsObject) { //throw new NotSupportedException("IsObject"); //todo:这里可能存在BUG var map = v.GetUserData() as UnmanagedWrapper; if (map != null) { return(map.ClrObject); } return(null); } if (v.IsString) { return(v.GetStringValue()); } if (v.IsUInt) { return(v.GetUIntValue()); } if (v.IsUndefined) { return(null); } if (v.IsUserCreated) { throw new NotSupportedException("IsUserCreated"); } throw new NotSupportedException("??"); }
public JSValue(CefV8Value value) { if (value == null) { return; } if (value.IsArray) { var result = new List <Object>(); for (var i = 0; i < value.GetArrayLength(); i++) { result.Add(new JSValue(value.GetValue(i)).Value); } this.Value = result.ToArray(); } else if (value.IsObject) { var result = new Dictionary <String, Object>(); var keys = value.GetKeys(); for (var i = 0; i < keys.Length; i++) { try { result.Add(keys[i], new JSValue(value.GetValue(keys[i])).Value); } catch (ArgumentException) { } } this.Value = result; } else if (value.IsInt) { this.Value = value.GetIntValue(); } else if (value.IsUInt) { this.Value = value.GetUIntValue(); } else if (value.IsDouble) { this.Value = value.GetDoubleValue(); } else if (value.IsBool) { this.Value = value.GetBoolValue(); } else if (value.IsDate) { this.Value = value.GetDateValue(); } else if (value.IsString) { this.Value = value.GetStringValue(); } else if (value.IsNull) { this.Value = null; } else if (value.IsUndefined) { this.Value = null; } }
/// <summary> /// Parses the cef v8 value. /// </summary> /// <param name="value">The value.</param> /// <returns></returns> private JToken ParseCefV8Value(CefV8Value value) { if (value == null) { return(null); } return(CefUtility.RunInContext(Context, () => { if (value.IsInt) { return JToken.FromObject(value.GetIntValue()); } if (value.IsUInt) { return JToken.FromObject(value.GetUIntValue()); } if (value.IsDouble) { return JToken.FromObject(value.GetDoubleValue()); } if (value.IsBool) { return JToken.FromObject(value.GetBoolValue()); } if (value.IsDate) { return JToken.FromObject(value.GetDateValue()); } if (value.IsString) { return JToken.FromObject(value.GetStringValue()); } if (value.IsUndefined) { return JValue.CreateUndefined(); } if (value.IsArray) { var array = new JArray(); for (var i = 0; i < value.GetArrayLength(); i++) { array.Add(ParseCefV8Value(value.GetValue(i))); } return array; } if (value.IsObject) { var obj = new JObject(); foreach (var propertyName in value.GetKeys()) { obj.Add(propertyName, ParseCefV8Value(value.GetValue(propertyName))); } return obj; } return JValue.CreateNull(); })); }
public static JavaScriptValue ToJSValue(this CefV8Value source) { if (source == null || !source.IsValid) { throw new ArgumentNullException(); } JavaScriptValue target; if (source.IsFunction) { var context = CefV8Context.GetEnteredContext(); var info = new JavaScriptRenderSideFunction(context, source); JavaScriptObjectRepository.RenderSideFunctions.Add(info); target = JavaScriptValue.CreateFunction(info); } else if (source.IsArray) { target = JavaScriptValue.CreateArray(); for (int i = 0; i < source.GetArrayLength(); i++) { var item = source.GetValue(i); if (item != null && item.IsValid) { target.AddArrayValue(item.ToJSValue()); } } } else if (source.IsObject) { target = JavaScriptValue.CreateObject(); foreach (var key in source.GetKeys()) { var item = source.GetValue(key); if (item != null && item.IsValid) { target.SetValue(key, item.ToJSValue()); } } } else if (source.IsBool) { target = JavaScriptValue.CreateBool(source.GetBoolValue()); } else if (source.IsDate) { target = JavaScriptValue.CreateDateTime(source.GetDateValue()); } else if (source.IsDouble) { target = JavaScriptValue.CreateNumber(source.GetDoubleValue()); } else if (source.IsInt) { target = JavaScriptValue.CreateNumber(source.GetIntValue()); } else if (source.IsUInt) { target = JavaScriptValue.CreateNumber(source.GetUIntValue()); } else if (source.IsString) { target = JavaScriptValue.CreateString(source.GetStringValue()); } else { target = JavaScriptValue.CreateNull(); } return(target); }