Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SunboX/Prism.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornuits.jp <nuits.jp@live.jp>2017-05-17 17:35:52 +0300
committernuits.jp <nuits.jp@live.jp>2017-05-17 17:35:52 +0300
commit6594d66d5cddd9b54315a764daae3e864b21cb45 (patch)
tree0a0d2b5923cd837297995802c96c9d0671f88ebc
parent95e7632a2301e09cd372152e210211b918364136 (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.cs39
-rw-r--r--Source/Xamarin/Prism.Forms/Navigation/PageNavigationService.cs2
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;