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 #include "js_data_struct_converter.h"
17
18 #include "common_func.h"
19 #include "configuration_convertor.h"
20 #include "hilog_wrapper.h"
21 #include "js_runtime.h"
22 #include "js_runtime_utils.h"
23
24 namespace OHOS {
25 namespace AbilityRuntime {
26 using namespace OHOS::AppExecFwk;
CreateJsWantObject(NativeEngine & engine,const AAFwk::Want & want)27 NativeValue* CreateJsWantObject(NativeEngine& engine, const AAFwk::Want& want)
28 {
29 NativeValue* objValue = engine.CreateObject();
30 NativeObject* object = ConvertNativeValueTo<NativeObject>(objValue);
31 if (object == nullptr) {
32 HILOG_ERROR("Native object is nullptr.");
33 return objValue;
34 }
35
36 object->SetProperty("deviceId", CreateJsValue(engine, want.GetOperation().GetDeviceId()));
37 object->SetProperty("bundleName", CreateJsValue(engine, want.GetBundle()));
38 object->SetProperty("abilityName", CreateJsValue(engine, want.GetOperation().GetAbilityName()));
39 object->SetProperty("uri", CreateJsValue(engine, want.GetUriString()));
40 object->SetProperty("type", CreateJsValue(engine, want.GetType()));
41 object->SetProperty("flags", CreateJsValue(engine, want.GetFlags()));
42 object->SetProperty("action", CreateJsValue(engine, want.GetAction()));
43 object->SetProperty("entities", CreateNativeArray(engine, want.GetEntities()));
44 return objValue;
45 }
46
CreateJsAbilityInfo(NativeEngine & engine,const AppExecFwk::AbilityInfo & abilityInfo)47 NativeValue* CreateJsAbilityInfo(NativeEngine& engine, const AppExecFwk::AbilityInfo& abilityInfo)
48 {
49 NativeValue* objValue = engine.CreateObject();
50 if (objValue == nullptr) {
51 HILOG_ERROR("Create object failed.");
52 return nullptr;
53 }
54
55 AppExecFwk::CommonFunc::ConvertAbilityInfo(reinterpret_cast<napi_env>(&engine), abilityInfo,
56 reinterpret_cast<napi_value>(objValue));
57 return objValue;
58 }
59
CreateJsApplicationInfo(NativeEngine & engine,const AppExecFwk::ApplicationInfo & applicationInfo)60 NativeValue* CreateJsApplicationInfo(NativeEngine& engine, const AppExecFwk::ApplicationInfo &applicationInfo)
61 {
62 NativeValue* objValue = engine.CreateObject();
63 if (objValue == nullptr) {
64 HILOG_ERROR("Create object failed.");
65 return nullptr;
66 }
67
68 AppExecFwk::CommonFunc::ConvertApplicationInfo(reinterpret_cast<napi_env>(&engine),
69 reinterpret_cast<napi_value>(objValue), applicationInfo);
70 return objValue;
71 }
72
CreateJsLaunchParam(NativeEngine & engine,const AAFwk::LaunchParam & launchParam)73 NativeValue* CreateJsLaunchParam(NativeEngine& engine, const AAFwk::LaunchParam& launchParam)
74 {
75 NativeValue *objValue = engine.CreateObject();
76 NativeObject *object = ConvertNativeValueTo<NativeObject>(objValue);
77 if (object == nullptr) {
78 HILOG_ERROR("Native object is nullptr.");
79 return objValue;
80 }
81
82 object->SetProperty("launchReason", CreateJsValue(engine, launchParam.launchReason));
83 object->SetProperty("lastExitReason", CreateJsValue(engine, launchParam.lastExitReason));
84
85 return objValue;
86 }
87
CreateJsConfiguration(NativeEngine & engine,const AppExecFwk::Configuration & configuration)88 NativeValue* CreateJsConfiguration(NativeEngine& engine, const AppExecFwk::Configuration& configuration)
89 {
90 NativeValue* objValue = engine.CreateObject();
91 NativeObject* object = ConvertNativeValueTo<NativeObject>(objValue);
92 if (object == nullptr) {
93 HILOG_ERROR("Native object is nullptr.");
94 return objValue;
95 }
96
97 object->SetProperty("language", CreateJsValue(engine,
98 configuration.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_LANGUAGE)));
99 object->SetProperty("colorMode", CreateJsValue(engine,
100 ConvertColorMode(configuration.GetItem(AAFwk::GlobalConfigurationKey::SYSTEM_COLORMODE))));
101
102 int32_t displayId = ConvertDisplayId(configuration.GetItem(ConfigurationInner::APPLICATION_DISPLAYID));
103
104 std::string direction = configuration.GetItem(displayId, ConfigurationInner::APPLICATION_DIRECTION);
105 object->SetProperty("direction", CreateJsValue(engine, ConvertDirection(direction)));
106
107 std::string density = configuration.GetItem(displayId, ConfigurationInner::APPLICATION_DENSITYDPI);
108 object->SetProperty("screenDensity", CreateJsValue(engine, ConvertDensity(density)));
109
110 object->SetProperty("displayId", CreateJsValue(engine, displayId));
111
112 std::string hasPointerDevice = configuration.GetItem(AAFwk::GlobalConfigurationKey::INPUT_POINTER_DEVICE);
113 object->SetProperty("hasPointerDevice", CreateJsValue(engine, hasPointerDevice == "true" ? true : false));
114
115 return objValue;
116 }
117
CreateJsExtensionAbilityInfo(NativeEngine & engine,const AppExecFwk::ExtensionAbilityInfo & info)118 NativeValue* CreateJsExtensionAbilityInfo(NativeEngine& engine, const AppExecFwk::ExtensionAbilityInfo& info)
119 {
120 HILOG_DEBUG("CreateJsExtensionAbilityInfo begin");
121 NativeValue* objValue = engine.CreateObject();
122 if (objValue == nullptr) {
123 HILOG_ERROR("Create object failed.");
124 return nullptr;
125 }
126
127 AppExecFwk::CommonFunc::ConvertExtensionInfo(reinterpret_cast<napi_env>(&engine), info,
128 reinterpret_cast<napi_value>(objValue));
129 return objValue;
130 }
131
CreateJsHapModuleInfo(NativeEngine & engine,const AppExecFwk::HapModuleInfo & hapModuleInfo)132 NativeValue* CreateJsHapModuleInfo(NativeEngine& engine, const AppExecFwk::HapModuleInfo& hapModuleInfo)
133 {
134 NativeValue* objValue = engine.CreateObject();
135 if (objValue == nullptr) {
136 HILOG_ERROR("Create object failed.");
137 return nullptr;
138 }
139
140 AppExecFwk::CommonFunc::ConvertHapModuleInfo(reinterpret_cast<napi_env>(&engine), hapModuleInfo,
141 reinterpret_cast<napi_value>(objValue));
142 return objValue;
143 }
144 } // namespace AbilityRuntime
145 } // namespace OHOS
146