@@ -4,7 +4,7 @@ import { isIOS, isAndroid } from "tns-core-modules/platform";
44import { Label } from "tns-core-modules/ui/label" ;
55import { StackLayout } from "tns-core-modules/ui/layouts/stack-layout" ;
66import * as frameModule from "tns-core-modules/ui/frame" ;
7- import { Page } from "tns-core-modules/ui/page" ;
7+ import { Page , NavigatedData } from "tns-core-modules/ui/page" ;
88import { ListView , ItemEventData } from "tns-core-modules/ui/list-view" ;
99import { TabView , TabViewItem } from "tns-core-modules/ui/tab-view" ;
1010import { Button } from "tns-core-modules/ui/button" ;
@@ -68,6 +68,56 @@ function _clickHandlerFactory(index: number) {
6868 }
6969}
7070
71+ function _createFrameView ( ) : frameModule . Frame {
72+ const frame = new frameModule . Frame ( ) ;
73+ frame . navigate ( { create : ( ) => new Page ( ) } ) ;
74+ return frame ;
75+ }
76+
77+ export function testBackNavigationToTabViewWithNestedFramesShouldWork ( ) {
78+ // https://github.com/NativeScript/NativeScript/issues/6490
79+ const topFrame = frameModule . topmost ( ) ;
80+
81+ let tabViewPage : Page ;
82+ let tabView : TabView ;
83+
84+ const pageFactory = function ( ) : Page {
85+ tabView = _createTabView ( ) ;
86+ let items = Array < TabViewItem > ( ) ;
87+ let tabViewitem = new TabViewItem ( ) ;
88+ tabViewitem . title = "Item1" ;
89+ tabViewitem . view = _createFrameView ( ) ;
90+ items . push ( tabViewitem ) ;
91+
92+ let tabViewitem2 = new TabViewItem ( ) ;
93+ tabViewitem2 . title = "Item2" ;
94+ tabViewitem2 . view = _createFrameView ( ) ;
95+ items . push ( tabViewitem2 ) ;
96+
97+ tabView . items = items ;
98+
99+ tabViewPage = new Page ( ) ;
100+ tabViewPage . id = "tab-view-page" ;
101+ tabViewPage . content = tabView ;
102+
103+ return tabViewPage ;
104+ }
105+
106+ helper . waitUntilNavigatedFrom ( ( ) => topFrame . navigate ( pageFactory ) , topFrame ) ;
107+
108+ TKUnit . waitUntilReady ( ( ) => topFrame . currentPage === tabViewPage ) ;
109+ TKUnit . waitUntilReady ( ( ) => tabViewIsFullyLoaded ( tabView ) ) ;
110+
111+ // navigate to a different page
112+ helper . waitUntilNavigatedFrom ( ( ) => topFrame . navigate ( { create : ( ) => new Page ( ) , animated : false } ) , topFrame ) ;
113+
114+ // navigate back to the page that hold the tabview with nested frames
115+ topFrame . goBack ( ) ;
116+
117+ // make sure the app did not crash
118+ TKUnit . waitUntilReady ( ( ) => topFrame . navigationQueueIsEmpty ( ) ) ;
119+ }
120+
71121export function testWhenNavigatingBackToANonCachedPageContainingATabViewWithAListViewTheListViewIsThere ( ) {
72122 var topFrame = frameModule . topmost ( ) ;
73123
0 commit comments