diff --git a/packages/file_selector/file_selector_macos/CHANGELOG.md b/packages/file_selector/file_selector_macos/CHANGELOG.md
index e63c60bef003..77d143386343 100644
--- a/packages/file_selector/file_selector_macos/CHANGELOG.md
+++ b/packages/file_selector/file_selector_macos/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 0.9.4+1
+* Adds privacy manifest.
* Updates minimum supported SDK version to Flutter 3.19/Dart 3.3.
## 0.9.4
diff --git a/packages/file_selector/file_selector_macos/macos/file_selector_macos.podspec b/packages/file_selector/file_selector_macos/macos/file_selector_macos.podspec
index bb4bffee9e00..e4b8a622d6aa 100644
--- a/packages/file_selector/file_selector_macos/macos/file_selector_macos.podspec
+++ b/packages/file_selector/file_selector_macos/macos/file_selector_macos.podspec
@@ -13,6 +13,7 @@ Displays native macOS open and save panels.
s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
s.source = { :http => 'https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_macos' }
s.source_files = 'file_selector_macos/Sources/file_selector_macos/**/*.swift'
+ s.resource_bundles = {'file_selector_macos_privacy' => ['file_selector_macos/Sources/file_selector_macos/Resources/PrivacyInfo.xcprivacy']}
s.dependency 'FlutterMacOS'
s.platform = :osx, '10.14'
diff --git a/packages/file_selector/file_selector_macos/macos/file_selector_macos/Package.swift b/packages/file_selector/file_selector_macos/macos/file_selector_macos/Package.swift
index 97bd0cd8d5dc..d4bc3e313df1 100644
--- a/packages/file_selector/file_selector_macos/macos/file_selector_macos/Package.swift
+++ b/packages/file_selector/file_selector_macos/macos/file_selector_macos/Package.swift
@@ -19,7 +19,10 @@ let package = Package(
targets: [
.target(
name: "file_selector_macos",
- dependencies: []
+ dependencies: [],
+ resources: [
+ .process("Resources")
+ ]
)
]
)
diff --git a/packages/file_selector/file_selector_macos/macos/file_selector_macos/Sources/file_selector_macos/Resources/PrivacyInfo.xcprivacy b/packages/file_selector/file_selector_macos/macos/file_selector_macos/Sources/file_selector_macos/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000000..918d80be4306
--- /dev/null
+++ b/packages/file_selector/file_selector_macos/macos/file_selector_macos/Sources/file_selector_macos/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,12 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/packages/file_selector/file_selector_macos/pubspec.yaml b/packages/file_selector/file_selector_macos/pubspec.yaml
index eede201e8d92..a1eadce6f5af 100644
--- a/packages/file_selector/file_selector_macos/pubspec.yaml
+++ b/packages/file_selector/file_selector_macos/pubspec.yaml
@@ -2,7 +2,7 @@ name: file_selector_macos
description: macOS implementation of the file_selector plugin.
repository: https://github.com/flutter/packages/tree/main/packages/file_selector/file_selector_macos
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+file_selector%22
-version: 0.9.4
+version: 0.9.4+1
environment:
sdk: ^3.3.0
diff --git a/packages/url_launcher/url_launcher_macos/CHANGELOG.md b/packages/url_launcher/url_launcher_macos/CHANGELOG.md
index 81f5a10f7faa..2dcb75263873 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.1
+* Adds privacy manifest.
* Updates minimum supported SDK version to Flutter 3.19/Dart 3.3.
## 3.2.0
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 de18c66e7d0d..a7f88852d2c4 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
@@ -13,6 +13,7 @@ Pod::Spec.new do |s|
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 = 'url_launcher_macos/Sources/url_launcher_macos/**/*.swift'
+ s.resource_bundles = {'url_launcher_macos_privacy' => ['url_launcher_macos/Sources/url_launcher_macos/Resources/PrivacyInfo.xcprivacy']}
s.dependency 'FlutterMacOS'
s.platform = :osx, '10.14'
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
deleted file mode 100644
index e69de29bb2d1..000000000000
diff --git a/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/Resources/PrivacyInfo.xcprivacy b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000000..918d80be4306
--- /dev/null
+++ b/packages/url_launcher/url_launcher_macos/macos/url_launcher_macos/Sources/url_launcher_macos/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,12 @@
+
+
+
+
+ NSPrivacyTrackingDomains
+
+ NSPrivacyCollectedDataTypes
+
+ NSPrivacyTracking
+
+
+
diff --git a/packages/url_launcher/url_launcher_macos/pubspec.yaml b/packages/url_launcher/url_launcher_macos/pubspec.yaml
index 1f1d570ce661..d5e29fc0e9d5 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.2.0
+version: 3.2.1
environment:
sdk: ^3.3.0
diff --git a/script/tool/lib/src/podspec_check_command.dart b/script/tool/lib/src/podspec_check_command.dart
index 4f1b5e0dfa55..b8aa218ffbc3 100644
--- a/script/tool/lib/src/podspec_check_command.dart
+++ b/script/tool/lib/src/podspec_check_command.dart
@@ -95,7 +95,8 @@ class PodspecCheckCommand extends PackageLoopingCommand {
}
}
- if (pluginSupportsPlatform(platformIOS, package) &&
+ if ((pluginSupportsPlatform(platformIOS, package) ||
+ pluginSupportsPlatform(platformMacOS, package)) &&
!podspecs.any(_hasPrivacyManifest)) {
printError('No PrivacyInfo.xcprivacy file specified. Please ensure that '
'a privacy manifest is included in the build using '
diff --git a/script/tool/test/podspec_check_command_test.dart b/script/tool/test/podspec_check_command_test.dart
index e416a488fc74..ddbf9db05a5a 100644
--- a/script/tool/test/podspec_check_command_test.dart
+++ b/script/tool/test/podspec_check_command_test.dart
@@ -605,5 +605,49 @@ void main() {
[contains('Ran for 1 package(s)')],
));
});
+
+ test('fails when a macOS plugin is missing a privacy manifest', () async {
+ final RepositoryPackage plugin = createFakePlugin(
+ 'plugin1',
+ packagesDir,
+ platformSupport: {
+ Platform.macOS: const PlatformDetails(PlatformSupport.inline),
+ },
+ );
+ _writeFakePodspec(plugin, 'macos');
+
+ Error? commandError;
+ final List output = await runCapturingPrint(
+ runner, ['podspec-check'], errorHandler: (Error e) {
+ commandError = e;
+ });
+
+ expect(commandError, isA());
+ expect(
+ output,
+ containsAllInOrder(
+ [contains('No PrivacyInfo.xcprivacy file specified.')],
+ ));
+ });
+
+ test('passes when a macOS plugin has a privacy manifest', () async {
+ final RepositoryPackage plugin = createFakePlugin(
+ 'plugin1',
+ packagesDir,
+ platformSupport: {
+ Platform.macOS: const PlatformDetails(PlatformSupport.inline),
+ },
+ );
+ _writeFakePodspec(plugin, 'macos', includePrivacyManifest: true);
+
+ final List output =
+ await runCapturingPrint(runner, ['podspec-check']);
+
+ expect(
+ output,
+ containsAllInOrder(
+ [contains('Ran for 1 package(s)')],
+ ));
+ });
});
}