admin
2020-06-10 a610f2ab6e543d2cb78c1ef212ac6a74ddc067d9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Copyright © 2018 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;
using CefSharp.Event;
 
namespace CefSharp
{
    /// <summary>
    /// Javascript object repository, object are registered for binding
    /// One repository per ChromiumWebBrowser instance
    /// </summary>
    public interface IJavascriptObjectRepository : IDisposable
    {
        /// <summary>
        /// Register an object for binding in Javascript. You can either
        /// register an object in advance or as part of the <see cref="ResolveObject"/>
        /// event that will be called if no object matching object is found in the registry.
        /// Objects binding is now initiated in Javascript through the CefSharp.BindObjectAsync
        /// function (returns a Promise).
        /// For more detailed examples see https://github.com/cefsharp/CefSharp/issues/2246
        /// The equivilient to RegisterJsObject is isAsync = false
        /// The equivilient RegisterAsyncJsObject is isAsync = true
        /// </summary>
        /// <param name="name">object name</param>
        /// <param name="objectToBind">the object that will be bound in javascript</param>
        /// <param name="isAsync">
        /// if true the object will be registered for async communication,
        /// only methods will be exposed and when called from javascript will return a Promise to be awaited. 
        /// This method is newer and recommended for everyone starting out as it is faster and more reliable.
        /// If false then methods and properties will be registered, this method relies on a WCF service to communicate.
        /// If you are targeting .Net Core then you can only use isAsync = true as Microsoft has chosen not to support WCF.
        /// </param>
        /// <param name="options">binding options, by default method/property names are camelCased, you can control this
        /// and other advanced options though this class.</param>
        void Register(string name, object objectToBind, bool isAsync, BindingOptions options = null);
        /// <summary>
        /// UnRegister all the currently bound objects from the repository. If you unregister an object that is currently
        /// bound in JavaScript then the method/property calls will fail.
        /// </summary>
        void UnRegisterAll();
        /// <summary>
        /// UnRegister a bound object from the repository. If you unregister an object that is currently
        /// bound in JavaScript then the method/property calls will fail.
        /// </summary>
        /// <param name="name">object name</param>
        /// <returns>returns true if the object was successfully unbound otherwise false.</returns>
        bool UnRegister(string name);
        /// <summary>
        /// Has bound objects
        /// </summary>
        bool HasBoundObjects { get; }
        /// <summary>
        /// Is object bound
        /// </summary>
        /// <param name="name">name</param>
        /// <returns>true if object with matching name bound</returns>
        bool IsBound(string name);
        /// <summary>
        /// Event handler is called when an object with a given name is requested for binding and is not yet
        /// registered with the repository. Use <see cref="JavascriptBindingEventArgs.ObjectRepository"/>
        /// to register objects (using 
        /// </summary>
        event EventHandler<JavascriptBindingEventArgs> ResolveObject;
        /// <summary>
        /// Event handler is triggered when a object has been successfully bound in javascript
        /// </summary>
        event EventHandler<JavascriptBindingCompleteEventArgs> ObjectBoundInJavascript;
        /// <summary>
        /// Event handler is triggered when multiple objects has been successfully bound in javascript, this event only
        /// contains the names of objects successfully bound.
        /// </summary>
        event EventHandler<JavascriptBindingMultipleCompleteEventArgs> ObjectsBoundInJavascript;
    }
}