@@ -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
});
0 commit comments