]> git.saurik.com Git - apple/security.git/blob - keychain/ckks/CloudKitDependencies.h
Security-59754.41.1.tar.gz
[apple/security.git] / keychain / ckks / CloudKitDependencies.h
1 /*
2 * Copyright (c) 2016 Apple Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24 #ifndef CloudKitDependencies_h
25 #define CloudKitDependencies_h
26
27 #import <ApplePushService/ApplePushService.h>
28 #import <CloudKit/CloudKit.h>
29 #import <Foundation/Foundation.h>
30 #import <Foundation/NSDistributedNotificationCenter.h>
31
32 NS_ASSUME_NONNULL_BEGIN
33
34 /* CKModifyRecordZonesOperation */
35 @protocol CKKSModifyRecordZonesOperation <NSObject>
36 + (instancetype)alloc;
37 - (instancetype)initWithRecordZonesToSave:(nullable NSArray<CKRecordZone*>*)recordZonesToSave
38 recordZoneIDsToDelete:(nullable NSArray<CKRecordZoneID*>*)recordZoneIDsToDelete;
39
40 @property (nonatomic, strong, nullable) CKDatabase* database;
41 @property (nonatomic, copy, nullable) NSArray<CKRecordZone*>* recordZonesToSave;
42 @property (nonatomic, copy, nullable) NSArray<CKRecordZoneID*>* recordZoneIDsToDelete;
43 @property NSOperationQueuePriority queuePriority;
44 @property NSQualityOfService qualityOfService;
45 @property (nonatomic, strong, nullable) CKOperationGroup* group;
46 @property (nonatomic, copy, null_resettable) CKOperationConfiguration *configuration;
47
48 @property (nonatomic, copy, nullable) void (^modifyRecordZonesCompletionBlock)
49 (NSArray<CKRecordZone*>* _Nullable savedRecordZones, NSArray<CKRecordZoneID*>* _Nullable deletedRecordZoneIDs, NSError* _Nullable operationError);
50
51 @end
52
53 @interface CKModifyRecordZonesOperation (SecCKKSModifyRecordZonesOperation) <CKKSModifyRecordZonesOperation>
54 ;
55 @end
56
57 /* CKModifySubscriptionsOperation */
58 @protocol CKKSModifySubscriptionsOperation <NSObject>
59 + (instancetype)alloc;
60 - (instancetype)initWithSubscriptionsToSave:(nullable NSArray<CKSubscription*>*)subscriptionsToSave
61 subscriptionIDsToDelete:(nullable NSArray<NSString*>*)subscriptionIDsToDelete;
62
63 @property (nonatomic, strong, nullable) CKDatabase* database;
64 @property (nonatomic, copy, nullable) NSArray<CKSubscription*>* subscriptionsToSave;
65 @property (nonatomic, copy, nullable) NSArray<NSString*>* subscriptionIDsToDelete;
66 @property NSOperationQueuePriority queuePriority;
67 @property NSQualityOfService qualityOfService;
68 @property (nonatomic, strong, nullable) CKOperationGroup* group;
69 @property (nonatomic, copy, null_resettable) CKOperationConfiguration *configuration;
70
71 @property (nonatomic, copy, nullable) void (^modifySubscriptionsCompletionBlock)
72 (NSArray<CKSubscription*>* _Nullable savedSubscriptions, NSArray<NSString*>* _Nullable deletedSubscriptionIDs, NSError* _Nullable operationError);
73 @end
74
75 @interface CKModifySubscriptionsOperation (SecCKKSModifySubscriptionsOperation) <CKKSModifySubscriptionsOperation>
76 ;
77 @end
78
79 /* CKFetchRecordZoneChangesOperation */
80 @protocol CKKSFetchRecordZoneChangesOperation <NSObject>
81 + (instancetype)alloc;
82 - (instancetype)initWithRecordZoneIDs:(NSArray<CKRecordZoneID*>*)recordZoneIDs
83 configurationsByRecordZoneID:(nullable NSDictionary<CKRecordZoneID*, CKFetchRecordZoneChangesConfiguration*>*)configurationsByRecordZoneID;
84
85 @property (nonatomic, strong, nullable) CKDatabase *database;
86 @property (nonatomic, copy, nullable) NSArray<CKRecordZoneID*>* recordZoneIDs;
87 @property (nonatomic, copy, nullable) NSDictionary<CKRecordZoneID*, CKFetchRecordZoneChangesConfiguration*>* configurationsByRecordZoneID;
88
89 @property (nonatomic, assign) BOOL fetchAllChanges;
90 @property (nonatomic, copy, nullable) void (^recordChangedBlock)(CKRecord* record);
91 @property (nonatomic, copy, nullable) void (^recordWithIDWasDeletedBlock)(CKRecordID* recordID, NSString* recordType);
92 @property (nonatomic, copy, nullable) void (^recordZoneChangeTokensUpdatedBlock)
93 (CKRecordZoneID* recordZoneID, CKServerChangeToken* _Nullable serverChangeToken, NSData* _Nullable clientChangeTokenData);
94 @property (nonatomic, copy, nullable) void (^recordZoneFetchCompletionBlock)(CKRecordZoneID* recordZoneID,
95 CKServerChangeToken* _Nullable serverChangeToken,
96 NSData* _Nullable clientChangeTokenData,
97 BOOL moreComing,
98 NSError* _Nullable recordZoneError);
99 @property (nonatomic, copy, nullable) void (^fetchRecordZoneChangesCompletionBlock)(NSError* _Nullable operationError);
100
101 @property (nonatomic, strong, nullable) CKOperationGroup* group;
102 @property (nonatomic, copy, null_resettable) CKOperationConfiguration *configuration;
103
104 @property (nonatomic, copy) NSString *operationID;
105 @property (nonatomic, readonly, strong, nullable) CKOperationConfiguration *resolvedConfiguration;
106
107 @property (nonatomic, strong) NSString *deviceIdentifier;
108 @end
109
110 @interface CKFetchRecordZoneChangesOperation () <CKKSFetchRecordZoneChangesOperation>
111 @end
112
113 /* CKFetchRecordsOperation */
114 @protocol CKKSFetchRecordsOperation <NSObject>
115 + (instancetype)alloc;
116 - (instancetype)init;
117 - (instancetype)initWithRecordIDs:(NSArray<CKRecordID*>*)recordIDs;
118
119 @property (nonatomic, strong, nullable) CKDatabase *database;
120 @property (nonatomic, copy, nullable) NSArray<CKRecordID*>* recordIDs;
121 @property (nonatomic, copy, nullable) NSArray<NSString*>* desiredKeys;
122 @property (nonatomic, copy, nullable) CKOperationConfiguration* configuration;
123 @property (nonatomic, copy, nullable) void (^perRecordProgressBlock)(CKRecordID* recordID, double progress);
124 @property (nonatomic, copy, nullable) void (^perRecordCompletionBlock)
125 (CKRecord* _Nullable record, CKRecordID* _Nullable recordID, NSError* _Nullable error);
126 @property (nonatomic, copy, nullable) void (^fetchRecordsCompletionBlock)
127 (NSDictionary<CKRecordID*, CKRecord*>* _Nullable recordsByRecordID, NSError* _Nullable operationError);
128 @end
129
130 @interface CKFetchRecordsOperation () <CKKSFetchRecordsOperation>
131 @end
132
133 /* CKQueryOperation */
134
135 @protocol CKKSQueryOperation <NSObject>
136 + (instancetype)alloc;
137 - (instancetype)initWithQuery:(CKQuery*)query;
138 //Not implemented: - (instancetype)initWithCursor:(CKQueryCursor *)cursor;
139
140 @property (nonatomic, copy, nullable) CKQuery* query;
141 @property (nonatomic, copy, nullable) CKQueryCursor* cursor;
142
143 @property (nonatomic, copy, nullable) CKRecordZoneID* zoneID;
144 @property (nonatomic, assign) NSUInteger resultsLimit;
145 @property (nonatomic, copy, nullable) NSArray<NSString*>* desiredKeys;
146
147 @property (nonatomic, copy, nullable) void (^recordFetchedBlock)(CKRecord* record);
148 @property (nonatomic, copy, nullable) void (^queryCompletionBlock)(CKQueryCursor* _Nullable cursor, NSError* _Nullable operationError);
149 @end
150
151 @interface CKQueryOperation () <CKKSQueryOperation>
152 @end
153
154 /* APSConnection */
155 @protocol OctagonAPSConnection <NSObject>
156 @property NSArray<NSString*>* enabledTopics;
157 @property NSArray<NSString*>* opportunisticTopics;
158 @property NSArray<NSString*>* darkWakeTopics;
159
160 + (instancetype)alloc;
161 - (id)initWithEnvironmentName:(NSString*)environmentName
162 namedDelegatePort:(NSString*)namedDelegatePort
163 queue:(dispatch_queue_t)queue;
164
165
166 @property (nonatomic, readwrite, assign) id<APSConnectionDelegate> delegate;
167 @end
168
169 @interface APSConnection (SecOctagonAPSConnection) <OctagonAPSConnection>
170 @end
171
172 /* NSNotificationCenter */
173 @protocol CKKSNSNotificationCenter <NSObject>
174 + (instancetype)defaultCenter;
175 - (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject;
176 - (void)removeObserver:(id)observer;
177 @end
178 @interface NSNotificationCenter (CKKSMock) <CKKSNSNotificationCenter>
179 @end
180
181 @protocol CKKSNSDistributedNotificationCenter <NSObject>
182 + (instancetype)defaultCenter;
183 - (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject;
184 - (void)removeObserver:(id)observer;
185 - (void)postNotificationName:(NSNotificationName)name object:(nullable NSString *)object userInfo:(nullable NSDictionary *)userInfo options:(NSDistributedNotificationOptions)options;
186 @end
187
188 @interface NSDistributedNotificationCenter (CKKSMock) <CKKSNSDistributedNotificationCenter>
189 @end
190
191 /* Since CKDatabase doesn't share any types with NSOperationQueue, tell the type system about addOperation */
192 @protocol CKKSOperationQueue <NSObject>
193 - (void)addOperation:(NSOperation*)operation;
194 @end
195
196 @interface CKDatabase () <CKKSOperationQueue>
197 @end
198
199 @interface NSOperationQueue () <CKKSOperationQueue>
200 @end
201
202 NS_ASSUME_NONNULL_END
203
204 #endif /* CloudKitDependencies_h */