// Copyright © 2014 The CefSharp Authors. All rights reserved. // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. using System.Collections.Generic; using System.Runtime.Serialization; using CefSharp.ModelBinding; namespace CefSharp.Internals { /// /// This maps the registered objects in the browser process /// to the reflection data necessary to update the objects, /// and mapping information to how the object/method/proprerty /// will be exposed to JavaScript. /// [DataContract] public class JavascriptObject //: DynamicObject maybe later { /// /// Identifies the for BrowserProcess to RenderProcess communication /// [DataMember] public long Id { get; set; } [DataMember] public string Name { get; set; } [DataMember] public string JavascriptName { get; set; } /// /// Indicate if this object bound as async /// [DataMember] public bool IsAsync { get; set; } /// /// Indicate if JavascriptName is camel case or not /// public bool CamelCaseJavascriptNames { get; set; } /// /// Gets the methods of the . /// [DataMember] public List Methods { get; private set; } /// /// Gets the properties of the . /// [DataMember] public List Properties { get; private set; } /// /// A javascript object is created for every object, even those that are sub objects /// it's important we only transmit the Root Objects (top level/parent) /// public bool RootObject { get; set; } /// /// Gets or sets the value. /// public object Value { get; set; } public IBinder Binder { get; set; } public IMethodInterceptor MethodInterceptor { get; set; } public JavascriptObject() { Methods = new List(); Properties = new List(); } public override string ToString() { return Value != null ? Value.ToString() : base.ToString(); } } }