@@ -408,62 +408,89 @@ export function testBindingIsRefreshedWhenTabViewItemIsUnselectedAndThenSelected
408408 } ) ;
409409}
410410
411- export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack ( ) {
411+ export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack_NoPageCaching ( ) {
412+ testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBackg ( false ) ;
413+ }
414+ export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack_WithPageCaching ( ) {
415+ testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBackg ( true ) ;
416+ }
417+
418+ function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBackg ( enablePageCache : boolean ) {
412419 var i : number ;
413420 var itemCount = 3 ;
414421 var loadedItems = [ 0 , 0 , 0 ] ;
415422 var unloadedItems = [ 0 , 0 , 0 ] ;
416423
417- var tabView = _createTabView ( ) ;
418- var items = _createItems ( itemCount ) ;
419- tabView . items = items ;
424+ var topFrame = frameModule . topmost ( ) ;
425+ var oldChache ;
420426
421- function createLoadedFor ( itemIndex : number ) {
422- return function ( ) {
423- loadedItems [ itemIndex ] = loadedItems [ itemIndex ] + 1 ;
424- }
427+ if ( topFrame . android ) {
428+ oldChache = topFrame . android . cachePagesOnNavigate ;
429+ topFrame . android . cachePagesOnNavigate = enablePageCache ;
425430 }
426431
427- function createUnloadedFor ( itemIndex : number ) {
428- return function ( ) {
429- unloadedItems [ itemIndex ] = unloadedItems [ itemIndex ] + 1 ;
432+ try {
433+ var tabView = _createTabView ( ) ;
434+ var items = _createItems ( itemCount ) ;
435+ tabView . items = items ;
436+
437+ function createLoadedFor ( itemIndex : number ) {
438+ return function ( ) {
439+ loadedItems [ itemIndex ] = loadedItems [ itemIndex ] + 1 ;
440+ }
430441 }
431- }
432442
433- helper . buildUIAndRunTest ( tabView , function ( ) {
434- try {
435- // Attach to loaded/unloaded events
436- for ( i = 0 ; i < itemCount ; i ++ ) {
437- items [ i ] . view . on ( "loaded" , createLoadedFor ( i ) ) ;
438- items [ i ] . view . on ( "unloaded" , createUnloadedFor ( i ) ) ;
443+ function createUnloadedFor ( itemIndex : number ) {
444+ return function ( ) {
445+ unloadedItems [ itemIndex ] = unloadedItems [ itemIndex ] + 1 ;
439446 }
447+ }
440448
441- var detailsPageFactory = function ( ) : pageModule . Page {
442- var detailsPage = new pageModule . Page ( ) ;
443- detailsPage . content = new labelModule . Label ( ) ;
444- return detailsPage ;
445- } ;
449+ helper . buildUIAndRunTest ( tabView , function ( ) {
450+ try {
451+ TKUnit . waitUntilReady ( ( ) => { return items [ 0 ] . view . isLoaded ; } , ASYNC ) ;
446452
447- helper . navigate ( detailsPageFactory ) ;
448- }
449- finally {
450- // Go back to the test page.
451- helper . goBack ( ) ;
452- }
453-
454- //console.log("loaded items: " + loadedItems.join(", "));
455- //console.log("unloadedItems items: " + unloadedItems.join(", "));
456-
457- // Check that at least the first item is loaded and unloaded
458- TKUnit . assertEqual ( loadedItems [ 0 ] , 1 , "loaded count for 1st item" ) ;
459- TKUnit . assertEqual ( unloadedItems [ 0 ] , 1 , "unloaded count for 1st item" ) ;
460-
461- // Check that loaded/unloaded coutns are equal for all tabs
462- for ( i = 0 ; i < itemCount ; i ++ ) {
463- TKUnit . assert ( loadedItems [ i ] === unloadedItems [ i ] ,
464- "Loaded and unloaded calls are not equal for item " + i + " loaded: " + loadedItems [ i ] + " unloaded: " + unloadedItems [ i ] ) ;
453+ // Attach to loaded/unloaded events
454+ for ( i = 0 ; i < itemCount ; i ++ ) {
455+ items [ i ] . view . on ( "loaded" , createLoadedFor ( i ) ) ;
456+ items [ i ] . view . on ( "unloaded" , createUnloadedFor ( i ) ) ;
457+ }
458+
459+ var detailsPageFactory = function ( ) : pageModule . Page {
460+ var detailsPage = new pageModule . Page ( ) ;
461+ detailsPage . content = new labelModule . Label ( ) ;
462+ return detailsPage ;
463+ } ;
464+
465+ helper . navigate ( detailsPageFactory ) ;
466+ }
467+ finally {
468+ // Go back to the test page.
469+ helper . goBack ( ) ;
470+ }
471+ TKUnit . waitUntilReady ( ( ) => { return items [ 0 ] . view . isLoaded ; } , ASYNC ) ;
472+
473+ //console.log("loaded items: " + loadedItems.join(", "));
474+ //console.log("unloadedItems items: " + unloadedItems.join(", "));
475+
476+ // Check that at least the first item is loaded and unloaded
477+ TKUnit . assert ( items [ 0 ] . view . isLoaded , "Thecontent of the first tab should be loaded." ) ;
478+ TKUnit . assertEqual ( loadedItems [ 0 ] , 1 , "loaded count for 1st item" ) ;
479+ TKUnit . assertEqual ( unloadedItems [ 0 ] , 1 , "unloaded count for 1st item" ) ;
480+
481+ // Check that loaded/unloaded coutns are equal for all tabs
482+ for ( i = 0 ; i < itemCount ; i ++ ) {
483+ TKUnit . assert ( loadedItems [ i ] === unloadedItems [ i ] ,
484+ "Loaded and unloaded calls are not equal for item " + i + " loaded: " + loadedItems [ i ] + " unloaded: " + unloadedItems [ i ] ) ;
485+ }
486+ } ) ;
487+ }
488+ finally {
489+ // Return original page cache value
490+ if ( topFrame . android ) {
491+ topFrame . android . cachePagesOnNavigate = oldChache ;
465492 }
466- } ) ;
493+ }
467494}
468495
469496function _clickTheFirstButtonInTheListViewNatively ( tabView : tabViewModule . TabView ) {
0 commit comments