Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add web support for new methos
  • Loading branch information
stuartmorgan-g committed Oct 16, 2023
commit f70a5eee8ce02597d87f2b4b4366f89e1901461e
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
import 'package:url_launcher_web/url_launcher_web.dart';

import 'url_launcher_web_test.mocks.dart';
Expand Down Expand Up @@ -198,5 +199,30 @@ void main() {
});
});
});

group('supportsMode', () {
testWidgets('returns true for platformDefault', (WidgetTester _) async {
expect(plugin.supportsMode(PreferredLaunchMode.platformDefault),
completion(isTrue));
});

testWidgets('returns false for other modes', (WidgetTester _) async {
expect(plugin.supportsMode(PreferredLaunchMode.externalApplication),
completion(isFalse));
expect(
plugin.supportsMode(
PreferredLaunchMode.externalNonBrowserApplication),
completion(isFalse));
expect(plugin.supportsMode(PreferredLaunchMode.inAppBrowserView),
completion(isFalse));
expect(plugin.supportsMode(PreferredLaunchMode.inAppWebView),
completion(isFalse));
});
});

testWidgets('supportsCloseForMode returns false', (WidgetTester _) async {
expect(plugin.supportsCloseForMode(PreferredLaunchMode.platformDefault),
completion(isFalse));
});
});
}
13 changes: 13 additions & 0 deletions packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,17 @@ class UrlLauncherPlugin extends UrlLauncherPlatform {
openNewWindow(url, webOnlyWindowName: webOnlyWindowName);
return true;
}

@override
Future<bool> supportsMode(PreferredLaunchMode mode) async {
// Web doesn't allow any control over the destination beyond
// webOnlyWindowName, so don't claim support for any mode beyond default.
return mode == PreferredLaunchMode.platformDefault;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are good defaults for the web platform. This maybe could be expanded more (if you use window.open, and keep a reference to the window that you opened, it can be closed, for example), but so far I have never heard from anybody wanting the "close" feature on the web.

}

@override
Future<bool> supportsCloseForMode(PreferredLaunchMode mode) async {
// No supported mode is closeable.
return false;
}
}