| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/material.dart'; |
| import 'package:flutter_test/flutter_test.dart'; |
| import 'package:webview_flutter_example/main.dart'; |
| import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; |
| |
| void main() { |
| setUp(() { |
| WebViewPlatform.instance = FakeWebViewPlatform(); |
| }); |
| |
| testWidgets('Test snackbar from ScaffoldMessenger', |
| (WidgetTester tester) async { |
| await tester.pumpWidget(const MaterialApp(home: WebViewExample())); |
| expect(find.byIcon(Icons.favorite), findsOneWidget); |
| await tester.tap(find.byIcon(Icons.favorite)); |
| await tester.pump(); |
| expect(find.byType(SnackBar), findsOneWidget); |
| }); |
| } |
| |
| class FakeWebViewPlatform extends WebViewPlatform { |
| @override |
| PlatformWebViewController createPlatformWebViewController( |
| PlatformWebViewControllerCreationParams params, |
| ) { |
| return FakeWebViewController(params); |
| } |
| |
| @override |
| PlatformWebViewWidget createPlatformWebViewWidget( |
| PlatformWebViewWidgetCreationParams params, |
| ) { |
| return FakeWebViewWidget(params); |
| } |
| |
| @override |
| PlatformWebViewCookieManager createPlatformCookieManager( |
| PlatformWebViewCookieManagerCreationParams params, |
| ) { |
| return FakeCookieManager(params); |
| } |
| |
| @override |
| PlatformNavigationDelegate createPlatformNavigationDelegate( |
| PlatformNavigationDelegateCreationParams params, |
| ) { |
| return FakeNavigationDelegate(params); |
| } |
| } |
| |
| class FakeWebViewController extends PlatformWebViewController { |
| FakeWebViewController(super.params) : super.implementation(); |
| |
| @override |
| Future<void> setJavaScriptMode(JavaScriptMode javaScriptMode) async {} |
| |
| @override |
| Future<void> setBackgroundColor(Color color) async {} |
| |
| @override |
| Future<void> setPlatformNavigationDelegate( |
| PlatformNavigationDelegate handler, |
| ) async {} |
| |
| @override |
| Future<void> addJavaScriptChannel( |
| JavaScriptChannelParams javaScriptChannelParams) async {} |
| |
| @override |
| Future<void> loadRequest(LoadRequestParams params) async {} |
| |
| @override |
| Future<String?> currentUrl() async { |
| return 'https://www.google.com'; |
| } |
| } |
| |
| class FakeCookieManager extends PlatformWebViewCookieManager { |
| FakeCookieManager(super.params) : super.implementation(); |
| } |
| |
| class FakeWebViewWidget extends PlatformWebViewWidget { |
| FakeWebViewWidget(super.params) : super.implementation(); |
| |
| @override |
| Widget build(BuildContext context) { |
| return Container(); |
| } |
| } |
| |
| class FakeNavigationDelegate extends PlatformNavigationDelegate { |
| FakeNavigationDelegate(super.params) : super.implementation(); |
| |
| @override |
| Future<void> setOnNavigationRequest( |
| NavigationRequestCallback onNavigationRequest, |
| ) async {} |
| |
| @override |
| Future<void> setOnPageFinished(PageEventCallback onPageFinished) async {} |
| |
| @override |
| Future<void> setOnPageStarted(PageEventCallback onPageStarted) async {} |
| |
| @override |
| Future<void> setOnProgress(ProgressCallback onProgress) async {} |
| |
| @override |
| Future<void> setOnWebResourceError( |
| WebResourceErrorCallback onWebResourceError, |
| ) async {} |
| } |