Removes support for “background mode” permissions

This commit is contained in:
Riley Testut
2023-05-26 14:58:52 -05:00
committed by Magesh K
parent 038efd9f9e
commit 99db3dc086
7 changed files with 5 additions and 47 deletions

View File

@@ -206,7 +206,7 @@ private extension VerificationError
guard let permissions, !permissions.isEmpty else { return nil }
let permissionsByType = Dictionary(grouping: permissions) { $0.type }
let permissionSections = [ALTAppPermissionType.entitlement, .privacy, .backgroundMode].compactMap { (type) -> String? in
let permissionSections = [ALTAppPermissionType.entitlement, .privacy].compactMap { (type) -> String? in
guard let permissions = permissionsByType[type] else { return nil }
// "Privacy:"

View File

@@ -166,15 +166,10 @@ private extension FetchSourceOperation
versions.insert(version.versionID)
}
for permission in app.permissions
for permission in app.permissions where permission.type == .privacy
{
switch permission.type
{
case .privacy, .backgroundMode:
// Privacy permissions MUST have a usage description.
guard permission.usageDescription != nil else { throw SourceError.missingPermissionUsageDescription(for: permission.permission, app: app, source: source) }
default: break
}
}
}

View File

@@ -293,20 +293,6 @@ private extension VerifyAppOperation
allEntitlements = allEntitlements.filter { !ALTEntitlement.ignoredEntitlements.contains($0) }
// Background Modes
// App extensions can't have background modes, so don't need to worry about them.
let allBackgroundModes: Set<ALTAppBackgroundMode>
if let backgroundModes = app.bundle.infoDictionary?[Bundle.Info.backgroundModes] as? [String]
{
let backgroundModes = backgroundModes.lazy.map { ALTAppBackgroundMode($0) }
allBackgroundModes = Set(backgroundModes)
}
else
{
allBackgroundModes = []
}
// Privacy
let allPrivacyPermissions: Set<ALTAppPrivacyPermission>
if #available(iOS 16, *)
@@ -346,7 +332,7 @@ private extension VerifyAppOperation
// Verify permissions.
let sourcePermissions: Set<AnyHashable> = Set(await $storeApp.perform { $0.permissions.map { AnyHashable($0.permission) } })
let localPermissions: [any ALTAppPermission] = Array(allEntitlements) + Array(allBackgroundModes) + Array(allPrivacyPermissions)
let localPermissions: [any ALTAppPermission] = Array(allEntitlements) + Array(allPrivacyPermissions)
// To pass: EVERY permission in localPermissions must also appear in sourcePermissions.
// If there is a single missing permission, throw error.

View File

@@ -84,7 +84,6 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
{
case .entitlement: return ALTEntitlement(rawValue: self._permission)
case .privacy: return ALTAppPrivacyPermission(rawValue: self._permission)
case .backgroundMode: return ALTAppBackgroundMode(rawValue: self._permission)
default: return UnknownAppPermission(rawValue: self._permission)
}
}
@@ -105,7 +104,6 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
{
case entitlement
case privacyType = "privacy"
case backgroundMode = "background"
case usageDescription
}
@@ -132,11 +130,6 @@ public class AppPermission: NSManagedObject, Decodable, Fetchable
self._permission = privacyType
self.type = .privacy
}
else if let backgroundMode = try container.decodeIfPresent(String.self, forKey: .backgroundMode)
{
self._permission = backgroundMode
self.type = .backgroundMode
}
else
{
self._permission = ""

View File

@@ -16,7 +16,6 @@ public extension ALTAppPermissionType
case .unknown: return NSLocalizedString("Permission", comment: "")
case .entitlement: return NSLocalizedString("Entitlement", comment: "")
case .privacy: return NSLocalizedString("Privacy Permission", comment: "")
case .backgroundMode: return NSLocalizedString("Background Mode", comment: "")
default: return nil
}
}
@@ -150,14 +149,3 @@ extension ALTAppPrivacyPermission: ALTAppPermission
}
}
}
extension ALTAppBackgroundMode: ALTAppPermission
{
public var type: ALTAppPermissionType { .backgroundMode }
public var symbolName: String? { nil }
public var localizedName: String? { nil }
public var synthesizedName: String? { nil }
public var localizedDescription: String? { nil }
}

View File

@@ -12,11 +12,8 @@ typedef NSString *ALTAppPermissionType NS_TYPED_EXTENSIBLE_ENUM;
extern ALTAppPermissionType const ALTAppPermissionTypeUnknown;
extern ALTAppPermissionType const ALTAppPermissionTypeEntitlement;
extern ALTAppPermissionType const ALTAppPermissionTypePrivacy;
extern ALTAppPermissionType const ALTAppPermissionTypeBackgroundMode;
typedef NSString *ALTAppPrivacyPermission NS_TYPED_EXTENSIBLE_ENUM;
typedef NSString *ALTAppBackgroundMode NS_TYPED_EXTENSIBLE_ENUM;
extern ALTAppPrivacyPermission const ALTAppPrivacyPermissionAppleMusic;
extern ALTAppPrivacyPermission const ALTAppPrivacyPermissionBluetooth;
extern ALTAppPrivacyPermission const ALTAppPrivacyPermissionCalendars;

View File

@@ -11,7 +11,6 @@
ALTAppPermissionType const ALTAppPermissionTypeUnknown = @"unknown";
ALTAppPermissionType const ALTAppPermissionTypeEntitlement = @"entitlement";
ALTAppPermissionType const ALTAppPermissionTypePrivacy = @"privacy";
ALTAppPermissionType const ALTAppPermissionTypeBackgroundMode = @"background";
ALTAppPrivacyPermission const ALTAppPrivacyPermissionAppleMusic = @"AppleMusic";
ALTAppPrivacyPermission const ALTAppPrivacyPermissionBluetooth = @"BluetoothAlways";