@@ -478,4 +478,164 @@ public void onError(Ack ack) {
478478 TestUtils .closeApplication (application );
479479 }
480480
481+ @ Test
482+ public void navigateBack () throws Exception {
483+ ApplicationOptions options = TestUtils .getAppOptions (null );
484+ Application application = TestUtils .runApplication (options , desktopConnection );
485+ Window window = application .getWindow ();
486+ CountDownLatch latch = new CountDownLatch (1 );
487+ window .navigate ("https://openfin.co" , new AckListener () {
488+ @ Override
489+ public void onSuccess (Ack ack ) {
490+ if (ack .isSuccessful ()) {
491+ window .navigate ("https://www.google.com" , new AckListener () {
492+ @ Override
493+ public void onSuccess (Ack ack ) {
494+ if (ack .isSuccessful ()) {
495+ window .navigateBack (new AckListener () {
496+ @ Override
497+ public void onSuccess (Ack ack ) {
498+ if (ack .isSuccessful ()) {
499+ if (ack .isSuccessful ()) {
500+ latch .countDown ();
501+ }
502+ }
503+ }
504+ @ Override
505+ public void onError (Ack ack ) {
506+ }
507+ });
508+ }
509+ }
510+ @ Override
511+ public void onError (Ack ack ) {
512+ }
513+ });
514+ }
515+ }
516+ @ Override
517+ public void onError (Ack ack ) {
518+ }
519+ });
520+
521+ latch .await (5 , TimeUnit .SECONDS );
522+ assertEquals ("Window.navigate timeout" , latch .getCount (), 0 );
523+ Thread .sleep (1000 ); // give time for https://openfin.co to load
524+ window .executeJavaScript ("location.href" , result -> {
525+ if (result != null && result .toString ().equals ("https://openfin.co" )) {
526+ latch .countDown ();
527+ }
528+ }, null );
529+
530+ latch .await (5 , TimeUnit .SECONDS );
531+ assertEquals ("Window.executeJavaScript timeout" , latch .getCount (), 0 );
532+ TestUtils .closeApplication (application );
533+ }
534+
535+ @ Test
536+ public void navigateForward () throws Exception {
537+ ApplicationOptions options = TestUtils .getAppOptions (null );
538+ Application application = TestUtils .runApplication (options , desktopConnection );
539+ Window window = application .getWindow ();
540+ CountDownLatch latch = new CountDownLatch (1 );
541+ window .navigate ("https://www.google.com" , new AckListener () {
542+ @ Override
543+ public void onSuccess (Ack ack ) {
544+ if (ack .isSuccessful ()) {
545+ window .navigate ("https://openfin.co" , new AckListener () {
546+ @ Override
547+ public void onSuccess (Ack ack ) {
548+ if (ack .isSuccessful ()) {
549+ window .navigateBack (new AckListener () {
550+ @ Override
551+ public void onSuccess (Ack ack ) {
552+ if (ack .isSuccessful ()) {
553+ window .navigateForward (new AckListener () {
554+ @ Override
555+ public void onSuccess (Ack ack ) {
556+ if (ack .isSuccessful ()) {
557+ latch .countDown ();
558+ }
559+ }
560+ @ Override
561+ public void onError (Ack ack ) {
562+ }
563+ });
564+ }
565+ }
566+ @ Override
567+ public void onError (Ack ack ) {
568+ }
569+ });
570+ }
571+ }
572+ @ Override
573+ public void onError (Ack ack ) {
574+ }
575+ });
576+ }
577+ }
578+ @ Override
579+ public void onError (Ack ack ) {
580+ }
581+ });
582+
583+ latch .await (5 , TimeUnit .SECONDS );
584+ assertEquals ("Window.navigate timeout" , latch .getCount (), 0 );
585+ Thread .sleep (1000 ); // give time for https://openfin.co to load
586+ window .executeJavaScript ("location.href" , result -> {
587+ if (result != null && result .toString ().equals ("https://openfin.co" )) {
588+ latch .countDown ();
589+ }
590+ }, null );
591+
592+ latch .await (5 , TimeUnit .SECONDS );
593+ assertEquals ("Window.executeJavaScript timeout" , latch .getCount (), 0 );
594+ TestUtils .closeApplication (application );
595+ }
596+
597+ @ Test
598+ public void stopNavigate () throws Exception {
599+ ApplicationOptions options = TestUtils .getAppOptions (null );
600+ Application application = TestUtils .runApplication (options , desktopConnection );
601+ Window window = application .getWindow ();
602+ CountDownLatch latch = new CountDownLatch (1 );
603+ window .navigate ("https://openfin.co" , new AckListener () {
604+ @ Override
605+ public void onSuccess (Ack ack ) {
606+ if (ack .isSuccessful ()) {
607+ window .navigate ("https://www.cnn.com" , null );
608+ window .stopWindowNavigation (new AckListener () {
609+ @ Override
610+ public void onSuccess (Ack ack ) {
611+ if (ack .isSuccessful ()) {
612+ latch .countDown ();
613+ }
614+ }
615+ @ Override
616+ public void onError (Ack ack ) {
617+ }
618+ });
619+ }
620+ }
621+ @ Override
622+ public void onError (Ack ack ) {
623+ }
624+ });
625+
626+
627+ latch .await (5 , TimeUnit .SECONDS );
628+ assertEquals ("Window.navigate timeout" , latch .getCount (), 0 );
629+ Thread .sleep (1000 );
630+ window .executeJavaScript ("location.href" , result -> {
631+ if (result != null && result .toString ().equals ("https://openfin.co" )) {
632+ latch .countDown ();
633+ }
634+ }, null );
635+
636+ latch .await (5 , TimeUnit .SECONDS );
637+ assertEquals ("Window.executeJavaScript timeout" , latch .getCount (), 0 );
638+ TestUtils .closeApplication (application );
639+ }
640+
481641}
0 commit comments