public void NullInfoProviderDoesNotCrash() { RunOnUIThread.Execute(() => { RefreshVisualizer refreshVisualizer = new RefreshVisualizer(); Compositor compositor = ElementCompositionPreview.GetElementVisual(refreshVisualizer).Compositor; RefreshInfoProviderImpl refreshInfoProviderImpl = new RefreshInfoProviderImpl(compositor); ((IRefreshVisualizerPrivate)refreshVisualizer).InfoProvider = refreshInfoProviderImpl; refreshVisualizer.RequestRefresh(); ((IRefreshVisualizerPrivate)refreshVisualizer).InfoProvider = null; refreshVisualizer.RequestRefresh(); }); }
public void RefreshPropagatesToInfoProvider() { RunOnUIThread.Execute(() => { RefreshVisualizer refreshVisualizer = new RefreshVisualizer(); Compositor compositor = ElementCompositionPreview.GetElementVisual(refreshVisualizer).Compositor; RefreshInfoProviderImpl refreshInfoProviderImpl = new RefreshInfoProviderImpl(compositor); ((IRefreshVisualizerPrivate)refreshVisualizer).InfoProvider = refreshInfoProviderImpl; Verify.AreEqual <int>(0, refreshInfoProviderImpl.OnRefreshStartedCalls); Verify.AreEqual <int>(0, refreshInfoProviderImpl.OnRefreshCompletedCalls); refreshVisualizer.RequestRefresh(); Verify.AreEqual <int>(1, refreshInfoProviderImpl.OnRefreshStartedCalls); Verify.AreEqual <int>(1, refreshInfoProviderImpl.OnRefreshCompletedCalls); }); }
public void RefreshCompletedDeferralCompletedOffUIThread() { RunOnUIThread.Execute(() => { RefreshVisualizer refreshVisualizer = new RefreshVisualizer(); Compositor compositor = ElementCompositionPreview.GetElementVisual(refreshVisualizer).Compositor; RefreshInfoProviderImpl refreshInfoProviderImpl = new RefreshInfoProviderImpl(compositor); ((IRefreshVisualizerPrivate)refreshVisualizer).InfoProvider = refreshInfoProviderImpl; refreshVisualizer.RefreshRequested += (RefreshVisualizer sender, RefreshRequestedEventArgs args) => { Deferral def = args.GetDeferral(); Windows.System.Threading.ThreadPool.RunAsync( (IAsyncAction action) => { Log.Comment("RefreshVisualizer.RefreshRequested event handler"); def.Complete(); }).AsTask().Wait(); }; Verify.AreEqual <int>(0, refreshInfoProviderImpl.OnRefreshStartedCalls); Verify.AreEqual <int>(0, refreshInfoProviderImpl.OnRefreshCompletedCalls); MUXControlsTestApp.App.TestContentRoot = refreshVisualizer; refreshVisualizer.RequestRefresh(); }); IdleSynchronizer.Wait(); RunOnUIThread.Execute(() => { RefreshVisualizer refreshVisualizer = (RefreshVisualizer)MUXControlsTestApp.App.TestContentRoot; RefreshInfoProviderImpl refreshInfoProviderImpl = ((RefreshInfoProviderImpl)((IRefreshVisualizerPrivate)refreshVisualizer).InfoProvider); Verify.AreEqual <int>(1, refreshInfoProviderImpl.OnRefreshStartedCalls); //Since we are completing the deferral off the UI thread the refresh never completed. Verify.AreEqual <int>(0, refreshInfoProviderImpl.OnRefreshCompletedCalls); }); }