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_impl.h"
17
18 #include "ohos_nweb/bridge/ark_web_bool_value_callback_wrapper.h"
19 #include "ohos_nweb/bridge/ark_web_long_value_callback_wrapper.h"
20 #include "ohos_nweb/bridge/ark_web_string_value_callback_wrapper.h"
21
22 #include "base/bridge/ark_web_bridge_macros.h"
23
24 namespace OHOS::ArkWeb {
25
ArkWebCookieManagerImpl(std::shared_ptr<OHOS::NWeb::NWebCookieManager> nweb_cookie_manager)26 ArkWebCookieManagerImpl::ArkWebCookieManagerImpl(std::shared_ptr<OHOS::NWeb::NWebCookieManager> nweb_cookie_manager)
27 : nweb_cookie_manager_(nweb_cookie_manager)
28 {}
29
Store()30 bool ArkWebCookieManagerImpl::Store()
31 {
32 return nweb_cookie_manager_->Store();
33 }
34
Store(ArkWebRefPtr<ArkWebBoolValueCallback> callback)35 void ArkWebCookieManagerImpl::Store(ArkWebRefPtr<ArkWebBoolValueCallback> callback)
36 {
37 if (CHECK_REF_PTR_IS_NULL(callback)) {
38 nweb_cookie_manager_->Store(nullptr);
39 return;
40 }
41
42 nweb_cookie_manager_->Store(std::make_shared<ArkWebBoolValueCallbackWrapper>(callback));
43 }
44
SetCookie(const ArkWebString & url,const ArkWebString & value,bool incognito_mode)45 int ArkWebCookieManagerImpl::SetCookie(const ArkWebString& url, const ArkWebString& value, bool incognito_mode)
46 {
47 return nweb_cookie_manager_->SetCookie(
48 ArkWebStringStructToClass(url), ArkWebStringStructToClass(value), incognito_mode);
49 }
50
SetCookie(const ArkWebString & url,const ArkWebString & value,ArkWebRefPtr<ArkWebBoolValueCallback> callback)51 void ArkWebCookieManagerImpl::SetCookie(
52 const ArkWebString& url, const ArkWebString& value, ArkWebRefPtr<ArkWebBoolValueCallback> callback)
53 {
54 if (CHECK_REF_PTR_IS_NULL(callback)) {
55 nweb_cookie_manager_->SetCookie(ArkWebStringStructToClass(url), ArkWebStringStructToClass(value), nullptr);
56 return;
57 }
58
59 nweb_cookie_manager_->SetCookie(ArkWebStringStructToClass(url), ArkWebStringStructToClass(value),
60 std::make_shared<ArkWebBoolValueCallbackWrapper>(callback));
61 }
62
ExistCookies(bool incognito_mode)63 bool ArkWebCookieManagerImpl::ExistCookies(bool incognito_mode)
64 {
65 return nweb_cookie_manager_->ExistCookies(incognito_mode);
66 }
67
ExistCookies(ArkWebRefPtr<ArkWebBoolValueCallback> callback)68 void ArkWebCookieManagerImpl::ExistCookies(ArkWebRefPtr<ArkWebBoolValueCallback> callback)
69 {
70 if (CHECK_REF_PTR_IS_NULL(callback)) {
71 nweb_cookie_manager_->ExistCookies(nullptr);
72 return;
73 }
74
75 nweb_cookie_manager_->ExistCookies(std::make_shared<ArkWebBoolValueCallbackWrapper>(callback));
76 }
77
ReturnCookie(const ArkWebString & url,bool & is_valid,bool incognito_mode)78 ArkWebString ArkWebCookieManagerImpl::ReturnCookie(const ArkWebString& url, bool& is_valid, bool incognito_mode)
79 {
80 return ArkWebStringClassToStruct(
81 nweb_cookie_manager_->ReturnCookie(ArkWebStringStructToClass(url), is_valid, incognito_mode));
82 }
83
ReturnCookie(const ArkWebString & url,ArkWebRefPtr<ArkWebStringValueCallback> callback)84 void ArkWebCookieManagerImpl::ReturnCookie(const ArkWebString& url, ArkWebRefPtr<ArkWebStringValueCallback> callback)
85 {
86 if (CHECK_REF_PTR_IS_NULL(callback)) {
87 nweb_cookie_manager_->ReturnCookie(ArkWebStringStructToClass(url), nullptr);
88 return;
89 }
90
91 nweb_cookie_manager_->ReturnCookie(
92 ArkWebStringStructToClass(url), std::make_shared<ArkWebStringValueCallbackWrapper>(callback));
93 }
94
ConfigCookie(const ArkWebString & url,const ArkWebString & value,ArkWebRefPtr<ArkWebLongValueCallback> callback)95 void ArkWebCookieManagerImpl::ConfigCookie(
96 const ArkWebString& url, const ArkWebString& value, ArkWebRefPtr<ArkWebLongValueCallback> callback)
97 {
98 if (CHECK_REF_PTR_IS_NULL(callback)) {
99 nweb_cookie_manager_->ConfigCookie(ArkWebStringStructToClass(url), ArkWebStringStructToClass(value), nullptr);
100 return;
101 }
102
103 nweb_cookie_manager_->ConfigCookie(ArkWebStringStructToClass(url), ArkWebStringStructToClass(value),
104 std::make_shared<ArkWebLongValueCallbackWrapper>(callback));
105 }
106
DeleteSessionCookies(ArkWebRefPtr<ArkWebBoolValueCallback> callback)107 void ArkWebCookieManagerImpl::DeleteSessionCookies(ArkWebRefPtr<ArkWebBoolValueCallback> callback)
108 {
109 if (CHECK_REF_PTR_IS_NULL(callback)) {
110 nweb_cookie_manager_->DeleteSessionCookies(nullptr);
111 return;
112 }
113
114 nweb_cookie_manager_->DeleteSessionCookies(std::make_shared<ArkWebBoolValueCallbackWrapper>(callback));
115 }
116
DeleteCookieEntirely(ArkWebRefPtr<ArkWebBoolValueCallback> callback,bool incognito_mode)117 void ArkWebCookieManagerImpl::DeleteCookieEntirely(ArkWebRefPtr<ArkWebBoolValueCallback> callback, bool incognito_mode)
118 {
119 if (CHECK_REF_PTR_IS_NULL(callback)) {
120 nweb_cookie_manager_->DeleteCookieEntirely(nullptr, incognito_mode);
121 return;
122 }
123
124 nweb_cookie_manager_->DeleteCookieEntirely(
125 std::make_shared<ArkWebBoolValueCallbackWrapper>(callback), incognito_mode);
126 }
127
IsAcceptCookieAllowed()128 bool ArkWebCookieManagerImpl::IsAcceptCookieAllowed()
129 {
130 return nweb_cookie_manager_->IsAcceptCookieAllowed();
131 }
132
PutAcceptCookieEnabled(bool accept)133 void ArkWebCookieManagerImpl::PutAcceptCookieEnabled(bool accept)
134 {
135 nweb_cookie_manager_->PutAcceptCookieEnabled(accept);
136 }
137
IsThirdPartyCookieAllowed()138 bool ArkWebCookieManagerImpl::IsThirdPartyCookieAllowed()
139 {
140 return nweb_cookie_manager_->IsThirdPartyCookieAllowed();
141 }
142
IsFileURLSchemeCookiesAllowed()143 bool ArkWebCookieManagerImpl::IsFileURLSchemeCookiesAllowed()
144 {
145 return nweb_cookie_manager_->IsFileURLSchemeCookiesAllowed();
146 }
147
PutAcceptThirdPartyCookieEnabled(bool accept)148 void ArkWebCookieManagerImpl::PutAcceptThirdPartyCookieEnabled(bool accept)
149 {
150 nweb_cookie_manager_->PutAcceptThirdPartyCookieEnabled(accept);
151 }
152
PutAcceptFileURLSchemeCookiesEnabled(bool allow)153 void ArkWebCookieManagerImpl::PutAcceptFileURLSchemeCookiesEnabled(bool allow)
154 {
155 nweb_cookie_manager_->PutAcceptFileURLSchemeCookiesEnabled(allow);
156 }
157
GetCookieAsync(const ArkWebString & url,bool incognitoMode,ArkWebRefPtr<ArkWebStringValueCallback> callback)158 void ArkWebCookieManagerImpl::GetCookieAsync(
159 const ArkWebString& url, bool incognitoMode, ArkWebRefPtr<ArkWebStringValueCallback> callback)
160 {
161 if (CHECK_REF_PTR_IS_NULL(callback)) {
162 nweb_cookie_manager_->GetCookieAsync(ArkWebStringStructToClass(url), incognitoMode, nullptr);
163 return;
164 }
165
166 nweb_cookie_manager_->GetCookieAsync(
167 ArkWebStringStructToClass(url), incognitoMode, std::make_shared<ArkWebStringValueCallbackWrapper>(callback));
168 }
169
SetCookieSync(const ArkWebString & url,const ArkWebString & value,bool incognitoMode,bool includeHttpOnly)170 int ArkWebCookieManagerImpl::SetCookieSync(
171 const ArkWebString& url, const ArkWebString& value, bool incognitoMode, bool includeHttpOnly)
172 {
173 return nweb_cookie_manager_->SetCookieSync(
174 ArkWebStringStructToClass(url), ArkWebStringStructToClass(value), incognitoMode, includeHttpOnly);
175 }
176
SetCookieAsync(const ArkWebString & url,const ArkWebString & value,bool incognitoMode,bool includeHttpOnly,ArkWebRefPtr<ArkWebLongValueCallback> callback)177 void ArkWebCookieManagerImpl::SetCookieAsync(const ArkWebString& url, const ArkWebString& value, bool incognitoMode,
178 bool includeHttpOnly, ArkWebRefPtr<ArkWebLongValueCallback> callback)
179 {
180 if (CHECK_REF_PTR_IS_NULL(callback)) {
181 nweb_cookie_manager_->SetCookieAsync(
182 ArkWebStringStructToClass(url), ArkWebStringStructToClass(value), incognitoMode, includeHttpOnly, nullptr);
183 return;
184 }
185
186 nweb_cookie_manager_->SetCookieAsync(ArkWebStringStructToClass(url), ArkWebStringStructToClass(value),
187 incognitoMode, includeHttpOnly, std::make_shared<ArkWebLongValueCallbackWrapper>(callback));
188 }
189
190 } // namespace OHOS::ArkWeb
191