Пример #1
0
 public override void Cleanup()
 {
     engine_.Dispose();
     engine_ = null;
     runtime_.Dispose();
     runtime_ = null;
 }
Пример #2
0
        static void Main(string[] args)
        {
            using (var runtime = new JavaScriptRuntime())
            {
                runtime.MemoryChanging += Runtime_MemoryChanging;

                using (var engine = runtime.CreateEngine())
                {
                    engine.SetGlobalFunction("echo", Echo);
                    var fn = engine.EvaluateScriptText(@"(function() {
    echo('{0}, {1}!', 'Hello', 'world');
})();");
                    fn.Invoke(Enumerable.Empty<JavaScriptValue>());

                    dynamic fnAsDynamic = fn;
                    fnAsDynamic.foo = 24;
                    dynamic global = engine.GlobalObject;
                    global.echo("{0}, {1}, via dynamic!", "Hey there", "world");

                    dynamic echo = global.echo;
                    echo("Whoa, {0}, that {1} {2}???", "world", "really", "worked");

                    foreach (dynamic name in global.Object.getOwnPropertyNames(global))
                    {
                        echo(name);
                    }
                }
            }
            Console.ReadLine();
        }
Пример #3
0
        private void Eval_Click(object sender, RoutedEventArgs e)
        {
            var settings = new JavaScriptRuntimeSettings();
            var runtime = new JavaScriptRuntime(settings);
            var engine = runtime.CreateEngine();

            var result = engine.Execute(new Microsoft.Scripting.ScriptSource("[eval code]", input.Text));

            output.Text = result.ToString();
        }
Пример #4
0
        public override void Cleanup()
        {
            dataView_ = null;
            typedArray_ = null;
            buffer_ = null;

            engine_.Dispose();
            engine_ = null;
            runtime_.Dispose();
            runtime_ = null;
        }
Пример #5
0
        public override void Setup()
        {
            runtime_ = new JavaScriptRuntime(new JavaScriptRuntimeSettings());
            engine_ = runtime_.CreateEngine();

            var baseline = new ScriptSource("test://init.js", @"(function(global) {
            global.buffer = new ArrayBuffer(1024);
            global.typedArray = new Uint8ClampedArray(buffer);
            global.dataView = new DataView(buffer, 1);
            })(this);");
            engine_.Execute(baseline);
            buffer_ = (JavaScriptArrayBuffer)engine_.GetGlobalVariable("buffer");
            typedArray_ = (JavaScriptTypedArray)engine_.GetGlobalVariable("typedArray");
            dataView_ = (JavaScriptDataView)engine_.GetGlobalVariable("dataView");
        }
Пример #6
0
        internal JavaScriptEngine(JavaScriptEngineSafeHandle handle, JavaScriptRuntime runtime, ChakraApi api)
        {
            Debug.Assert(handle != null);
            Debug.Assert(runtime != null);
            Debug.Assert(api != null);
            api_ = api;

            handle_ = handle;
            runtime_ = new WeakReference<JavaScriptRuntime>(runtime);
            converter_ = new JavaScriptConverter(this);
            nativeFunctionThunks_ = new List<NativeFunctionThunkData>();
            externalObjects_ = new HashSet<ExternalObjectThunkData>();

            handlesToRelease_ = new List<IntPtr>();
            handleReleaseLock_ = new object();
        }
Пример #7
0
        public void TestMethod1()
        {
            bool ok = false;
            JavaScriptCallableFunction callback = (eng, construct, thisObj, args) =>
            {
                ok = true;
                return eng.UndefinedValue;
            };

            using (var rt = new JavaScriptRuntime())
            {
                rt.MemoryChanging += Rt_MemoryChanging;
                using (var eng = rt.CreateEngine())
                {
                    eng.SetGlobalFunction("hitIt", callback);

                    eng.Execute(new ScriptSource("[eval code]", "hitIt();"));
                }
            }
            Assert.IsTrue(ok);
        }
