• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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