// TODO: CreateV8Handler self/universal // TODO: CreateV8Accessor self/universal public CefV8Value CreateScriptableObject(object instance) { // TODO: if object doesn't have properties -> do not create accessor var v8Handler = new ScriptableObjectV8Handler(this, instance); var v8Accessor = new ScriptableObjectV8Accessor(this, instance); var obj = CefV8Value.CreateObject(v8Accessor); foreach (var property in this.PropertyDispatchTable.GetValues()) { obj.SetValue(property.Name, (property.CanRead ? CefV8AccessControl.AllCanRead : 0) | (property.CanWrite ? CefV8AccessControl.AllCanWrite : 0), CefV8PropertyAttribute.DontDelete); } foreach (var method in this.DispatchTable.GetValues()) { if (method.Hidden) { continue; } obj.SetValue(method.Name, CefV8Value.CreateFunction(method.Name, v8Handler) ); } return(obj); }
// TODO: CreateV8Handler self/universal // TODO: CreateV8Accessor self/universal public CefV8Value CreateScriptableObject(object instance) { // TODO: if object doesn't have properties -> do not create accessor var v8Handler = new ScriptableObjectV8Handler(this, instance); var v8Accessor = new ScriptableObjectV8Accessor(this, instance); var obj = CefV8Value.CreateObject(v8Accessor); foreach (var property in this.PropertyDispatchTable.GetValues()) { obj.SetValue(property.Name, (property.CanRead ? CefV8AccessControl.AllCanRead : 0) | (property.CanWrite ? CefV8AccessControl.AllCanWrite : 0), CefV8PropertyAttribute.DontDelete); } foreach (var method in this.DispatchTable.GetValues()) { if (method.Hidden) continue; obj.SetValue(method.Name, CefV8Value.CreateFunction(method.Name, v8Handler) ); } return obj; }