• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 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 AsyncNotifyVisibleFormsCallbackInfo {
30     napi_env env;
31     napi_async_work asyncWork;
32     napi_deferred deferred;
33     napi_ref callback;
34     std::vector<int64_t> formIds;
35     int result;
36 };
37 
38 struct AsyncNotifyInvisibleFormsCallbackInfo {
39     napi_env env;
40     napi_async_work asyncWork;
41     napi_deferred deferred;
42     napi_ref callback;
43     std::vector<int64_t> formIds;
44     int result;
45 };
46 
47 struct AsyncDeleteInvalidFormsCallbackInfo {
48     napi_env env;
49     napi_async_work asyncWork = nullptr;
50     napi_deferred deferred = nullptr;
51     napi_ref callback = nullptr;
52     std::vector<int64_t> formIds;
53     int numFormsDeleted = 0;
54     int result = OHOS::ERR_OK;
55 };
56 
57 struct AsyncAcquireFormStateCallbackInfo {
58     napi_env env;
59     napi_async_work asyncWork;
60     napi_deferred deferred;
61     napi_ref callback;
62     OHOS::AAFwk::Want want;
63     OHOS::AppExecFwk::FormStateInfo stateInfo;
64     int32_t callbackType = 0;
65     int result;
66 };
67 
68 struct AsyncNotifyFormsVisibleCallbackInfo {
69     napi_env env;
70     napi_async_work asyncWork;
71     napi_deferred deferred;
72     napi_ref callback;
73     std::vector<int64_t> formIds;
74     bool isVisible;
75     int result;
76 };
77 
78 struct AsyncNotifyFormsEnableUpdateCallbackInfo {
79     napi_env env;
80     napi_async_work asyncWork;
81     napi_deferred deferred;
82     napi_ref callback;
83     std::vector<int64_t> formIds;
84     bool isEnableUpdate;
85     int result;
86 };
87 
88 napi_value NAPI_NotifyVisibleForms(napi_env env, napi_callback_info info);
89 napi_value NAPI_NotifyInvisibleForms(napi_env env, napi_callback_info info);
90 napi_value NAPI_DeleteInvalidForms(napi_env env, napi_callback_info info);
91 napi_value NAPI_AcquireFormState(napi_env env, napi_callback_info info);
92 napi_value NAPI_RegisterFormUninstallObserver(napi_env env, napi_callback_info info);
93 napi_value NAPI_UnregisterFormUninstallObserver(napi_env env, napi_callback_info info);
94 napi_value NAPI_NotifyFormsVisible(napi_env env, napi_callback_info info);
95 napi_value NAPI_NotifyFormsEnableUpdate(napi_env env, napi_callback_info info);
96 
97 using ShareFormTask = std::function<void(int32_t)>;
98 class NapiFormHost {
99 public:
100     NapiFormHost() = default;
101     ~NapiFormHost() = default;
102 
103     static void Finalizer(NativeEngine* engine, void* data, void* hint);
104     static NativeValue* ShareForm(NativeEngine* engine, NativeCallbackInfo* info);
105     static NativeValue* DisableFormsUpdate(NativeEngine *engine, NativeCallbackInfo *info);
106     static NativeValue* IsSystemReady(NativeEngine *engine, NativeCallbackInfo *info);
107     static NativeValue* DeleteForm(NativeEngine *engine, NativeCallbackInfo *info);
108     static NativeValue* ReleaseForm(NativeEngine *engine, NativeCallbackInfo *info);
109     static NativeValue* RequestForm(NativeEngine *engine, NativeCallbackInfo *info);
110     static NativeValue* CastTempForm(NativeEngine *engine, NativeCallbackInfo *info);
111     static NativeValue* GetAllFormsInfo(NativeEngine *engine, NativeCallbackInfo *info);
112     static NativeValue* GetFormsInfo(NativeEngine *engine, NativeCallbackInfo *info);
113     static NativeValue* EnableFormsUpdate(NativeEngine *engine, NativeCallbackInfo *info);
114     static NativeValue* NotifyFormsPrivacyProtected(NativeEngine *engine, NativeCallbackInfo *info);
115 private:
116     NativeValue* OnDisableFormsUpdate(NativeEngine &engine, NativeCallbackInfo &info);
117     NativeValue* OnIsSystemReady(NativeEngine &engine, const NativeCallbackInfo &info);
118     NativeValue* OnDeleteForm(NativeEngine &engine, NativeCallbackInfo &info);
119     NativeValue* OnReleaseForm(NativeEngine &engine, NativeCallbackInfo &info);
120     NativeValue* OnRequestForm(NativeEngine &engine, NativeCallbackInfo &info);
121     NativeValue* OnCastTempForm(NativeEngine &engine, NativeCallbackInfo &info);
122     NativeValue* OnGetAllFormsInfo(NativeEngine &engine, const NativeCallbackInfo &info);
123     NativeValue* OnGetFormsInfo(NativeEngine &engine, NativeCallbackInfo &info);
124     NativeValue* OnEnableFormsUpdate(NativeEngine &engine, NativeCallbackInfo &info);
125     NativeValue* OnShareForm(NativeEngine &engine, NativeCallbackInfo &info);
126     NativeValue* OnNotifyFormsPrivacyProtected(NativeEngine &engine, NativeCallbackInfo &info);
127     void InnerShareForm(NativeEngine &engine, const std::shared_ptr<OHOS::AbilityRuntime::AsyncTask> &asyncTask,
128         ShareFormTask &&task, int64_t formId, const std::string &remoteDeviceId);
129     bool GetStringsValue(NativeEngine &engine, NativeValue *object, std::vector<std::string> &strList);
130     static bool UnwrapGetFormsInfoParams(NativeEngine &engine, NativeCallbackInfo &info, std::string &moduleName,
131         bool &bParam);
132 };
133 }  // namespace AbilityRuntime
134 }  // namespace OHOS
135 #endif /* OHOS_FORM_FWK_NAPI_FORM_HOST_H */
136