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 #include "want_constant.h"
16 
17 #include "hilog_tag_wrapper.h"
18 
19 namespace OHOS {
20 namespace AppExecFwk {
21 /**
22  * @brief WantConstantInit NAPI module registration.
23  *
24  * @param env The environment that the Node-API call is invoked under.
25  * @param exports An empty object via the exports parameter as a convenience.
26  *
27  * @return The return value from Init is treated as the exports object for the module.
28  */
WantConstantInit(napi_env env,napi_value exports)29 napi_value WantConstantInit(napi_env env, napi_value exports)
30 {
31     TAG_LOGD(AAFwkTag::WANT, "called");
32     napi_value action = nullptr;
33     napi_value entity = nullptr;
34     napi_value Flags = nullptr;
35     napi_value showMode = nullptr;
36     napi_create_object(env, &action);
37     napi_create_object(env, &entity);
38     napi_create_object(env, &Flags);
39     napi_create_object(env, &showMode);
40 
41     SetNamedProperty(env, action, "ohos.want.action.home", "ACTION_HOME");
42     SetNamedProperty(env, action, "ohos.want.action.dial", "ACTION_DIAL");
43     SetNamedProperty(env, action, "ohos.want.action.search", "ACTION_SEARCH");
44     SetNamedProperty(env, action, "ohos.settings.wireless", "ACTION_WIRELESS_SETTINGS");
45     SetNamedProperty(env, action, "ohos.settings.manage.applications", "ACTION_MANAGE_APPLICATIONS_SETTINGS");
46     SetNamedProperty(env, action, "ohos.settings.application.details", "ACTION_APPLICATION_DETAILS_SETTINGS");
47     SetNamedProperty(env, action, "ohos.want.action.setAlarm", "ACTION_SET_ALARM");
48     SetNamedProperty(env, action, "ohos.want.action.showAlarms", "ACTION_SHOW_ALARMS");
49     SetNamedProperty(env, action, "ohos.want.action.snoozeAlarm", "ACTION_SNOOZE_ALARM");
50     SetNamedProperty(env, action, "ohos.want.action.dismissAlarm", "ACTION_DISMISS_ALARM");
51     SetNamedProperty(env, action, "ohos.want.action.dismissTimer", "ACTION_DISMISS_TIMER");
52     SetNamedProperty(env, action, "ohos.want.action.sendSms", "ACTION_SEND_SMS");
53     SetNamedProperty(env, action, "ohos.want.action.choose", "ACTION_CHOOSE");
54     SetNamedProperty(env, action, "ohos.want.action.imageCapture", "ACTION_IMAGE_CAPTURE");
55     SetNamedProperty(env, action, "ohos.want.action.videoCapture", "ACTION_VIDEO_CAPTURE");
56     SetNamedProperty(env, action, "ohos.want.action.select", "ACTION_SELECT");
57     SetNamedProperty(env, action, "ohos.want.action.sendData", "ACTION_SEND_DATA");
58     SetNamedProperty(env, action, "ohos.want.action.sendMultipleData", "ACTION_SEND_MULTIPLE_DATA");
59     SetNamedProperty(env, action, "ohos.want.action.scanMediaFile", "ACTION_SCAN_MEDIA_FILE");
60     SetNamedProperty(env, action, "ohos.want.action.viewData", "ACTION_VIEW_DATA");
61     SetNamedProperty(env, action, "ohos.want.action.editData", "ACTION_EDIT_DATA");
62     SetNamedProperty(env, action, "ability.want.params.INTENT", "INTENT_PARAMS_INTENT");
63     SetNamedProperty(env, action, "ability.want.params.TITLE", "INTENT_PARAMS_TITLE");
64     SetNamedProperty(env, action, "ohos.action.fileSelect", "ACTION_FILE_SELECT");
65     SetNamedProperty(env, action, "ability.params.stream", "PARAMS_STREAM");
66     SetNamedProperty(env, action, "ohos.account.appAccount.action.oauth", "ACTION_APP_ACCOUNT_OAUTH");
67     SetNamedProperty(env, action, "ohos.appAccount.action.auth", "ACTION_APP_ACCOUNT_AUTH");
68     SetNamedProperty(env, action, "ohos.want.action.marketDownload", "ACTION_MARKET_DOWNLOAD");
69     SetNamedProperty(env, action, "ohos.want.action.marketCrowdTest", "ACTION_MARKET_CROWDTEST");
70 
71     SetNamedProperty(env, entity, "entity.system.default", "ENTITY_DEFAULT");
72     SetNamedProperty(env, entity, "entity.system.home", "ENTITY_HOME");
73     SetNamedProperty(env, entity, "entity.system.voice", "ENTITY_VOICE");
74     SetNamedProperty(env, entity, "entity.system.browsable", "ENTITY_BROWSABLE");
75     SetNamedProperty(env, entity, "entity.system.video", "ENTITY_VIDEO");
76 
77     SetNamedProperty(env, Flags, 0x00000001, "FLAG_AUTH_READ_URI_PERMISSION");
78     SetNamedProperty(env, Flags, 0x00000002, "FLAG_AUTH_WRITE_URI_PERMISSION");
79     SetNamedProperty(env, Flags, 0x00000004, "FLAG_ABILITY_FORWARD_RESULT");
80     SetNamedProperty(env, Flags, 0x00000008, "FLAG_ABILITY_CONTINUATION");
81     SetNamedProperty(env, Flags, 0x00000010, "FLAG_NOT_OHOS_COMPONENT");
82     SetNamedProperty(env, Flags, 0x00000020, "FLAG_ABILITY_FORM_ENABLED");
83     SetNamedProperty(env, Flags, 0x00000040, "FLAG_AUTH_PERSISTABLE_URI_PERMISSION");
84     SetNamedProperty(env, Flags, 0x00000080, "FLAG_AUTH_PREFIX_URI_PERMISSION");
85     SetNamedProperty(env, Flags, 0x00000100, "FLAG_ABILITYSLICE_MULTI_DEVICE");
86     SetNamedProperty(env, Flags, 0x00000200, "FLAG_START_FOREGROUND_ABILITY");
87     SetNamedProperty(env, Flags, 0x00000400, "FLAG_ABILITY_CONTINUATION_REVERSIBLE");
88     SetNamedProperty(env, Flags, 0x00000800, "FLAG_INSTALL_ON_DEMAND");
89     SetNamedProperty(env, Flags, 0x80000000, "FLAG_INSTALL_WITH_BACKGROUND_MODE");
90     SetNamedProperty(env, Flags, 0x00008000, "FLAG_ABILITY_CLEAR_MISSION");
91     SetNamedProperty(env, Flags, 0x10000000, "FLAG_ABILITY_NEW_MISSION");
92     SetNamedProperty(env, Flags, 0x20000000, "FLAG_ABILITY_MISSION_TOP");
93     SetNamedProperty(env, Flags, 0x40000000, "FLAG_START_WITHOUT_TIPS");
94 
95     SetNamedProperty(env, showMode, 0, "WINDOW");
96     SetNamedProperty(env, showMode, 1, "EMBEDDED_FULL");
97 
98 #ifdef ENABLE_ERRCODE
99     napi_value params = nullptr;
100     napi_create_object(env, &params);
101 #ifdef WITH_DLP
102     SetNamedProperty(env, params, "ohos.dlp.params.sandbox", "DLP_PARAMS_SANDBOX");
103     SetNamedProperty(env, params, "ohos.dlp.params.bundleName", "DLP_PARAMS_BUNDLE_NAME");
104     SetNamedProperty(env, params, "ohos.dlp.params.moduleName", "DLP_PARAMS_MODULE_NAME");
105     SetNamedProperty(env, params, "ohos.dlp.params.abilityName", "DLP_PARAMS_ABILITY_NAME");
106     SetNamedProperty(env, params, "ohos.dlp.params.index", "DLP_PARAMS_INDEX");
107 #endif // WITH_DLP
108     SetNamedProperty(env, params, "ability.params.backToOtherMissionStack", "ABILITY_BACK_TO_OTHER_MISSION_STACK");
109     SetNamedProperty(env, params, "ohos.ability.params.abilityRecoveryRestart", "ABILITY_RECOVERY_RESTART");
110     SetNamedProperty(env, params, "ohos.ability.params.asssertFaultSessionId", "ASSERT_FAULT_SESSION_ID");
111     SetNamedProperty(env, params, "ohos.extra.param.key.contentTitle", "CONTENT_TITLE_KEY");
112     SetNamedProperty(env, params, "ohos.extra.param.key.shareAbstract", "SHARE_ABSTRACT_KEY");
113     SetNamedProperty(env, params, "ohos.extra.param.key.shareUrl", "SHARE_URL_KEY");
114     SetNamedProperty(env, params, "ohos.extra.param.key.supportContinuePageStack", "SUPPORT_CONTINUE_PAGE_STACK_KEY");
115     SetNamedProperty(env, params, "ohos.extra.param.key.supportContinueSourceExit", "SUPPORT_CONTINUE_SOURCE_EXIT_KEY");
116     SetNamedProperty(env, params, "ohos.extra.param.key.showMode", "SHOW_MODE_KEY");
117     SetNamedProperty(env, params, "ohos.extra.param.key.appCloneIndex", "APP_CLONE_INDEX_KEY");
118     SetNamedProperty(env, params, "ohos.param.atomicservice.pagePath", "PAGE_PATH");
119     SetNamedProperty(env, params, "ohos.param.atomicservice.routerName", "ROUTER_NAME");
120     SetNamedProperty(env, params, "ohos.param.atomicservice.pageSourceFile", "PAGE_SOURCE_FILE");
121     SetNamedProperty(env, params, "ohos.param.atomicservice.buildFunction", "BUILD_FUNCTION");
122     SetNamedProperty(env, params, "ohos.param.atomicservice.subpackageName", "SUB_PACKAGE_NAME");
123     SetNamedProperty(env, params, "ohos.extra.param.key.callerRequestCode", "CALLER_REQUEST_CODE");
124     SetNamedProperty(env, params, "ability.params.stream", "PARAMS_STREAM");
125     SetNamedProperty(env, params, "ohos.extra.param.key.appInstance", "APP_INSTANCE_KEY");
126     SetNamedProperty(env, params, "ohos.extra.param.key.createAppInstance", "CREATE_APP_INSTANCE_KEY");
127     SetNamedProperty(env, params, "ohos.param.callerAppCloneIndex", "CALLER_APP_CLONE_INDEX");
128     napi_property_descriptor exportFuncs[] = {
129         DECLARE_NAPI_PROPERTY("Action", action),
130         DECLARE_NAPI_PROPERTY("Entity", entity),
131         DECLARE_NAPI_PROPERTY("Params", params),
132         DECLARE_NAPI_PROPERTY("Flags", Flags),
133         DECLARE_NAPI_PROPERTY("ShowMode", showMode),
134     };
135 #else
136     napi_property_descriptor exportFuncs[] = {
137         DECLARE_NAPI_PROPERTY("Action", action),
138         DECLARE_NAPI_PROPERTY("Entity", entity),
139         DECLARE_NAPI_PROPERTY("Flags", Flags),
140     };
141 #endif // ENABLE_ERRCODE
142     napi_define_properties(env, exports, sizeof(exportFuncs) / sizeof(*exportFuncs), exportFuncs);
143 
144     return exports;
145 }
146 
SetNamedProperty(napi_env env,napi_value dstObj,const char * objName,const char * propName)147 void SetNamedProperty(napi_env env, napi_value dstObj, const char *objName, const char *propName)
148 {
149     TAG_LOGD(AAFwkTag::WANT, "called");
150     napi_value prop = nullptr;
151     napi_create_string_utf8(env, objName, NAPI_AUTO_LENGTH, &prop);
152     napi_set_named_property(env, dstObj, propName, prop);
153 }
154 
SetNamedProperty(napi_env env,napi_value dstObj,const int32_t objValue,const char * propName)155 void SetNamedProperty(napi_env env, napi_value dstObj, const int32_t objValue, const char *propName)
156 {
157     TAG_LOGD(AAFwkTag::WANT, "called");
158     napi_value prop = nullptr;
159     napi_create_int32(env, objValue, &prop);
160     napi_set_named_property(env, dstObj, propName, prop);
161 }
162 
ActionConstructor(napi_env env,napi_callback_info info)163 napi_value ActionConstructor(napi_env env, napi_callback_info info)
164 {
165     napi_value jsthis = nullptr;
166     napi_get_cb_info(env, info, nullptr, nullptr, &jsthis, nullptr);
167     return jsthis;
168 }
169 }  // namespace AppExecFwk
170 }  // namespace OHOS
171