@@ -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' ;
@@ -482,7 +483,7 @@ void main() {
482
483
final expectedLaunchUrl = expectedVideo.hrefUrl;
483
484
await tester.tap (find.byIcon (Icons .play_arrow_rounded));
484
485
check (testBinding.takeLaunchUrlCalls ())
485
- .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .platformDefault ));
486
+ .single.equals ((url: Uri .parse (expectedLaunchUrl), mode: LaunchMode .inAppBrowserView ));
486
487
}
487
488
488
489
testWidgets ('video preview for youtube embed' , (tester) async {
@@ -754,11 +755,23 @@ void main() {
754
755
await tapText (tester, find.text ('hello' ));
755
756
756
757
final expectedLaunchMode = defaultTargetPlatform == TargetPlatform .iOS ?
757
- LaunchMode .externalApplication : LaunchMode .platformDefault ;
758
+ LaunchMode .externalApplication : LaunchMode .inAppBrowserView ;
758
759
check (testBinding.takeLaunchUrlCalls ())
759
760
.single.equals ((url: Uri .parse ('https://example/' ), mode: expectedLaunchMode));
760
761
}, variant: const TargetPlatformVariant ({TargetPlatform .android, TargetPlatform .iOS}));
761
762
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
+
762
775
testWidgets ('multiple links in paragraph' , (tester) async {
763
776
const fontSize = kBaseFontSize;
764
777
@@ -772,19 +785,19 @@ void main() {
772
785
773
786
await tester.tapAt (base .translate (1 * fontSize, 0 )); // "fXo bar baz"
774
787
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 ));
776
789
777
790
await tester.tapAt (base .translate (9 * fontSize, 0 )); // "foo bar bXz"
778
791
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 ));
780
793
});
781
794
782
795
testWidgets ('link nested in other spans' , (tester) async {
783
796
await prepare (tester,
784
797
'<p><strong><em><a href="https://a/">word</a></em></strong></p>' );
785
798
await tapText (tester, find.text ('word' ));
786
799
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 ));
788
801
});
789
802
790
803
testWidgets ('link containing other spans' , (tester) async {
@@ -797,27 +810,27 @@ void main() {
797
810
798
811
await tester.tapAt (base .translate (1 * fontSize, 0 )); // "tXo words"
799
812
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 ));
801
814
802
815
await tester.tapAt (base .translate (6 * fontSize, 0 )); // "two woXds"
803
816
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 ));
805
818
});
806
819
807
820
testWidgets ('relative links are resolved' , (tester) async {
808
821
await prepare (tester,
809
822
'<p><a href="/a/b?c#d">word</a></p>' );
810
823
await tapText (tester, find.text ('word' ));
811
824
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 ));
813
826
});
814
827
815
828
testWidgets ('link inside HeadingNode' , (tester) async {
816
829
await prepare (tester,
817
830
'<h6><a href="https://a/">word</a></h6>' );
818
831
await tapText (tester, find.text ('word' ));
819
832
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 ));
821
834
});
822
835
823
836
testWidgets ('error dialog if invalid link' , (tester) async {
@@ -827,7 +840,7 @@ void main() {
827
840
await tapText (tester, find.text ('word' ));
828
841
await tester.pump ();
829
842
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 ));
831
844
checkErrorDialog (tester, expectedTitle: 'Unable to open link' );
832
845
});
833
846
});
@@ -871,7 +884,7 @@ void main() {
871
884
await tapText (tester, find.text ('invalid' ));
872
885
final expectedUrl = eg.realmUrl.resolve ('/#narrow/stream/1-check/topic' );
873
886
check (testBinding.takeLaunchUrlCalls ())
874
- .single.equals ((url: expectedUrl, mode: LaunchMode .platformDefault ));
887
+ .single.equals ((url: expectedUrl, mode: LaunchMode .inAppBrowserView ));
875
888
check (pushedRoutes).isEmpty ();
876
889
});
877
890
});
0 commit comments