Example #1
0
        public Task <JavaScriptExecutionResult> ExecuteFunctionAsync(CefFrame frame, JavaScriptValue[] arguments = null)
        {
            CheckIsRendererFunction();

            var tsc = new TaskCompletionSource <JavaScriptExecutionResult>();

            if (JavaScriptObjectRepository.JavaScriptExecutionTasks.TryAdd(new Tuple <int, long>(tsc.GetHashCode(), frame.Identifier), tsc))
            {
                var jsvalue = arguments == null?JavaScriptValue.CreateArray() : arguments.ToJSValue();

                var message = BridgeMessage.Create(JavaScriptCommunicationBridge.EVALUATE_JS_CALLBACK);

                message.Arguments.Add(MessageValue.CreateInt(tsc.GetHashCode()));

                message.Arguments.Add(MessageValue.CreateInt(JSFunctionDescriber.Id));

                message.Arguments.Add(MessageValue.CreateString(jsvalue.ToDefinition()));

                JavaScriptCommunicationBridge.SendProcessMessage(CefProcessId.Renderer, frame, message);

                return(tsc.Task);
            }


            throw new InvalidOperationException("Same function already exists.");
        }
 public JavaScriptEvaluationTask(JavaScriptCommunicationBridge bridge, CefFrame frame, MessageArrayValue arguments)
 {
     this.jsbridge = bridge;
     this.frame    = frame;
     taskId        = arguments[0].GetInt();
     code          = arguments[1].GetString();
 }
 public JavaScriptAsyncFunctionCallback(CefFrame frame, /*string objectKey, string name, */ Guid uuid, JavaScriptCommunicationBridge bridge)
 {
     this._frame = frame;
     //this._objectKey = objectKey;
     //this._name = name;
     this._uuid = uuid;
     _jsBridge  = bridge;
 }
 public JavaScriptExecuteionTask(JavaScriptCommunicationBridge bridge, CefFrame frame, MessageArrayValue arguments)
 {
     this.jsbridge  = bridge;
     this.frame     = frame;
     taskId         = arguments[0].GetInt();
     functionId     = arguments[1].GetInt();
     this.arguments = JavaScriptValue.FromJson(arguments[2].GetString());
 }
 public JavaScriptRendererSideAsyncFunctionCallback(CefFrame frame, Guid uuid, JavaScriptCommunicationBridge bridge)
 {
     this._frame = frame;
     this._uuid  = uuid;
     _jsBridge   = bridge;
 }
 public BrowserSideJavaScriptObjectMappingTask(JavaScriptCommunicationBridge bridge, CefFrame frame)
 {
     this.jsbridge = bridge;
     this.frame    = frame;
 }
 public JavaScriptExtensionHandler(JavaScriptExtensionBase extension, JavaScriptCommunicationBridge bridge)
 {
     Extension = extension;
     JSBridge  = bridge;
 }
 internal JavaScriptExtensionHandler GetHandler(JavaScriptCommunicationBridge bridge)
 {
     return(new JavaScriptExtensionHandler(this, bridge));
 }