protected override void ExecuteInTargetProcess(RemoteConnection connection) { var sender = CfrV8Handler.Wrap(this.sender); var e = new CfrV8HandlerExecuteEventArgs(eventArgsId); sender.raise_Execute(sender, e); }
/// <summary> /// Create a new CfrV8Value object of type function. This function should only /// be called from within the scope of a CfrRenderProcessHandler, /// CfrV8Handler or CfrV8Accessor callback, or in combination with calling /// enter() and exit() on a stored CfrV8Context reference. /// </summary> /// <remarks> /// See also the original CEF documentation in /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_v8_capi.h">cef/include/capi/cef_v8_capi.h</see>. /// </remarks> public static CfrV8Value CreateFunction(string name, CfrV8Handler handler) { var call = new CfxV8ValueCreateFunctionRemoteCall(); call.name = name; call.handler = CfrObject.Unwrap(handler).ptr; call.RequestExecution(); return(CfrV8Value.Wrap(new RemotePtr(call.__retval))); }
/// <summary> /// Create a new CfrV8Value object of type function. This function should only /// be called from within the scope of a CfrRenderProcessHandler, /// CfrV8Handler or CfrV8Accessor callback, or in combination with calling /// enter() and exit() on a stored CfrV8Context reference. /// </summary> /// <remarks> /// See also the original CEF documentation in /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_v8_capi.h">cef/include/capi/cef_v8_capi.h</see>. /// </remarks> public static CfrV8Value CreateFunction(string name, CfrV8Handler handler) { var call = new CfxV8ValueCreateFunctionRenderProcessCall(); call.name = name; call.handler = CfrObject.Unwrap(handler); call.RequestExecution(CfxRemoteCallContext.CurrentContext.connection); return(CfrV8Value.Wrap(call.__retval)); }
/// <summary> /// Create a new CfrV8Value object of type function. This function should only /// be called from within the scope of a CfrRenderProcessHandler, /// CfrV8Handler or CfrV8Accessor callback, or in combination with calling /// enter() and exit() on a stored CfrV8Context reference. /// </summary> /// <remarks> /// See also the original CEF documentation in /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_v8_capi.h">cef/include/capi/cef_v8_capi.h</see>. /// </remarks> public static CfrV8Value CreateFunction(string name, CfrV8Handler handler) { var connection = CfxRemoteCallContext.CurrentContext.connection; var call = new CfxV8ValueCreateFunctionRemoteCall(); call.name = name; if (!CfrObject.CheckConnection(handler, connection)) { throw new ArgumentException("Render process connection mismatch.", "handler"); } call.handler = CfrObject.Unwrap(handler).ptr; call.RequestExecution(connection); return(CfrV8Value.Wrap(new RemotePtr(connection, call.__retval))); }
internal static CfrV8Handler Wrap(IntPtr proxyId) { if (proxyId == IntPtr.Zero) { return(null); } var weakCache = CfxRemoteCallContext.CurrentContext.connection.weakCache; lock (weakCache) { var cfrObj = (CfrV8Handler)weakCache.Get(proxyId); if (cfrObj == null) { cfrObj = new CfrV8Handler(proxyId); weakCache.Add(proxyId, cfrObj); } return(cfrObj); } }
internal static CfrV8Handler Wrap(RemotePtr remotePtr) { if (remotePtr == RemotePtr.Zero) { return(null); } var weakCache = CfxRemoteCallContext.CurrentContext.connection.weakCache; lock (weakCache) { var cfrObj = (CfrV8Handler)weakCache.Get(remotePtr.ptr); if (cfrObj == null) { cfrObj = new CfrV8Handler(remotePtr); weakCache.Add(remotePtr.ptr, cfrObj); } return(cfrObj); } }
/// <summary> /// Register a new V8 extension with the specified JavaScript extension code and /// handler. Functions implemented by the handler are prototyped using the /// keyword 'native'. The calling of a native function is restricted to the scope /// in which the prototype of the native function is defined. This function may /// only be called on the render process main thread. /// Example JavaScript extension code: <pre> /// // create the 'example' global object if it doesn't already exist. /// if (!example) /// example = {}; /// // create the 'example.test' global object if it doesn't already exist. /// if (!example.test) /// example.test = {}; /// (function() { /// // Define the function 'example.test.myfunction'. /// example.test.myfunction = function() { /// // Call CfrV8Handler.Execute() with the function name 'MyFunction' /// // and no arguments. /// native function MyFunction(); /// return MyFunction(); /// }; /// // Define the getter function for parameter 'example.test.myparam'. /// example.test.__defineGetter__('myparam', function() { /// // Call CfrV8Handler.Execute() with the function name 'GetMyParam' /// // and no arguments. /// native function GetMyParam(); /// return GetMyParam(); /// }); /// // Define the setter function for parameter 'example.test.myparam'. /// example.test.__defineSetter__('myparam', function(b) { /// // Call CfrV8Handler.Execute() with the function name 'SetMyParam' /// // and a single argument. /// native function SetMyParam(); /// if(b) SetMyParam(b); /// }); /// // Extension definitions can also contain normal JavaScript variables /// // and functions. /// var myint = 0; /// example.test.increment = function() { /// myint += 1; /// return myint; /// }; /// })(); /// </pre> Example usage in the page: <pre> /// // Call the function. /// example.test.myfunction(); /// // Set the parameter. /// example.test.myparam = value; /// // Get the parameter. /// value = example.test.myparam; /// // Call another function. /// example.test.increment(); /// </pre> /// </summary> /// <remarks> /// See also the original CEF documentation in /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_v8_capi.h">cef/include/capi/cef_v8_capi.h</see>. /// </remarks> public static bool RegisterExtension(string extensionName, string javascriptCode, CfrV8Handler handler) { var call = new CfxRuntimeRegisterExtensionRenderProcessCall(); call.extensionName = extensionName; call.javascriptCode = javascriptCode; call.handler = CfrObject.Unwrap(handler); call.RequestExecution(CfxRemoteCallContext.CurrentContext.connection); return(call.__retval); }
/// <summary> /// Register a new V8 extension with the specified JavaScript extension code and /// handler. Functions implemented by the handler are prototyped using the /// keyword 'native'. The calling of a native function is restricted to the scope /// in which the prototype of the native function is defined. This function may /// only be called on the render process main thread. /// /// Example JavaScript extension code: <pre> /// // create the 'example' global object if it doesn't already exist. /// if (!example) /// example = {}; /// // create the 'example.test' global object if it doesn't already exist. /// if (!example.test) /// example.test = {}; /// (function() { /// // Define the function 'example.test.myfunction'. /// example.test.myfunction = function() { /// // Call CfrV8Handler.Execute() with the function name 'MyFunction' /// // and no arguments. /// native function MyFunction(); /// return MyFunction(); /// }; /// // Define the getter function for parameter 'example.test.myparam'. /// example.test.__defineGetter__('myparam', function() { /// // Call CfrV8Handler.Execute() with the function name 'GetMyParam' /// // and no arguments. /// native function GetMyParam(); /// return GetMyParam(); /// }); /// // Define the setter function for parameter 'example.test.myparam'. /// example.test.__defineSetter__('myparam', function(b) { /// // Call CfrV8Handler.Execute() with the function name 'SetMyParam' /// // and a single argument. /// native function SetMyParam(); /// if(b) SetMyParam(b); /// }); /// /// // Extension definitions can also contain normal JavaScript variables /// // and functions. /// var myint = 0; /// example.test.increment = function() { /// myint += 1; /// return myint; /// }; /// })(); /// </pre> Example usage in the page: <pre> /// // Call the function. /// example.test.myfunction(); /// // Set the parameter. /// example.test.myparam = value; /// // Get the parameter. /// value = example.test.myparam; /// // Call another function. /// example.test.increment(); /// </pre> /// </summary> /// <remarks> /// See also the original CEF documentation in /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_v8_capi.h">cef/include/capi/cef_v8_capi.h</see>. /// </remarks> public static bool RegisterExtension(string extensionName, string javascriptCode, CfrV8Handler handler) { var connection = CfxRemoteCallContext.CurrentContext.connection; var call = new CfxRuntimeRegisterExtensionRemoteCall(); call.extensionName = extensionName; call.javascriptCode = javascriptCode; if (!CfrObject.CheckConnection(handler, connection)) { throw new ArgumentException("Render process connection mismatch.", "handler"); } call.handler = CfrObject.Unwrap(handler).ptr; call.RequestExecution(connection); return(call.__retval); }
/// <summary> /// Register a new V8 extension with the specified JavaScript extension code and /// handler. Functions implemented by the handler are prototyped using the /// keyword 'native'. The calling of a native function is restricted to the scope /// in which the prototype of the native function is defined. This function may /// only be called on the render process main thread. /// Example JavaScript extension code: <pre> /// // create the 'example' global object if it doesn't already exist. /// if (!example) /// example = {}; /// // create the 'example.test' global object if it doesn't already exist. /// if (!example.test) /// example.test = {}; /// (function() { /// // Define the function 'example.test.myfunction'. /// example.test.myfunction = function() { /// // Call CfrV8Handler.Execute() with the function name 'MyFunction' /// // and no arguments. /// native function MyFunction(); /// return MyFunction(); /// }; /// // Define the getter function for parameter 'example.test.myparam'. /// example.test.__defineGetter__('myparam', function() { /// // Call CfrV8Handler.Execute() with the function name 'GetMyParam' /// // and no arguments. /// native function GetMyParam(); /// return GetMyParam(); /// }); /// // Define the setter function for parameter 'example.test.myparam'. /// example.test.__defineSetter__('myparam', function(b) { /// // Call CfrV8Handler.Execute() with the function name 'SetMyParam' /// // and a single argument. /// native function SetMyParam(); /// if(b) SetMyParam(b); /// }); /// // Extension definitions can also contain normal JavaScript variables /// // and functions. /// var myint = 0; /// example.test.increment = function() { /// myint += 1; /// return myint; /// }; /// })(); /// </pre> Example usage in the page: <pre> /// // Call the function. /// example.test.myfunction(); /// // Set the parameter. /// example.test.myparam = value; /// // Get the parameter. /// value = example.test.myparam; /// // Call another function. /// example.test.increment(); /// </pre> /// </summary> /// <remarks> /// See also the original CEF documentation in /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_v8_capi.h">cef/include/capi/cef_v8_capi.h</see>. /// </remarks> public static bool RegisterExtension(string extensionName, string javascriptCode, CfrV8Handler handler) { var call = new CfxRuntimeRegisterExtensionRemoteCall(); call.extensionName = extensionName; call.javascriptCode = javascriptCode; call.handler = CfrObject.Unwrap(handler).ptr; call.RequestExecution(); return(call.__retval); }