1 /* 2 * Copyright (c) 2021-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 OS_ACCOUNT_INTERFACES_KITS_NAPI_OSACCOUNT_INCLUDE_NAPI_OS_ACCOUNT_COMMON_H 17 #define OS_ACCOUNT_INTERFACES_KITS_NAPI_OSACCOUNT_INCLUDE_NAPI_OS_ACCOUNT_COMMON_H 18 19 #include "account_info.h" 20 #include "napi_os_account.h" 21 #include "os_account_manager.h" 22 #include "ohos_account_kits.h" 23 24 namespace OHOS { 25 namespace AccountJsKit { 26 constexpr std::int32_t MAX_VALUE_LEN = 4096; 27 constexpr std::int32_t MAX_SUBSCRIBER_NAME_LEN = 1024; 28 constexpr const std::int32_t STR_MAX_SIZE = 256; 29 constexpr int PARAMZERO = 0; 30 constexpr int PARAMONE = 1; 31 constexpr int PARAMTWO = 2; 32 constexpr int PARAMTHREE = 3; 33 constexpr int RESULT_COUNT = 2; 34 constexpr int INVALID_LOCALID = -1; 35 constexpr std::int32_t ARGS_SIZE_ZERO = 0; 36 constexpr std::int32_t ARGS_SIZE_ONE = 1; 37 constexpr std::int32_t ARGS_SIZE_TWO = 2; 38 constexpr std::int32_t ARGS_SIZE_THREE = 3; 39 constexpr std::int32_t ARGS_SIZE_FOUR = 4; 40 41 class NapiCreateDomainCallback final : public DomainAccountCallback { 42 public: 43 NapiCreateDomainCallback(napi_env env, napi_ref callbackRef, napi_deferred deferred); 44 ~NapiCreateDomainCallback(); 45 void OnResult(const int32_t errCode, Parcel &parcel) override; 46 47 private: 48 napi_env env_ = nullptr; 49 napi_ref callbackRef_ = nullptr; 50 napi_deferred deferred_ = nullptr; 51 AccountJsKit::ThreadLockInfo lockInfo_; 52 }; 53 54 napi_value WrapVoidToJS(napi_env env); 55 56 bool ParseParaQueryOAByIdCB(napi_env env, napi_callback_info cbInfo, QueryOAByIdAsyncContext *asyncContext); 57 58 void QueryOAByIdExecuteCB(napi_env env, void *data); 59 60 void QueryOAByIdCallbackCompletedCB(napi_env env, napi_status status, void *data); 61 62 void GetOACBInfoToJs(napi_env env, OsAccountInfo &info, napi_value &objOAInfo); 63 64 void GetOtherAccountInfoToJs(napi_env env, OsAccountInfo &info, napi_value &objOAInfo); 65 66 void MakeArrayToJs(napi_env env, const std::vector<std::string> &constraints, napi_value jsArray); 67 68 bool ParseParaRemoveOACB(napi_env env, napi_callback_info cbInfo, RemoveOAAsyncContext *asyncContext); 69 70 void RemoveOAExecuteCB(napi_env env, void *data); 71 72 void RemoveOACallbackCompletedCB(napi_env env, napi_status status, void *data); 73 74 bool ParseParaSetOAName(napi_env env, napi_callback_info cbInfo, SetOANameAsyncContext *asyncContext); 75 76 void SetOANameExecuteCB(napi_env env, void *data); 77 78 void SetOANameCallbackCompletedCB(napi_env env, napi_status status, void *data); 79 80 bool ParseParaSetOAConstraints(napi_env env, napi_callback_info cbInfo, SetOAConsAsyncContext *asyncContext); 81 82 void SetOAConsExecuteCB(napi_env env, void *data); 83 84 void SetOAConsCallbackCompletedCB(napi_env env, napi_status status, void *data); 85 86 bool ParseParaActiveOA(napi_env env, napi_callback_info cbInfo, ActivateOAAsyncContext *asyncContext); 87 88 void ActivateOAExecuteCB(napi_env env, void *data); 89 90 void ActivateOACallbackCompletedCB(napi_env env, napi_status status, void *data); 91 92 bool ParseParaDeactivateOA(napi_env env, napi_callback_info cbInfo, ActivateOAAsyncContext *asyncContext); 93 94 void DeactivateOAExecuteCB(napi_env env, void *data); 95 96 void DeactivateOACompletedCB(napi_env env, napi_status status, void *data); 97 98 bool ParseParaCreateOA(napi_env env, napi_callback_info cbInfo, CreateOAAsyncContext *asyncContext); 99 100 bool ParseParaCreateOAForDomain(napi_env env, napi_callback_info cbInfo, 101 CreateOAForDomainAsyncContext *asyncContext); 102 103 void CreateOAExecuteCB(napi_env env, void *data); 104 105 void CreateOAForDomainExecuteCB(napi_env env, void *data); 106 107 void CreateOAForDomainCompletedCB(napi_env env, napi_status status, void *data); 108 109 void CreateOACallbackCompletedCB(napi_env env, napi_status status, void *data); 110 111 std::function<void()> CreateOAForDomainCallbackCompletedWork(std::shared_ptr<CreateOAForDomainAsyncContext> param); 112 113 bool ParseParaGetOACount(napi_env env, napi_callback_info cbInfo, GetOACountAsyncContext *asyncContext); 114 115 void GetOACountExecuteCB(napi_env env, void *data); 116 117 void GetOACountCallbackCompletedCB(napi_env env, napi_status status, void *data); 118 119 bool ParseParaDbDeviceId(napi_env env, napi_callback_info cbInfo, DbDeviceIdAsyncContext *asyncContext); 120 121 void DbDeviceIdExecuteCB(napi_env env, void *data); 122 123 void DbDeviceIdCallbackCompletedCB(napi_env env, napi_status status, void *data); 124 125 bool ParseParaGetAllCons(napi_env env, napi_callback_info cbInfo, GetAllConsAsyncContext *asyncContext); 126 127 void GetAllConsExecuteCB(napi_env env, void *data); 128 129 void GetAllConsCallbackCompletedCB(napi_env env, napi_status status, void *data); 130 131 void GetAllAccountCons(napi_env env, const std::vector<std::string> &info, napi_value &result); 132 133 bool ParseParaProcessId(napi_env env, napi_callback_info cbInfo, GetIdAsyncContext *asyncContext); 134 135 void GetProcessIdExecuteCB(napi_env env, void *data); 136 137 void GetProcessIdCallbackCompletedCB(napi_env env, napi_status status, void *data); 138 139 bool ParseQueryAllCreateOA(napi_env env, napi_callback_info cbInfo, QueryCreateOAAsyncContext *asyncContext); 140 141 bool ParseQueryActiveIds(napi_env env, napi_callback_info cbInfo, QueryActiveIdsAsyncContext *asyncContext); 142 143 void QueryCreateOAExecuteCB(napi_env env, void *data); 144 145 void QueryActiveIdsExecuteCB(napi_env env, void *data); 146 147 void QueryCreateOACallbackCompletedCB(napi_env env, napi_status status, void *data); 148 149 void QueryActiveIdsCallbackCompletedCB(napi_env env, napi_status status, void *data); 150 151 void GetForegroundOALocalIdExecuteCB(napi_env env, void *data); 152 153 void GetForegroundOALocalIdCallbackCompletedCB(napi_env env, napi_status status, void *data); 154 155 void QueryOAInfoForResult(napi_env env, const std::vector<OsAccountInfo> &info, napi_value &result); 156 157 bool ParseParaGetPhoto(napi_env env, napi_callback_info cbInfo, GetOAPhotoAsyncContext *asyncContext); 158 159 void GetOsAccountNameExecuteCB(napi_env env, void *data); 160 161 void GetOsAccountNameCallbackCompletedCB(napi_env env, napi_status status, void *data); 162 163 void GetOAPhotoExecuteCB(napi_env env, void *data); 164 165 void GetOAPhotoCallbackCompletedCB(napi_env env, napi_status status, void *data); 166 167 bool ParseParaCurrentOA(napi_env env, napi_callback_info cbInfo, CurrentOAAsyncContext *asyncContext); 168 169 void QueryCurrentOAExecuteCB(napi_env env, void *data); 170 171 void QueryCurrentOACallbackCompletedCB(napi_env env, napi_status status, void *data); 172 173 bool ParseParaGetIdByUid(napi_env env, napi_callback_info cbInfo, GetIdByUidAsyncContext *asyncContext); 174 175 bool ParseParaGetIdByDomain(napi_env env, napi_callback_info cbInfo, GetIdByDomainAsyncContext *asyncContext); 176 177 void GetIdByUidExecuteCB(napi_env env, void *data); 178 179 void GetBundleIdByUidExecuteCB(napi_env env, void *data); 180 181 void GetIdByDomainExecuteCB(napi_env env, void *data); 182 183 void GetIdByUidCallbackCompletedCB(napi_env env, napi_status status, void *data); 184 185 void GetBundleIdByUidCallbackCompletedCB(napi_env env, napi_status status, void *data); 186 187 void GetIdByDomainCallbackCompletedCB(napi_env env, napi_status status, void *data); 188 189 bool ParseParaSetPhoto(napi_env env, napi_callback_info cbInfo, SetOAPhotoAsyncContext *asyncContext); 190 191 void SetPhotoExecuteCB(napi_env env, void *data); 192 193 void SetPhotoCompletedCB(napi_env env, napi_status status, void *data); 194 195 bool ParseParaQueryMaxNum(napi_env env, napi_callback_info cbInfo, QueryMaxNumAsyncContext *asyncContext); 196 197 void QueryMaxNumExecuteCB(napi_env env, void *data); 198 199 void QueryMaxNumCompletedCB(napi_env env, napi_status status, void *data); 200 201 bool ParseParaIsActived(napi_env env, napi_callback_info cbInfo, IsActivedAsyncContext *asyncContext); 202 203 void IsActivedExecuteCB(napi_env env, void *data); 204 205 void IsActivedCompletedCB(napi_env env, napi_status status, void *data); 206 207 bool ParseParaIsEnable(napi_env env, napi_callback_info cbInfo, IsConEnableAsyncContext *asyncContext); 208 209 void IsEnableExecuteCB(napi_env env, void *data); 210 211 void IsEnableCompletedCB(napi_env env, napi_status status, void *data); 212 213 bool ParseParaGetType(napi_env env, napi_callback_info cbInfo, GetTypeAsyncContext *asyncContext); 214 215 void GetTypeExecuteCB(napi_env env, void *data); 216 217 void GetTypeCompletedCB(napi_env env, napi_status status, void *data); 218 219 bool ParseParaIsMultiEn(napi_env env, napi_callback_info cbInfo, IsMultiEnAsyncContext *asyncContext); 220 221 void IsMultiEnExecuteCB(napi_env env, void *data); 222 223 void IsMultiEnCompletedCB(napi_env env, napi_status status, void *data); 224 225 bool ParseParaIsVerified(napi_env env, napi_callback_info cbInfo, IsVerifiedAsyncContext *asyncContext); 226 227 void IsVerifiedExecuteCB(napi_env env, void *data); 228 229 void IsVerifiedCompletedCB(napi_env env, napi_status status, void *data); 230 231 bool ParseParaSerialNumId(napi_env env, napi_callback_info cbInfo, GetSerialNumIdCBInfo *asyncContext); 232 233 void SerialNumIdExecuteCB(napi_env env, void *data); 234 235 void SerialNumIdCompletedCB(napi_env env, napi_status status, void *data); 236 237 bool ParseParaGetSerialNum(napi_env env, napi_callback_info cbInfo, GetSerialNumForOAInfo *asyncContext); 238 239 void GetSerialNumExecuteCB(napi_env env, void *data); 240 241 void GetSerialNumCompletedCB(napi_env env, napi_status status, void *data); 242 243 bool ParseParaIsTestOA(napi_env env, napi_callback_info cbInfo, IsTestOAInfo *asyncContext); 244 245 bool ParseParaIsMainOA(napi_env env, napi_callback_info cbInfo, IsMainOAInfo *asyncContext); 246 247 bool ParseParaToSubscriber(const napi_env &env, napi_callback_info cbInfo, SubscribeCBInfo *asyncContext, 248 napi_value *thisVar); 249 250 void SubscribeExecuteCB(napi_env env, void *data); 251 252 void SubscribeCompletedCB(napi_env env, napi_status status, void *data); 253 254 bool ParseParaToUnsubscriber( 255 const napi_env &env, napi_callback_info cbInfo, UnsubscribeCBInfo *asyncContext, napi_value *thisVar); 256 257 bool ParseQueryOAConstraintSrcTypes(napi_env env, napi_callback_info cbInfo, 258 QueryOAConstraintSrcTypeContext *asyncContext); 259 260 void QueryOAContSrcTypeExecuteCB(napi_env env, void *data); 261 262 void QueryOAContSrcTypeCallbackCompletedCB(napi_env env, napi_status status, void *data); 263 264 void QueryOAContSrcTypeForResult(napi_env env, const std::vector<ConstraintSourceTypeInfo> &infos, napi_value &result); 265 266 void GetOsAccountDomainInfoExecuteCB(napi_env env, void *data); 267 268 void GetOsAccountDomainInfoCompletedCB(napi_env env, napi_status status, void *data); 269 270 class NapiBindDomainCallback final : public DomainAccountCallback { 271 public: NapiBindDomainCallback(napi_env env,napi_deferred deferred)272 NapiBindDomainCallback(napi_env env, napi_deferred deferred) : env_(env), deferred_(deferred) {}; 273 ~NapiBindDomainCallback() = default; 274 void OnResult(const int32_t errCode, Parcel &parcel) override; 275 276 private: 277 napi_env env_ = nullptr; 278 napi_deferred deferred_ = nullptr; 279 AccountJsKit::ThreadLockInfo lockInfo_; 280 }; 281 282 bool ParseParaBindDomainAccount(napi_env env, napi_callback_info cbInfo, 283 std::unique_ptr<BindDomainAccountAsyncContext> &asyncContext); 284 285 void BindDomainAccountExecuteCB(napi_env env, void *data); 286 287 void BindDomainAccountCompletedCB(napi_env env, napi_status status, void *data); 288 289 std::function<void()> BindDomainAccountCompleteWork(const std::shared_ptr<BindDomainAccountAsyncContext> ¶m); 290 291 } // namespace AccountJsKit 292 } // namespace OHOS 293 294 #endif // OS_ACCOUNT_INTERFACES_KITS_NAPI_OSACCOUNT_INCLUDE_NAPI_OS_ACCOUNT_COMMON_H 295