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 #include "js_form_info.h"
16 
17 #include "fms_log_wrapper.h"
18 #include "form_constants.h"
19 #include "form_info.h"
20 #include "form_info_base.h"
21 #include "form_instance.h"
22 #include "form_state_info.h"
23 #include "js_runtime_utils.h"
24 namespace OHOS {
25 namespace AbilityRuntime {
CreateJsFormType(napi_env engine)26 napi_value CreateJsFormType(napi_env engine)
27 {
28     napi_value objValue = nullptr;
29     napi_create_object(engine, &objValue);
30     napi_set_named_property(engine, objValue, "JS", CreateJsValue(engine, AppExecFwk::FormType::JS));
31     napi_set_named_property(engine, objValue, "eTS", CreateJsValue(engine, AppExecFwk::FormType::ETS));
32     napi_set_named_property(engine, objValue, "arkTS", CreateJsValue(engine, AppExecFwk::FormType::ETS));
33     return objValue;
34 }
35 
CreateJsColorMode(napi_env engine)36 napi_value CreateJsColorMode(napi_env engine)
37 {
38     napi_value objValue = nullptr;
39     napi_create_object(engine, &objValue);
40     napi_set_named_property(
41         engine, objValue, "MODE_AUTO", CreateJsValue(engine, AppExecFwk::FormsColorMode::AUTO_MODE));
42     napi_set_named_property(
43         engine, objValue, "MODE_DARK", CreateJsValue(engine, AppExecFwk::FormsColorMode::DARK_MODE));
44     napi_set_named_property(
45         engine, objValue, "MODE_LIGHT", CreateJsValue(engine, AppExecFwk::FormsColorMode::LIGHT_MODE));
46     return objValue;
47 }
48 
CreateJsFormState(napi_env engine)49 napi_value CreateJsFormState(napi_env engine)
50 {
51     napi_value objValue = nullptr;
52     napi_create_object(engine, &objValue);
53     napi_set_named_property(engine, objValue, "UNKNOWN", CreateJsValue(engine, AppExecFwk::FormState::UNKNOWN));
54     napi_set_named_property(engine, objValue, "DEFAULT", CreateJsValue(engine, AppExecFwk::FormState::DEFAULT));
55     napi_set_named_property(engine, objValue, "READY", CreateJsValue(engine, AppExecFwk::FormState::READY));
56     return objValue;
57 }
58 
CreateJsFormParam(napi_env engine)59 napi_value CreateJsFormParam(napi_env engine)
60 {
61     napi_value objValue = nullptr;
62     napi_create_object(engine, &objValue);
63     napi_set_named_property(
64         engine, objValue, "IDENTITY_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_IDENTITY_KEY));
65     napi_set_named_property(
66         engine, objValue, "DIMENSION_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_DIMENSION_KEY));
67     napi_set_named_property(engine, objValue, "RENDERINGMODE_KEY", CreateJsValue(
68         engine, AppExecFwk::Constants::PARAM_FORM_RENDERINGMODE_KEY));
69     napi_set_named_property(
70         engine, objValue, "NAME_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_NAME_KEY));
71     napi_set_named_property(
72         engine, objValue, "MODULE_NAME_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_MODULE_NAME_KEY));
73     napi_set_named_property(
74         engine, objValue, "WIDTH_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_WIDTH_KEY));
75     napi_set_named_property(
76         engine, objValue, "HEIGHT_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_HEIGHT_KEY));
77     napi_set_named_property(
78         engine, objValue, "TEMPORARY_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_TEMPORARY_KEY));
79     napi_set_named_property(
80         engine, objValue, "BUNDLE_NAME_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_BUNDLE_NAME_KEY));
81     napi_set_named_property(
82         engine, objValue, "ABILITY_NAME_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_ABILITY_NAME_KEY));
83     napi_set_named_property(
84         engine, objValue, "DEVICE_ID_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_DEVICE_ID_KEY));
85     napi_set_named_property(
86         engine, objValue, "LAUNCH_REASON_KEY", CreateJsValue(engine, AppExecFwk::Constants::LAUNCH_REASON_KEY));
87     napi_set_named_property(engine, objValue,
88         "PARAM_FORM_CUSTOMIZE_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_CUSTOMIZE_KEY));
89     napi_set_named_property(engine, objValue,
90         "FORM_RENDERING_MODE_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_FORM_RENDERINGMODE_KEY));
91     napi_set_named_property(engine, objValue,
92         "HOST_BG_INVERSE_COLOR_KEY", CreateJsValue(engine, AppExecFwk::Constants::PARAM_HOST_BG_INVERSE_COLOR_KEY));
93     napi_set_named_property(engine, objValue,
94         "FORM_PERMISSION_GRANTED_KEY", CreateJsValue(engine, AppExecFwk::Constants::FORM_PERMISSION_GRANTED_KEY));
95     napi_set_named_property(engine, objValue,
96         "FORM_PERMISSION_NAME_KEY", CreateJsValue(engine, AppExecFwk::Constants::FORM_PERMISSION_NAME_KEY));
97     return objValue;
98 }
99 
CreateJsFormDimension(napi_env engine)100 napi_value CreateJsFormDimension(napi_env engine)
101 {
102     napi_value objValue = nullptr;
103     napi_create_object(engine, &objValue);
104     napi_set_named_property(
105         engine, objValue, "Dimension_1_2", CreateJsValue(engine, AppExecFwk::Constants::Dimension::DIMENSION_1_2));
106     napi_set_named_property(
107         engine, objValue, "Dimension_2_2", CreateJsValue(engine, AppExecFwk::Constants::Dimension::DIMENSION_2_2));
108     napi_set_named_property(
109         engine, objValue, "Dimension_2_4", CreateJsValue(engine, AppExecFwk::Constants::Dimension::DIMENSION_2_4));
110     napi_set_named_property(
111         engine, objValue, "Dimension_4_4", CreateJsValue(engine, AppExecFwk::Constants::Dimension::DIMENSION_4_4));
112     napi_set_named_property(
113         engine, objValue, "Dimension_2_1", CreateJsValue(engine, AppExecFwk::Constants::Dimension::DIMENSION_2_1));
114     napi_set_named_property(
115         engine, objValue, "DIMENSION_1_1", CreateJsValue(engine, AppExecFwk::Constants::Dimension::DIMENSION_1_1));
116     napi_set_named_property(
117         engine, objValue, "DIMENSION_6_4", CreateJsValue(engine, AppExecFwk::Constants::Dimension::DIMENSION_6_4));
118     return objValue;
119 }
120 
CreateJsFormVisibilityType(napi_env engine)121 napi_value CreateJsFormVisibilityType(napi_env engine)
122 {
123     napi_value objValue = nullptr;
124     napi_create_object(engine, &objValue);
125     napi_set_named_property(engine, objValue, "UNKNOWN", CreateJsValue(engine, AppExecFwk::Constants::UNKNOWN));
126     napi_set_named_property(
127         engine, objValue, "FORM_VISIBLE", CreateJsValue(engine, AppExecFwk::Constants::FORM_VISIBLE));
128     napi_set_named_property(
129         engine, objValue, "FORM_INVISIBLE", CreateJsValue(engine, AppExecFwk::Constants::FORM_INVISIBLE));
130     return objValue;
131 }
132 
CreateJsFormLaunchReason(napi_env engine)133 napi_value CreateJsFormLaunchReason(napi_env engine)
134 {
135     napi_value objValue = nullptr;
136     napi_create_object(engine, &objValue);
137     napi_set_named_property(
138         engine, objValue, "FORM_DEFAULT", CreateJsValue(engine, AppExecFwk::Constants::FORM_DEFAULT));
139     napi_set_named_property(engine, objValue, "FORM_SHARE", CreateJsValue(engine, AppExecFwk::Constants::FORM_SHARE));
140     return objValue;
141 }
142 
CreateJsFormUsageState(napi_env engine)143 napi_value CreateJsFormUsageState(napi_env engine)
144 {
145     napi_value objValue = nullptr;
146     napi_create_object(engine, &objValue);
147     napi_set_named_property(engine, objValue, "USED", CreateJsValue(engine, AppExecFwk::FormUsageState::USED));
148     napi_set_named_property(engine, objValue, "UNUSED", CreateJsValue(engine, AppExecFwk::FormUsageState::UNUSED));
149     return objValue;
150 }
151 
CreateJsFormLocation(napi_env engine)152 napi_value CreateJsFormLocation(napi_env engine)
153 {
154     napi_value objValue = nullptr;
155     napi_create_object(engine, &objValue);
156     napi_set_named_property(
157         engine, objValue, "DESKTOP", CreateJsValue(engine, AppExecFwk::Constants::FormLocation::DESKTOP));
158     napi_set_named_property(
159         engine, objValue, "FORM_CENTER", CreateJsValue(engine, AppExecFwk::Constants::FormLocation::FORM_CENTER));
160     napi_set_named_property(
161         engine, objValue, "FORM_MANAGER", CreateJsValue(engine, AppExecFwk::Constants::FormLocation::FORM_MANAGER));
162     napi_set_named_property(
163         engine, objValue, "NEGATIVE_SCREEN", CreateJsValue(engine,
164             AppExecFwk::Constants::FormLocation::NEGATIVE_SCREEN));
165     napi_set_named_property(
166         engine, objValue, "FORM_CENTER_NEGATIVE_SCREEN", CreateJsValue(engine,
167             AppExecFwk::Constants::FormLocation::FORM_CENTER_NEGATIVE_SCREEN));
168     napi_set_named_property(
169         engine, objValue, "FORM_MANAGER_NEGATIVE_SCREEN", CreateJsValue(engine,
170             AppExecFwk::Constants::FormLocation::FORM_MANAGER_NEGATIVE_SCREEN));
171     napi_set_named_property(
172         engine, objValue, "SCREEN_LOCK", CreateJsValue(engine, AppExecFwk::Constants::FormLocation::SCREEN_LOCK));
173     napi_set_named_property(
174         engine, objValue, "AI_SUGGESTION", CreateJsValue(engine, AppExecFwk::Constants::FormLocation::AI_SUGGESTION));
175     napi_set_named_property(
176         engine, objValue, "OTHER", CreateJsValue(engine, AppExecFwk::Constants::FormLocation::OTHER));
177     return objValue;
178 }
179 
CreateJsPublishFormErrorCode(napi_env engine)180 napi_value CreateJsPublishFormErrorCode(napi_env engine)
181 {
182     napi_value objValue = nullptr;
183     napi_create_object(engine, &objValue);
184     napi_set_named_property(
185         engine, objValue, "SUCCESS", CreateJsValue(engine, AppExecFwk::Constants::PublishFormErrorCode::SUCCESS));
186     napi_set_named_property(
187         engine, objValue, "NO_SPACE", CreateJsValue(engine, AppExecFwk::Constants::PublishFormErrorCode::NO_SPACE));
188     napi_set_named_property(engine, objValue, "PARAM_ERROR",
189         CreateJsValue(engine, AppExecFwk::Constants::PublishFormErrorCode::PARAM_ERROR));
190     napi_set_named_property(engine, objValue, "INTERNAL_ERROR",
191         CreateJsValue(engine, AppExecFwk::Constants::PublishFormErrorCode::INTERNAL_ERROR));
192     return objValue;
193 }
194 
CreateJsFormShape(napi_env engine)195 napi_value CreateJsFormShape(napi_env engine)
196 {
197     napi_value objValue = nullptr;
198     napi_create_object(engine, &objValue);
199     napi_set_named_property(
200         engine, objValue, "RECT", CreateJsValue(engine, AppExecFwk::Constants::Shape::RECT));
201     napi_set_named_property(
202         engine, objValue, "CIRCLE", CreateJsValue(engine, AppExecFwk::Constants::Shape::CIRCLE));
203     return objValue;
204 }
205 
FormInfoInit(napi_env engine,napi_value exportObj)206 napi_value FormInfoInit(napi_env engine, napi_value exportObj)
207 {
208     HILOG_INFO("call");
209 
210     napi_set_named_property(engine, exportObj, "FormType", CreateJsFormType(engine));
211     napi_set_named_property(engine, exportObj, "ColorMode", CreateJsColorMode(engine));
212     napi_set_named_property(engine, exportObj, "FormState", CreateJsFormState(engine));
213     napi_set_named_property(engine, exportObj, "FormParam", CreateJsFormParam(engine));
214     napi_set_named_property(engine, exportObj, "FormDimension", CreateJsFormDimension(engine));
215     napi_set_named_property(engine, exportObj, "VisibilityType", CreateJsFormVisibilityType(engine));
216     napi_set_named_property(engine, exportObj, "LaunchReason", CreateJsFormLaunchReason(engine));
217     napi_set_named_property(engine, exportObj, "FormUsageState", CreateJsFormUsageState(engine));
218     napi_set_named_property(engine, exportObj, "FormLocation", CreateJsFormLocation(engine));
219     napi_set_named_property(engine, exportObj, "PublishFormErrorCode", CreateJsPublishFormErrorCode(engine));
220     napi_set_named_property(engine, exportObj, "FormShape", CreateJsFormShape(engine));
221     HILOG_INFO("end");
222     return exportObj;
223 }
224 }  // namespace AbilityRuntime
225 }  // namespace OHOS
226