blob: c7097b41a74ab3e5aff7549a9b278a1b66e218b2 [file] [log] [blame]
// 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:pigeon/pigeon.dart';
@ConfigurePigeon(PigeonOptions(
dartOut: 'lib/src/messages.g.dart',
swiftOut: 'ios/url_launcher_ios/Sources/url_launcher_ios/messages.g.swift',
copyrightHeader: 'pigeons/copyright.txt',
))
/// Possible outcomes of launching a URL.
enum LaunchResult {
/// The URL was successfully launched (or could be, for `canLaunchUrl`).
success,
/// There was no handler available for the URL.
failure,
/// The URL could not be launched because it is invalid.
invalidUrl,
}
/// Possible outcomes of handling a URL within the application.
enum InAppLoadResult {
/// The URL was successfully loaded.
success,
/// The URL did not load successfully.
failedToLoad,
/// The URL could not be launched because it is invalid.
invalidUrl,
}
@HostApi()
abstract class UrlLauncherApi {
/// Checks whether a URL can be loaded.
@ObjCSelector('canLaunchURL:')
LaunchResult canLaunchUrl(String url);
/// Opens the URL externally, returning the status of launching it.
@async
@ObjCSelector('launchURL:universalLinksOnly:')
LaunchResult launchUrl(String url, bool universalLinksOnly);
/// Opens the URL in an in-app SFSafariViewController, returning the results
/// of loading it.
@async
@ObjCSelector('openSafariViewControllerWithURL:')
InAppLoadResult openUrlInSafariViewController(String url);
/// Closes the view controller opened by [openUrlInSafariViewController].
void closeSafariViewController();
}