示例#1
0
        /// <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: &lt;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;
        /// };
        /// })();
        /// &lt;/pre> Example usage in the page: &lt;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();
        /// &lt;/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);
        }
示例#2
0
 /// <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: &lt;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;
 /// };
 /// })();
 /// &lt;/pre> Example usage in the page: &lt;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();
 /// &lt;/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;
 }