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 "web_cookie_manager.h"
17 #include "nweb_cookie_manager.h"
18 #include "nweb_helper.h"
19 #include "web_errors.h"
20 
21 namespace OHOS {
22 namespace NWeb {
23 const int DEFAULT_VALUE = -1;
CjGetCookie(const std::string & url,bool incognitoMode,int32_t & errCode)24 std::string WebCookieManager::CjGetCookie(const std::string &url, bool incognitoMode, int32_t& errCode)
25 {
26     std::string cookieContent = "";
27     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
28     bool isValid = true;
29     if (cookieManager != nullptr) {
30         cookieContent = cookieManager->ReturnCookie(url, isValid, incognitoMode);
31     }
32     if (cookieContent == "" && !isValid) {
33         errCode = NWebError::INVALID_URL;
34         return "";
35     }
36     errCode = NWebError::NO_ERROR;
37     return cookieContent;
38 }
39 
CjSetCookie(const std::string & url,const std::string & value,bool incognitoMode)40 int32_t WebCookieManager::CjSetCookie(const std::string& url, const std::string& value, bool incognitoMode)
41 {
42     int isSet = DEFAULT_VALUE;
43     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
44     if (cookieManager != nullptr) {
45         isSet = cookieManager->SetCookie(url, value, incognitoMode);
46     }
47     return isSet;
48 }
49 
CjPutAcceptCookieEnabled(bool accept)50 void WebCookieManager::CjPutAcceptCookieEnabled(bool accept)
51 {
52     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
53     if (cookieManager != nullptr) {
54         cookieManager->PutAcceptCookieEnabled(accept);
55     }
56 }
57 
CjIsCookieAllowed()58 bool WebCookieManager::CjIsCookieAllowed()
59 {
60     bool accept = true;
61     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
62     if (cookieManager != nullptr) {
63         accept = cookieManager->IsAcceptCookieAllowed();
64     }
65     return accept;
66 }
67 
CjPutAcceptThirdPartyCookieEnabled(bool accept)68 void WebCookieManager::CjPutAcceptThirdPartyCookieEnabled(bool accept)
69 {
70     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
71     if (cookieManager != nullptr) {
72         cookieManager->PutAcceptThirdPartyCookieEnabled(accept);
73     }
74 }
75 
CjIsThirdPartyCookieAllowed()76 bool WebCookieManager::CjIsThirdPartyCookieAllowed()
77 {
78     bool accept = true;
79     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
80     if (cookieManager != nullptr) {
81         accept = cookieManager->IsThirdPartyCookieAllowed();
82     }
83     return accept;
84 }
85 
CjExistCookie(bool incognitoMode)86 bool WebCookieManager::CjExistCookie(bool incognitoMode)
87 {
88     bool exist = true;
89     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
90     if (cookieManager != nullptr) {
91         exist = cookieManager->ExistCookies(incognitoMode);
92     }
93     return exist;
94 }
95 
CjDeleteEntireCookie(bool incognitoMode)96 void WebCookieManager::CjDeleteEntireCookie(bool incognitoMode)
97 {
98     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
99     if (cookieManager != nullptr) {
100         cookieManager->DeleteCookieEntirely(nullptr, incognitoMode);
101     }
102 }
103 
CjDeleteSessionCookie()104 void WebCookieManager::CjDeleteSessionCookie()
105 {
106     std::shared_ptr<NWebCookieManager> cookieManager = NWebHelper::Instance().GetCookieManager();
107     if (cookieManager != nullptr) {
108         cookieManager->DeleteSessionCookies(nullptr);
109     }
110 }
111 }
112 }