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