@@ -9,6 +9,7 @@ import 'package:url_launcher/url_launcher.dart';
9
9
import 'package:zulip/api/core.dart' ;
10
10
import 'package:zulip/model/content.dart' ;
11
11
import 'package:zulip/model/narrow.dart' ;
12
+ import 'package:zulip/model/settings.dart' ;
12
13
import 'package:zulip/model/store.dart' ;
13
14
import 'package:zulip/widgets/content.dart' ;
14
15
import 'package:zulip/widgets/icons.dart' ;
@@ -521,7 +522,7 @@ void main() {
521
522
final expectedLaunchUrl = expectedVideo.hrefUrl;
522
523
await tester.tap (find.byIcon (Icons .play_arrow_rounded));
523
524
check (testBinding.takeLaunchUrlCalls ())
524
- .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .platformDefault ));
525
+ .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .inAppBrowserView ));
525
526
}
526
527
527
528
testWidgets ('video preview for youtube embed' , (tester) async {
@@ -793,11 +794,23 @@ void main() {
793
794
await tapText (tester, find.text ('hello' ));
794
795
795
796
final expectedLaunchMode = defaultTargetPlatform == TargetPlatform .iOS ?
796
- LaunchMode .externalApplication : LaunchMode .platformDefault ;
797
+ LaunchMode .externalApplication : LaunchMode .inAppBrowserView ;
797
798
check (testBinding.takeLaunchUrlCalls ())
798
799
.single.equals ((url: Uri .parse ('https://example/' ), mode: expectedLaunchMode));
799
800
}, variant: const TargetPlatformVariant ({TargetPlatform .android, TargetPlatform .iOS}));
800
801
802
+ testWidgets ('override default with browser preference setting' , (tester) async {
803
+ await testBinding.globalStore.updateGlobalSettings (
804
+ eg.globalSettings (
805
+ browserPreference: BrowserPreference .external ).toCompanion (false ));
806
+ await prepare (tester,
807
+ '<p><a href="https://example/">hello</a></p>' );
808
+
809
+ await tapText (tester, find.text ('hello' ));
810
+ check (testBinding.takeLaunchUrlCalls ())
811
+ .single.equals ((url: Uri .parse ('https://example/' ), mode: LaunchMode .externalApplication));
812
+ }, variant: const TargetPlatformVariant ({TargetPlatform .android, TargetPlatform .iOS}));
813
+
801
814
testWidgets ('multiple links in paragraph' , (tester) async {
802
815
const fontSize = kBaseFontSize;
803
816
@@ -811,19 +824,19 @@ void main() {
811
824
812
825
await tester.tapAt (base .translate (1 * fontSize, 0 )); // "fXo bar baz"
813
826
check (testBinding.takeLaunchUrlCalls ())
814
- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
827
+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
815
828
816
829
await tester.tapAt (base .translate (9 * fontSize, 0 )); // "foo bar bXz"
817
830
check (testBinding.takeLaunchUrlCalls ())
818
- .single.equals ((url: Uri .parse ('https://b/' ), mode: LaunchMode .platformDefault ));
831
+ .single.equals ((url: Uri .parse ('https://b/' ), mode: LaunchMode .inAppBrowserView ));
819
832
});
820
833
821
834
testWidgets ('link nested in other spans' , (tester) async {
822
835
await prepare (tester,
823
836
'<p><strong><em><a href="https://a/">word</a></em></strong></p>' );
824
837
await tapText (tester, find.text ('word' ));
825
838
check (testBinding.takeLaunchUrlCalls ())
826
- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
839
+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
827
840
});
828
841
829
842
testWidgets ('link containing other spans' , (tester) async {
@@ -836,27 +849,27 @@ void main() {
836
849
837
850
await tester.tapAt (base .translate (1 * fontSize, 0 )); // "tXo words"
838
851
check (testBinding.takeLaunchUrlCalls ())
839
- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
852
+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
840
853
841
854
await tester.tapAt (base .translate (6 * fontSize, 0 )); // "two woXds"
842
855
check (testBinding.takeLaunchUrlCalls ())
843
- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
856
+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
844
857
});
845
858
846
859
testWidgets ('relative links are resolved' , (tester) async {
847
860
await prepare (tester,
848
861
'<p><a href="/a/b?c#d">word</a></p>' );
849
862
await tapText (tester, find.text ('word' ));
850
863
check (testBinding.takeLaunchUrlCalls ())
851
- .single.equals ((url: Uri .parse ('${eg .realmUrl }a/b?c#d' ), mode: LaunchMode .platformDefault ));
864
+ .single.equals ((url: Uri .parse ('${eg .realmUrl }a/b?c#d' ), mode: LaunchMode .inAppBrowserView ));
852
865
});
853
866
854
867
testWidgets ('link inside HeadingNode' , (tester) async {
855
868
await prepare (tester,
856
869
'<h6><a href="https://a/">word</a></h6>' );
857
870
await tapText (tester, find.text ('word' ));
858
871
check (testBinding.takeLaunchUrlCalls ())
859
- .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .platformDefault ));
872
+ .single.equals ((url: Uri .parse ('https://a/' ), mode: LaunchMode .inAppBrowserView ));
860
873
});
861
874
862
875
testWidgets ('error dialog if invalid link' , (tester) async {
@@ -866,7 +879,7 @@ void main() {
866
879
await tapText (tester, find.text ('word' ));
867
880
await tester.pump ();
868
881
check (testBinding.takeLaunchUrlCalls ())
869
- .single.equals ((url: Uri .parse ('file:///etc/bad' ), mode: LaunchMode .platformDefault ));
882
+ .single.equals ((url: Uri .parse ('file:///etc/bad' ), mode: LaunchMode .inAppBrowserView ));
870
883
checkErrorDialog (tester, expectedTitle: 'Unable to open link' );
871
884
});
872
885
});
@@ -910,7 +923,7 @@ void main() {
910
923
await tapText (tester, find.text ('invalid' ));
911
924
final expectedUrl = eg.realmUrl.resolve ('/#narrow/stream/1-check/topic' );
912
925
check (testBinding.takeLaunchUrlCalls ())
913
- .single.equals ((url: expectedUrl, mode: LaunchMode .platformDefault ));
926
+ .single.equals ((url: expectedUrl, mode: LaunchMode .inAppBrowserView ));
914
927
check (pushedRoutes).isEmpty ();
915
928
});
916
929
});
@@ -1060,11 +1073,11 @@ void main() {
1060
1073
1061
1074
await tester.tap (find.text ('Zulip — organized team chat' ));
1062
1075
check (testBinding.takeLaunchUrlCalls ())
1063
- .single.equals ((url: url, mode: LaunchMode .platformDefault ));
1076
+ .single.equals ((url: url, mode: LaunchMode .inAppBrowserView ));
1064
1077
1065
1078
await tester.tap (find.byType (RealmContentNetworkImage ));
1066
1079
check (testBinding.takeLaunchUrlCalls ())
1067
- .single.equals ((url: url, mode: LaunchMode .platformDefault ));
1080
+ .single.equals ((url: url, mode: LaunchMode .inAppBrowserView ));
1068
1081
debugNetworkImageHttpClientProvider = null ;
1069
1082
});
1070
1083
@@ -1078,7 +1091,7 @@ void main() {
1078
1091
1079
1092
await tester.tap (find.byType (RealmContentNetworkImage ));
1080
1093
check (testBinding.takeLaunchUrlCalls ())
1081
- .single.equals ((url: url, mode: LaunchMode .platformDefault ));
1094
+ .single.equals ((url: url, mode: LaunchMode .inAppBrowserView ));
1082
1095
debugNetworkImageHttpClientProvider = null ;
1083
1096
});
1084
1097
@@ -1088,11 +1101,11 @@ void main() {
1088
1101
1089
1102
await tester.tap (find.text ('Zulip — organized team chat' ));
1090
1103
check (testBinding.takeLaunchUrlCalls ())
1091
- .single.equals ((url: url, mode: LaunchMode .platformDefault ));
1104
+ .single.equals ((url: url, mode: LaunchMode .inAppBrowserView ));
1092
1105
1093
1106
await tester.tap (find.byType (RealmContentNetworkImage ));
1094
1107
check (testBinding.takeLaunchUrlCalls ())
1095
- .single.equals ((url: url, mode: LaunchMode .platformDefault ));
1108
+ .single.equals ((url: url, mode: LaunchMode .inAppBrowserView ));
1096
1109
debugNetworkImageHttpClientProvider = null ;
1097
1110
});
1098
1111
@@ -1102,7 +1115,7 @@ void main() {
1102
1115
1103
1116
await tester.tap (find.byType (RealmContentNetworkImage ));
1104
1117
check (testBinding.takeLaunchUrlCalls ())
1105
- .single.equals ((url: url, mode: LaunchMode .platformDefault ));
1118
+ .single.equals ((url: url, mode: LaunchMode .inAppBrowserView ));
1106
1119
debugNetworkImageHttpClientProvider = null ;
1107
1120
});
1108
1121
});
0 commit comments