1 /*
2 * Copyright (c) 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 wrapperied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "ohos_nweb/bridge/ark_web_rom_value_wrapper.h"
17
18 #include "ohos_nweb/ctocpp/ark_web_rom_value_vector_ctocpp.h"
19
20 #include "base/bridge/ark_web_bridge_macros.h"
21
22 namespace OHOS::ArkWeb {
23
24 using ArkWebRomValueType = OHOS::NWeb::NWebRomValue::Type;
25
ArkWebRomValueWrapper(ArkWebRefPtr<ArkWebRomValue> ark_web_rom_value)26 ArkWebRomValueWrapper::ArkWebRomValueWrapper(ArkWebRefPtr<ArkWebRomValue> ark_web_rom_value)
27 : ark_web_rom_value_(ark_web_rom_value)
28 {}
29
GetType()30 ArkWebRomValueType ArkWebRomValueWrapper::GetType()
31 {
32 return static_cast<ArkWebRomValueType>(ark_web_rom_value_->GetType());
33 }
34
SetType(ArkWebRomValueType type)35 void ArkWebRomValueWrapper::SetType(ArkWebRomValueType type)
36 {
37 ark_web_rom_value_->SetType(static_cast<unsigned char>(type));
38 }
39
GetInt()40 int ArkWebRomValueWrapper::GetInt()
41 {
42 return ark_web_rom_value_->GetInt();
43 }
44
SetInt(int value)45 void ArkWebRomValueWrapper::SetInt(int value)
46 {
47 ark_web_rom_value_->SetInt(value);
48 }
49
GetBool()50 bool ArkWebRomValueWrapper::GetBool()
51 {
52 return ark_web_rom_value_->GetBool();
53 }
54
SetBool(bool value)55 void ArkWebRomValueWrapper::SetBool(bool value)
56 {
57 ark_web_rom_value_->SetBool(value);
58 }
59
GetDouble()60 double ArkWebRomValueWrapper::GetDouble()
61 {
62 return ark_web_rom_value_->GetDouble();
63 }
64
SetDouble(double value)65 void ArkWebRomValueWrapper::SetDouble(double value)
66 {
67 ark_web_rom_value_->SetDouble(value);
68 }
69
GetString()70 std::string ArkWebRomValueWrapper::GetString()
71 {
72 auto stValue = ark_web_rom_value_->GetString();
73 auto value = ArkWebStringStructToClass(stValue);
74 ArkWebStringStructRelease(stValue);
75 return value;
76 }
77
SetString(const std::string & value)78 void ArkWebRomValueWrapper::SetString(const std::string& value)
79 {
80 auto stValue = ArkWebStringClassToStruct(value);
81 ark_web_rom_value_->SetString(stValue);
82 ArkWebStringStructRelease(stValue);
83 }
84
GetBinary(int & length)85 const char* ArkWebRomValueWrapper::GetBinary(int& length)
86 {
87 return ark_web_rom_value_->GetBinary(length);
88 }
89
SetBinary(int length,const char * value)90 void ArkWebRomValueWrapper::SetBinary(int length, const char* value)
91 {
92 ark_web_rom_value_->SetBinary(length, value);
93 }
94
GetDictValue()95 std::map<std::string, std::shared_ptr<OHOS::NWeb::NWebRomValue>> ArkWebRomValueWrapper::GetDictValue()
96 {
97 auto stValue = ark_web_rom_value_->GetDictValue();
98 auto value = ArkWebRomValueMapStructToClass(stValue);
99 ArkWebRomValueMapStructRelease(stValue);
100 return value;
101 }
102
GetListValue()103 std::vector<std::shared_ptr<OHOS::NWeb::NWebRomValue>> ArkWebRomValueWrapper::GetListValue()
104 {
105 auto stValue = ark_web_rom_value_->GetListValue();
106 auto value = ArkWebRomValueVectorStructToClass(stValue);
107 ArkWebRomValueVectorStructRelease(stValue);
108 return value;
109 }
110
NewChildValue()111 std::shared_ptr<OHOS::NWeb::NWebRomValue> ArkWebRomValueWrapper::NewChildValue()
112 {
113 ArkWebRefPtr<ArkWebRomValue> ark_web_rom_value = ark_web_rom_value_->NewChildValue();
114 if (CHECK_REF_PTR_IS_NULL(ark_web_rom_value)) {
115 return nullptr;
116 }
117
118 return std::make_shared<ArkWebRomValueWrapper>(ark_web_rom_value);
119 }
120
SaveDictChildValue(const std::string & key)121 void ArkWebRomValueWrapper::SaveDictChildValue(const std::string& key)
122 {
123 auto stKey = ArkWebStringClassToStruct(key);
124 ark_web_rom_value_->SaveDictChildValue(stKey);
125 ArkWebStringStructRelease(stKey);
126 }
127
SaveListChildValue()128 void ArkWebRomValueWrapper::SaveListChildValue()
129 {
130 ark_web_rom_value_->SaveListChildValue();
131 }
132
GetInt64()133 int64_t ArkWebRomValueWrapper::GetInt64()
134 {
135 return ark_web_rom_value_->GetInt64();
136 }
137
SetInt64(int64_t value)138 void ArkWebRomValueWrapper::SetInt64(int64_t value)
139 {
140 ark_web_rom_value_->SetInt64(value);
141 }
142
GetBinary()143 std::vector<uint8_t> ArkWebRomValueWrapper::GetBinary()
144 {
145 auto stValue = ark_web_rom_value_->GetBinary();
146 auto value = ArkWebBasicVectorStructToClass<uint8_t, ArkWebUint8Vector>(stValue);
147 ArkWebBasicVectorStructRelease<ArkWebUint8Vector>(stValue);
148 return value;
149 }
150
SetBinary(const std::vector<uint8_t> & value)151 void ArkWebRomValueWrapper::SetBinary(const std::vector<uint8_t>& value)
152 {
153 auto stValue = ArkWebBasicVectorClassToStruct<uint8_t, ArkWebUint8Vector>(value);
154 ark_web_rom_value_->SetBinary(stValue);
155 ArkWebBasicVectorStructRelease<ArkWebUint8Vector>(stValue);
156 }
157
GetBoolArray()158 std::vector<bool> ArkWebRomValueWrapper::GetBoolArray()
159 {
160 auto stValue = ark_web_rom_value_->GetBoolArray();
161 auto value = ArkWebBasicVectorStructToClass<bool, ArkWebBooleanVector>(stValue);
162 ArkWebBasicVectorStructRelease<ArkWebBooleanVector>(stValue);
163 return value;
164 }
165
SetBoolArray(const std::vector<bool> & value)166 void ArkWebRomValueWrapper::SetBoolArray(const std::vector<bool>& value)
167 {
168 auto stValue = ArkWebBasicVectorClassToStruct<bool, ArkWebBooleanVector>(value);
169 ark_web_rom_value_->SetBoolArray(stValue);
170 ArkWebBasicVectorStructRelease<ArkWebBooleanVector>(stValue);
171 }
172
GetInt64Array()173 std::vector<int64_t> ArkWebRomValueWrapper::GetInt64Array()
174 {
175 auto stValue = ark_web_rom_value_->GetInt64Array();
176 auto value = ArkWebBasicVectorStructToClass<int64_t, ArkWebInt64Vector>(stValue);
177 ArkWebBasicVectorStructRelease<ArkWebInt64Vector>(stValue);
178 return value;
179 }
180
SetInt64Array(const std::vector<int64_t> & value)181 void ArkWebRomValueWrapper::SetInt64Array(const std::vector<int64_t>& value)
182 {
183 auto stValue = ArkWebBasicVectorClassToStruct<int64_t, ArkWebInt64Vector>(value);
184 ark_web_rom_value_->SetInt64Array(stValue);
185 ArkWebBasicVectorStructRelease<ArkWebInt64Vector>(stValue);
186 }
187
GetDoubleArray()188 std::vector<double> ArkWebRomValueWrapper::GetDoubleArray()
189 {
190 auto stValue = ark_web_rom_value_->GetDoubleArray();
191 auto value = ArkWebBasicVectorStructToClass<double, ArkWebDoubleVector>(stValue);
192 ArkWebBasicVectorStructRelease<ArkWebDoubleVector>(stValue);
193 return value;
194 }
195
SetDoubleArray(const std::vector<double> & value)196 void ArkWebRomValueWrapper::SetDoubleArray(const std::vector<double>& value)
197 {
198 auto stValue = ArkWebBasicVectorClassToStruct<double, ArkWebDoubleVector>(value);
199 ark_web_rom_value_->SetDoubleArray(stValue);
200 ArkWebBasicVectorStructRelease<ArkWebDoubleVector>(stValue);
201 }
202
GetStringArray()203 std::vector<std::string> ArkWebRomValueWrapper::GetStringArray()
204 {
205 auto stValue = ark_web_rom_value_->GetStringArray();
206 auto value = ArkWebStringVectorStructToClass(stValue);
207 ArkWebStringVectorStructRelease(stValue);
208 return value;
209 }
210
SetStringArray(const std::vector<std::string> & value)211 void ArkWebRomValueWrapper::SetStringArray(const std::vector<std::string>& value)
212 {
213 auto stValue = ArkWebStringVectorClassToStruct(value);
214 ark_web_rom_value_->SetStringArray(stValue);
215 ArkWebStringVectorStructRelease(stValue);
216 }
217
GetErrMsg()218 std::string ArkWebRomValueWrapper::GetErrMsg()
219 {
220 auto stMsg = ark_web_rom_value_->GetErrMsg();
221 auto msg = ArkWebStringStructToClass(stMsg);
222 ArkWebStringStructRelease(stMsg);
223 return msg;
224 }
225
SetErrMsg(const std::string & msg)226 void ArkWebRomValueWrapper::SetErrMsg(const std::string& msg)
227 {
228 auto stMsg = ArkWebStringClassToStruct(msg);
229 ark_web_rom_value_->SetErrMsg(stMsg);
230 ArkWebStringStructRelease(stMsg);
231 }
232
GetErrName()233 std::string ArkWebRomValueWrapper::GetErrName()
234 {
235 auto stName = ark_web_rom_value_->GetErrName();
236 auto name = ArkWebStringStructToClass(stName);
237 ArkWebStringStructRelease(stName);
238 return name;
239 }
240
SetErrName(const std::string & name)241 void ArkWebRomValueWrapper::SetErrName(const std::string& name)
242 {
243 auto stName = ArkWebStringClassToStruct(name);
244 ark_web_rom_value_->SetErrName(stName);
245 ArkWebStringStructRelease(stName);
246 }
247
248 } // namespace OHOS::ArkWeb
249