• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef UPDATE_CLIENT_H
17 #define UPDATE_CLIENT_H
18 
19 #include "check_result.h"
20 #include "current_version_info.h"
21 #include "iupdater.h"
22 #include "new_version_info.h"
23 #include "progress.h"
24 #include "task_info.h"
25 #include "version_description_info.h"
26 
27 namespace OHOS::UpdateEngine {
28 class UpdateClient : public IUpdater {
29 public:
30     class Napi {
31     public:
32         static constexpr const char *FUNCTION_ON = "on";
33         static constexpr const char *FUNCTION_OFF = "off";
34 
35         static napi_value NapiOn(napi_env env, napi_callback_info info);
36         static napi_value NapiOff(napi_env env, napi_callback_info info);
37     };
38 
39     UpdateClient(napi_env env, napi_value thisVar);
40     ~UpdateClient() override;
41 
42     // Obtain the online updater engine and return it through the sync API.
43     napi_value GetOnlineUpdater(napi_env env, napi_callback_info info);
44 
45     // Asynchronous API
46     napi_value CheckNewVersion(napi_env env, napi_callback_info info);
47     napi_value SetUpgradePolicy(napi_env env, napi_callback_info info);
48     napi_value GetUpgradePolicy(napi_env env, napi_callback_info info);
49     napi_value GetNewVersionInfo(napi_env env, napi_callback_info info);
50     napi_value GetNewVersionDescription(napi_env env, napi_callback_info info);
51     napi_value GetCurrentVersionInfo(napi_env env, napi_callback_info info);
52     napi_value GetCurrentVersionDescription(napi_env env, napi_callback_info info);
53     napi_value GetTaskInfo(napi_env env, napi_callback_info info);
54 
55     // Event mode, which is used to send the result to the JS.
56     napi_value CancelUpgrade(napi_env env, napi_callback_info info);
57     napi_value Download(napi_env env, napi_callback_info info);
58     napi_value ResumeDownload(napi_env env, napi_callback_info info);
59     napi_value PauseDownload(napi_env env, napi_callback_info info);
60     napi_value Upgrade(napi_env env, napi_callback_info info);
61     napi_value ClearError(napi_env env, napi_callback_info info);
62     napi_value TerminateUpgrade(napi_env env, napi_callback_info info);
63 
64     void GetUpdateResult(uint32_t type, UpdateResult &result) override;
65 
66     // Notify the session.
67     void NotifyDownloadProgress(const BusinessError &businessError, const Progress &progress);
68     void NotifyUpgradeProgresss(const BusinessError &businessError, const Progress &progress);
69 
70     #ifdef UPDATER_UT
GetUpdateSession(uint32_t sessId)71     UpdateSession *GetUpdateSession(uint32_t sessId)
72     {
73         std::lock_guard<std::mutex> guard(sessionMutex_);
74         auto iter = sessions_.find(sessId);
75         if (iter != sessions_.end()) {
76             return iter->second.get();
77         }
78         return nullptr;
79     }
80     #endif
81 
82 protected:
83     void RegisterCallback() override;
84     void UnRegisterCallback() override;
85 
86 private:
87     template <typename T>
88     ClientStatus ParseUpgOptions(napi_env env, napi_callback_info info, VersionDigestInfo &versionDigestInfo,
89         T &options);
90     template <typename T>
91     ClientStatus ParseUpgOptions(napi_env env, napi_callback_info info, T &options);
92 
93 private:
94     std::mutex sessionMutex_;
95     bool isInit_ = false;
96     std::string upgradeFile_;
97     std::string certsFile_;
98     UpgradeInfo upgradeInfo_ {};
99     UpgradePolicy upgradePolicy_ {};
100     Progress progress_ {};
101     Progress verifyProgress_ {};
102     CheckResult checkResult_ {};
103     NewVersionInfo newVersionInfo_ {};
104     VersionDescriptionInfo newVersionDescriptionInfo_ {};
105     CurrentVersionInfo currentVersionInfo_ {};
106     VersionDescriptionInfo currentVersionDescriptionInfo_ {};
107     TaskInfo taskInfo_ {};
108     VersionDigestInfo versionDigestInfo_ {};
109     DescriptionOptions descriptionOptions_ {};
110     UpgradeOptions upgradeOptions_;
111     ClearOptions clearOptions_ {};
112     DownloadOptions downloadOptions_ {};
113     ResumeDownloadOptions resumeDownloadOptions_ {};
114     PauseDownloadOptions pauseDownloadOptions_ {};
115 };
116 
117 #ifdef UPDATER_UT
118 napi_value UpdateClientInit(napi_env env, napi_value exports);
119 #endif
120 } // namespace OHOS::UpdateEngine
121 #endif // UPDATE_CLIENT_H