1 /* 2 * Copyright (c) 2021-2023 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 OHOS_FORM_FWK_NAPI_FORM_HOST_H 17 #define OHOS_FORM_FWK_NAPI_FORM_HOST_H 18 19 #include "ability.h" 20 #include "js_runtime_utils.h" 21 #include "napi/native_api.h" 22 #include "napi/native_common.h" 23 #include "napi/native_node_api.h" 24 #include "nlohmann/json.hpp" 25 26 namespace OHOS { 27 namespace AbilityRuntime { 28 29 struct AsyncDeleteInvalidFormsCallbackInfo { 30 napi_env env; 31 napi_async_work asyncWork = nullptr; 32 napi_deferred deferred = nullptr; 33 napi_ref callback = nullptr; 34 std::vector<int64_t> formIds; 35 int numFormsDeleted = 0; 36 int result = OHOS::ERR_OK; 37 }; 38 39 struct AsyncAcquireFormStateCallbackInfo { 40 napi_env env; 41 napi_async_work asyncWork; 42 napi_deferred deferred; 43 napi_ref callback; 44 OHOS::AAFwk::Want want; 45 OHOS::AppExecFwk::FormStateInfo stateInfo; 46 int32_t callbackType = 0; 47 int result; 48 }; 49 50 struct AsyncNotifyFormsVisibleCallbackInfo { 51 napi_env env; 52 napi_async_work asyncWork; 53 napi_deferred deferred; 54 napi_ref callback; 55 std::vector<int64_t> formIds; 56 bool isVisible; 57 int result; 58 }; 59 60 struct AsyncNotifyFormsEnableUpdateCallbackInfo { 61 napi_env env; 62 napi_async_work asyncWork; 63 napi_deferred deferred; 64 napi_ref callback; 65 std::vector<int64_t> formIds; 66 bool isEnableUpdate; 67 int result; 68 }; 69 70 napi_value NAPI_AcquireFormState(napi_env env, napi_callback_info info); 71 napi_value NAPI_RegisterFormUninstallObserver(napi_env env, napi_callback_info info); 72 napi_value NAPI_UnregisterFormUninstallObserver(napi_env env, napi_callback_info info); 73 napi_value NAPI_NotifyFormsVisible(napi_env env, napi_callback_info info); 74 napi_value NAPI_NotifyFormsEnableUpdate(napi_env env, napi_callback_info info); 75 76 using ShareFormTask = std::function<void(int32_t)>; 77 class NapiFormHost { 78 public: 79 NapiFormHost() = default; 80 ~NapiFormHost() = default; 81 82 static void Finalizer(napi_env env, void* data, void* hint); 83 static napi_value ShareForm(napi_env env, napi_callback_info info); 84 static napi_value DisableFormsUpdate(napi_env env, napi_callback_info info); 85 static napi_value IsSystemReady(napi_env env, napi_callback_info info); 86 static napi_value DeleteForm(napi_env env, napi_callback_info info); 87 static napi_value ReleaseForm(napi_env env, napi_callback_info info); 88 static napi_value RequestForm(napi_env env, napi_callback_info info); 89 static napi_value CastTempForm(napi_env env, napi_callback_info info); 90 static napi_value GetAllFormsInfo(napi_env env, napi_callback_info info); 91 static napi_value GetFormsInfo(napi_env env, napi_callback_info info); 92 static napi_value EnableFormsUpdate(napi_env env, napi_callback_info info); 93 static napi_value NotifyFormsPrivacyProtected(napi_env env, napi_callback_info info); 94 static napi_value NotifyVisibleForms(napi_env env, napi_callback_info info); 95 static napi_value NotifyInVisibleForms(napi_env env, napi_callback_info info); 96 static napi_value DeleteInvalidForms(napi_env env, napi_callback_info info); 97 private: 98 napi_value OnDisableFormsUpdate(napi_env env, size_t argc, napi_value* argv); 99 napi_value OnIsSystemReady(napi_env env, size_t argc, napi_value* argv); 100 napi_value OnDeleteForm(napi_env env, size_t argc, napi_value* argv); 101 napi_value OnReleaseForm(napi_env env, size_t argc, napi_value* argv); 102 napi_value OnRequestForm(napi_env env, size_t argc, napi_value* argv); 103 napi_value OnCastTempForm(napi_env env, size_t argc, napi_value* argv); 104 napi_value OnGetAllFormsInfo(napi_env env, size_t argc, napi_value* argv); 105 napi_value OnGetFormsInfo(napi_env env, size_t argc, napi_value* argv); 106 napi_value OnEnableFormsUpdate(napi_env env, size_t argc, napi_value* argv); 107 napi_value OnShareForm(napi_env env, size_t argc, napi_value* argv); 108 napi_value OnNotifyFormsPrivacyProtected(napi_env env, size_t argc, napi_value* argv); 109 napi_value OnNotifyVisibleForms(napi_env env, size_t argc, napi_value* argv); 110 napi_value OnNotifyInVisibleForms(napi_env env, size_t argc, napi_value* argv); 111 napi_value OnDeleteInvalidForms(napi_env env, size_t argc, napi_value* argv); 112 void InnerShareForm(napi_env env, const std::shared_ptr<OHOS::AbilityRuntime::NapiAsyncTask> &asyncTask, 113 ShareFormTask &&task, int64_t formId, const std::string &remoteDeviceId); 114 bool GetStringsValue(napi_env env, napi_value object, std::vector<std::string> &strList); 115 static bool UnwrapGetFormsInfoParams(napi_env env, size_t argc, napi_value* argv, std::string &moduleName, 116 bool &bParam); 117 int32_t OnNotifyInVisibleFormsParseParam(napi_env env, size_t argc, napi_value* argv, 118 std::vector<int64_t> &formIds); 119 bool OnDeleteInvalidFormsParseParam(napi_env env, size_t argc, napi_value* argv, 120 int32_t &errCode, std::vector<std::string> &strFormIdList); 121 }; 122 } // namespace AbilityRuntime 123 } // namespace OHOS 124 #endif /* OHOS_FORM_FWK_NAPI_FORM_HOST_H */ 125