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