@@ -9,6 +9,7 @@ import 'package:url_launcher/url_launcher.dart';
99import 'package:zulip/api/core.dart' ;
1010import 'package:zulip/model/content.dart' ;
1111import 'package:zulip/model/narrow.dart' ;
12+ import 'package:zulip/model/settings.dart' ;
1213import 'package:zulip/model/store.dart' ;
1314import 'package:zulip/widgets/content.dart' ;
1415import 'package:zulip/widgets/icons.dart' ;
@@ -482,7 +483,7 @@ void main() {
482483 final expectedLaunchUrl = expectedVideo.hrefUrl;
483484 await tester.tap (find.byIcon (Icons .play_arrow_rounded));
484485 check (testBinding.takeLaunchUrlCalls ())
485- .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .platformDefault ));
486+ .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .inAppBrowserView ));
486487 }
487488
488489 testWidgets ('video preview for youtube embed' , (tester) async {
@@ -754,11 +755,23 @@ void main() {
754755 await tapText (tester, find.text ('hello' ));
755756
756757 final expectedLaunchMode = defaultTargetPlatform == TargetPlatform .iOS ?
757- LaunchMode .externalApplication : LaunchMode .platformDefault ;
758+ LaunchMode .externalApplication : LaunchMode .inAppBrowserView ;
758759 check (testBinding.takeLaunchUrlCalls ())
759760 .single.equals ((url: Uri .parse ('https://example/' ), mode: expectedLaunchMode));
760761 }, variant: const TargetPlatformVariant ({TargetPlatform .android, TargetPlatform .iOS}));
761762
763+ testWidgets ('override default with browser preference setting' , (tester) async {
764+ await testBinding.globalStore.updateGlobalSettings (
765+ eg.globalSettings (
766+ browserPreference: BrowserPreference .external ).toCompanion (false ));
767+ await prepare (tester,
768+ '<p><a href="https://example/">hello</a></p>' );
769+
770+ await tapText (tester, find.text ('hello' ));
771+ check (testBinding.takeLaunchUrlCalls ())
772+ .single.equals ((url: Uri .parse ('https://example/' ), mode: LaunchMode .externalApplication));
773+ }, variant: const TargetPlatformVariant ({TargetPlatform .android, TargetPlatform .iOS}));
774+
762775 testWidgets ('multiple links in paragraph' , (tester) async {
763776 const fontSize = kBaseFontSize;
764777
@@ -772,19 +785,19 @@ void main() {
772785
773786 await tester.tapAt (base .translate (1 * fontSize, 0 )); // "fXo bar baz"
774787 check (testBinding.takeLaunchUrlCalls ())
775- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
788+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
776789
777790 await tester.tapAt (base .translate (9 * fontSize, 0 )); // "foo bar bXz"
778791 check (testBinding.takeLaunchUrlCalls ())
779- .single.equals ((url: Uri .parse ('https://b/' ), mode: LaunchMode .platformDefault ));
792+ .single.equals ((url: Uri .parse ('https://b/' ), mode: LaunchMode .inAppBrowserView ));
780793 });
781794
782795 testWidgets ('link nested in other spans' , (tester) async {
783796 await prepare (tester,
784797 '<p><strong><em><a href="https://a/">word</a></em></strong></p>' );
785798 await tapText (tester, find.text ('word' ));
786799 check (testBinding.takeLaunchUrlCalls ())
787- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
800+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
788801 });
789802
790803 testWidgets ('link containing other spans' , (tester) async {
@@ -797,27 +810,27 @@ void main() {
797810
798811 await tester.tapAt (base .translate (1 * fontSize, 0 )); // "tXo words"
799812 check (testBinding.takeLaunchUrlCalls ())
800- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
813+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
801814
802815 await tester.tapAt (base .translate (6 * fontSize, 0 )); // "two woXds"
803816 check (testBinding.takeLaunchUrlCalls ())
804- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
817+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
805818 });
806819
807820 testWidgets ('relative links are resolved' , (tester) async {
808821 await prepare (tester,
809822 '<p><a href="/a/b?c#d">word</a></p>' );
810823 await tapText (tester, find.text ('word' ));
811824 check (testBinding.takeLaunchUrlCalls ())
812- .single.equals ((url: Uri .parse ('${eg .realmUrl }a/b?c#d' ), mode: LaunchMode .platformDefault ));
825+ .single.equals ((url: Uri .parse ('${eg .realmUrl }a/b?c#d' ), mode: LaunchMode .inAppBrowserView ));
813826 });
814827
815828 testWidgets ('link inside HeadingNode' , (tester) async {
816829 await prepare (tester,
817830 '<h6><a href="https://a/">word</a></h6>' );
818831 await tapText (tester, find.text ('word' ));
819832 check (testBinding.takeLaunchUrlCalls ())
820- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
833+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
821834 });
822835
823836 testWidgets ('error dialog if invalid link' , (tester) async {
@@ -827,7 +840,7 @@ void main() {
827840 await tapText (tester, find.text ('word' ));
828841 await tester.pump ();
829842 check (testBinding.takeLaunchUrlCalls ())
830- .single.equals ((url: Uri .parse ('file:///etc/bad' ), mode: LaunchMode .platformDefault ));
843+ .single.equals ((url: Uri .parse ('file:///etc/bad' ), mode: LaunchMode .inAppBrowserView ));
831844 checkErrorDialog (tester, expectedTitle: 'Unable to open link' );
832845 });
833846 });
@@ -871,7 +884,7 @@ void main() {
871884 await tapText (tester, find.text ('invalid' ));
872885 final expectedUrl = eg.realmUrl.resolve ('/#narrow/stream/1-check/topic' );
873886 check (testBinding.takeLaunchUrlCalls ())
874- .single.equals ((url: expectedUrl, mode: LaunchMode .platformDefault ));
887+ .single.equals ((url: expectedUrl, mode: LaunchMode .inAppBrowserView ));
875888 check (pushedRoutes).isEmpty ();
876889 });
877890 });
0 commit comments