示例#1
0
        /// <summary>
        /// Destroys object
        /// </summary>
        /// <param name="disposing">Flag, allowing destruction of
        /// managed objects contained in fields of class</param>
        private void Dispose(bool disposing)
        {
            if (_disposedFlag.Set())
            {
                if (_dispatcher != null)
                {
                    _dispatcher.Invoke(() => _jsRuntime.Dispose());
                    _dispatcher.Dispose();
                }

                if (disposing)
                {
                    if (_externalObjects != null)
                    {
                        _externalObjects.Clear();
                    }

                    if (_nativeFunctions != null)
                    {
                        _nativeFunctions.Clear();
                    }

                    _externalObjectFinalizeCallback = null;
                }
            }
        }
示例#2
0
        /// <summary>
        /// Creates a new <c>Object</c> that stores some external data
        /// </summary>
        /// <remarks>
        /// Requires an active script context.
        /// </remarks>
        /// <param name="data">External data that the object will represent. May be null.</param>
        /// <param name="finalizer">A callback for when the object is finalized. May be null.</param>
        /// <returns>The new <c>Object</c></returns>
        public static IeJsValue CreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizer)
        {
            IeJsValue reference;

            IeJsErrorHelpers.ThrowIfError(IeNativeMethods.JsCreateExternalObject(data, finalizer, out reference));

            return(reference);
        }
示例#3
0
        /// <summary>
        /// Constructs an instance of the Chakra JsRT engine
        /// </summary>
        /// <param name="engineMode">JS engine mode</param>
        /// <param name="enableDebugging">Flag for whether to enable script debugging features</param>
        protected ChakraJsRtJsEngineBase(JsEngineMode engineMode, bool enableDebugging)
            : base(engineMode)
        {
            _enableDebugging = enableDebugging;
#if NETSTANDARD1_3
            _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback;
#endif
        }
 /// <summary>
 /// Constructs an instance of the Chakra JsRT JavaScript engine
 /// </summary>
 /// <param name="engineMode">JavaScript engine mode</param>
 /// <param name="enableDebugging">Flag for whether to enable script debugging features</param>
 protected ChakraJsRtJsEngineBase(JsEngineMode engineMode, bool enableDebugging)
 {
     _engineMode = engineMode;
     _engineModeName = JsEngineModeHelpers.GetModeName(engineMode);
     _enableDebugging = enableDebugging;
     #if NETSTANDARD1_3
     _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback;
     #endif
 }
示例#5
0
        /// <summary>
        /// Constructs an instance of the Chakra JsRT JavaScript engine
        /// </summary>
        /// <param name="engineMode">JavaScript engine mode</param>
        /// <param name="enableDebugging">Flag for whether to enable script debugging features</param>
        protected ChakraJsRtJsEngineBase(JsEngineMode engineMode, bool enableDebugging)
        {
            _engineMode      = engineMode;
            _engineModeName  = JsEngineModeHelpers.GetModeName(engineMode);
            _enableDebugging = enableDebugging;
#if NETSTANDARD1_3
            _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback;
#endif
        }
示例#6
0
        /// <summary>
        /// Destroys object
        /// </summary>
        /// <param name="disposing">Flag, allowing destruction of
        /// managed objects contained in fields of class</param>
        protected virtual void Dispose(bool disposing)
        {
#if NETSTANDARD1_3
            if (disposing)
            {
                if (_externalObjects != null)
                {
                    _externalObjects.Clear();
                }

                _externalObjectFinalizeCallback = null;
            }
#endif
        }
示例#7
0
        /// <summary>
        /// Constructs an instance of adapter for the ChakraCore JS engine
        /// </summary>
        /// <param name="settings">Settings of the ChakraCore JS engine</param>
        public ChakraCoreJsEngine(ChakraCoreSettings settings)
        {
            ChakraCoreSettings chakraCoreSettings = settings ?? new ChakraCoreSettings();

            JsRuntimeAttributes attributes = JsRuntimeAttributes.None;

            if (chakraCoreSettings.DisableBackgroundWork)
            {
                attributes |= JsRuntimeAttributes.DisableBackgroundWork;
            }
            if (chakraCoreSettings.DisableNativeCodeGeneration)
            {
                attributes |= JsRuntimeAttributes.DisableNativeCodeGeneration;
            }
            if (chakraCoreSettings.DisableEval)
            {
                attributes |= JsRuntimeAttributes.DisableEval;
            }
            if (chakraCoreSettings.EnableExperimentalFeatures)
            {
                attributes |= JsRuntimeAttributes.EnableExperimentalFeatures;
            }

            _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback;

            _dispatcher.Invoke(() =>
            {
                try
                {
                    _jsRuntime = JsRuntime.Create(attributes, null);
                    _jsContext = _jsRuntime.CreateContext();
                    _jsContext.AddRef();
                }
                catch (Exception e)
                {
                    throw new JsEngineLoadException(
                        string.Format(CoreStrings.Runtime_JsEngineNotLoaded,
                                      EngineName, e.Message), EngineName, EngineVersion, e);
                }
            });
        }
示例#8
0
 internal static extern JsErrorCode JsCreateExternalArrayBuffer(IntPtr data, uint byteLength,
                                                                JsObjectFinalizeCallback finalizeCallback, IntPtr callbackState, out JsValue result);
示例#9
0
 internal static extern JsErrorCode JsCreateExternalObject(IntPtr data,
                                                           JsObjectFinalizeCallback finalizeCallback, out JsValue obj);
        /// <summary>
        /// Destroys object
        /// </summary>
        /// <param name="disposing">Flag, allowing destruction of
        /// managed objects contained in fields of class</param>
        protected virtual void Dispose(bool disposing)
        {
            #if NETSTANDARD1_3
            if (disposing)
            {
                if (_externalObjects != null)
                {
                    _externalObjects.Clear();
                }

                _externalObjectFinalizeCallback = null;
            }
            #endif
        }
		internal static extern JsErrorCode JsCreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizeCallback, out EdgeJsValue obj);
        /// <summary>
        /// Creates a new <c>Object</c> that stores some external data
        /// </summary>
        /// <remarks>
        /// Requires an active script context.
        /// </remarks>
        /// <param name="data">External data that the object will represent. May be null</param>
        /// <param name="finalizer">The callback for when the object is finalized. May be null.</param>
        /// <returns>The new <c>Object</c></returns>
        public static EdgeJsValue CreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizer)
        {
            EdgeJsValue reference;
            EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsCreateExternalObject(data, finalizer, out reference));

            return reference;
        }
		internal static extern JsErrorCode JsCreateExternalArrayBuffer(IntPtr data, uint byteLength,
			JsObjectFinalizeCallback finalizeCallback, IntPtr callbackState, out bool result);
示例#14
0
 JsCreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizeCallback, out JsValue obj);