diff options
author | nuits.jp <nuits.jp@live.jp> | 2017-05-17 17:35:52 +0300 |
---|---|---|
committer | nuits.jp <nuits.jp@live.jp> | 2017-05-17 17:35:52 +0300 |
commit | 6594d66d5cddd9b54315a764daae3e864b21cb45 (patch) | |
tree | 0a0d2b5923cd837297995802c96c9d0671f88ebc | |
parent | 95e7632a2301e09cd372152e210211b918364136 (diff) |
Delete unnecessary useModalNavigation transformation.
If Detail is NavigationPage, it is not necessary because it is handled correctly by ProcessNavigationForPage Method.
-rw-r--r-- | Source/Xamarin/Prism.Forms.Tests/Navigation/PageNavigationServiceFixture.cs | 39 | ||||
-rw-r--r-- | Source/Xamarin/Prism.Forms/Navigation/PageNavigationService.cs | 2 |
2 files changed, 40 insertions, 1 deletions
diff --git a/Source/Xamarin/Prism.Forms.Tests/Navigation/PageNavigationServiceFixture.cs b/Source/Xamarin/Prism.Forms.Tests/Navigation/PageNavigationServiceFixture.cs index f3998a2..7acb6e8 100644 --- a/Source/Xamarin/Prism.Forms.Tests/Navigation/PageNavigationServiceFixture.cs +++ b/Source/Xamarin/Prism.Forms.Tests/Navigation/PageNavigationServiceFixture.cs @@ -5,6 +5,7 @@ using Prism.Forms.Tests.Mocks.Views; using Prism.Logging; using Prism.Navigation; using System; +using System.Linq; using Xamarin.Forms; using Xunit; @@ -722,6 +723,44 @@ namespace Prism.Forms.Tests.Navigation } [Fact] + public async void DeepNavigate_ToEmptyMasterDetailPage_ToEmptyNavigationPage_ToContentPage() + { + var applicationProvider = new ApplicationProviderMock(null); + var navigationService = new PageNavigationServiceMock(_container, applicationProvider, _loggerFacade); + + await navigationService.NavigateAsync("MasterDetailPage-Empty/NavigationPage-Empty/ContentPage"); + + var masterDetail = applicationProvider.MainPage as MasterDetailPageEmptyMock; + Assert.NotNull(masterDetail); + Assert.NotNull(masterDetail.Detail); + Assert.IsType<NavigationPageEmptyMock>(masterDetail.Detail); + Assert.Equal(0, masterDetail.Navigation.ModalStack.Count); + Assert.Equal(0, masterDetail.Navigation.NavigationStack.Count); + Assert.Equal(0, masterDetail.Detail.Navigation.ModalStack.Count); + Assert.Equal(1, masterDetail.Detail.Navigation.NavigationStack.Count); + Assert.IsType<ContentPageMock>(masterDetail.Detail.Navigation.NavigationStack.Last()); + } + + [Fact] + public async void DeepNavigate_ToEmptyMasterDetailPage_ToNavigationPage_ToContentPage() + { + var applicationProvider = new ApplicationProviderMock(null); + var navigationService = new PageNavigationServiceMock(_container, applicationProvider, _loggerFacade); + + await navigationService.NavigateAsync("MasterDetailPage-Empty/NavigationPage/PageMock"); + + var masterDetail = applicationProvider.MainPage as MasterDetailPageEmptyMock; + Assert.NotNull(masterDetail); + Assert.NotNull(masterDetail.Detail); + Assert.IsType<NavigationPageMock>(masterDetail.Detail); + Assert.Equal(0, masterDetail.Navigation.ModalStack.Count); + Assert.Equal(0, masterDetail.Navigation.NavigationStack.Count); + Assert.Equal(0, masterDetail.Detail.Navigation.ModalStack.Count); + Assert.Equal(1, masterDetail.Detail.Navigation.NavigationStack.Count); + Assert.IsType<PageMock>(masterDetail.Detail.Navigation.NavigationStack.Last()); + } + + [Fact] public async void DeepNavigate_ToMasterDetailPage_ToDifferentPage() { var navigationService = new PageNavigationServiceMock(_container, _applicationProvider, _loggerFacade); diff --git a/Source/Xamarin/Prism.Forms/Navigation/PageNavigationService.cs b/Source/Xamarin/Prism.Forms/Navigation/PageNavigationService.cs index 2f79d6c..ec5b262 100644 --- a/Source/Xamarin/Prism.Forms/Navigation/PageNavigationService.cs +++ b/Source/Xamarin/Prism.Forms/Navigation/PageNavigationService.cs @@ -303,7 +303,7 @@ namespace Prism.Navigation if (detail == null) { var newDetail = CreatePageFromSegment(nextSegment); - await ProcessNavigation(newDetail, segments, parameters, newDetail is NavigationPage ? false : true, animated); + await ProcessNavigation(newDetail, segments, parameters, useModalNavigation, animated); await DoNavigateAction(null, nextSegment, newDetail, parameters, onNavigationActionCompleted: () => { currentPage.IsPresented = isPresented; |