@@ -11,9 +11,13 @@ import 'package:mockito/annotations.dart';
1111import 'package:mockito/mockito.dart' ;
1212import 'package:webview_flutter_android/src/android_webview.dart'
1313 as android_webview;
14+ import 'package:webview_flutter_android/src/android_webview_api_impls.dart' ;
15+ import 'package:webview_flutter_android/src/instance_manager.dart' ;
1416import 'package:webview_flutter_android/webview_android_widget.dart' ;
1517import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' ;
1618
19+ import 'android_webview.pigeon.dart' ;
20+ import 'android_webview_test.mocks.dart' show MockTestWebViewHostApi;
1721import 'webview_android_widget_test.mocks.dart' ;
1822
1923@GenerateMocks (< Type > [
@@ -31,7 +35,7 @@ import 'webview_android_widget_test.mocks.dart';
3135void main () {
3236 TestWidgetsFlutterBinding .ensureInitialized ();
3337
34- group ('$ WebViewAndroidWidget ' , () {
38+ group ('WebViewAndroidWidget' , () {
3539 late MockFlutterAssetManager mockFlutterAssetManager;
3640 late MockWebView mockWebView;
3741 late MockWebSettings mockWebSettings;
@@ -93,7 +97,7 @@ void main() {
9397 webChromeClient = testController.webChromeClient;
9498 }
9599
96- testWidgets ('$ WebViewAndroidWidget ' , (WidgetTester tester) async {
100+ testWidgets ('WebViewAndroidWidget' , (WidgetTester tester) async {
97101 await buildWidget (tester);
98102
99103 verify (mockWebSettings.setDomStorageEnabled (true ));
@@ -119,7 +123,7 @@ void main() {
119123 },
120124 );
121125
122- group ('$ CreationParams ' , () {
126+ group ('CreationParams' , () {
123127 testWidgets ('initialUrl' , (WidgetTester tester) async {
124128 await buildWidget (
125129 tester,
@@ -201,7 +205,7 @@ void main() {
201205 expect (javaScriptChannels[1 ].channelName, 'b' );
202206 });
203207
204- group ('$ WebSettings ' , () {
208+ group ('WebSettings' , () {
205209 testWidgets ('javascriptMode' , (WidgetTester tester) async {
206210 await buildWidget (
207211 tester,
@@ -232,7 +236,7 @@ void main() {
232236 expect (testController.webViewClient.shouldOverrideUrlLoading, isTrue);
233237 });
234238
235- testWidgets ('debuggingEnabled' , (WidgetTester tester) async {
239+ testWidgets ('debuggingEnabled true ' , (WidgetTester tester) async {
236240 await buildWidget (
237241 tester,
238242 creationParams: CreationParams (
@@ -247,6 +251,21 @@ void main() {
247251 verify (mockWebViewProxy.setWebContentsDebuggingEnabled (true ));
248252 });
249253
254+ testWidgets ('debuggingEnabled false' , (WidgetTester tester) async {
255+ await buildWidget (
256+ tester,
257+ creationParams: CreationParams (
258+ webSettings: WebSettings (
259+ userAgent: const WebSetting <String ?>.absent (),
260+ debuggingEnabled: false ,
261+ hasNavigationDelegate: false ,
262+ ),
263+ ),
264+ );
265+
266+ verify (mockWebViewProxy.setWebContentsDebuggingEnabled (false ));
267+ });
268+
250269 testWidgets ('userAgent' , (WidgetTester tester) async {
251270 await buildWidget (
252271 tester,
@@ -278,7 +297,7 @@ void main() {
278297 });
279298 });
280299
281- group ('$ WebViewPlatformController ' , () {
300+ group ('WebViewPlatformController' , () {
282301 testWidgets ('loadFile without "file://" prefix' ,
283302 (WidgetTester tester) async {
284303 await buildWidget (tester);
@@ -667,7 +686,7 @@ void main() {
667686 });
668687 });
669688
670- group ('$ WebViewPlatformCallbacksHandler ' , () {
689+ group ('WebViewPlatformCallbacksHandler' , () {
671690 testWidgets ('onPageStarted' , (WidgetTester tester) async {
672691 await buildWidget (tester);
673692 webViewClient.onPageStarted (mockWebView, 'https://google.com' );
@@ -773,7 +792,7 @@ void main() {
773792 verify (mockWebView.loadUrl ('https://google.com' , < String , String > {}));
774793 });
775794
776- group ('$ JavascriptChannelRegistry ' , () {
795+ group ('JavascriptChannelRegistry' , () {
777796 testWidgets ('onJavascriptChannelMessage' , (WidgetTester tester) async {
778797 await buildWidget (tester);
779798
@@ -792,4 +811,32 @@ void main() {
792811 });
793812 });
794813 });
814+
815+ group ('WebViewProxy' , () {
816+ late MockTestWebViewHostApi mockPlatformHostApi;
817+ late InstanceManager instanceManager;
818+
819+ setUp (() {
820+ // WebViewProxy calls static methods that can't be mocked, so the mocks
821+ // have to be set up at the next layer down, by mocking the implementation
822+ // of WebView itstelf.
823+ mockPlatformHostApi = MockTestWebViewHostApi ();
824+ TestWebViewHostApi .setup (mockPlatformHostApi);
825+ instanceManager = InstanceManager ();
826+ android_webview.WebView .api =
827+ WebViewHostApiImpl (instanceManager: instanceManager);
828+ });
829+
830+ test ('setWebContentsDebuggingEnabled true' , () {
831+ const WebViewProxy webViewProxy = WebViewProxy ();
832+ webViewProxy.setWebContentsDebuggingEnabled (true );
833+ verify (mockPlatformHostApi.setWebContentsDebuggingEnabled (true ));
834+ });
835+
836+ test ('setWebContentsDebuggingEnabled false' , () {
837+ const WebViewProxy webViewProxy = WebViewProxy ();
838+ webViewProxy.setWebContentsDebuggingEnabled (false );
839+ verify (mockPlatformHostApi.setWebContentsDebuggingEnabled (false ));
840+ });
841+ });
795842}
0 commit comments