]> git.saurik.com Git - apple/security.git/blob - keychain/ckks/CloudKitDependencies.h
Security-58286.51.6.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
31 NS_ASSUME_NONNULL_BEGIN
32
33 /* CKModifyRecordZonesOperation */
34 @protocol CKKSModifyRecordZonesOperation <NSObject>
35 + (instancetype)alloc;
36 - (instancetype)initWithRecordZonesToSave:(nullable NSArray<CKRecordZone*>*)recordZonesToSave
37 recordZoneIDsToDelete:(nullable NSArray<CKRecordZoneID*>*)recordZoneIDsToDelete;
38
39 @property (nonatomic, strong, nullable) CKDatabase* database;
40 @property (nonatomic, copy, nullable) NSArray<CKRecordZone*>* recordZonesToSave;
41 @property (nonatomic, copy, nullable) NSArray<CKRecordZoneID*>* recordZoneIDsToDelete;
42 @property NSOperationQueuePriority queuePriority;
43 @property NSQualityOfService qualityOfService;
44 @property (nonatomic, strong, nullable) CKOperationGroup* group;
45
46 @property (nonatomic, copy, nullable) void (^modifyRecordZonesCompletionBlock)
47 (NSArray<CKRecordZone*>* _Nullable savedRecordZones, NSArray<CKRecordZoneID*>* _Nullable deletedRecordZoneIDs, NSError* _Nullable operationError);
48
49 @end
50
51 @interface CKModifyRecordZonesOperation (SecCKKSModifyRecordZonesOperation) <CKKSModifyRecordZonesOperation>
52 ;
53 @end
54
55 /* CKModifySubscriptionsOperation */
56 @protocol CKKSModifySubscriptionsOperation <NSObject>
57 + (instancetype)alloc;
58 - (instancetype)initWithSubscriptionsToSave:(nullable NSArray<CKSubscription*>*)subscriptionsToSave
59 subscriptionIDsToDelete:(nullable NSArray<NSString*>*)subscriptionIDsToDelete;
60
61 @property (nonatomic, strong, nullable) CKDatabase* database;
62 @property (nonatomic, copy, nullable) NSArray<CKSubscription*>* subscriptionsToSave;
63 @property (nonatomic, copy, nullable) NSArray<NSString*>* subscriptionIDsToDelete;
64 @property NSOperationQueuePriority queuePriority;
65 @property NSQualityOfService qualityOfService;
66 @property (nonatomic, strong, nullable) CKOperationGroup* group;
67
68 @property (nonatomic, copy, nullable) void (^modifySubscriptionsCompletionBlock)
69 (NSArray<CKSubscription*>* _Nullable savedSubscriptions, NSArray<NSString*>* _Nullable deletedSubscriptionIDs, NSError* _Nullable operationError);
70 @end
71
72 @interface CKModifySubscriptionsOperation (SecCKKSModifySubscriptionsOperation) <CKKSModifySubscriptionsOperation>
73 ;
74 @end
75
76 /* CKFetchRecordZoneChangesOperation */
77 @protocol CKKSFetchRecordZoneChangesOperation <NSObject>
78 + (instancetype)alloc;
79 - (instancetype)initWithRecordZoneIDs:(NSArray<CKRecordZoneID*>*)recordZoneIDs
80 optionsByRecordZoneID:(nullable NSDictionary<CKRecordZoneID*, CKFetchRecordZoneChangesOptions*>*)optionsByRecordZoneID;
81
82 @property (nonatomic, copy, nullable) NSArray<CKRecordZoneID*>* recordZoneIDs;
83 @property (nonatomic, copy, nullable) NSDictionary<CKRecordZoneID*, CKFetchRecordZoneChangesOptions*>* optionsByRecordZoneID;
84
85 @property (nonatomic, assign) BOOL fetchAllChanges;
86 @property (nonatomic, copy, nullable) void (^recordChangedBlock)(CKRecord* record);
87 @property (nonatomic, copy, nullable) void (^recordWithIDWasDeletedBlock)(CKRecordID* recordID, NSString* recordType);
88 @property (nonatomic, copy, nullable) void (^recordZoneChangeTokensUpdatedBlock)
89 (CKRecordZoneID* recordZoneID, CKServerChangeToken* _Nullable serverChangeToken, NSData* _Nullable clientChangeTokenData);
90 @property (nonatomic, copy, nullable) void (^recordZoneFetchCompletionBlock)(CKRecordZoneID* recordZoneID,
91 CKServerChangeToken* _Nullable serverChangeToken,
92 NSData* _Nullable clientChangeTokenData,
93 BOOL moreComing,
94 NSError* _Nullable recordZoneError);
95 @property (nonatomic, copy, nullable) void (^fetchRecordZoneChangesCompletionBlock)(NSError* _Nullable operationError);
96
97 @property (nonatomic, strong, nullable) CKOperationGroup* group;
98 @end
99
100 @interface CKFetchRecordZoneChangesOperation () <CKKSFetchRecordZoneChangesOperation>
101 ;
102 @end
103
104 /* CKFetchRecordsOperation */
105 @protocol CKKSFetchRecordsOperation <NSObject>
106 + (instancetype)alloc;
107 - (instancetype)init;
108 - (instancetype)initWithRecordIDs:(NSArray<CKRecordID*>*)recordIDs;
109
110 @property (nonatomic, copy, nullable) NSArray<CKRecordID*>* recordIDs;
111 @property (nonatomic, copy, nullable) NSArray<NSString*>* desiredKeys;
112 @property (nonatomic, copy, nullable) CKOperationConfiguration* configuration;
113 @property (nonatomic, copy, nullable) void (^perRecordProgressBlock)(CKRecordID* recordID, double progress);
114 @property (nonatomic, copy, nullable) void (^perRecordCompletionBlock)
115 (CKRecord* _Nullable record, CKRecordID* _Nullable recordID, NSError* _Nullable error);
116 @property (nonatomic, copy, nullable) void (^fetchRecordsCompletionBlock)
117 (NSDictionary<CKRecordID*, CKRecord*>* _Nullable recordsByRecordID, NSError* _Nullable operationError);
118 @end
119
120 @interface CKFetchRecordsOperation () <CKKSFetchRecordsOperation>
121 @end
122
123 /* CKQueryOperation */
124
125 @protocol CKKSQueryOperation <NSObject>
126 + (instancetype)alloc;
127 - (instancetype)initWithQuery:(CKQuery*)query;
128 //Not implemented: - (instancetype)initWithCursor:(CKQueryCursor *)cursor;
129
130 @property (nonatomic, copy, nullable) CKQuery* query;
131 @property (nonatomic, copy, nullable) CKQueryCursor* cursor;
132
133 @property (nonatomic, copy, nullable) CKRecordZoneID* zoneID;
134 @property (nonatomic, assign) NSUInteger resultsLimit;
135 @property (nonatomic, copy, nullable) NSArray<NSString*>* desiredKeys;
136
137 @property (nonatomic, copy, nullable) void (^recordFetchedBlock)(CKRecord* record);
138 @property (nonatomic, copy, nullable) void (^queryCompletionBlock)(CKQueryCursor* _Nullable cursor, NSError* _Nullable operationError);
139 @end
140
141 @interface CKQueryOperation () <CKKSQueryOperation>
142 @end
143
144 /* APSConnection */
145 @protocol CKKSAPSConnection <NSObject>
146 + (instancetype)alloc;
147 - (id)initWithEnvironmentName:(NSString*)environmentName
148 namedDelegatePort:(NSString*)namedDelegatePort
149 queue:(dispatch_queue_t)queue;
150
151 - (void)setEnabledTopics:(NSArray*)enabledTopics;
152
153 @property (nonatomic, readwrite, assign) id<APSConnectionDelegate> delegate;
154 @end
155
156 @interface APSConnection (SecCKKSAPSConnection) <CKKSAPSConnection>
157 @end
158
159 /* NSNotificationCenter */
160 @protocol CKKSNSNotificationCenter <NSObject>
161 + (instancetype)defaultCenter;
162 - (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject;
163 - (void)removeObserver:(id)observer;
164 @end
165 @interface NSNotificationCenter () <CKKSNSNotificationCenter>
166 @end
167
168 /* Since CKDatabase doesn't share any types with NSOperationQueue, tell the type system about addOperation */
169 @protocol CKKSOperationQueue <NSObject>
170 - (void)addOperation:(NSOperation*)operation;
171 @end
172
173 @interface CKDatabase () <CKKSOperationQueue>
174 @end
175
176 @interface NSOperationQueue () <CKKSOperationQueue>
177 @end
178
179 NS_ASSUME_NONNULL_END
180
181 #endif /* CloudKitDependencies_h */