• 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 #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