// 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();
}
}
}