diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md index 5dfb0eb3e18d..083006aa8f06 100644 --- a/packages/url_launcher/url_launcher/CHANGELOG.md +++ b/packages/url_launcher/url_launcher/CHANGELOG.md @@ -1,4 +1,4 @@ -## NEXT +## 6.3.3 * Updates minimum supported SDK version to Flutter 3.41/Dart 3.11. * Updates README to reflect currently supported OS versions for the latest diff --git a/packages/url_launcher/url_launcher/lib/src/url_launcher_uri.dart b/packages/url_launcher/url_launcher/lib/src/url_launcher_uri.dart index 86615833bdef..87f20fac2929 100644 --- a/packages/url_launcher/url_launcher/lib/src/url_launcher_uri.dart +++ b/packages/url_launcher/url_launcher/lib/src/url_launcher_uri.dart @@ -104,5 +104,5 @@ Future supportsLaunchMode(LaunchMode mode) { /// If this returns false, [closeInAppWebView] will not work when launching /// URLs with [mode]. Future supportsCloseForLaunchMode(LaunchMode mode) { - return UrlLauncherPlatform.instance.supportsMode(convertLaunchMode(mode)); + return UrlLauncherPlatform.instance.supportsCloseForMode(convertLaunchMode(mode)); } diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml index b089b1700685..efc28cd5d215 100644 --- a/packages/url_launcher/url_launcher/pubspec.yaml +++ b/packages/url_launcher/url_launcher/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for launching a URL. Supports web, phone, SMS, and email schemes. repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22 -version: 6.3.2 +version: 6.3.3 environment: sdk: ^3.11.0 diff --git a/packages/url_launcher/url_launcher/test/mocks/mock_url_launcher_platform.dart b/packages/url_launcher/url_launcher/test/mocks/mock_url_launcher_platform.dart index 51f24efdf4df..f12b39124e64 100644 --- a/packages/url_launcher/url_launcher/test/mocks/mock_url_launcher_platform.dart +++ b/packages/url_launcher/url_launcher/test/mocks/mock_url_launcher_platform.dart @@ -20,6 +20,7 @@ class MockUrlLauncher extends Fake with MockPlatformInterfaceMixin implements Ur String? webOnlyWindowName; bool? response; + bool? closeForModeResponse; bool closeWebViewCalled = false; bool canLaunchCalled = false; @@ -59,6 +60,11 @@ class MockUrlLauncher extends Fake with MockPlatformInterfaceMixin implements Ur this.response = response; } + // ignore: use_setters_to_change_properties + void setCloseForModeResponse(bool response) { + closeForModeResponse = response; + } + @override LinkDelegate? get linkDelegate => null; @@ -120,6 +126,6 @@ class MockUrlLauncher extends Fake with MockPlatformInterfaceMixin implements Ur @override Future supportsCloseForMode(PreferredLaunchMode mode) async { launchMode = mode; - return response!; + return closeForModeResponse!; } } diff --git a/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart b/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart index 2d8bd2912af0..a35064d84dbc 100644 --- a/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart +++ b/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart @@ -10,8 +10,12 @@ import 'package:url_launcher_platform_interface/url_launcher_platform_interface. import '../mocks/mock_url_launcher_platform.dart'; void main() { - final mock = MockUrlLauncher(); - UrlLauncherPlatform.instance = mock; + late MockUrlLauncher mock; + + setUp(() { + mock = MockUrlLauncher(); + UrlLauncherPlatform.instance = mock; + }); test('closeInAppWebView', () async { await closeInAppWebView(); @@ -310,17 +314,26 @@ void main() { group('supportsCloseForLaunchMode', () { test('handles returning true', () async { - mock.setResponse(true); + mock.setCloseForModeResponse(true); expect(await supportsCloseForLaunchMode(LaunchMode.inAppBrowserView), true); expect(mock.launchMode, PreferredLaunchMode.inAppBrowserView); }); test('handles returning false', () async { - mock.setResponse(false); + mock.setCloseForModeResponse(false); expect(await supportsCloseForLaunchMode(LaunchMode.inAppBrowserView), false); expect(mock.launchMode, PreferredLaunchMode.inAppBrowserView); }); + + test('reflects close support independently of launch support', () async { + mock + ..setResponse(false) + ..setCloseForModeResponse(true); + + expect(await supportsLaunchMode(LaunchMode.inAppBrowserView), false); + expect(await supportsCloseForLaunchMode(LaunchMode.inAppBrowserView), true); + }); }); }