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 "ohos_nweb/bridge/ark_web_cookie_manager_wrapper.h"
17
18 #include "ohos_nweb/bridge/ark_web_bool_value_callback_impl.h"
19 #include "ohos_nweb/bridge/ark_web_long_value_callback_impl.h"
20 #include "ohos_nweb/bridge/ark_web_string_value_callback_impl.h"
21
22 #include "base/bridge/ark_web_bridge_macros.h"
23
24 namespace OHOS::ArkWeb {
25
ArkWebCookieManagerWrapper(ArkWebRefPtr<ArkWebCookieManager> ark_web_cookie_manager)26 ArkWebCookieManagerWrapper::ArkWebCookieManagerWrapper(ArkWebRefPtr<ArkWebCookieManager> ark_web_cookie_manager)
27 : ark_web_cookie_manager_(ark_web_cookie_manager)
28 {}
29
Store()30 bool ArkWebCookieManagerWrapper::Store()
31 {
32 return ark_web_cookie_manager_->Store();
33 }
34
Store(std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)35 void ArkWebCookieManagerWrapper::Store(std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)
36 {
37 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
38 ark_web_cookie_manager_->Store(nullptr);
39 return;
40 }
41
42 ark_web_cookie_manager_->Store(new ArkWebBoolValueCallbackImpl(callback));
43 }
44
SetCookie(const std::string & url,const std::string & value,bool incognito_mode)45 int ArkWebCookieManagerWrapper::SetCookie(const std::string& url, const std::string& value, bool incognito_mode)
46 {
47 ArkWebString stUrl = ArkWebStringClassToStruct(url);
48 ArkWebString stValue = ArkWebStringClassToStruct(value);
49
50 int code = ark_web_cookie_manager_->SetCookie(stUrl, stValue, incognito_mode);
51
52 ArkWebStringStructRelease(stUrl);
53 ArkWebStringStructRelease(stValue);
54 return code;
55 }
56
SetCookie(const std::string & url,const std::string & value,std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)57 void ArkWebCookieManagerWrapper::SetCookie(
58 const std::string& url, const std::string& value, std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)
59 {
60 ArkWebString stUrl = ArkWebStringClassToStruct(url);
61 ArkWebString stValue = ArkWebStringClassToStruct(value);
62
63 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
64 ark_web_cookie_manager_->SetCookie(stUrl, stValue, nullptr);
65 } else {
66 ark_web_cookie_manager_->SetCookie(stUrl, stValue, new ArkWebBoolValueCallbackImpl(callback));
67 }
68
69 ArkWebStringStructRelease(stUrl);
70 ArkWebStringStructRelease(stValue);
71 }
72
ExistCookies(bool incognito_mode)73 bool ArkWebCookieManagerWrapper::ExistCookies(bool incognito_mode)
74 {
75 return ark_web_cookie_manager_->ExistCookies(incognito_mode);
76 }
77
ExistCookies(std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)78 void ArkWebCookieManagerWrapper::ExistCookies(std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)
79 {
80 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
81 ark_web_cookie_manager_->ExistCookies(nullptr);
82 return;
83 }
84
85 ark_web_cookie_manager_->ExistCookies(new ArkWebBoolValueCallbackImpl(callback));
86 }
87
ReturnCookie(const std::string & url,bool & is_valid,bool incognito_mode)88 std::string ArkWebCookieManagerWrapper::ReturnCookie(const std::string& url, bool& is_valid, bool incognito_mode)
89 {
90 ArkWebString stUrl = ArkWebStringClassToStruct(url);
91
92 ArkWebString stCookie = ark_web_cookie_manager_->ReturnCookie(stUrl, is_valid, incognito_mode);
93
94 std::string objCookie = ArkWebStringStructToClass(stCookie);
95 ArkWebStringStructRelease(stUrl);
96 ArkWebStringStructRelease(stCookie);
97 return objCookie;
98 }
99
ReturnCookie(const std::string & url,std::shared_ptr<OHOS::NWeb::NWebStringValueCallback> callback)100 void ArkWebCookieManagerWrapper::ReturnCookie(
101 const std::string& url, std::shared_ptr<OHOS::NWeb::NWebStringValueCallback> callback)
102 {
103 ArkWebString stUrl = ArkWebStringClassToStruct(url);
104
105 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
106 ark_web_cookie_manager_->ReturnCookie(stUrl, nullptr);
107 } else {
108 ark_web_cookie_manager_->ReturnCookie(stUrl, new ArkWebStringValueCallbackImpl(callback));
109 }
110
111 ArkWebStringStructRelease(stUrl);
112 }
113
ConfigCookie(const std::string & url,const std::string & value,std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)114 void ArkWebCookieManagerWrapper::ConfigCookie(
115 const std::string& url, const std::string& value, std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)
116 {
117 ArkWebString stUrl = ArkWebStringClassToStruct(url);
118 ArkWebString stValue = ArkWebStringClassToStruct(value);
119
120 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
121 ark_web_cookie_manager_->ConfigCookie(stUrl, stValue, nullptr);
122 } else {
123 ark_web_cookie_manager_->ConfigCookie(stUrl, stValue, new ArkWebLongValueCallbackImpl(callback));
124 }
125
126 ArkWebStringStructRelease(stUrl);
127 ArkWebStringStructRelease(stValue);
128 }
129
DeleteSessionCookies(std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)130 void ArkWebCookieManagerWrapper::DeleteSessionCookies(std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback)
131 {
132 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
133 ark_web_cookie_manager_->DeleteSessionCookies(nullptr);
134 return;
135 }
136
137 ark_web_cookie_manager_->DeleteSessionCookies(new ArkWebBoolValueCallbackImpl(callback));
138 }
139
DeleteCookieEntirely(std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback,bool incognito_mode)140 void ArkWebCookieManagerWrapper::DeleteCookieEntirely(
141 std::shared_ptr<OHOS::NWeb::NWebBoolValueCallback> callback, bool incognito_mode)
142 {
143 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
144 ark_web_cookie_manager_->DeleteCookieEntirely(nullptr, incognito_mode);
145 return;
146 }
147
148 ark_web_cookie_manager_->DeleteCookieEntirely(new ArkWebBoolValueCallbackImpl(callback), incognito_mode);
149 }
150
IsAcceptCookieAllowed()151 bool ArkWebCookieManagerWrapper::IsAcceptCookieAllowed()
152 {
153 return ark_web_cookie_manager_->IsAcceptCookieAllowed();
154 }
155
PutAcceptCookieEnabled(bool accept)156 void ArkWebCookieManagerWrapper::PutAcceptCookieEnabled(bool accept)
157 {
158 ark_web_cookie_manager_->PutAcceptCookieEnabled(accept);
159 }
160
IsThirdPartyCookieAllowed()161 bool ArkWebCookieManagerWrapper::IsThirdPartyCookieAllowed()
162 {
163 return ark_web_cookie_manager_->IsThirdPartyCookieAllowed();
164 }
165
IsFileURLSchemeCookiesAllowed()166 bool ArkWebCookieManagerWrapper::IsFileURLSchemeCookiesAllowed()
167 {
168 return ark_web_cookie_manager_->IsFileURLSchemeCookiesAllowed();
169 }
170
PutAcceptThirdPartyCookieEnabled(bool accept)171 void ArkWebCookieManagerWrapper::PutAcceptThirdPartyCookieEnabled(bool accept)
172 {
173 ark_web_cookie_manager_->PutAcceptThirdPartyCookieEnabled(accept);
174 }
175
PutAcceptFileURLSchemeCookiesEnabled(bool allow)176 void ArkWebCookieManagerWrapper::PutAcceptFileURLSchemeCookiesEnabled(bool allow)
177 {
178 ark_web_cookie_manager_->PutAcceptFileURLSchemeCookiesEnabled(allow);
179 }
180
ReturnCookieWithHttpOnly(const std::string & url,bool & is_valid,bool incognito_mode,bool includeHttpOnly)181 std::string ArkWebCookieManagerWrapper::ReturnCookieWithHttpOnly(
182 const std::string& url, bool& is_valid, bool incognito_mode, bool includeHttpOnly)
183 {
184 return "";
185 }
186
SetCookieWithHttpOnly(const std::string & url,const std::string & value,bool incognito_mode,bool includeHttpOnly)187 int ArkWebCookieManagerWrapper::SetCookieWithHttpOnly(
188 const std::string& url, const std::string& value, bool incognito_mode, bool includeHttpOnly)
189 {
190 return 0;
191 }
192
GetCookieAsync(const std::string & url,bool incognitoMode,std::shared_ptr<OHOS::NWeb::NWebStringValueCallback> callback)193 void ArkWebCookieManagerWrapper::GetCookieAsync(
194 const std::string& url, bool incognitoMode, std::shared_ptr<OHOS::NWeb::NWebStringValueCallback> callback)
195 {
196 ArkWebString stUrl = ArkWebStringClassToStruct(url);
197
198 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
199 ark_web_cookie_manager_->GetCookieAsync(stUrl, incognitoMode, nullptr);
200 } else {
201 ark_web_cookie_manager_->GetCookieAsync(stUrl, incognitoMode, new ArkWebStringValueCallbackImpl(callback));
202 }
203
204 ArkWebStringStructRelease(stUrl);
205 }
206
SetCookieSync(const std::string & url,const std::string & value,bool incognitoMode,bool includeHttpOnly)207 int ArkWebCookieManagerWrapper::SetCookieSync(
208 const std::string& url, const std::string& value, bool incognitoMode, bool includeHttpOnly)
209 {
210 ArkWebString stUrl = ArkWebStringClassToStruct(url);
211 ArkWebString stValue = ArkWebStringClassToStruct(value);
212
213 int code = ark_web_cookie_manager_->SetCookieSync(stUrl, stValue, incognitoMode, includeHttpOnly);
214
215 ArkWebStringStructRelease(stUrl);
216 ArkWebStringStructRelease(stValue);
217 return code;
218 }
219
SetCookieAsync(const std::string & url,const std::string & value,bool incognitoMode,bool includeHttpOnly,std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)220 void ArkWebCookieManagerWrapper::SetCookieAsync(const std::string& url, const std::string& value, bool incognitoMode,
221 bool includeHttpOnly, std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)
222 {
223 ArkWebString stUrl = ArkWebStringClassToStruct(url);
224 ArkWebString stValue = ArkWebStringClassToStruct(value);
225
226 if (CHECK_SHARED_PTR_IS_NULL(callback)) {
227 ark_web_cookie_manager_->SetCookieAsync(stUrl, stValue, incognitoMode, includeHttpOnly, nullptr);
228 } else {
229 ark_web_cookie_manager_->SetCookieAsync(
230 stUrl, stValue, incognitoMode, includeHttpOnly, new ArkWebLongValueCallbackImpl(callback));
231 }
232
233 ArkWebStringStructRelease(stUrl);
234 ArkWebStringStructRelease(stValue);
235 }
236
237 } // namespace OHOS::ArkWeb
238