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 implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "webview_value.h"
17
18 #include "nweb_log.h"
19
20 namespace OHOS::NWeb {
21
WebViewValue(NWebRomValue::Type type)22 WebViewValue::WebViewValue(NWebRomValue::Type type)
23 {
24 type_ = type;
25 }
26
GetType()27 NWebRomValue::Type WebViewValue::GetType()
28 {
29 return type_;
30 }
31
SetType(NWebRomValue::Type type)32 void WebViewValue::SetType(NWebRomValue::Type type)
33 {
34 CheckType(NWebRomValue::Type::NONE);
35 type_ = type;
36 }
37
GetInt()38 int WebViewValue::GetInt()
39 {
40 CheckType(NWebRomValue::Type::INTEGER);
41 return data_.n;
42 }
43
SetInt(int value)44 void WebViewValue::SetInt(int value)
45 {
46 CheckType(NWebRomValue::Type::INTEGER);
47 data_.n = value;
48 }
49
GetBool()50 bool WebViewValue::GetBool()
51 {
52 CheckType(NWebRomValue::Type::BOOLEAN);
53 return data_.b;
54 }
55
SetBool(bool value)56 void WebViewValue::SetBool(bool value)
57 {
58 CheckType(NWebRomValue::Type::BOOLEAN);
59 data_.b = value;
60 }
61
GetDouble()62 double WebViewValue::GetDouble()
63 {
64 CheckType(NWebRomValue::Type::DOUBLE);
65 return data_.f;
66 }
67
SetDouble(double value)68 void WebViewValue::SetDouble(double value)
69 {
70 CheckType(NWebRomValue::Type::DOUBLE);
71 data_.f = value;
72 }
73
GetString()74 std::string WebViewValue::GetString()
75 {
76 CheckType(NWebRomValue::Type::STRING);
77 return str_;
78 }
79
SetString(const std::string & value)80 void WebViewValue::SetString(const std::string& value)
81 {
82 CheckType(NWebRomValue::Type::STRING);
83 str_ = value;
84 }
85
GetBinary(int & length)86 const char* WebViewValue::GetBinary(int& length)
87 {
88 CheckType(NWebRomValue::Type::BINARY);
89 length = static_cast<int>(str_.size());
90 return str_.c_str();
91 }
92
SetBinary(int length,const char * value)93 void WebViewValue::SetBinary(int length, const char* value)
94 {
95 CheckType(NWebRomValue::Type::BINARY);
96 str_.assign(value, length);
97 }
98
GetDictValue()99 std::map<std::string, std::shared_ptr<NWebRomValue>> WebViewValue::GetDictValue()
100 {
101 CheckType(NWebRomValue::Type::DICTIONARY);
102 return dict_value_;
103 }
104
GetListValue()105 std::vector<std::shared_ptr<NWebRomValue>> WebViewValue::GetListValue()
106 {
107 CheckType(NWebRomValue::Type::LIST);
108 return list_value_;
109 }
110
NewChildValue()111 std::shared_ptr<NWebRomValue> WebViewValue::NewChildValue()
112 {
113 if (child_node_) {
114 WVLOG_E("child node is not nullptr");
115 }
116
117 child_node_ = std::make_shared<WebViewValue>();
118 return child_node_;
119 }
120
SaveDictChildValue(const std::string & key)121 void WebViewValue::SaveDictChildValue(const std::string& key)
122 {
123 if (!child_node_) {
124 WVLOG_E("child node is nullptr");
125 return;
126 }
127
128 CheckType(NWebRomValue::Type::DICTIONARY);
129 dict_value_[key] = child_node_;
130 child_node_ = nullptr;
131 }
132
SaveListChildValue()133 void WebViewValue::SaveListChildValue()
134 {
135 if (!child_node_) {
136 WVLOG_E("child node is nullptr");
137 return;
138 }
139
140 CheckType(NWebRomValue::Type::LIST);
141 list_value_.push_back(child_node_);
142 child_node_ = nullptr;
143 }
144
CheckType(NWebRomValue::Type type)145 void WebViewValue::CheckType(NWebRomValue::Type type)
146 {
147 if ((type != NWebRomValue::Type::NONE) && (type_ != type)) {
148 WVLOG_E("type %{public}hhu - %{public}hhu is invalid", type_, type);
149 }
150 }
151
152 } // namespace OHOS::NWeb
153