[webview_flutter_platform_interface] Updates platform interface to new interface (#6846)
* Set new interface in main
* update pubspec changelog and readme
* exclude from all plugins app test
* delete all of platform interface
* add all back to platform interface
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
index b7050e4..a4be504 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 2.0.0
+
+* **Breaking Change**: Releases new interface. See [documentation](https://pub.dev/documentation/webview_flutter_platform_interface/2.0.0/) and [design doc](https://flutter.dev/go/webview_flutter_4_interface)
+ for more details.
+* **Breaking Change**: Removes MethodChannel implementation of interface. All platform
+ implementations will now need to create their own by implementing `WebViewPlatform`.
+
## 1.9.5
* Updates code for `no_leading_underscores_for_local_identifiers` lint.
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/README.md b/packages/webview_flutter/webview_flutter_platform_interface/README.md
index 31e57ab..10160b3 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/README.md
+++ b/packages/webview_flutter/webview_flutter_platform_interface/README.md
@@ -9,10 +9,10 @@
# Usage
To implement a new platform-specific implementation of `webview_flutter`, extend
-[`WebviewPlatform`](lib/src/platform_interface/webview_platform.dart) with an implementation that performs the
+[`WebviewPlatform`](lib/src/webview_platform.dart) with an implementation that performs the
platform-specific behavior, and when you register your plugin, set the default
`WebviewPlatform` by calling
-`WebviewPlatform.setInstance(MyPlatformWebview())`.
+`WebviewPlatform.instance = MyPlatformWebview()`.
# Note on breaking changes
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/javascript_channel_registry.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/javascript_channel_registry.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/javascript_channel_registry.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/javascript_channel_registry.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/platform_interface.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/platform_interface.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/platform_interface.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/platform_interface.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_cookie_manager.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_cookie_manager.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_cookie_manager.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_cookie_manager.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_platform.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_platform.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_platform.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_platform.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_platform_callbacks_handler.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_platform_callbacks_handler.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_platform_callbacks_handler.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_platform_callbacks_handler.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_platform_controller.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_platform_controller.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_interface/webview_platform_controller.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/platform_interface/webview_platform_controller.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/auto_media_playback_policy.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/auto_media_playback_policy.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/auto_media_playback_policy.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/auto_media_playback_policy.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/creation_params.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/creation_params.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/creation_params.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/creation_params.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_channel.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_channel.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_channel.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_channel.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_message.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_message.dart
new file mode 100644
index 0000000..8d08045
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_message.dart
@@ -0,0 +1,14 @@
+// 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.
+
+/// A message that was sent by JavaScript code running in a [WebView].
+class JavascriptMessage {
+ /// Constructs a JavaScript message object.
+ ///
+ /// The `message` parameter must not be null.
+ const JavascriptMessage(this.message) : assert(message != null);
+
+ /// The contents of the message that was sent by the JavaScript code.
+ final String message;
+}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/javascript_mode.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_mode.dart
similarity index 93%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/javascript_mode.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_mode.dart
index bcbebff..53d0491 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/javascript_mode.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/javascript_mode.dart
@@ -3,7 +3,7 @@
// found in the LICENSE file.
/// Describes the state of JavaScript support in a given web view.
-enum JavaScriptMode {
+enum JavascriptMode {
/// JavaScript execution is disabled.
disabled,
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/types.dart
new file mode 100644
index 0000000..f2bcf19
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/types.dart
@@ -0,0 +1,14 @@
+// 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.
+
+export 'auto_media_playback_policy.dart';
+export 'creation_params.dart';
+export 'javascript_channel.dart';
+export 'javascript_message.dart';
+export 'javascript_mode.dart';
+export 'web_resource_error.dart';
+export 'web_resource_error_type.dart';
+export 'web_settings.dart';
+export 'webview_cookie.dart';
+export 'webview_request.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/web_resource_error.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/web_resource_error.dart
new file mode 100644
index 0000000..b61671f
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/web_resource_error.dart
@@ -0,0 +1,57 @@
+// 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 'web_resource_error_type.dart';
+
+/// Error returned in `WebView.onWebResourceError` when a web resource loading error has occurred.
+class WebResourceError {
+ /// Creates a new [WebResourceError]
+ ///
+ /// A user should not need to instantiate this class, but will receive one in
+ /// [WebResourceErrorCallback].
+ WebResourceError({
+ required this.errorCode,
+ required this.description,
+ this.domain,
+ this.errorType,
+ this.failingUrl,
+ }) : assert(errorCode != null),
+ assert(description != null);
+
+ /// Raw code of the error from the respective platform.
+ ///
+ /// On Android, the error code will be a constant from a
+ /// [WebViewClient](https://developer.android.com/reference/android/webkit/WebViewClient#summary) and
+ /// will have a corresponding [errorType].
+ ///
+ /// On iOS, the error code will be a constant from `NSError.code` in
+ /// Objective-C. See
+ /// https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorObjectsDomains/ErrorObjectsDomains.html
+ /// for more information on error handling on iOS. Some possible error codes
+ /// can be found at https://developer.apple.com/documentation/webkit/wkerrorcode?language=objc.
+ final int errorCode;
+
+ /// The domain of where to find the error code.
+ ///
+ /// This field is only available on iOS and represents a "domain" from where
+ /// the [errorCode] is from. This value is taken directly from an `NSError`
+ /// in Objective-C. See
+ /// https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorObjectsDomains/ErrorObjectsDomains.html
+ /// for more information on error handling on iOS.
+ final String? domain;
+
+ /// Description of the error that can be used to communicate the problem to the user.
+ final String description;
+
+ /// The type this error can be categorized as.
+ ///
+ /// This will never be `null` on Android, but can be `null` on iOS.
+ final WebResourceErrorType? errorType;
+
+ /// Gets the URL for which the resource request was made.
+ ///
+ /// This value is not provided on iOS. Alternatively, you can keep track of
+ /// the last values provided to [WebViewPlatformController.loadUrl].
+ final String? failingUrl;
+}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_error_type.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/web_resource_error_type.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_error_type.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/web_resource_error_type.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_settings.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/web_settings.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_settings.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/web_settings.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/webview_cookie.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/webview_cookie.dart
similarity index 63%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/webview_cookie.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/webview_cookie.dart
index 7f56a31..406c510 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/webview_cookie.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/webview_cookie.dart
@@ -2,18 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'package:flutter/foundation.dart';
-
-/// A cookie that can be set globally for all web views using [WebViewCookieManagerPlatform].
-@immutable
+/// A cookie that can be set globally for all web views
+/// using [WebViewCookieManagerPlatform].
class WebViewCookie {
- /// Creates a new [WebViewCookieDelegate]
- const WebViewCookie({
- required this.name,
- required this.value,
- required this.domain,
- this.path = '/',
- });
+ /// Constructs a new [WebViewCookie].
+ const WebViewCookie(
+ {required this.name,
+ required this.value,
+ required this.domain,
+ this.path = '/'});
/// The cookie-name of the cookie.
///
@@ -33,9 +30,20 @@
/// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-02#section-4.1.1
final String domain;
- /// The path-value of the cookie, set to `/` by default.
+ /// The path-value of the cookie.
+ /// Is set to `/` in the constructor by default.
///
/// Its value should match "path-value" in RFC6265bis:
/// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-02#section-4.1.1
final String path;
+
+ /// Serializes the [WebViewCookie] to a Map<String, String>.
+ Map<String, String> toJson() {
+ return <String, String>{
+ 'name': name,
+ 'value': value,
+ 'domain': domain,
+ 'path': path
+ };
+ }
}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/webview_request.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_request.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/legacy/types/webview_request.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart
deleted file mode 100644
index 0e98ea0..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart
+++ /dev/null
@@ -1,297 +0,0 @@
-// 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 'dart:async';
-
-import 'package:flutter/services.dart';
-
-import '../platform_interface/platform_interface.dart';
-import '../types/types.dart';
-
-/// A [WebViewPlatformController] that uses a method channel to control the webview.
-class MethodChannelWebViewPlatform implements WebViewPlatformController {
- /// Constructs an instance that will listen for webviews broadcasting to the
- /// given [id], using the given [WebViewPlatformCallbacksHandler].
- MethodChannelWebViewPlatform(
- int id,
- this._platformCallbacksHandler,
- this._javascriptChannelRegistry,
- ) : assert(_platformCallbacksHandler != null),
- _channel = MethodChannel('plugins.flutter.io/webview_$id') {
- _channel.setMethodCallHandler(_onMethodCall);
- }
-
- final JavascriptChannelRegistry _javascriptChannelRegistry;
-
- final WebViewPlatformCallbacksHandler _platformCallbacksHandler;
-
- final MethodChannel _channel;
-
- static const MethodChannel _cookieManagerChannel =
- MethodChannel('plugins.flutter.io/cookie_manager');
-
- Future<bool?> _onMethodCall(MethodCall call) async {
- switch (call.method) {
- case 'javascriptChannelMessage':
- final String channel = call.arguments['channel']! as String;
- final String message = call.arguments['message']! as String;
- _javascriptChannelRegistry.onJavascriptChannelMessage(channel, message);
- return true;
- case 'navigationRequest':
- return await _platformCallbacksHandler.onNavigationRequest(
- url: call.arguments['url']! as String,
- isForMainFrame: call.arguments['isForMainFrame']! as bool,
- );
- case 'onPageFinished':
- _platformCallbacksHandler
- .onPageFinished(call.arguments['url']! as String);
- return null;
- case 'onProgress':
- _platformCallbacksHandler.onProgress(call.arguments['progress'] as int);
- return null;
- case 'onPageStarted':
- _platformCallbacksHandler
- .onPageStarted(call.arguments['url']! as String);
- return null;
- case 'onWebResourceError':
- _platformCallbacksHandler.onWebResourceError(
- WebResourceError(
- errorCode: call.arguments['errorCode']! as int,
- description: call.arguments['description']! as String,
- // iOS doesn't support `failingUrl`.
- failingUrl: call.arguments['failingUrl'] as String?,
- domain: call.arguments['domain'] as String?,
- errorType: call.arguments['errorType'] == null
- ? null
- : WebResourceErrorType.values.firstWhere(
- (WebResourceErrorType type) {
- return type.toString() ==
- '$WebResourceErrorType.${call.arguments['errorType']}';
- },
- ),
- ),
- );
- return null;
- }
-
- throw MissingPluginException(
- '${call.method} was invoked but has no handler',
- );
- }
-
- @override
- Future<void> loadFile(String absoluteFilePath) async {
- assert(absoluteFilePath != null);
-
- try {
- return await _channel.invokeMethod<void>('loadFile', absoluteFilePath);
- } on PlatformException catch (ex) {
- if (ex.code == 'loadFile_failed') {
- throw ArgumentError(ex.message);
- }
-
- rethrow;
- }
- }
-
- @override
- Future<void> loadFlutterAsset(String key) async {
- assert(key.isNotEmpty);
-
- try {
- return await _channel.invokeMethod<void>('loadFlutterAsset', key);
- } on PlatformException catch (ex) {
- if (ex.code == 'loadFlutterAsset_invalidKey') {
- throw ArgumentError(ex.message);
- }
-
- rethrow;
- }
- }
-
- @override
- Future<void> loadHtmlString(
- String html, {
- String? baseUrl,
- }) async {
- assert(html != null);
- return _channel.invokeMethod<void>('loadHtmlString', <String, dynamic>{
- 'html': html,
- 'baseUrl': baseUrl,
- });
- }
-
- @override
- Future<void> loadUrl(
- String url,
- Map<String, String>? headers,
- ) async {
- assert(url != null);
- return _channel.invokeMethod<void>('loadUrl', <String, dynamic>{
- 'url': url,
- 'headers': headers,
- });
- }
-
- @override
- Future<void> loadRequest(WebViewRequest request) async {
- assert(request != null);
- return _channel.invokeMethod<void>('loadRequest', <String, dynamic>{
- 'request': request.toJson(),
- });
- }
-
- @override
- Future<String?> currentUrl() => _channel.invokeMethod<String>('currentUrl');
-
- @override
- Future<bool> canGoBack() =>
- _channel.invokeMethod<bool>('canGoBack').then((bool? result) => result!);
-
- @override
- Future<bool> canGoForward() => _channel
- .invokeMethod<bool>('canGoForward')
- .then((bool? result) => result!);
-
- @override
- Future<void> goBack() => _channel.invokeMethod<void>('goBack');
-
- @override
- Future<void> goForward() => _channel.invokeMethod<void>('goForward');
-
- @override
- Future<void> reload() => _channel.invokeMethod<void>('reload');
-
- @override
- Future<void> clearCache() => _channel.invokeMethod<void>('clearCache');
-
- @override
- Future<void> updateSettings(WebSettings settings) async {
- final Map<String, dynamic> updatesMap = _webSettingsToMap(settings);
- if (updatesMap.isNotEmpty) {
- await _channel.invokeMethod<void>('updateSettings', updatesMap);
- }
- }
-
- @override
- Future<String> evaluateJavascript(String javascript) {
- return _channel
- .invokeMethod<String>('evaluateJavascript', javascript)
- .then((String? result) => result!);
- }
-
- @override
- Future<void> runJavascript(String javascript) async {
- await _channel.invokeMethod<String>('runJavascript', javascript);
- }
-
- @override
- Future<String> runJavascriptReturningResult(String javascript) {
- return _channel
- .invokeMethod<String>('runJavascriptReturningResult', javascript)
- .then((String? result) => result!);
- }
-
- @override
- Future<void> addJavascriptChannels(Set<String> javascriptChannelNames) {
- return _channel.invokeMethod<void>(
- 'addJavascriptChannels', javascriptChannelNames.toList());
- }
-
- @override
- Future<void> removeJavascriptChannels(Set<String> javascriptChannelNames) {
- return _channel.invokeMethod<void>(
- 'removeJavascriptChannels', javascriptChannelNames.toList());
- }
-
- @override
- Future<String?> getTitle() => _channel.invokeMethod<String>('getTitle');
-
- @override
- Future<void> scrollTo(int x, int y) {
- return _channel.invokeMethod<void>('scrollTo', <String, int>{
- 'x': x,
- 'y': y,
- });
- }
-
- @override
- Future<void> scrollBy(int x, int y) {
- return _channel.invokeMethod<void>('scrollBy', <String, int>{
- 'x': x,
- 'y': y,
- });
- }
-
- @override
- Future<int> getScrollX() =>
- _channel.invokeMethod<int>('getScrollX').then((int? result) => result!);
-
- @override
- Future<int> getScrollY() =>
- _channel.invokeMethod<int>('getScrollY').then((int? result) => result!);
-
- /// Method channel implementation for [WebViewPlatform.clearCookies].
- static Future<bool> clearCookies() {
- return _cookieManagerChannel
- .invokeMethod<bool>('clearCookies')
- .then<bool>((dynamic result) => result! as bool);
- }
-
- /// Method channel implementation for [WebViewPlatform.setCookie].
- static Future<void> setCookie(WebViewCookie cookie) {
- return _cookieManagerChannel.invokeMethod<void>(
- 'setCookie', cookie.toJson());
- }
-
- static Map<String, dynamic> _webSettingsToMap(WebSettings? settings) {
- final Map<String, dynamic> map = <String, dynamic>{};
- void addIfNonNull(String key, dynamic value) {
- if (value == null) {
- return;
- }
- map[key] = value;
- }
-
- void addSettingIfPresent<T>(String key, WebSetting<T> setting) {
- if (!setting.isPresent) {
- return;
- }
- map[key] = setting.value;
- }
-
- addIfNonNull('jsMode', settings!.javascriptMode?.index);
- addIfNonNull('hasNavigationDelegate', settings.hasNavigationDelegate);
- addIfNonNull('hasProgressTracking', settings.hasProgressTracking);
- addIfNonNull('debuggingEnabled', settings.debuggingEnabled);
- addIfNonNull('gestureNavigationEnabled', settings.gestureNavigationEnabled);
- addIfNonNull(
- 'allowsInlineMediaPlayback', settings.allowsInlineMediaPlayback);
- addSettingIfPresent('userAgent', settings.userAgent);
- addIfNonNull('zoomEnabled', settings.zoomEnabled);
- return map;
- }
-
- /// Converts a [CreationParams] object to a map as expected by `platform_views` channel.
- ///
- /// This is used for the `creationParams` argument of the platform views created by
- /// [AndroidWebViewBuilder] and [CupertinoWebViewBuilder].
- static Map<String, dynamic> creationParamsToMap(
- CreationParams creationParams, {
- bool usesHybridComposition = false,
- }) {
- return <String, dynamic>{
- 'initialUrl': creationParams.initialUrl,
- 'settings': _webSettingsToMap(creationParams.webSettings),
- 'javascriptChannelNames': creationParams.javascriptChannelNames.toList(),
- 'userAgent': creationParams.userAgent,
- 'autoMediaPlaybackPolicy': creationParams.autoMediaPlaybackPolicy.index,
- 'usesHybridComposition': usesHybridComposition,
- 'backgroundColor': creationParams.backgroundColor?.value,
- 'cookies': creationParams.cookies
- .map((WebViewCookie cookie) => cookie.toJson())
- .toList()
- };
- }
-}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_navigation_delegate.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart
similarity index 78%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_navigation_delegate.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart
index a66f1de..2df6cff 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_navigation_delegate.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart
@@ -9,6 +9,19 @@
import 'webview_platform.dart';
+/// Signature for callbacks that report a pending navigation request.
+typedef NavigationRequestCallback = FutureOr<NavigationDecision> Function(
+ NavigationRequest navigationRequest);
+
+/// Signature for callbacks that report page events triggered by the native web view.
+typedef PageEventCallback = void Function(String url);
+
+/// Signature for callbacks that report loading progress of a page.
+typedef ProgressCallback = void Function(int progress);
+
+/// Signature for callbacks that report a resource loading error.
+typedef WebResourceErrorCallback = void Function(WebResourceError error);
+
/// An interface defining navigation events that occur on the native platform.
///
/// The [PlatformWebViewController] is notifying this delegate on events that
@@ -40,8 +53,7 @@
///
/// See [PlatformWebViewController.setPlatformNavigationDelegate].
Future<void> setOnNavigationRequest(
- FutureOr<bool> Function({required String url, required bool isForMainFrame})
- onNavigationRequest,
+ NavigationRequestCallback onNavigationRequest,
) {
throw UnimplementedError(
'setOnNavigationRequest is not implemented on the current platform.');
@@ -51,7 +63,7 @@
///
/// See [PlatformWebViewController.setPlatformNavigationDelegate].
Future<void> setOnPageStarted(
- void Function(String url) onPageStarted,
+ PageEventCallback onPageStarted,
) {
throw UnimplementedError(
'setOnPageStarted is not implemented on the current platform.');
@@ -61,7 +73,7 @@
///
/// See [PlatformWebViewController.setPlatformNavigationDelegate].
Future<void> setOnPageFinished(
- void Function(String url) onPageFinished,
+ PageEventCallback onPageFinished,
) {
throw UnimplementedError(
'setOnPageFinished is not implemented on the current platform.');
@@ -71,7 +83,7 @@
///
/// See [PlatformWebViewController.setPlatformNavigationDelegate].
Future<void> setOnProgress(
- void Function(int progress) onProgress,
+ ProgressCallback onProgress,
) {
throw UnimplementedError(
'setOnProgress is not implemented on the current platform.');
@@ -81,7 +93,7 @@
///
/// See [PlatformWebViewController.setPlatformNavigationDelegate].
Future<void> setOnWebResourceError(
- void Function(WebResourceError error) onWebResourceError,
+ WebResourceErrorCallback onWebResourceError,
) {
throw UnimplementedError(
'setOnWebResourceError is not implemented on the current platform.');
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_controller.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart
similarity index 92%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_controller.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart
index 3585ec8..7bb259c 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_controller.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart
@@ -2,13 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'dart:math';
-import 'dart:ui';
-
import 'package:flutter/foundation.dart';
+import 'package:flutter/painting.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'platform_navigation_delegate.dart';
+import '../../src/platform_navigation_delegate.dart';
import 'webview_platform.dart';
/// Interface for a platform implementation of a web view controller.
@@ -178,7 +176,7 @@
/// The Future completes with an error if a JavaScript error occurred, or if the
/// type the given expression evaluates to is unsupported. Unsupported values include
/// certain non-primitive types on iOS, as well as `undefined` or `null` on iOS 14+.
- Future<String> runJavaScriptReturningResult(String javaScript) {
+ Future<Object> runJavaScriptReturningResult(String javaScript) {
throw UnimplementedError(
'runJavaScriptReturningResult is not implemented on the current platform');
}
@@ -226,24 +224,12 @@
/// Return the current scroll position of this view.
///
/// Scroll position is measured from the top left.
- Future<Point<int>> getScrollPosition() {
+ Future<Offset> getScrollPosition() {
throw UnimplementedError(
'getScrollPosition is not implemented on the current platform');
}
- /// Whether to enable the platform's webview content debugging tools.
- Future<void> enableDebugging(bool enabled) {
- throw UnimplementedError(
- 'enableDebugging is not implemented on the current platform');
- }
-
- /// Whether to allow swipe based navigation on supported platforms.
- Future<void> enableGestureNavigation(bool enabled) {
- throw UnimplementedError(
- 'enableGestureNavigation is not implemented on the current platform');
- }
-
- /// Whhether to support zooming using its on-screen zoom controls and gestures.
+ /// Whether to support zooming using its on-screen zoom controls and gestures.
Future<void> enableZoom(bool enabled) {
throw UnimplementedError(
'enableZoom is not implemented on the current platform');
@@ -269,9 +255,10 @@
}
/// Describes the parameters necessary for registering a JavaScript channel.
+@immutable
class JavaScriptChannelParams {
/// Creates a new [JavaScriptChannelParams] object.
- JavaScriptChannelParams({
+ const JavaScriptChannelParams({
required this.name,
required this.onMessageReceived,
});
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_cookie_manager.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_cookie_manager.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_cookie_manager.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_cookie_manager.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_widget.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_widget.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_widget.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_widget.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_message.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_message.dart
index 8d08045..b37661a 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_message.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_message.dart
@@ -2,12 +2,49 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+import 'package:flutter/foundation.dart';
+
/// A message that was sent by JavaScript code running in a [WebView].
-class JavascriptMessage {
- /// Constructs a JavaScript message object.
- ///
- /// The `message` parameter must not be null.
- const JavascriptMessage(this.message) : assert(message != null);
+///
+/// Platform specific implementations can add additional fields by extending
+/// this class and providing a factory method that takes the
+/// [JavaScriptMessage] as a parameter.
+///
+/// {@tool sample}
+/// This example demonstrates how to extend the [JavaScriptMessage] to
+/// provide additional platform specific parameters.
+///
+/// When extending [JavaScriptMessage] additional parameters should always
+/// accept `null` or have a default value to prevent breaking changes.
+///
+/// ```dart
+/// @immutable
+/// class WKWebViewScriptMessage extends JavaScriptMessage {
+/// WKWebViewScriptMessage._(
+/// JavaScriptMessage javaScriptMessage,
+/// this.extraData,
+/// ) : super(javaScriptMessage.message);
+///
+/// factory WKWebViewScriptMessage.fromJavaScripMessage(
+/// JavaScriptMessage javaScripMessage, {
+/// String? extraData,
+/// }) {
+/// return WKWebViewScriptMessage._(
+/// javaScriptMessage,
+/// extraData: extraData,
+/// );
+/// }
+///
+/// final String? extraData;
+/// }
+/// ```
+/// {@end-tool}
+@immutable
+class JavaScriptMessage {
+ /// Creates a new JavaScript message object.
+ const JavaScriptMessage({
+ required this.message,
+ });
/// The contents of the message that was sent by the JavaScript code.
final String message;
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_mode.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_mode.dart
index 53d0491..bcbebff 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_mode.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/javascript_mode.dart
@@ -3,7 +3,7 @@
// found in the LICENSE file.
/// Describes the state of JavaScript support in a given web view.
-enum JavascriptMode {
+enum JavaScriptMode {
/// JavaScript execution is disabled.
disabled,
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/load_request_params.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/load_request_params.dart
similarity index 94%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/load_request_params.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/load_request_params.dart
index a0d1c88..ad934d6 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/load_request_params.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/load_request_params.dart
@@ -72,8 +72,8 @@
/// Used by the platform implementation to create a new [LoadRequestParams].
const LoadRequestParams({
required this.uri,
- required this.method,
- required this.headers,
+ this.method = LoadRequestMethod.get,
+ this.headers = const <String, String>{},
this.body,
});
@@ -81,6 +81,8 @@
final Uri uri;
/// HTTP method used to make the request.
+ ///
+ /// Defaults to [LoadRequestMethod.get].
final LoadRequestMethod method;
/// Headers for the request.
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/navigation_decision.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/navigation_decision.dart
new file mode 100644
index 0000000..d8178ac
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/navigation_decision.dart
@@ -0,0 +1,12 @@
+// 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.
+
+/// A decision on how to handle a navigation request.
+enum NavigationDecision {
+ /// Prevent the navigation from taking place.
+ prevent,
+
+ /// Allow the navigation to take place.
+ navigate,
+}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/navigation_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/navigation_request.dart
new file mode 100644
index 0000000..ee3f1f9
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/navigation_request.dart
@@ -0,0 +1,18 @@
+// 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.
+
+/// Defines the parameters of the pending navigation callback.
+class NavigationRequest {
+ /// Creates a [NavigationRequest].
+ const NavigationRequest({
+ required this.url,
+ required this.isMainFrame,
+ });
+
+ /// The URL of the pending navigation request.
+ final String url;
+
+ /// Indicates whether the request was made in the web site's main frame or a subframe.
+ final bool isMainFrame;
+}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_navigation_delegate_creation_params.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_navigation_delegate_creation_params.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_navigation_delegate_creation_params.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_navigation_delegate_creation_params.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_webview_controller_creation_params.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_webview_controller_creation_params.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_webview_controller_creation_params.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_webview_controller_creation_params.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_webview_cookie_manager_creation_params.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_webview_cookie_manager_creation_params.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_webview_cookie_manager_creation_params.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_webview_cookie_manager_creation_params.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_webview_widget_creation_params.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_webview_widget_creation_params.dart
similarity index 100%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/platform_webview_widget_creation_params.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/platform_webview_widget_creation_params.dart
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart
index f2bcf19..4df8800 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart
@@ -2,13 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-export 'auto_media_playback_policy.dart';
-export 'creation_params.dart';
-export 'javascript_channel.dart';
export 'javascript_message.dart';
export 'javascript_mode.dart';
+export 'load_request_params.dart';
+export 'navigation_decision.dart';
+export 'navigation_request.dart';
+export 'platform_navigation_delegate_creation_params.dart';
+export 'platform_webview_controller_creation_params.dart';
+export 'platform_webview_cookie_manager_creation_params.dart';
+export 'platform_webview_widget_creation_params.dart';
export 'web_resource_error.dart';
-export 'web_resource_error_type.dart';
-export 'web_settings.dart';
export 'webview_cookie.dart';
-export 'webview_request.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_error.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_error.dart
index b61671f..e2522da 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_error.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/web_resource_error.dart
@@ -2,56 +2,122 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'web_resource_error_type.dart';
+import 'package:flutter/foundation.dart';
+
+/// Possible error type categorizations used by [WebResourceError].
+enum WebResourceErrorType {
+ /// User authentication failed on server.
+ authentication,
+
+ /// Malformed URL.
+ badUrl,
+
+ /// Failed to connect to the server.
+ connect,
+
+ /// Failed to perform SSL handshake.
+ failedSslHandshake,
+
+ /// Generic file error.
+ file,
+
+ /// File not found.
+ fileNotFound,
+
+ /// Server or proxy hostname lookup failed.
+ hostLookup,
+
+ /// Failed to read or write to the server.
+ io,
+
+ /// User authentication failed on proxy.
+ proxyAuthentication,
+
+ /// Too many redirects.
+ redirectLoop,
+
+ /// Connection timed out.
+ timeout,
+
+ /// Too many requests during this load.
+ tooManyRequests,
+
+ /// Generic error.
+ unknown,
+
+ /// Resource load was canceled by Safe Browsing.
+ unsafeResource,
+
+ /// Unsupported authentication scheme (not basic or digest).
+ unsupportedAuthScheme,
+
+ /// Unsupported URI scheme.
+ unsupportedScheme,
+
+ /// The web content process was terminated.
+ webContentProcessTerminated,
+
+ /// The web view was invalidated.
+ webViewInvalidated,
+
+ /// A JavaScript exception occurred.
+ javaScriptExceptionOccurred,
+
+ /// The result of JavaScript execution could not be returned.
+ javaScriptResultTypeIsUnsupported,
+}
/// Error returned in `WebView.onWebResourceError` when a web resource loading error has occurred.
+///
+/// Platform specific implementations can add additional fields by extending
+/// this class.
+///
+/// {@tool sample}
+/// This example demonstrates how to extend the [WebResourceError] to
+/// provide additional platform specific parameters.
+///
+/// When extending [WebResourceError] additional parameters should always
+/// accept `null` or have a default value to prevent breaking changes.
+///
+/// ```dart
+/// class IOSWebResourceError extends WebResourceError {
+/// IOSWebResourceError._(WebResourceError error, {required this.domain})
+/// : super(
+/// errorCode: error.errorCode,
+/// description: error.description,
+/// errorType: error.errorType,
+/// );
+///
+/// factory IOSWebResourceError.fromWebResourceError(
+/// WebResourceError error, {
+/// required String? domain,
+/// }) {
+/// return IOSWebResourceError._(error, domain: domain);
+/// }
+///
+/// final String? domain;
+/// }
+/// ```
+/// {@end-tool}
+@immutable
class WebResourceError {
- /// Creates a new [WebResourceError]
- ///
- /// A user should not need to instantiate this class, but will receive one in
- /// [WebResourceErrorCallback].
- WebResourceError({
+ /// Used by the platform implementation to create a new [WebResourceError].
+ const WebResourceError({
required this.errorCode,
required this.description,
- this.domain,
this.errorType,
- this.failingUrl,
- }) : assert(errorCode != null),
- assert(description != null);
+ this.isForMainFrame,
+ });
/// Raw code of the error from the respective platform.
- ///
- /// On Android, the error code will be a constant from a
- /// [WebViewClient](https://developer.android.com/reference/android/webkit/WebViewClient#summary) and
- /// will have a corresponding [errorType].
- ///
- /// On iOS, the error code will be a constant from `NSError.code` in
- /// Objective-C. See
- /// https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorObjectsDomains/ErrorObjectsDomains.html
- /// for more information on error handling on iOS. Some possible error codes
- /// can be found at https://developer.apple.com/documentation/webkit/wkerrorcode?language=objc.
final int errorCode;
- /// The domain of where to find the error code.
- ///
- /// This field is only available on iOS and represents a "domain" from where
- /// the [errorCode] is from. This value is taken directly from an `NSError`
- /// in Objective-C. See
- /// https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorObjectsDomains/ErrorObjectsDomains.html
- /// for more information on error handling on iOS.
- final String? domain;
-
/// Description of the error that can be used to communicate the problem to the user.
final String description;
/// The type this error can be categorized as.
- ///
- /// This will never be `null` on Android, but can be `null` on iOS.
final WebResourceErrorType? errorType;
- /// Gets the URL for which the resource request was made.
- ///
- /// This value is not provided on iOS. Alternatively, you can keep track of
- /// the last values provided to [WebViewPlatformController.loadUrl].
- final String? failingUrl;
+ /// Whether the error originated from the main frame.
+ final bool? isForMainFrame;
}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_cookie.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_cookie.dart
index 406c510..7f56a31 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_cookie.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_cookie.dart
@@ -2,15 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-/// A cookie that can be set globally for all web views
-/// using [WebViewCookieManagerPlatform].
+import 'package:flutter/foundation.dart';
+
+/// A cookie that can be set globally for all web views using [WebViewCookieManagerPlatform].
+@immutable
class WebViewCookie {
- /// Constructs a new [WebViewCookie].
- const WebViewCookie(
- {required this.name,
- required this.value,
- required this.domain,
- this.path = '/'});
+ /// Creates a new [WebViewCookieDelegate]
+ const WebViewCookie({
+ required this.name,
+ required this.value,
+ required this.domain,
+ this.path = '/',
+ });
/// The cookie-name of the cookie.
///
@@ -30,20 +33,9 @@
/// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-02#section-4.1.1
final String domain;
- /// The path-value of the cookie.
- /// Is set to `/` in the constructor by default.
+ /// The path-value of the cookie, set to `/` by default.
///
/// Its value should match "path-value" in RFC6265bis:
/// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-02#section-4.1.1
final String path;
-
- /// Serializes the [WebViewCookie] to a Map<String, String>.
- Map<String, String> toJson() {
- return <String, String>{
- 'name': name,
- 'value': value,
- 'domain': domain,
- 'path': path
- };
- }
}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/webview_flutter_platform_interface_legacy.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/webview_flutter_platform_interface_legacy.dart
new file mode 100644
index 0000000..1964e70
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/webview_flutter_platform_interface_legacy.dart
@@ -0,0 +1,6 @@
+// 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.
+
+export 'legacy/platform_interface/platform_interface.dart';
+export 'legacy/types/types.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/webview_platform.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/webview_platform.dart
similarity index 97%
rename from packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/webview_platform.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/lib/src/webview_platform.dart
index c5c5dff..e913962 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/webview_platform.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/webview_platform.dart
@@ -4,7 +4,7 @@
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'platform_navigation_delegate.dart';
+import '../../src/platform_navigation_delegate.dart';
import 'platform_webview_controller.dart';
import 'platform_webview_cookie_manager.dart';
import 'platform_webview_widget.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/javascript_message.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/javascript_message.dart
deleted file mode 100644
index b37661a..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/javascript_message.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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/foundation.dart';
-
-/// A message that was sent by JavaScript code running in a [WebView].
-///
-/// Platform specific implementations can add additional fields by extending
-/// this class and providing a factory method that takes the
-/// [JavaScriptMessage] as a parameter.
-///
-/// {@tool sample}
-/// This example demonstrates how to extend the [JavaScriptMessage] to
-/// provide additional platform specific parameters.
-///
-/// When extending [JavaScriptMessage] additional parameters should always
-/// accept `null` or have a default value to prevent breaking changes.
-///
-/// ```dart
-/// @immutable
-/// class WKWebViewScriptMessage extends JavaScriptMessage {
-/// WKWebViewScriptMessage._(
-/// JavaScriptMessage javaScriptMessage,
-/// this.extraData,
-/// ) : super(javaScriptMessage.message);
-///
-/// factory WKWebViewScriptMessage.fromJavaScripMessage(
-/// JavaScriptMessage javaScripMessage, {
-/// String? extraData,
-/// }) {
-/// return WKWebViewScriptMessage._(
-/// javaScriptMessage,
-/// extraData: extraData,
-/// );
-/// }
-///
-/// final String? extraData;
-/// }
-/// ```
-/// {@end-tool}
-@immutable
-class JavaScriptMessage {
- /// Creates a new JavaScript message object.
- const JavaScriptMessage({
- required this.message,
- });
-
- /// The contents of the message that was sent by the JavaScript code.
- final String message;
-}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/types.dart
deleted file mode 100644
index 05504ff..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/types.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-export 'javascript_message.dart';
-export 'javascript_mode.dart';
-export 'load_request_params.dart';
-export 'platform_navigation_delegate_creation_params.dart';
-export 'platform_webview_controller_creation_params.dart';
-export 'platform_webview_cookie_manager_creation_params.dart';
-export 'platform_webview_widget_creation_params.dart';
-export 'web_resource_error.dart';
-export 'webview_cookie.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/web_resource_error.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/web_resource_error.dart
deleted file mode 100644
index 4657994..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/types/web_resource_error.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// 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/foundation.dart';
-
-/// Possible error type categorizations used by [WebResourceError].
-enum WebResourceErrorType {
- /// User authentication failed on server.
- authentication,
-
- /// Malformed URL.
- badUrl,
-
- /// Failed to connect to the server.
- connect,
-
- /// Failed to perform SSL handshake.
- failedSslHandshake,
-
- /// Generic file error.
- file,
-
- /// File not found.
- fileNotFound,
-
- /// Server or proxy hostname lookup failed.
- hostLookup,
-
- /// Failed to read or write to the server.
- io,
-
- /// User authentication failed on proxy.
- proxyAuthentication,
-
- /// Too many redirects.
- redirectLoop,
-
- /// Connection timed out.
- timeout,
-
- /// Too many requests during this load.
- tooManyRequests,
-
- /// Generic error.
- unknown,
-
- /// Resource load was canceled by Safe Browsing.
- unsafeResource,
-
- /// Unsupported authentication scheme (not basic or digest).
- unsupportedAuthScheme,
-
- /// Unsupported URI scheme.
- unsupportedScheme,
-
- /// The web content process was terminated.
- webContentProcessTerminated,
-
- /// The web view was invalidated.
- webViewInvalidated,
-
- /// A JavaScript exception occurred.
- javaScriptExceptionOccurred,
-
- /// The result of JavaScript execution could not be returned.
- javaScriptResultTypeIsUnsupported,
-}
-
-/// Error returned in `WebView.onWebResourceError` when a web resource loading error has occurred.
-///
-/// Platform specific implementations can add additional fields by extending
-/// this class.
-///
-/// {@tool sample}
-/// This example demonstrates how to extend the [WebResourceError] to
-/// provide additional platform specific parameters.
-///
-/// When extending [WebResourceError] additional parameters should always
-/// accept `null` or have a default value to prevent breaking changes.
-///
-/// ```dart
-/// class IOSWebResourceError extends WebResourceError {
-/// IOSWebResourceError._(WebResourceError error, {required this.domain})
-/// : super(
-/// errorCode: error.errorCode,
-/// description: error.description,
-/// errorType: error.errorType,
-/// );
-///
-/// factory IOSWebResourceError.fromWebResourceError(
-/// WebResourceError error, {
-/// required String? domain,
-/// }) {
-/// return IOSWebResourceError._(error, domain: domain);
-/// }
-///
-/// final String? domain;
-/// }
-/// ```
-/// {@end-tool}
-@immutable
-class WebResourceError {
- /// Used by the platform implementation to create a new [WebResourceError].
- const WebResourceError({
- required this.errorCode,
- required this.description,
- this.errorType,
- });
-
- /// Raw code of the error from the respective platform.
- final int errorCode;
-
- /// Description of the error that can be used to communicate the problem to the user.
- final String description;
-
- /// The type this error can be categorized as.
- final WebResourceErrorType? errorType;
-}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/webview_flutter_platform_interface.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/webview_flutter_platform_interface.dart
deleted file mode 100644
index d14fec1..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/webview_flutter_platform_interface.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-export 'src/platform_navigation_delegate.dart';
-export 'src/platform_webview_controller.dart';
-export 'src/platform_webview_cookie_manager.dart';
-export 'src/platform_webview_widget.dart';
-export 'src/types/types.dart';
-export 'src/webview_platform.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/webview_flutter_platform_interface.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/webview_flutter_platform_interface.dart
index aa41c82..d14fec1 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/webview_flutter_platform_interface.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/webview_flutter_platform_interface.dart
@@ -2,6 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-export 'src/method_channel/webview_method_channel.dart';
-export 'src/platform_interface/platform_interface.dart';
+export 'src/platform_navigation_delegate.dart';
+export 'src/platform_webview_controller.dart';
+export 'src/platform_webview_cookie_manager.dart';
+export 'src/platform_webview_widget.dart';
export 'src/types/types.dart';
+export 'src/webview_platform.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
index 8f60592..3ba7a56 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
@@ -4,7 +4,7 @@
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 1.9.5
+version: 2.0.0
environment:
sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/javascript_channel_registry_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/platform_interface/javascript_channel_registry_test.dart
similarity index 94%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/javascript_channel_registry_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/legacy/platform_interface/javascript_channel_registry_test.dart
index aec568e..c9d27c6 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/javascript_channel_registry_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/platform_interface/javascript_channel_registry_test.dart
@@ -3,8 +3,7 @@
// found in the LICENSE file.
import 'package:flutter_test/flutter_test.dart';
-import 'package:webview_flutter_platform_interface/src/platform_interface/javascript_channel_registry.dart';
-import 'package:webview_flutter_platform_interface/src/types/types.dart';
+import 'package:webview_flutter_platform_interface/src/webview_flutter_platform_interface_legacy.dart';
void main() {
final Map<String, String> log = <String, String>{};
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/webview_cookie_manager_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/platform_interface/webview_cookie_manager_test.dart
similarity index 81%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/webview_cookie_manager_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/legacy/platform_interface/webview_cookie_manager_test.dart
index e0aae21..a9faea5 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/webview_cookie_manager_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/platform_interface/webview_cookie_manager_test.dart
@@ -3,8 +3,7 @@
// found in the LICENSE file.
import 'package:flutter_test/flutter_test.dart';
-import 'package:webview_flutter_platform_interface/src/platform_interface/platform_interface.dart';
-import 'package:webview_flutter_platform_interface/src/types/webview_cookie.dart';
+import 'package:webview_flutter_platform_interface/src/webview_flutter_platform_interface_legacy.dart';
void main() {
WebViewCookieManagerPlatform? cookieManager;
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/javascript_channel_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/javascript_channel_test.dart
similarity index 93%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/types/javascript_channel_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/javascript_channel_test.dart
index 8d71771..ecb9c3f 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/javascript_channel_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/javascript_channel_test.dart
@@ -3,7 +3,7 @@
// found in the LICENSE file.
import 'package:flutter_test/flutter_test.dart';
-import 'package:webview_flutter_platform_interface/src/types/javascript_channel.dart';
+import 'package:webview_flutter_platform_interface/src/webview_flutter_platform_interface_legacy.dart';
void main() {
final List<String> validChars =
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/webview_cookie_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/webview_cookie_test.dart
similarity index 87%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/types/webview_cookie_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/webview_cookie_test.dart
index f058b86..f1702f4 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/webview_cookie_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/webview_cookie_test.dart
@@ -3,7 +3,7 @@
// found in the LICENSE file.
import 'package:flutter_test/flutter_test.dart';
-import 'package:webview_flutter_platform_interface/src/types/types.dart';
+import 'package:webview_flutter_platform_interface/src/webview_flutter_platform_interface_legacy.dart';
void main() {
test('WebViewCookie should serialize correctly', () {
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/webview_request_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/webview_request_test.dart
similarity index 93%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/types/webview_request_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/webview_request_test.dart
index 6e1a4d7..fff1a9b 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/webview_request_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/legacy/types/webview_request_test.dart
@@ -4,7 +4,7 @@
import 'dart:typed_data';
import 'package:flutter_test/flutter_test.dart';
-import 'package:webview_flutter_platform_interface/src/types/types.dart';
+import 'package:webview_flutter_platform_interface/src/webview_flutter_platform_interface_legacy.dart';
void main() {
test('WebViewRequestMethod should serialize correctly', () {
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart
similarity index 94%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_navigation_delegate_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart
index dd4a26c..5e9aa2e 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_navigation_delegate_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart
@@ -5,8 +5,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'package:webview_flutter_platform_interface/v4/src/platform_navigation_delegate.dart';
-import 'package:webview_flutter_platform_interface/v4/src/webview_platform.dart';
+import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
import 'webview_platform_test.mocks.dart';
@@ -61,7 +60,7 @@
expect(
() => callbackDelegate.setOnNavigationRequest(
- ({required bool isForMainFrame, required String url}) => true),
+ (NavigationRequest navigationRequest) => NavigationDecision.navigate),
throwsUnimplementedError,
);
});
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.dart
similarity index 92%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_controller_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.dart
index 32374fb..6710f34 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_controller_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.dart
@@ -7,9 +7,7 @@
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'package:webview_flutter_platform_interface/v4/src/platform_navigation_delegate.dart';
-import 'package:webview_flutter_platform_interface/v4/src/platform_webview_controller.dart';
-import 'package:webview_flutter_platform_interface/v4/src/webview_platform.dart';
+import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
import 'platform_navigation_delegate_test.dart';
import 'webview_platform_test.mocks.dart';
@@ -359,34 +357,6 @@
test(
// ignore: lines_longer_than_80_chars
- 'Default implementation of enableDebugging should throw unimplemented error',
- () {
- final PlatformWebViewController controller =
- ExtendsPlatformWebViewController(
- const PlatformWebViewControllerCreationParams());
-
- expect(
- () => controller.enableDebugging(true),
- throwsUnimplementedError,
- );
- });
-
- test(
- // ignore: lines_longer_than_80_chars
- 'Default implementation of enableGestureNavigation should throw unimplemented error',
- () {
- final PlatformWebViewController controller =
- ExtendsPlatformWebViewController(
- const PlatformWebViewControllerCreationParams());
-
- expect(
- () => controller.enableGestureNavigation(true),
- throwsUnimplementedError,
- );
- });
-
- test(
- // ignore: lines_longer_than_80_chars
'Default implementation of enableZoom should throw unimplemented error',
() {
final PlatformWebViewController controller =
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart
new file mode 100644
index 0000000..db142fe
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart
@@ -0,0 +1,106 @@
+// Mocks generated by Mockito 5.3.2 from annotations
+// in webview_flutter_platform_interface/test/platform_webview_controller_test.dart.
+// Do not manually edit this file.
+
+// ignore_for_file: no_leading_underscores_for_library_prefixes
+import 'dart:async' as _i4;
+
+import 'package:mockito/mockito.dart' as _i1;
+import 'package:webview_flutter_platform_interface/src/platform_navigation_delegate.dart'
+ as _i3;
+import 'package:webview_flutter_platform_interface/src/webview_platform.dart'
+ as _i2;
+
+// ignore_for_file: type=lint
+// ignore_for_file: avoid_redundant_argument_values
+// ignore_for_file: avoid_setters_without_getters
+// ignore_for_file: comment_references
+// ignore_for_file: implementation_imports
+// ignore_for_file: invalid_use_of_visible_for_testing_member
+// ignore_for_file: prefer_const_constructors
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
+
+class _FakePlatformNavigationDelegateCreationParams_0 extends _i1.SmartFake
+ implements _i2.PlatformNavigationDelegateCreationParams {
+ _FakePlatformNavigationDelegateCreationParams_0(
+ Object parent,
+ Invocation parentInvocation,
+ ) : super(
+ parent,
+ parentInvocation,
+ );
+}
+
+/// A class which mocks [PlatformNavigationDelegate].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockPlatformNavigationDelegate extends _i1.Mock
+ implements _i3.PlatformNavigationDelegate {
+ MockPlatformNavigationDelegate() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ _i2.PlatformNavigationDelegateCreationParams get params =>
+ (super.noSuchMethod(
+ Invocation.getter(#params),
+ returnValue: _FakePlatformNavigationDelegateCreationParams_0(
+ this,
+ Invocation.getter(#params),
+ ),
+ ) as _i2.PlatformNavigationDelegateCreationParams);
+ @override
+ _i4.Future<void> setOnNavigationRequest(
+ _i3.NavigationRequestCallback? onNavigationRequest) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #setOnNavigationRequest,
+ [onNavigationRequest],
+ ),
+ returnValue: _i4.Future<void>.value(),
+ returnValueForMissingStub: _i4.Future<void>.value(),
+ ) as _i4.Future<void>);
+ @override
+ _i4.Future<void> setOnPageStarted(_i3.PageEventCallback? onPageStarted) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #setOnPageStarted,
+ [onPageStarted],
+ ),
+ returnValue: _i4.Future<void>.value(),
+ returnValueForMissingStub: _i4.Future<void>.value(),
+ ) as _i4.Future<void>);
+ @override
+ _i4.Future<void> setOnPageFinished(_i3.PageEventCallback? onPageFinished) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #setOnPageFinished,
+ [onPageFinished],
+ ),
+ returnValue: _i4.Future<void>.value(),
+ returnValueForMissingStub: _i4.Future<void>.value(),
+ ) as _i4.Future<void>);
+ @override
+ _i4.Future<void> setOnProgress(_i3.ProgressCallback? onProgress) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #setOnProgress,
+ [onProgress],
+ ),
+ returnValue: _i4.Future<void>.value(),
+ returnValueForMissingStub: _i4.Future<void>.value(),
+ ) as _i4.Future<void>);
+ @override
+ _i4.Future<void> setOnWebResourceError(
+ _i3.WebResourceErrorCallback? onWebResourceError) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #setOnWebResourceError,
+ [onWebResourceError],
+ ),
+ returnValue: _i4.Future<void>.value(),
+ returnValueForMissingStub: _i4.Future<void>.value(),
+ ) as _i4.Future<void>);
+}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_widget_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_widget_test.dart
similarity index 92%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_widget_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_widget_test.dart
index ede16c1..652f326 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_widget_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_widget_test.dart
@@ -6,9 +6,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'package:webview_flutter_platform_interface/v4/src/platform_webview_controller.dart';
-import 'package:webview_flutter_platform_interface/v4/src/platform_webview_widget.dart';
-import 'package:webview_flutter_platform_interface/v4/src/webview_platform.dart';
+import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
import 'webview_platform_test.mocks.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart
deleted file mode 100644
index ea9eb92..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart
+++ /dev/null
@@ -1,746 +0,0 @@
-// 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.
-
-// TODO(a14n): remove this import once Flutter 3.1 or later reaches stable (including flutter/flutter#106316)
-// ignore: unnecessary_import
-import 'dart:typed_data';
-
-// TODO(a14n): remove this import once Flutter 3.1 or later reaches stable (including flutter/flutter#106316)
-// ignore: unnecessary_import
-import 'package:flutter/cupertino.dart';
-import 'package:flutter/services.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:mockito/mockito.dart';
-import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
-
-void main() {
- TestWidgetsFlutterBinding.ensureInitialized();
-
- group('Tests on `plugin.flutter.io/webview_<channel_id>` channel', () {
- const int channelId = 1;
- const MethodChannel channel =
- MethodChannel('plugins.flutter.io/webview_$channelId');
- final WebViewPlatformCallbacksHandler callbacksHandler =
- MockWebViewPlatformCallbacksHandler();
- final JavascriptChannelRegistry javascriptChannelRegistry =
- MockJavascriptChannelRegistry();
-
- final List<MethodCall> log = <MethodCall>[];
- channel.setMockMethodCallHandler((MethodCall methodCall) async {
- log.add(methodCall);
-
- switch (methodCall.method) {
- case 'currentUrl':
- return 'https://test.url';
- case 'canGoBack':
- case 'canGoForward':
- return true;
- case 'loadFile':
- if (methodCall.arguments == 'invalid file') {
- throw PlatformException(
- code: 'loadFile_failed', message: 'Failed loading file.');
- } else if (methodCall.arguments == 'some error') {
- throw PlatformException(
- code: 'some_error',
- message: 'Some error occurred.',
- );
- }
- return null;
- case 'loadFlutterAsset':
- if (methodCall.arguments == 'invalid key') {
- throw PlatformException(
- code: 'loadFlutterAsset_invalidKey',
- message: 'Failed loading asset.',
- );
- } else if (methodCall.arguments == 'some error') {
- throw PlatformException(
- code: 'some_error',
- message: 'Some error occurred.',
- );
- }
- return null;
- case 'runJavascriptReturningResult':
- case 'evaluateJavascript':
- return methodCall.arguments as String;
- case 'getScrollX':
- return 10;
- case 'getScrollY':
- return 20;
- }
-
- // Return null explicitly instead of relying on the implicit null
- // returned by the method channel if no return statement is specified.
- return null;
- });
-
- final MethodChannelWebViewPlatform webViewPlatform =
- MethodChannelWebViewPlatform(
- channelId,
- callbacksHandler,
- javascriptChannelRegistry,
- );
-
- tearDown(() {
- log.clear();
- });
-
- test('loadFile', () async {
- await webViewPlatform.loadFile(
- '/folder/asset.html',
- );
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadFile',
- arguments: '/folder/asset.html',
- ),
- ],
- );
- });
-
- test('loadFile with invalid file', () async {
- expect(
- () => webViewPlatform.loadFile('invalid file'),
- throwsA(
- isA<ArgumentError>().having(
- (ArgumentError error) => error.message,
- 'message',
- 'Failed loading file.',
- ),
- ),
- );
- });
-
- test('loadFile with some error.', () async {
- expect(
- () => webViewPlatform.loadFile('some error'),
- throwsA(
- isA<PlatformException>().having(
- (PlatformException error) => error.message,
- 'message',
- 'Some error occurred.',
- ),
- ),
- );
- });
-
- test('loadFlutterAsset', () async {
- await webViewPlatform.loadFlutterAsset(
- 'folder/asset.html',
- );
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadFlutterAsset',
- arguments: 'folder/asset.html',
- ),
- ],
- );
- });
-
- test('loadFlutterAsset with empty key', () async {
- expect(() => webViewPlatform.loadFlutterAsset(''), throwsAssertionError);
- });
-
- test('loadFlutterAsset with invalid key', () async {
- expect(
- () => webViewPlatform.loadFlutterAsset('invalid key'),
- throwsA(
- isA<ArgumentError>().having(
- (ArgumentError error) => error.message,
- 'message',
- 'Failed loading asset.',
- ),
- ),
- );
- });
-
- test('loadFlutterAsset with some error.', () async {
- expect(
- () => webViewPlatform.loadFlutterAsset('some error'),
- throwsA(
- isA<PlatformException>().having(
- (PlatformException error) => error.message,
- 'message',
- 'Some error occurred.',
- ),
- ),
- );
- });
-
- test('loadHtmlString without base URL', () async {
- await webViewPlatform.loadHtmlString(
- 'Test HTML string',
- );
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadHtmlString',
- arguments: <String, String?>{
- 'html': 'Test HTML string',
- 'baseUrl': null,
- },
- ),
- ],
- );
- });
-
- test('loadHtmlString without base URL', () async {
- await webViewPlatform.loadHtmlString(
- 'Test HTML string',
- baseUrl: 'https://flutter.dev',
- );
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadHtmlString',
- arguments: <String, String?>{
- 'html': 'Test HTML string',
- 'baseUrl': 'https://flutter.dev',
- },
- ),
- ],
- );
- });
-
- test('loadUrl with headers', () async {
- await webViewPlatform.loadUrl(
- 'https://test.url',
- const <String, String>{
- 'Content-Type': 'text/plain',
- 'Accept': 'text/html',
- },
- );
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadUrl',
- arguments: <String, dynamic>{
- 'url': 'https://test.url',
- 'headers': <String, String>{
- 'Content-Type': 'text/plain',
- 'Accept': 'text/html',
- },
- },
- ),
- ],
- );
- });
-
- test('loadUrl without headers', () async {
- await webViewPlatform.loadUrl(
- 'https://test.url',
- null,
- );
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadUrl',
- arguments: <String, dynamic>{
- 'url': 'https://test.url',
- 'headers': null,
- },
- ),
- ],
- );
- });
-
- test('loadRequest', () async {
- await webViewPlatform.loadRequest(WebViewRequest(
- uri: Uri.parse('https://test.url'),
- method: WebViewRequestMethod.get,
- ));
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadRequest',
- arguments: <String, dynamic>{
- 'request': <String, dynamic>{
- 'uri': 'https://test.url',
- 'method': 'get',
- 'headers': <String, String>{},
- 'body': null,
- }
- },
- ),
- ],
- );
- });
-
- test('loadRequest with optional parameters', () async {
- await webViewPlatform.loadRequest(WebViewRequest(
- uri: Uri.parse('https://test.url'),
- method: WebViewRequestMethod.get,
- headers: <String, String>{'foo': 'bar'},
- body: Uint8List.fromList('hello world'.codeUnits),
- ));
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'loadRequest',
- arguments: <String, dynamic>{
- 'request': <String, dynamic>{
- 'uri': 'https://test.url',
- 'method': 'get',
- 'headers': <String, String>{'foo': 'bar'},
- 'body': 'hello world'.codeUnits,
- }
- },
- ),
- ],
- );
- });
-
- test('currentUrl', () async {
- final String? currentUrl = await webViewPlatform.currentUrl();
-
- expect(currentUrl, 'https://test.url');
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'currentUrl',
- arguments: null,
- ),
- ],
- );
- });
-
- test('canGoBack', () async {
- final bool canGoBack = await webViewPlatform.canGoBack();
-
- expect(canGoBack, true);
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'canGoBack',
- arguments: null,
- ),
- ],
- );
- });
-
- test('canGoForward', () async {
- final bool canGoForward = await webViewPlatform.canGoForward();
-
- expect(canGoForward, true);
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'canGoForward',
- arguments: null,
- ),
- ],
- );
- });
-
- test('goBack', () async {
- await webViewPlatform.goBack();
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'goBack',
- arguments: null,
- ),
- ],
- );
- });
-
- test('goForward', () async {
- await webViewPlatform.goForward();
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'goForward',
- arguments: null,
- ),
- ],
- );
- });
-
- test('reload', () async {
- await webViewPlatform.reload();
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'reload',
- arguments: null,
- ),
- ],
- );
- });
-
- test('clearCache', () async {
- await webViewPlatform.clearCache();
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'clearCache',
- arguments: null,
- ),
- ],
- );
- });
-
- test('updateSettings', () async {
- final WebSettings settings =
- WebSettings(userAgent: const WebSetting<String?>.of('Dart Test'));
- await webViewPlatform.updateSettings(settings);
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'updateSettings',
- arguments: <String, dynamic>{
- 'userAgent': 'Dart Test',
- },
- ),
- ],
- );
- });
-
- test('updateSettings all parameters', () async {
- final WebSettings settings = WebSettings(
- userAgent: const WebSetting<String?>.of('Dart Test'),
- javascriptMode: JavascriptMode.disabled,
- hasNavigationDelegate: true,
- hasProgressTracking: true,
- debuggingEnabled: true,
- gestureNavigationEnabled: true,
- allowsInlineMediaPlayback: true,
- zoomEnabled: false,
- );
- await webViewPlatform.updateSettings(settings);
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'updateSettings',
- arguments: <String, dynamic>{
- 'userAgent': 'Dart Test',
- 'jsMode': 0,
- 'hasNavigationDelegate': true,
- 'hasProgressTracking': true,
- 'debuggingEnabled': true,
- 'gestureNavigationEnabled': true,
- 'allowsInlineMediaPlayback': true,
- 'zoomEnabled': false,
- },
- ),
- ],
- );
- });
-
- test('updateSettings without settings', () async {
- final WebSettings settings =
- WebSettings(userAgent: const WebSetting<String?>.absent());
- await webViewPlatform.updateSettings(settings);
-
- expect(
- log.isEmpty,
- true,
- );
- });
-
- test('evaluateJavascript', () async {
- final String evaluateJavascript =
- await webViewPlatform.evaluateJavascript(
- 'This simulates some JavaScript code.',
- );
-
- expect('This simulates some JavaScript code.', evaluateJavascript);
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'evaluateJavascript',
- arguments: 'This simulates some JavaScript code.',
- ),
- ],
- );
- });
-
- test('runJavascript', () async {
- await webViewPlatform.runJavascript(
- 'This simulates some JavaScript code.',
- );
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'runJavascript',
- arguments: 'This simulates some JavaScript code.',
- ),
- ],
- );
- });
-
- test('runJavascriptReturningResult', () async {
- final String evaluateJavascript =
- await webViewPlatform.runJavascriptReturningResult(
- 'This simulates some JavaScript code.',
- );
-
- expect('This simulates some JavaScript code.', evaluateJavascript);
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'runJavascriptReturningResult',
- arguments: 'This simulates some JavaScript code.',
- ),
- ],
- );
- });
-
- test('addJavascriptChannels', () async {
- final Set<String> channels = <String>{'channel one', 'channel two'};
- await webViewPlatform.addJavascriptChannels(channels);
-
- expect(log, <Matcher>[
- isMethodCall(
- 'addJavascriptChannels',
- arguments: <String>[
- 'channel one',
- 'channel two',
- ],
- ),
- ]);
- });
-
- test('addJavascriptChannels without channels', () async {
- final Set<String> channels = <String>{};
- await webViewPlatform.addJavascriptChannels(channels);
-
- expect(log, <Matcher>[
- isMethodCall(
- 'addJavascriptChannels',
- arguments: <String>[],
- ),
- ]);
- });
-
- test('removeJavascriptChannels', () async {
- final Set<String> channels = <String>{'channel one', 'channel two'};
- await webViewPlatform.removeJavascriptChannels(channels);
-
- expect(log, <Matcher>[
- isMethodCall(
- 'removeJavascriptChannels',
- arguments: <String>[
- 'channel one',
- 'channel two',
- ],
- ),
- ]);
- });
-
- test('removeJavascriptChannels without channels', () async {
- final Set<String> channels = <String>{};
- await webViewPlatform.removeJavascriptChannels(channels);
-
- expect(log, <Matcher>[
- isMethodCall(
- 'removeJavascriptChannels',
- arguments: <String>[],
- ),
- ]);
- });
-
- test('getTitle', () async {
- final String? title = await webViewPlatform.getTitle();
-
- expect(title, null);
- expect(
- log,
- <Matcher>[
- isMethodCall('getTitle', arguments: null),
- ],
- );
- });
-
- test('scrollTo', () async {
- await webViewPlatform.scrollTo(10, 20);
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'scrollTo',
- arguments: <String, int>{
- 'x': 10,
- 'y': 20,
- },
- ),
- ],
- );
- });
-
- test('scrollBy', () async {
- await webViewPlatform.scrollBy(10, 20);
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'scrollBy',
- arguments: <String, int>{
- 'x': 10,
- 'y': 20,
- },
- ),
- ],
- );
- });
-
- test('getScrollX', () async {
- final int x = await webViewPlatform.getScrollX();
-
- expect(x, 10);
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'getScrollX',
- arguments: null,
- ),
- ],
- );
- });
-
- test('getScrollY', () async {
- final int y = await webViewPlatform.getScrollY();
-
- expect(y, 20);
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'getScrollY',
- arguments: null,
- ),
- ],
- );
- });
-
- test('backgroundColor is null by default', () {
- final CreationParams creationParams = CreationParams(
- webSettings: WebSettings(
- userAgent: const WebSetting<String?>.of('Dart Test'),
- ),
- );
- final Map<String, dynamic> creationParamsMap =
- MethodChannelWebViewPlatform.creationParamsToMap(creationParams);
-
- expect(creationParamsMap['backgroundColor'], null);
- });
-
- test('backgroundColor is converted to an int', () {
- const Color whiteColor = Color(0xFFFFFFFF);
- final CreationParams creationParams = CreationParams(
- backgroundColor: whiteColor,
- webSettings: WebSettings(
- userAgent: const WebSetting<String?>.of('Dart Test'),
- ),
- );
- final Map<String, dynamic> creationParamsMap =
- MethodChannelWebViewPlatform.creationParamsToMap(creationParams);
-
- expect(creationParamsMap['backgroundColor'], whiteColor.value);
- });
- });
-
- group('Tests on `plugins.flutter.io/cookie_manager` channel', () {
- const MethodChannel cookieChannel =
- MethodChannel('plugins.flutter.io/cookie_manager');
-
- final List<MethodCall> log = <MethodCall>[];
- cookieChannel.setMockMethodCallHandler((MethodCall methodCall) async {
- log.add(methodCall);
-
- if (methodCall.method == 'clearCookies') {
- return true;
- }
-
- // Return null explicitly instead of relying on the implicit null
- // returned by the method channel if no return statement is specified.
- return null;
- });
-
- tearDown(() {
- log.clear();
- });
-
- test('clearCookies', () async {
- final bool clearCookies =
- await MethodChannelWebViewPlatform.clearCookies();
-
- expect(clearCookies, true);
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'clearCookies',
- arguments: null,
- ),
- ],
- );
- });
-
- test('setCookie', () async {
- await MethodChannelWebViewPlatform.setCookie(const WebViewCookie(
- name: 'foo', value: 'bar', domain: 'flutter.dev'));
-
- expect(
- log,
- <Matcher>[
- isMethodCall(
- 'setCookie',
- arguments: <String, String>{
- 'name': 'foo',
- 'value': 'bar',
- 'domain': 'flutter.dev',
- 'path': '/',
- },
- ),
- ],
- );
- });
- });
-}
-
-class MockWebViewPlatformCallbacksHandler extends Mock
- implements WebViewPlatformCallbacksHandler {}
-
-class MockJavascriptChannelRegistry extends Mock
- implements JavascriptChannelRegistry {}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_controller_test.mocks.dart
deleted file mode 100644
index 47e6737..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_controller_test.mocks.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Mocks generated by Mockito 5.0.16 from annotations
-// in webview_flutter_platform_interface/test/src/v4/platform_webview_controller_test.dart.
-// Do not manually edit this file.
-
-import 'dart:async' as _i4;
-
-import 'package:mockito/mockito.dart' as _i1;
-import 'package:webview_flutter_platform_interface/v4/src/platform_navigation_delegate.dart'
- as _i3;
-import 'package:webview_flutter_platform_interface/v4/src/webview_platform.dart'
- as _i2;
-
-// ignore_for_file: avoid_redundant_argument_values
-// ignore_for_file: avoid_setters_without_getters
-// ignore_for_file: comment_references
-// ignore_for_file: implementation_imports
-// ignore_for_file: invalid_use_of_visible_for_testing_member
-// ignore_for_file: prefer_const_constructors
-// ignore_for_file: unnecessary_parenthesis
-// ignore_for_file: camel_case_types
-
-class _FakePlatformNavigationDelegateCreationParams_0 extends _i1.Fake
- implements _i2.PlatformNavigationDelegateCreationParams {}
-
-/// A class which mocks [PlatformNavigationDelegate].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockPlatformNavigationDelegate extends _i1.Mock
- implements _i3.PlatformNavigationDelegate {
- MockPlatformNavigationDelegate() {
- _i1.throwOnMissingStub(this);
- }
-
- @override
- _i2.PlatformNavigationDelegateCreationParams get params =>
- (super.noSuchMethod(Invocation.getter(#params),
- returnValue: _FakePlatformNavigationDelegateCreationParams_0())
- as _i2.PlatformNavigationDelegateCreationParams);
- @override
- _i4.Future<void> setOnNavigationRequest(
- _i4.FutureOr<bool> Function({bool isForMainFrame, String url})?
- onNavigationRequest) =>
- (super.noSuchMethod(
- Invocation.method(#setOnNavigationRequest, [onNavigationRequest]),
- returnValue: Future<void>.value(),
- returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
- @override
- _i4.Future<void> setOnPageStarted(void Function(String)? onPageStarted) =>
- (super.noSuchMethod(Invocation.method(#setOnPageStarted, [onPageStarted]),
- returnValue: Future<void>.value(),
- returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
- @override
- _i4.Future<void> setOnPageFinished(void Function(String)? onPageFinished) =>
- (super.noSuchMethod(
- Invocation.method(#setOnPageFinished, [onPageFinished]),
- returnValue: Future<void>.value(),
- returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
- @override
- _i4.Future<void> setOnProgress(void Function(int)? onProgress) =>
- (super.noSuchMethod(Invocation.method(#setOnProgress, [onProgress]),
- returnValue: Future<void>.value(),
- returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
- @override
- _i4.Future<void> setOnWebResourceError(
- void Function(_i2.WebResourceError)? onWebResourceError) =>
- (super.noSuchMethod(
- Invocation.method(#setOnWebResourceError, [onWebResourceError]),
- returnValue: Future<void>.value(),
- returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
- @override
- String toString() => super.toString();
-}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/webview_platform_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/webview_platform_test.mocks.dart
deleted file mode 100644
index 5ce0075..0000000
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/webview_platform_test.mocks.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Mocks generated by Mockito 5.0.16 from annotations
-// in webview_flutter_platform_interface/test/src/v4/webview_platform_test.dart.
-// Do not manually edit this file.
-
-import 'package:mockito/mockito.dart' as _i1;
-import 'package:webview_flutter_platform_interface/v4/src/platform_navigation_delegate.dart'
- as _i3;
-import 'package:webview_flutter_platform_interface/v4/src/platform_webview_controller.dart'
- as _i4;
-import 'package:webview_flutter_platform_interface/v4/src/platform_webview_cookie_manager.dart'
- as _i2;
-import 'package:webview_flutter_platform_interface/v4/src/platform_webview_widget.dart'
- as _i5;
-import 'package:webview_flutter_platform_interface/v4/src/types/types.dart'
- as _i7;
-import 'package:webview_flutter_platform_interface/v4/src/webview_platform.dart'
- as _i6;
-
-// ignore_for_file: avoid_redundant_argument_values
-// ignore_for_file: avoid_setters_without_getters
-// ignore_for_file: comment_references
-// ignore_for_file: implementation_imports
-// ignore_for_file: invalid_use_of_visible_for_testing_member
-// ignore_for_file: prefer_const_constructors
-// ignore_for_file: unnecessary_parenthesis
-// ignore_for_file: camel_case_types
-
-class _FakePlatformWebViewCookieManager_0 extends _i1.Fake
- implements _i2.PlatformWebViewCookieManager {}
-
-class _FakePlatformNavigationDelegate_1 extends _i1.Fake
- implements _i3.PlatformNavigationDelegate {}
-
-class _FakePlatformWebViewController_2 extends _i1.Fake
- implements _i4.PlatformWebViewController {}
-
-class _FakePlatformWebViewWidget_3 extends _i1.Fake
- implements _i5.PlatformWebViewWidget {}
-
-/// A class which mocks [WebViewPlatform].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockWebViewPlatform extends _i1.Mock implements _i6.WebViewPlatform {
- MockWebViewPlatform() {
- _i1.throwOnMissingStub(this);
- }
-
- @override
- _i2.PlatformWebViewCookieManager createPlatformCookieManager(
- _i7.PlatformWebViewCookieManagerCreationParams? params) =>
- (super.noSuchMethod(
- Invocation.method(#createPlatformCookieManager, [params]),
- returnValue: _FakePlatformWebViewCookieManager_0())
- as _i2.PlatformWebViewCookieManager);
- @override
- _i3.PlatformNavigationDelegate createPlatformNavigationDelegate(
- _i7.PlatformNavigationDelegateCreationParams? params) =>
- (super.noSuchMethod(
- Invocation.method(#createPlatformNavigationDelegate, [params]),
- returnValue: _FakePlatformNavigationDelegate_1())
- as _i3.PlatformNavigationDelegate);
- @override
- _i4.PlatformWebViewController createPlatformWebViewController(
- _i7.PlatformWebViewControllerCreationParams? params) =>
- (super.noSuchMethod(
- Invocation.method(#createPlatformWebViewController, [params]),
- returnValue: _FakePlatformWebViewController_2())
- as _i4.PlatformWebViewController);
- @override
- _i5.PlatformWebViewWidget createPlatformWebViewWidget(
- _i7.PlatformWebViewWidgetCreationParams? params) =>
- (super.noSuchMethod(
- Invocation.method(#createPlatformWebViewWidget, [params]),
- returnValue: _FakePlatformWebViewWidget_3())
- as _i5.PlatformWebViewWidget);
- @override
- String toString() => super.toString();
-}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/webview_platform_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.dart
similarity index 95%
rename from packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/webview_platform_test.dart
rename to packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.dart
index 4ab6d58..34f8406 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/webview_platform_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.dart
@@ -6,8 +6,7 @@
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'package:webview_flutter_platform_interface/v4/src/platform_webview_controller.dart';
-import 'package:webview_flutter_platform_interface/v4/src/webview_platform.dart';
+import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
import 'webview_platform_test.mocks.dart';
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.mocks.dart
new file mode 100644
index 0000000..d613cdd
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.mocks.dart
@@ -0,0 +1,146 @@
+// Mocks generated by Mockito 5.3.2 from annotations
+// in webview_flutter_platform_interface/test/webview_platform_test.dart.
+// Do not manually edit this file.
+
+// ignore_for_file: no_leading_underscores_for_library_prefixes
+import 'package:mockito/mockito.dart' as _i1;
+import 'package:webview_flutter_platform_interface/src/platform_navigation_delegate.dart'
+ as _i3;
+import 'package:webview_flutter_platform_interface/src/platform_webview_controller.dart'
+ as _i4;
+import 'package:webview_flutter_platform_interface/src/platform_webview_cookie_manager.dart'
+ as _i2;
+import 'package:webview_flutter_platform_interface/src/platform_webview_widget.dart'
+ as _i5;
+import 'package:webview_flutter_platform_interface/src/types/types.dart' as _i7;
+import 'package:webview_flutter_platform_interface/src/webview_platform.dart'
+ as _i6;
+
+// ignore_for_file: type=lint
+// ignore_for_file: avoid_redundant_argument_values
+// ignore_for_file: avoid_setters_without_getters
+// ignore_for_file: comment_references
+// ignore_for_file: implementation_imports
+// ignore_for_file: invalid_use_of_visible_for_testing_member
+// ignore_for_file: prefer_const_constructors
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
+
+class _FakePlatformWebViewCookieManager_0 extends _i1.SmartFake
+ implements _i2.PlatformWebViewCookieManager {
+ _FakePlatformWebViewCookieManager_0(
+ Object parent,
+ Invocation parentInvocation,
+ ) : super(
+ parent,
+ parentInvocation,
+ );
+}
+
+class _FakePlatformNavigationDelegate_1 extends _i1.SmartFake
+ implements _i3.PlatformNavigationDelegate {
+ _FakePlatformNavigationDelegate_1(
+ Object parent,
+ Invocation parentInvocation,
+ ) : super(
+ parent,
+ parentInvocation,
+ );
+}
+
+class _FakePlatformWebViewController_2 extends _i1.SmartFake
+ implements _i4.PlatformWebViewController {
+ _FakePlatformWebViewController_2(
+ Object parent,
+ Invocation parentInvocation,
+ ) : super(
+ parent,
+ parentInvocation,
+ );
+}
+
+class _FakePlatformWebViewWidget_3 extends _i1.SmartFake
+ implements _i5.PlatformWebViewWidget {
+ _FakePlatformWebViewWidget_3(
+ Object parent,
+ Invocation parentInvocation,
+ ) : super(
+ parent,
+ parentInvocation,
+ );
+}
+
+/// A class which mocks [WebViewPlatform].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockWebViewPlatform extends _i1.Mock implements _i6.WebViewPlatform {
+ MockWebViewPlatform() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ _i2.PlatformWebViewCookieManager createPlatformCookieManager(
+ _i7.PlatformWebViewCookieManagerCreationParams? params) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #createPlatformCookieManager,
+ [params],
+ ),
+ returnValue: _FakePlatformWebViewCookieManager_0(
+ this,
+ Invocation.method(
+ #createPlatformCookieManager,
+ [params],
+ ),
+ ),
+ ) as _i2.PlatformWebViewCookieManager);
+ @override
+ _i3.PlatformNavigationDelegate createPlatformNavigationDelegate(
+ _i7.PlatformNavigationDelegateCreationParams? params) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #createPlatformNavigationDelegate,
+ [params],
+ ),
+ returnValue: _FakePlatformNavigationDelegate_1(
+ this,
+ Invocation.method(
+ #createPlatformNavigationDelegate,
+ [params],
+ ),
+ ),
+ ) as _i3.PlatformNavigationDelegate);
+ @override
+ _i4.PlatformWebViewController createPlatformWebViewController(
+ _i7.PlatformWebViewControllerCreationParams? params) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #createPlatformWebViewController,
+ [params],
+ ),
+ returnValue: _FakePlatformWebViewController_2(
+ this,
+ Invocation.method(
+ #createPlatformWebViewController,
+ [params],
+ ),
+ ),
+ ) as _i4.PlatformWebViewController);
+ @override
+ _i5.PlatformWebViewWidget createPlatformWebViewWidget(
+ _i7.PlatformWebViewWidgetCreationParams? params) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #createPlatformWebViewWidget,
+ [params],
+ ),
+ returnValue: _FakePlatformWebViewWidget_3(
+ this,
+ Invocation.method(
+ #createPlatformWebViewWidget,
+ [params],
+ ),
+ ),
+ ) as _i5.PlatformWebViewWidget);
+}
diff --git a/script/configs/exclude_all_plugins_app.yaml b/script/configs/exclude_all_plugins_app.yaml
index 8dd0fde..62b20d9 100644
--- a/script/configs/exclude_all_plugins_app.yaml
+++ b/script/configs/exclude_all_plugins_app.yaml
@@ -8,3 +8,4 @@
# This is a permament entry, as it should never be a direct app dependency.
- plugin_platform_interface
+- webview_flutter_platform_interface