1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_UPDATER_APP_SERVER_MAC_UPDATE_SERVICE_WRAPPERS_H_
6 #define CHROME_UPDATER_APP_SERVER_MAC_UPDATE_SERVICE_WRAPPERS_H_
7 
8 #import <Foundation/Foundation.h>
9 
10 #include "base/sequenced_task_runner.h"
11 #import "chrome/updater/app/server/mac/service_protocol.h"
12 #include "chrome/updater/update_service.h"
13 
14 using StateChangeCallback =
15     base::RepeatingCallback<void(updater::UpdateService::UpdateState)>;
16 
17 @interface CRUUpdateStateObserver : NSObject <CRUUpdateStateObserving>
18 
19 @property(readonly, nonatomic) StateChangeCallback callback;
20 
21 - (instancetype)initWithRepeatingCallback:(StateChangeCallback)callback
22                            callbackRunner:
23                                (scoped_refptr<base::SequencedTaskRunner>)
24                                    callbackRunner;
25 
26 @end
27 
28 @interface CRUUpdateStateStateWrapper : NSObject <NSSecureCoding>
29 
30 @property(readonly, nonatomic)
31     updater::UpdateService::UpdateState::State updateStateState;
32 
33 - (instancetype)initWithUpdateStateState:
34     (updater::UpdateService::UpdateState::State)updateStateState;
35 
36 @end
37 
38 @interface CRUPriorityWrapper : NSObject <NSSecureCoding>
39 
40 @property(readonly, nonatomic) updater::UpdateService::Priority priority;
41 
42 - (instancetype)initWithPriority:(updater::UpdateService::Priority)priority;
43 
44 @end
45 
46 @interface CRUErrorCategoryWrapper : NSObject <NSSecureCoding>
47 
48 @property(readonly, nonatomic)
49     updater::UpdateService::ErrorCategory errorCategory;
50 
51 - (instancetype)initWithErrorCategory:
52     (updater::UpdateService::ErrorCategory)errorCategory;
53 
54 @end
55 
56 @interface CRUUpdateStateWrapper : NSObject <NSSecureCoding>
57 
58 @property(readonly, nonatomic) updater::UpdateService::UpdateState updateState;
59 
60 @property(readonly, nonatomic) NSString* appId;
61 @property(readonly, nonatomic) CRUUpdateStateStateWrapper* state;
62 @property(readonly, nonatomic) NSString* version;
63 @property(readonly, nonatomic) int64_t downloadedBytes;
64 @property(readonly, nonatomic) int64_t totalBytes;
65 @property(readonly, nonatomic) int installProgress;
66 @property(readonly, nonatomic) CRUErrorCategoryWrapper* errorCategory;
67 @property(readonly, nonatomic) int errorCode;
68 @property(readonly, nonatomic) int extraCode;
69 
70 - (instancetype)initWithAppId:(NSString*)appId
71                         state:(CRUUpdateStateStateWrapper*)state
72                       version:(NSString*)version
73               downloadedBytes:(int64_t)downloadedBytes
74                    totalBytes:(int64_t)totalBytes
75               installProgress:(int)installProgress
76                 errorCategory:(CRUErrorCategoryWrapper*)errorCategory
77                     errorCode:(int)errorCode
78                     extraCode:(int)extraCode;
79 
80 @end
81 
82 #endif  // CHROME_UPDATER_APP_SERVER_MAC_UPDATE_SERVICE_WRAPPERS_H_
83