@@ -83,4 +83,49 @@ void main() {
83
83
debugBrightnessOverride = null ;
84
84
});
85
85
});
86
+
87
+ group ('BrowserPreference' , () {
88
+ Finder useInAppBrowserSwitchFinder = find.ancestor (
89
+ of: find.text ('Open links with in-app browser' ),
90
+ matching: find.byType (SwitchListTile ));
91
+
92
+ void checkSwitchAndGlobalSettings (WidgetTester tester, {
93
+ required bool checked,
94
+ required BrowserPreference ? expectedBrowserPreference,
95
+ }) {
96
+ check (tester.widget <SwitchListTile >(useInAppBrowserSwitchFinder))
97
+ .value.equals (checked);
98
+ check (testBinding.globalStore)
99
+ .globalSettings.browserPreference.equals (expectedBrowserPreference);
100
+ }
101
+
102
+ testWidgets ('smoke' , (tester) async {
103
+ await testBinding.globalStore.updateGlobalSettings (
104
+ eg.globalSettings (
105
+ browserPreference: BrowserPreference .external ).toCompanion (false ));
106
+ await prepare (tester);
107
+ checkSwitchAndGlobalSettings (tester,
108
+ checked: false , expectedBrowserPreference: BrowserPreference .external );
109
+
110
+ await tester.tap (useInAppBrowserSwitchFinder);
111
+ await tester.pump ();
112
+ checkSwitchAndGlobalSettings (tester,
113
+ checked: true , expectedBrowserPreference: BrowserPreference .inApp);
114
+ });
115
+
116
+ testWidgets ('use our per-platform default browser preference' , (tester) async {
117
+ await prepare (tester);
118
+ bool expectInApp = defaultTargetPlatform == TargetPlatform .android;
119
+ checkSwitchAndGlobalSettings (tester,
120
+ checked: expectInApp, expectedBrowserPreference: null );
121
+
122
+ await tester.tap (useInAppBrowserSwitchFinder);
123
+ await tester.pump ();
124
+ expectInApp = ! expectInApp;
125
+ checkSwitchAndGlobalSettings (tester,
126
+ checked: expectInApp,
127
+ expectedBrowserPreference: expectInApp
128
+ ? BrowserPreference .inApp : BrowserPreference .external );
129
+ }, variant: TargetPlatformVariant ({TargetPlatform .android, TargetPlatform .iOS}));
130
+ });
86
131
}
0 commit comments