Beispiel #1
0
        public async Task ReactInstanceManager_RecreateReactContextAsync()
        {
            var jsBundleFile             = "ms-appx:///Resources/test.js";
            ReactInstanceManager manager = null;
            await DispatcherHelpers.CallOnDispatcherAsync(() => manager = CreateReactInstanceManager(jsBundleFile));

            var task         = default(Task <ReactContext>);
            var reactContext = await DispatcherHelpers.CallOnDispatcherAsync(async() =>
            {
                task = manager.CreateReactContextAsync(CancellationToken.None);
                return(await manager.RecreateReactContextAsync(CancellationToken.None));
            });

            var initialReactContext = await task;

            Assert.IsNotNull(reactContext);
            Assert.AreEqual(jsBundleFile, manager.SourceUrl);
            Assert.AreNotEqual(initialReactContext, reactContext);

            await DispatcherHelpers.CallOnDispatcherAsync(async() => await DisposeInstanceManager(manager));
        }
Beispiel #2
0
        public async Task ReactInstanceManager_RecreateReactContextAsync_EnsuresCalledOnce()
        {
            var jsBundleFile             = "ms-appx:///Resources/test.js";
            ReactInstanceManager manager = null;
            await DispatcherHelpers.CallOnDispatcherAsync(() => manager = CreateReactInstanceManager(jsBundleFile));

            var caught = false;
            await DispatcherHelpers.CallOnDispatcherAsync(async() =>
            {
                try
                {
                    await manager.RecreateReactContextAsync(CancellationToken.None);
                }
                catch (InvalidOperationException)
                {
                    caught = true;
                }
            });

            Assert.IsTrue(caught);

            await DispatcherHelpers.CallOnDispatcherAsync(async() => await DisposeInstanceManager(manager));
        }
Beispiel #3
0
        public async Task ReactInstanceManager_Lifecycle_Cleanup_Old_Context()
        {
            var jsBundleFile             = "ms-appx:///Resources/test.js";
            ReactInstanceManager manager = null;
            await DispatcherHelpers.CallOnDispatcherAsync(() => manager = CreateReactInstanceManager(jsBundleFile, LifecycleState.Foreground));

            var listener = new LifecycleEventsListener(new LifecycleEventsListener.Step[]
            {
                LifecycleEventsListener.Step.EnteredBackground,
                LifecycleEventsListener.Step.Suspend,
            });

            await DispatcherHelpers.CallOnDispatcherAsync(async() =>
            {
                var context = await manager.CreateReactContextAsync(CancellationToken.None);
                context.AddBackgroundEventListener(listener);
                context.AddLifecycleEventListener(listener);

                var newContext = await manager.RecreateReactContextAsync(CancellationToken.None);
            });

            listener.Dispose();
            await DispatcherHelpers.CallOnDispatcherAsync(async() => await DisposeInstanceManager(manager));
        }