• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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_hap_module_info_utils.h"
17 
18 #include "js_data_struct_converter.h"
19 #include "js_runtime_utils.h"
20 
21 namespace OHOS {
22 namespace AbilityRuntime {
CreateJsHapModuleInfo(NativeEngine & engine,AppExecFwk::HapModuleInfo & hapModuleInfo)23 NativeValue* CreateJsHapModuleInfo(NativeEngine& engine, AppExecFwk::HapModuleInfo& hapModuleInfo)
24 {
25     NativeValue* objValue = engine.CreateObject();
26     NativeObject* object = ConvertNativeValueTo<NativeObject>(objValue);
27     if (object == nullptr) {
28         return objValue;
29     }
30 
31     object->SetProperty("name", CreateJsValue(engine, hapModuleInfo.name));
32     object->SetProperty("moduleName", CreateJsValue(engine, hapModuleInfo.moduleName));
33     object->SetProperty("description", CreateJsValue(engine, hapModuleInfo.description));
34     object->SetProperty("descriptionId", CreateJsValue(engine, hapModuleInfo.descriptionId));
35     object->SetProperty("icon", CreateJsValue(engine, hapModuleInfo.iconPath));
36     object->SetProperty("iconId", CreateJsValue(engine, hapModuleInfo.iconId));
37     object->SetProperty("label", CreateJsValue(engine, hapModuleInfo.label));
38     object->SetProperty("labelId", CreateJsValue(engine, hapModuleInfo.labelId));
39     object->SetProperty("backgroundImg", CreateJsValue(engine, hapModuleInfo.backgroundImg));
40     object->SetProperty("mainAbilityName", CreateJsValue(engine, hapModuleInfo.mainAbility));
41     object->SetProperty("supportedModes", CreateJsValue(engine, hapModuleInfo.supportedModes));
42     object->SetProperty("installationFree", CreateJsValue(engine, hapModuleInfo.installationFree));
43     object->SetProperty("mainElementName", CreateJsValue(engine, hapModuleInfo.mainElementName));
44     object->SetProperty("hashValue", CreateJsValue(engine, hapModuleInfo.hashValue));
45 
46     SetProperty(engine, object, hapModuleInfo.reqCapabilities, "reqCapabilities");
47     SetProperty(engine, object, hapModuleInfo.deviceTypes, "deviceTypes");
48 
49     NativeValue *abilityArrayValue = engine.CreateArray(hapModuleInfo.abilityInfos.size());
50     NativeArray *abilityArray = ConvertNativeValueTo<NativeArray>(abilityArrayValue);
51     if (abilityArray != nullptr) {
52         int index = 0;
53         for (auto abilityInfo : hapModuleInfo.abilityInfos) {
54             abilityArray->SetElement(index++, CreateJsAbilityInfo(engine, abilityInfo));
55         }
56     }
57     object->SetProperty("abilityInfo", abilityArrayValue);
58 
59     NativeValue *extensionArrayValue = engine.CreateArray(hapModuleInfo.extensionInfos.size());
60     NativeArray *extensionArray = ConvertNativeValueTo<NativeArray>(extensionArrayValue);
61     if (extensionArray != nullptr) {
62         int index = 0;
63         for (auto extensionInfo : hapModuleInfo.extensionInfos) {
64             extensionArray->SetElement(index++, CreateJsExtensionAbilityInfo(engine, extensionInfo));
65         }
66     }
67     object->SetProperty("extensionAbilityInfo", extensionArrayValue);
68 
69     NativeValue *metadataArrayValue = engine.CreateArray(hapModuleInfo.metadata.size());
70     NativeArray *metadataArray = ConvertNativeValueTo<NativeArray>(metadataArrayValue);
71     if (metadataArray != nullptr) {
72         int index = 0;
73         for (auto metadata : hapModuleInfo.metadata) {
74             metadataArray->SetElement(index++, CreateJsMetadata(engine, metadata));
75         }
76     }
77     object->SetProperty("metadata", metadataArrayValue);
78 
79     return objValue;
80 }
81 
SetProperty(NativeEngine & engine,NativeObject * & object,const std::vector<std::string> & properties,const std::string & proName)82 void SetProperty(NativeEngine &engine, NativeObject* &object, const std::vector<std::string> &properties,
83     const std::string &proName)
84 {
85     NativeValue *arrayValue = engine.CreateArray(properties.size());
86     NativeArray *array = ConvertNativeValueTo<NativeArray>(arrayValue);
87     if (array != nullptr) {
88         int index = 0;
89         for (auto property : properties) {
90             array->SetElement(index++, CreateJsValue(engine, property));
91         }
92     }
93     object->SetProperty(proName.c_str(), arrayValue);
94 }
95 }  // namespace AbilityRuntime
96 }  // namespace OHOS
97