diff --git a/packages/url_launcher/url_launcher_ios/CHANGELOG.md b/packages/url_launcher/url_launcher_ios/CHANGELOG.md index b5bb9c81481..0c6d13e0941 100644 --- a/packages/url_launcher/url_launcher_ios/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_ios/CHANGELOG.md @@ -1,3 +1,7 @@ +## 6.3.0 + +* Adds Swift Package Manager compatibility. + ## 6.2.5 * Adds explicit imports for UIKit. diff --git a/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios.podspec b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios.podspec index 9dcf68c01f0..fa30175cb6b 100644 --- a/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios.podspec +++ b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios.podspec @@ -14,7 +14,7 @@ A Flutter plugin for making the underlying platform (Android or iOS) launch a UR s.source = { :http => 'https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_ios' } s.documentation_url = 'https://pub.dev/packages/url_launcher' s.swift_version = '5.0' - s.source_files = 'Classes/**/*.swift' + s.source_files = 'url_launcher_ios/Sources/**/*.swift' s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift', 'LD_RUNPATH_SEARCH_PATHS' => '/usr/lib/swift', @@ -22,5 +22,5 @@ A Flutter plugin for making the underlying platform (Android or iOS) launch a UR s.dependency 'Flutter' s.platform = :ios, '12.0' s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } - s.resource_bundles = {'url_launcher_ios_privacy' => ['Resources/PrivacyInfo.xcprivacy']} + s.resource_bundles = {'url_launcher_ios_privacy' => ['url_launcher_ios/Sources/url_launcher_ios/Resources/PrivacyInfo.xcprivacy']} end diff --git a/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Package.swift b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Package.swift new file mode 100644 index 00000000000..5dbdd8ad4d7 --- /dev/null +++ b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Package.swift @@ -0,0 +1,28 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +// 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 PackageDescription + +let package = Package( + name: "url_launcher_ios", + platforms: [ + .iOS("12.0") + ], + products: [ + .library(name: "url-launcher-ios", targets: ["url_launcher_ios"]) + ], + dependencies: [], + targets: [ + .target( + name: "url_launcher_ios", + dependencies: [], + resources: [ + .process("Resources") + ] + ) + ] +) diff --git a/packages/url_launcher/url_launcher_ios/ios/Classes/Launcher.swift b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/Launcher.swift similarity index 100% rename from packages/url_launcher/url_launcher_ios/ios/Classes/Launcher.swift rename to packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/Launcher.swift diff --git a/packages/url_launcher/url_launcher_ios/ios/Resources/PrivacyInfo.xcprivacy b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/Resources/PrivacyInfo.xcprivacy similarity index 100% rename from packages/url_launcher/url_launcher_ios/ios/Resources/PrivacyInfo.xcprivacy rename to packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/Resources/PrivacyInfo.xcprivacy diff --git a/packages/url_launcher/url_launcher_ios/ios/Classes/URLLaunchSession.swift b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/URLLaunchSession.swift similarity index 100% rename from packages/url_launcher/url_launcher_ios/ios/Classes/URLLaunchSession.swift rename to packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/URLLaunchSession.swift diff --git a/packages/url_launcher/url_launcher_ios/ios/Classes/URLLauncherPlugin.swift b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/URLLauncherPlugin.swift similarity index 100% rename from packages/url_launcher/url_launcher_ios/ios/Classes/URLLauncherPlugin.swift rename to packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/URLLauncherPlugin.swift diff --git a/packages/url_launcher/url_launcher_ios/ios/Classes/messages.g.swift b/packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/messages.g.swift similarity index 100% rename from packages/url_launcher/url_launcher_ios/ios/Classes/messages.g.swift rename to packages/url_launcher/url_launcher_ios/ios/url_launcher_ios/Sources/url_launcher_ios/messages.g.swift diff --git a/packages/url_launcher/url_launcher_ios/pigeons/messages.dart b/packages/url_launcher/url_launcher_ios/pigeons/messages.dart index f5dc1052b32..c7097b41a74 100644 --- a/packages/url_launcher/url_launcher_ios/pigeons/messages.dart +++ b/packages/url_launcher/url_launcher_ios/pigeons/messages.dart @@ -6,7 +6,7 @@ import 'package:pigeon/pigeon.dart'; @ConfigurePigeon(PigeonOptions( dartOut: 'lib/src/messages.g.dart', - swiftOut: 'ios/Classes/messages.g.swift', + swiftOut: 'ios/url_launcher_ios/Sources/url_launcher_ios/messages.g.swift', copyrightHeader: 'pigeons/copyright.txt', )) diff --git a/packages/url_launcher/url_launcher_ios/pubspec.yaml b/packages/url_launcher/url_launcher_ios/pubspec.yaml index fd8c54619c5..65e9c204835 100644 --- a/packages/url_launcher/url_launcher_ios/pubspec.yaml +++ b/packages/url_launcher/url_launcher_ios/pubspec.yaml @@ -2,7 +2,7 @@ name: url_launcher_ios description: iOS implementation of the url_launcher plugin. repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22 -version: 6.2.5 +version: 6.3.0 environment: sdk: ^3.2.3 diff --git a/packages/url_launcher/url_launcher_macos/CHANGELOG.md b/packages/url_launcher/url_launcher_macos/CHANGELOG.md index df9447ad852..44b282ca29e 100644 --- a/packages/url_launcher/url_launcher_macos/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_macos/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 3.2.0 +* Adds Swift Package Manager compatibility. * Updates minimum supported SDK version to Flutter 3.13/Dart 3.1. ## 3.1.0 diff --git a/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift b/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift index 622cffb3404..e58397e1e77 100644 --- a/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift +++ b/packages/url_launcher/url_launcher_macos/example/macos/RunnerTests/RunnerTests.swift @@ -7,6 +7,12 @@ import XCTest @testable import url_launcher_macos +// Tests whether NSURL parsing is strict. When linking against the macOS 14 SDK or later, +// NSURL uses a more lenient parser which will not return nil. +private func urlParsingIsStrict() -> Bool { + return URL(string: "b a d U R L") == nil +} + /// A stub to simulate the system Url handler. class StubWorkspace: SystemURLHandler { @@ -43,7 +49,11 @@ class RunnerTests: XCTestCase { let plugin = UrlLauncherPlugin() let result = try plugin.canLaunch(url: "invalid url") - XCTAssertEqual(result.error, .invalidUrl) + if urlParsingIsStrict() { + XCTAssertEqual(result.error, .invalidUrl) + } else { + XCTAssertFalse(result.value) + } } func testLaunchSuccessReturnsTrue() throws { @@ -69,6 +79,10 @@ class RunnerTests: XCTestCase { let plugin = UrlLauncherPlugin() let result = try plugin.launch(url: "invalid url") - XCTAssertEqual(result.error, .invalidUrl) + if urlParsingIsStrict() { + XCTAssertEqual(result.error, .invalidUrl) + } else { + XCTAssertFalse(result.value) + } } } diff --git a/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos.podspec b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos.podspec index 70864ec4f36..de18c66e7d0 100644 --- a/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos.podspec +++ b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos.podspec @@ -12,11 +12,10 @@ Pod::Spec.new do |s| s.license = { :type => 'BSD', :file => '../LICENSE' } s.author = { 'Flutter Team' => 'flutter-dev@googlegroups.com' } s.source = { :http => 'https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_macos' } - s.source_files = 'Classes/**/*' + s.source_files = 'url_launcher_macos/Sources/url_launcher_macos/**/*.swift' s.dependency 'FlutterMacOS' s.platform = :osx, '10.14' s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.swift_version = '5.0' end - diff --git a/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Package.swift b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Package.swift new file mode 100644 index 00000000000..13ddb82f941 --- /dev/null +++ b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Package.swift @@ -0,0 +1,28 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +// 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 PackageDescription + +let package = Package( + name: "url_launcher_macos", + platforms: [ + .macOS("10.14") + ], + products: [ + .library(name: "url-launcher-macos", targets: ["url_launcher_macos"]) + ], + dependencies: [], + targets: [ + .target( + name: "url_launcher_macos", + dependencies: [], + resources: [ + .process("Resources") + ] + ) + ] +) diff --git a/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/Resources/.gitkeep b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/Resources/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/url_launcher/url_launcher_macos/macos/Classes/UrlLauncherPlugin.swift b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/UrlLauncherPlugin.swift similarity index 100% rename from packages/url_launcher/url_launcher_macos/macos/Classes/UrlLauncherPlugin.swift rename to packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/UrlLauncherPlugin.swift diff --git a/packages/url_launcher/url_launcher_macos/macos/Classes/messages.g.swift b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/messages.g.swift similarity index 100% rename from packages/url_launcher/url_launcher_macos/macos/Classes/messages.g.swift rename to packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/messages.g.swift diff --git a/packages/url_launcher/url_launcher_macos/pigeons/messages.dart b/packages/url_launcher/url_launcher_macos/pigeons/messages.dart index fd0027e6678..bd97c681d8e 100644 --- a/packages/url_launcher/url_launcher_macos/pigeons/messages.dart +++ b/packages/url_launcher/url_launcher_macos/pigeons/messages.dart @@ -6,7 +6,8 @@ import 'package:pigeon/pigeon.dart'; @ConfigurePigeon(PigeonOptions( dartOut: 'lib/src/messages.g.dart', - swiftOut: 'macos/Classes/messages.g.swift', + swiftOut: + 'macos/url_launcher_macos/Sources/url_launcher_macos/messages.g.swift', copyrightHeader: 'pigeons/copyright.txt', )) diff --git a/packages/url_launcher/url_launcher_macos/pubspec.yaml b/packages/url_launcher/url_launcher_macos/pubspec.yaml index 0a84ea92238..4152e5f7c10 100644 --- a/packages/url_launcher/url_launcher_macos/pubspec.yaml +++ b/packages/url_launcher/url_launcher_macos/pubspec.yaml @@ -2,7 +2,7 @@ name: url_launcher_macos description: macOS implementation of the url_launcher plugin. repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_macos issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22 -version: 3.1.0 +version: 3.2.0 environment: sdk: ^3.1.0