Skip to content

Commit 45a98f7

Browse files
committed
Extract SFHFKeychainUtils in a dedicated Swift package
We need it in a dedicated package because the Objective-C implementation does not use ARC. Therefore, we need to use the `-fno-objc-arc` compiler setting. But such a setting should be applied sparingly so instead of blanket using it in an existing Objective-C package like WordPressSharedObjC, we use it surgically just for this file.
1 parent 5703898 commit 45a98f7

25 files changed

+34
-50
lines changed

Modules/Package.swift

+12
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ let package = Package(
1111
.library(name: "AsyncImageKit", targets: ["AsyncImageKit"]),
1212
.library(name: "DesignSystem", targets: ["DesignSystem"]),
1313
.library(name: "JetpackStatsWidgetsCore", targets: ["JetpackStatsWidgetsCore"]),
14+
.library(name: "SFHFKeychainUtils", targets: ["SFHFKeychainUtils"]),
1415
.library(name: "WordPressData", targets: ["WordPressData"]),
1516
.library(name: "WordPressFlux", targets: ["WordPressFlux"]),
1617
.library(name: "WordPressShared", targets: ["WordPressShared"]),
@@ -60,6 +61,12 @@ let package = Package(
6061
]),
6162
.target(name: "DesignSystem", swiftSettings: [.swiftLanguageMode(.v5)]),
6263
.target(name: "JetpackStatsWidgetsCore", swiftSettings: [.swiftLanguageMode(.v5)]),
64+
// SFHFKeychainUtils is an old Objective-C keychain wrapper.
65+
// The implementatoin predates ARC, hence the dedicated target with ARC disabled, for the time being.
66+
.target(
67+
name: "SFHFKeychainUtils",
68+
cSettings: [.unsafeFlags(["-fno-objc-arc"])]
69+
),
6370
.target(name: "UITestsFoundation", dependencies: [
6471
.product(name: "ScreenObject", package: "ScreenObject"),
6572
.product(name: "XCUITestHelpers", package: "ScreenObject"),
@@ -146,6 +153,7 @@ enum XcodeSupport {
146153
]
147154

148155
let shareAndDraftExtensionsDependencies: [Target.Dependency] = [
156+
"SFHFKeychainUtils",
149157
"WordPressShared",
150158
"WordPressUI",
151159
.product(name: "CocoaLumberjackSwift", package: "CocoaLumberjack"),
@@ -168,6 +176,7 @@ enum XcodeSupport {
168176
.xcodeTarget("XcodeTarget_App", dependencies: [
169177
"DesignSystem",
170178
"JetpackStatsWidgetsCore",
179+
"SFHFKeychainUtils",
171180
"WordPressData",
172181
"WordPressFlux",
173182
"WordPressShared",
@@ -206,6 +215,7 @@ enum XcodeSupport {
206215
.product(name: "WordPressEditor", package: "AztecEditor-iOS"),
207216
]),
208217
.xcodeTarget("XcodeTarget_WordPressTests", dependencies: testDependencies + [
218+
"SFHFKeychainUtils",
209219
"WordPressShared",
210220
.product(name: "Gravatar", package: "Gravatar-SDK-iOS"),
211221
.product(name: "Nimble", package: "Nimble"),
@@ -216,10 +226,12 @@ enum XcodeSupport {
216226
.xcodeTarget("XcodeTarget_ShareExtension", dependencies: shareAndDraftExtensionsDependencies),
217227
.xcodeTarget("XcodeTarget_DraftActionExtension", dependencies: shareAndDraftExtensionsDependencies),
218228
.xcodeTarget("XcodeTarget_NotificationServiceExtension", dependencies: [
229+
"SFHFKeychainUtils",
219230
"WordPressShared",
220231
]),
221232
.xcodeTarget("XcodeTarget_StatsWidget", dependencies: [
222233
"JetpackStatsWidgetsCore",
234+
"SFHFKeychainUtils",
223235
"WordPressShared",
224236
"WordPressUI",
225237
.product(name: "CocoaLumberjackSwift", package: "CocoaLumberjack"),

WordPress/Classes/Utility/SFHFKeychainUtils.h Modules/Sources/SFHFKeychainUtils/include/SFHFKeychainUtils.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
// OTHER DEALINGS IN THE SOFTWARE.
2828
//
2929

30-
#import <UIKit/UIKit.h>
30+
#import <Foundation/Foundation.h>
3131

3232

3333
@interface SFHFKeychainUtils : NSObject {
@@ -68,4 +68,4 @@
6868
+ (NSArray<NSDictionary<NSString *, NSString *> *> *)getAllPasswordsForAccessGroup:(NSString *)accessGroup
6969
error:(NSError **)error;
7070

71-
@end
71+
@end

WordPress/Classes/Models/Blog/Blog.m

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#import "Constants.h"
66
#import "WPUserAgent.h"
77
#import "WordPress-Swift.h"
8+
@import SFHFKeychainUtils;
89

910
@import NSObject_SafeExpectations;
1011
@import NSURL_IDN;

WordPress/Classes/Models/WPAccount.m

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@import SFHFKeychainUtils;
12
#import "WPAccount.h"
23
#import "WordPress-Swift.h"
34

WordPress/Classes/Services/CredentialsService.swift

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import SFHFKeychainUtils
2+
13
protocol CredentialsProvider {
24
func getPassword(username: String, service: String) -> String?
35
}

WordPress/Classes/Services/NotificationSupportService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import SFHFKeychainUtils
23

34
@objc
45
open class NotificationSupportService: NSObject {

WordPress/Classes/Services/ShareExtensionService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import SFHFKeychainUtils
23

34
@objc
45
open class ShareExtensionService: NSObject {

WordPress/Classes/Stores/StatsWidgetsStore.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import JetpackStatsWidgetsCore
2+
import SFHFKeychainUtils
23
import WidgetKit
34

45
class StatsWidgetsStore {

WordPress/Classes/System/WordPress-Bridging-Header.h

-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#import "SFHFKeychainUtils.h"
2-
31
// WordPress Module
42

53
#import "ActivityLogViewController.h"
@@ -55,7 +53,6 @@
5553
#import "SettingTableViewCell.h"
5654
#import "SettingsTextViewController.h"
5755
#import "SharingViewController.h"
58-
#import "SFHFKeychainUtils.h"
5956
#import "SiteSettingsViewController.h"
6057
#import "SourcePostAttribution.h"
6158
#import "StatsViewController.h"

WordPress/Classes/System/WordPressAppDelegate.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import SFHFKeychainUtils
12
import UIKit
23
import CocoaLumberjackSwift
34
import Reachability

WordPress/Classes/Utility/KeychainUtils.swift

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import SFHFKeychainUtils
2+
13
@objcMembers
24
class KeychainUtils: NSObject {
35

WordPress/Classes/Utility/Migrations/10-11/BlogToAccount.m

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
@import NSObject_SafeExpectations;
77
@import NSURL_IDN;
8+
@import SFHFKeychainUtils;
89

910
@implementation BlogToAccount {
1011
NSString *_defaultWpcomUsername;

WordPress/Classes/Utility/Migrations/10-11/BlogToJetpackAccount.m

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#import "WordPress-Swift.h"
44

55
@import NSObject_SafeExpectations;
6+
@import SFHFKeychainUtils;
67

78
static NSString * const BlogJetpackKeychainPrefix = @"jetpackblog-";
89

WordPress/Classes/Utility/Migrations/32-33/BlogToBlog32to33.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import SFHFKeychainUtils
12
import UIKit
23

34
class BlogToBlog32to33: NSEntityMigrationPolicy {

WordPress/Classes/ViewRelated/NUX/Helpers/WordPressAuthenticationManager.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Foundation
2+
import SFHFKeychainUtils
23
import WordPressAuthenticator
34
import Gridicons
45
import UIKit

WordPress/JetpackStatsWidgets/Remote service/StatsWidgetsService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import SFHFKeychainUtils
12
import WordPressKit
23
import JetpackStatsWidgetsCore
34
import WordPressShared
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
#import "SFHFKeychainUtils.h"
21
#import "Constants.h"

WordPress/WordPress.xcodeproj/project.pbxproj

-38
Original file line numberDiff line numberDiff line change
@@ -3297,9 +3297,6 @@
32973297
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
32983298
24CE68AE2CD3375300C7B37D /* Exceptions for "Classes" folder in "WordPress" target */ = {
32993299
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3300-
additionalCompilerFlagsByRelativePath = {
3301-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3302-
};
33033300
membershipExceptions = (
33043301
"Utility/Migrations/20-21/SafeReaderTopicToReaderTopic.m",
33053302
"ViewRelated/Me/All Domains/Coordinators/AllDomainsAddDomainCoordinator.swift",
@@ -3314,9 +3311,6 @@
33143311
};
33153312
24CE68AF2CD3375300C7B37D /* Exceptions for "Classes" folder in "WordPressShareExtension" target */ = {
33163313
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3317-
additionalCompilerFlagsByRelativePath = {
3318-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3319-
};
33203314
membershipExceptions = (
33213315
"Extensions/Colors and Styles/WPStyleGuide+ApplicationStyles.swift",
33223316
"Extensions/Colors and Styles/WPStyleGuide+Gridicon.swift",
@@ -3337,7 +3331,6 @@
33373331
Utility/BuildInformation/FeatureFlagRolloutStore.swift,
33383332
Utility/KeychainUtils.swift,
33393333
Utility/Logging/CocoaLumberjack.swift,
3340-
Utility/SFHFKeychainUtils.m,
33413334
ViewRelated/Aztec/Extensions/FormatBarItemProviders.swift,
33423335
"ViewRelated/Aztec/Extensions/Header+WordPress.swift",
33433336
"ViewRelated/Aztec/Extensions/TextList+WordPress.swift",
@@ -3351,9 +3344,6 @@
33513344
};
33523345
24CE68B02CD3375300C7B37D /* Exceptions for "Classes" folder in "WordPressDraftActionExtension" target */ = {
33533346
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3354-
additionalCompilerFlagsByRelativePath = {
3355-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3356-
};
33573347
membershipExceptions = (
33583348
"Extensions/Colors and Styles/WPStyleGuide+ApplicationStyles.swift",
33593349
"Extensions/Colors and Styles/WPStyleGuide+Gridicon.swift",
@@ -3374,7 +3364,6 @@
33743364
Utility/BuildInformation/FeatureFlagRolloutStore.swift,
33753365
Utility/KeychainUtils.swift,
33763366
Utility/Logging/CocoaLumberjack.swift,
3377-
Utility/SFHFKeychainUtils.m,
33783367
ViewRelated/Aztec/Extensions/FormatBarItemProviders.swift,
33793368
"ViewRelated/Aztec/Extensions/Header+WordPress.swift",
33803369
"ViewRelated/Aztec/Extensions/TextList+WordPress.swift",
@@ -3388,9 +3377,6 @@
33883377
};
33893378
24CE68B22CD3375300C7B37D /* Exceptions for "Classes" folder in "WordPressNotificationServiceExtension" target */ = {
33903379
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3391-
additionalCompilerFlagsByRelativePath = {
3392-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3393-
};
33943380
membershipExceptions = (
33953381
"Extensions/String+Helpers.swift",
33963382
"Extensions/UIImage+Extensions.swift",
@@ -3416,7 +3402,6 @@
34163402
Utility/FormattableContent/FormattableRangesFactory.swift,
34173403
Utility/FormattableContent/FormattableTextContent.swift,
34183404
Utility/KeychainUtils.swift,
3419-
Utility/SFHFKeychainUtils.m,
34203405
ViewRelated/Notifications/FormattableContent/FormattableCommentContent.swift,
34213406
ViewRelated/Notifications/FormattableContent/FormattableUserContent.swift,
34223407
ViewRelated/Notifications/FormattableContent/Notifiable.swift,
@@ -3446,9 +3431,6 @@
34463431
};
34473432
24CE68B52CD3375300C7B37D /* Exceptions for "Classes" folder in "Jetpack" target */ = {
34483433
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3449-
additionalCompilerFlagsByRelativePath = {
3450-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3451-
};
34523434
membershipExceptions = (
34533435
"Utility/App Configuration/AppConfiguration.swift",
34543436
"Utility/App Configuration/AppConstants.swift",
@@ -3460,9 +3442,6 @@
34603442
};
34613443
24CE68B62CD3375300C7B37D /* Exceptions for "Classes" folder in "JetpackShareExtension" target */ = {
34623444
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3463-
additionalCompilerFlagsByRelativePath = {
3464-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3465-
};
34663445
membershipExceptions = (
34673446
"Extensions/Colors and Styles/WPStyleGuide+ApplicationStyles.swift",
34683447
"Extensions/Colors and Styles/WPStyleGuide+Gridicon.swift",
@@ -3481,7 +3460,6 @@
34813460
Utility/BuildInformation/FeatureFlagRolloutStore.swift,
34823461
Utility/KeychainUtils.swift,
34833462
Utility/Logging/CocoaLumberjack.swift,
3484-
Utility/SFHFKeychainUtils.m,
34853463
ViewRelated/Aztec/Extensions/FormatBarItemProviders.swift,
34863464
"ViewRelated/Aztec/Extensions/Header+WordPress.swift",
34873465
"ViewRelated/Aztec/Extensions/TextList+WordPress.swift",
@@ -3495,9 +3473,6 @@
34953473
};
34963474
24CE68B72CD3375300C7B37D /* Exceptions for "Classes" folder in "JetpackDraftActionExtension" target */ = {
34973475
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3498-
additionalCompilerFlagsByRelativePath = {
3499-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3500-
};
35013476
membershipExceptions = (
35023477
"Extensions/Colors and Styles/WPStyleGuide+ApplicationStyles.swift",
35033478
"Extensions/Colors and Styles/WPStyleGuide+Gridicon.swift",
@@ -3516,7 +3491,6 @@
35163491
Utility/BuildInformation/FeatureFlagRolloutStore.swift,
35173492
Utility/KeychainUtils.swift,
35183493
Utility/Logging/CocoaLumberjack.swift,
3519-
Utility/SFHFKeychainUtils.m,
35203494
ViewRelated/Aztec/Extensions/FormatBarItemProviders.swift,
35213495
"ViewRelated/Aztec/Extensions/Header+WordPress.swift",
35223496
"ViewRelated/Aztec/Extensions/TextList+WordPress.swift",
@@ -3530,9 +3504,6 @@
35303504
};
35313505
24CE68B82CD3375300C7B37D /* Exceptions for "Classes" folder in "JetpackNotificationServiceExtension" target */ = {
35323506
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3533-
additionalCompilerFlagsByRelativePath = {
3534-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3535-
};
35363507
membershipExceptions = (
35373508
"Extensions/String+Helpers.swift",
35383509
"Extensions/UIImage+Extensions.swift",
@@ -3556,7 +3527,6 @@
35563527
Utility/FormattableContent/FormattableRangesFactory.swift,
35573528
Utility/FormattableContent/FormattableTextContent.swift,
35583529
Utility/KeychainUtils.swift,
3559-
Utility/SFHFKeychainUtils.m,
35603530
ViewRelated/Notifications/FormattableContent/FormattableCommentContent.swift,
35613531
ViewRelated/Notifications/FormattableContent/FormattableUserContent.swift,
35623532
ViewRelated/Notifications/FormattableContent/Notifiable.swift,
@@ -3571,9 +3541,6 @@
35713541
};
35723542
24CE68B92CD3375300C7B37D /* Exceptions for "Classes" folder in "JetpackStatsWidgets" target */ = {
35733543
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3574-
additionalCompilerFlagsByRelativePath = {
3575-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3576-
};
35773544
membershipExceptions = (
35783545
Services/KeyValueDatabase.swift,
35793546
System/Constants/Constants.m,
@@ -3586,21 +3553,16 @@
35863553
Utility/BuildInformation/FeatureFlagRolloutStore.swift,
35873554
Utility/KeychainUtils.swift,
35883555
Utility/Logging/CocoaLumberjack.swift,
3589-
Utility/SFHFKeychainUtils.m,
35903556
"ViewRelated/Stats/Extensions/Double+Stats.swift",
35913557
"ViewRelated/Stats/Extensions/NumberFormatter+Stats.swift",
35923558
);
35933559
target = 0107E0B128F97D5000DE87DB /* JetpackStatsWidgets */;
35943560
};
35953561
24CE68BA2CD3375300C7B37D /* Exceptions for "Classes" folder in "JetpackIntents" target */ = {
35963562
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
3597-
additionalCompilerFlagsByRelativePath = {
3598-
Utility/SFHFKeychainUtils.m = "-fno-objc-arc";
3599-
};
36003563
membershipExceptions = (
36013564
System/Constants/Constants.m,
36023565
Utility/Logging/CocoaLumberjack.swift,
3603-
Utility/SFHFKeychainUtils.m,
36043566
);
36053567
target = 0107E13828FE9DB200DE87DB /* JetpackIntents */;
36063568
};

WordPress/WordPressDraftActionExtension/WordPressDraftActionExtension-Bridging-Header.h

-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@
22
#import "Constants.h"
33

44
// Shared Helpers
5-
#import "SFHFKeychainUtils.h"
65
#import "TextBundleWrapper.h"

WordPress/WordPressNotificationServiceExtension/Sources/NotificationService.swift

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import SFHFKeychainUtils
12
import UserNotifications
23

34
import WordPressKit
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
11
// Main App Helpers
22
#import "Constants.h"
3-
4-
// Shared Helpers
5-
#import "SFHFKeychainUtils.h"

WordPress/WordPressShareExtension/WordPressShare-Bridging-Header.h

-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@
22
#import "Constants.h"
33

44
// Shared Helpers
5-
#import "SFHFKeychainUtils.h"
65
#import "TextBundleWrapper.h"

WordPress/WordPressTest/KeychainTest.m

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
// TODO: Port to yet to create SFHFKeychainUtils test package
12
#import <UIKit/UIKit.h>
23
#import <XCTest/XCTest.h>
3-
#import "SFHFKeychainUtils.h"
4+
@import SFHFKeychainUtils;
45

56
@interface KeychainTest : XCTestCase
67
{

WordPress/WordPressTest/KeychainUtilsTests.swift

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// TODO: Port to yet to create SFHFKeychainUtils test package
2+
import SFHFKeychainUtils
13
import XCTest
24
@testable import WordPress
35

0 commit comments

Comments
 (0)