Пример #8
0
 public void Setup()
 {
     var settings = new JavaScriptRuntimeSettings();
     runtime_ = new JavaScriptRuntime(settings);
     engine_ = runtime_.CreateEngine();
 }
 public override void Setup()
 {
     var settings = new JavaScriptRuntimeSettings() { AllowScriptInterrupt = true, };
     runtime_ = new JavaScriptRuntime(settings);
     engine_ = runtime_.CreateEngine();
 }
Пример #10
0
 public override void Setup()
 {
     runtime_ = new JavaScriptRuntime();
     engine_ = runtime_.CreateEngine();
 }
 public override void Setup()
 {
     var settings = new JavaScriptRuntimeSettings() { EnableIdleProcessing = true, };
     runtime_ = new JavaScriptRuntime(settings);
     engine_ = runtime_.CreateEngine();
 }
Пример #12
0
        static void Main(string[] args)
        {
            using (var runtime = new JavaScriptRuntime())
            {
                runtime.MemoryChanging += Runtime_MemoryChanging;

                using (var engine = runtime.CreateEngine())
                {
                    using (var context = engine.AcquireContext())
                    {
                        engine.SetGlobalFunction("echo", Echo);
                        engine.AddTypeToGlobal<Point3D>();
                        engine.AddTypeToGlobal<Point>();
                        engine.AddTypeToGlobal<Toaster>();
                        engine.AddTypeToGlobal<ToasterOven>();
                        var pt = new Point3D { X = 18, Y = 27, Z = -1 };
                        //engine.SetGlobalVariable("pt", engine.Converter.FromObject(pt));
                        engine.RuntimeExceptionRaised += (sender, e) =>
                        {
                            dynamic error = engine.GetAndClearException();
                            dynamic glob = engine.GlobalObject;
                            var color = Console.ForegroundColor;
                            Console.ForegroundColor = ConsoleColor.Red;
                            var err = glob.JSON.stringify(error);
                            if ((string)err == "{}")
                                err = engine.Converter.ToString(error);
                            Console.WriteLine("Script error occurred: {0}", (string)err);
                            Console.ForegroundColor = color;
                        };

                        var fn = engine.EvaluateScriptText(@"(function() {
    var t = new ToasterOven();
    t.addEventListener('toastcompleted', function(e) {
        echo('Toast is done!');
        echo('{0}', JSON.stringify(e));
    });
    t.addEventListener('loaftoasted', function(e) {
        echo('Loaf is done!');
        echo('{0}', JSON.stringify(e.e));
        echo('Cooked {0} pieces', e.e.PiecesCookied);
    });
    t.StartToasting();

    var o = new Point3D(1, 2, 3);
    echo(o.toString());
    o.X = 254;
    echo('{0}', o.X);
    o.Y = 189;
    o.Z = -254.341;
    echo('o after mutation? {0}', o.ToString());
    echo('{0}, {1}!', 'Hello', 'world');
    //echo('{0}', pt.X);
    //echo('{0}', pt.Y);
    //echo('{0}', pt.ToString());
    //pt.Y = 207;
    //echo('{0}', pt.ToString());
})();");
                        fn.Invoke(Enumerable.Empty<JavaScriptValue>());

                        dynamic fnAsDynamic = fn;
                        fnAsDynamic.foo = 24;
                        dynamic global = engine.GlobalObject;
                        global.echo("{0}, {1}, via dynamic!", "Hey there", "world");

                        dynamic echo = global.echo;
                        echo("Whoa, {0}, that {1} {2}???", "world", "really", "worked");

                        foreach (dynamic name in global.Object.getOwnPropertyNames(global))
                        {
                            echo(name);
                        }

                    } // release context 

                    Console.ReadLine();
                }
            }
        }
Пример #13
0
 public async Task Setup()
 {
     await DispatchContainer.GlobalDispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         runtime_ = new JavaScriptRuntime();
         engine_ = runtime_.CreateEngine();
     });
 }
Пример #14
0
 public async Task Cleanup()
 {
     await DispatchContainer.GlobalDispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         engine_.Dispose();
         engine_ = null;
         runtime_.Dispose();
         runtime_ = null;
     });
 }