예제 #1
0
        // 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;
        }