[url_launcher, url_launcher_web]Added webOnlyWindowName parameter to launch() (#2979)
diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md
index a536472..845fec7 100644
--- a/packages/url_launcher/url_launcher/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 5.5.1
+
+* Added webOnlyWindowName parameter to launch()
+
## 5.5.0
* Support Linux by default.
diff --git a/packages/url_launcher/url_launcher/lib/url_launcher.dart b/packages/url_launcher/url_launcher/lib/url_launcher.dart
index 2ce725d..bc17106 100644
--- a/packages/url_launcher/url_launcher/lib/url_launcher.dart
+++ b/packages/url_launcher/url_launcher/lib/url_launcher.dart
@@ -44,6 +44,9 @@
/// [enableDomStorage] is an Android only setting. If true, WebView enable
/// DOM storage.
/// [headers] is an Android only setting that adds headers to the WebView.
+/// [webOnlyWindowName] is an Web only setting . _blank opens the new url in new tab ,
+/// _self opens the new url in current tab.
+/// Default behaviour is to open the url in new tab.
///
/// Note that if any of the above are set to true but the URL is not a web URL,
/// this will throw a [PlatformException].
@@ -63,6 +66,7 @@
bool universalLinksOnly,
Map<String, String> headers,
Brightness statusBarBrightness,
+ String webOnlyWindowName,
}) async {
assert(urlString != null);
final Uri url = Uri.parse(urlString.trimLeft());
@@ -93,6 +97,7 @@
enableDomStorage: enableDomStorage ?? false,
universalLinksOnly: universalLinksOnly ?? false,
headers: headers ?? <String, String>{},
+ webOnlyWindowName: webOnlyWindowName,
);
assert(previousAutomaticSystemUiAdjustment != null);
if (statusBarBrightness != null) {
diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml
index 299de93..a395522 100644
--- a/packages/url_launcher/url_launcher/pubspec.yaml
+++ b/packages/url_launcher/url_launcher/pubspec.yaml
@@ -2,7 +2,7 @@
description: Flutter plugin for launching a URL on Android and iOS. Supports
web, phone, SMS, and email schemes.
homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher
-version: 5.5.0
+version: 5.5.1
flutter:
plugin:
diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md
index ed80142..2f33ffb 100644
--- a/packages/url_launcher/url_launcher_web/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.1.3
+
+- Added webOnlyWindowName parameter to launch()
+
# 0.1.2+1
- Update docs
diff --git a/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart b/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
index 1bac4d5..da73cd8 100644
--- a/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
+++ b/packages/url_launcher/url_launcher_web/lib/url_launcher_web.dart
@@ -39,15 +39,15 @@
bool _isSafariTargetTopScheme(String url) =>
_safariTargetTopSchemes.contains(_getUrlScheme(url));
- /// Opens the given [url] in a new window.
+ /// Opens the given [url] in the specified [webOnlyWindowName].
///
/// Returns the newly created window.
@visibleForTesting
- html.WindowBase openNewWindow(String url) {
+ html.WindowBase openNewWindow(String url, {String webOnlyWindowName}) {
// We need to open mailto, tel and sms urls on the _top window context on safari browsers.
// See https://github.com/flutter/flutter/issues/51461 for reference.
- final target =
- browser.isSafari && _isSafariTargetTopScheme(url) ? '_top' : '';
+ final target = webOnlyWindowName ??
+ ((browser.isSafari && _isSafariTargetTopScheme(url)) ? '_top' : '');
return _window.open(url, target);
}
@@ -65,7 +65,9 @@
@required bool enableDomStorage,
@required bool universalLinksOnly,
@required Map<String, String> headers,
+ String webOnlyWindowName,
}) {
- return Future<bool>.value(openNewWindow(url) != null);
+ return Future<bool>.value(
+ openNewWindow(url, webOnlyWindowName: webOnlyWindowName) != null);
}
}
diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml
index 727b396..a77692d 100644
--- a/packages/url_launcher/url_launcher_web/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/pubspec.yaml
@@ -4,7 +4,7 @@
# 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump
# the version to 2.0.0.
# See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.1.2+1
+version: 0.1.3
flutter:
plugin:
diff --git a/packages/url_launcher/url_launcher_web/test/url_launcher_web_test.dart b/packages/url_launcher/url_launcher_web/test/url_launcher_web_test.dart
index b7e107d..9cbaf68 100644
--- a/packages/url_launcher/url_launcher_web/test/url_launcher_web_test.dart
+++ b/packages/url_launcher/url_launcher_web/test/url_launcher_web_test.dart
@@ -145,6 +145,19 @@
verify(mockWindow.open('sms:+19725551212?body=hello%20there', ''));
});
+ test('setting oOnlyLinkTarget as _self opens the url in the same tab',
+ () {
+ plugin.openNewWindow("https://www.google.com",
+ webOnlyWindowName: "_self");
+ verify(mockWindow.open('https://www.google.com', '_self'));
+ });
+
+ test('setting webOnlyLinkTarget as _blank opens the url in a new tab',
+ () {
+ plugin.openNewWindow("https://www.google.com",
+ webOnlyWindowName: "_blank");
+ verify(mockWindow.open('https://www.google.com', '_blank'));
+ });
group('Safari', () {
setUp(() {
@@ -181,6 +194,13 @@
verify(
mockWindow.open('sms:+19725551212?body=hello%20there', '_top'));
});
+ test(
+ 'mailto urls should use _blank if webOnlyWindowName is set as _blank',
+ () {
+ plugin.openNewWindow("mailto:name@mydomain.com",
+ webOnlyWindowName: "_blank");
+ verify(mockWindow.open("mailto:name@mydomain.com", "_blank"));
+ });
});
});
});