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_web_storage_wrapper.h"
17 
18 #include "ohos_nweb/bridge/ark_web_long_value_callback_impl.h"
19 #include "ohos_nweb/bridge/ark_web_web_storage_origin_vector_value_callback_impl.h"
20 #include "ohos_nweb/ctocpp/ark_web_web_storage_origin_vector_ctocpp.h"
21 
22 #include "base/bridge/ark_web_bridge_macros.h"
23 
24 namespace OHOS::ArkWeb {
25 
ArkWebWebStorageWrapper(ArkWebRefPtr<ArkWebWebStorage> ark_web_web_storage)26 ArkWebWebStorageWrapper::ArkWebWebStorageWrapper(ArkWebRefPtr<ArkWebWebStorage> ark_web_web_storage)
27     : ark_web_web_storage_(ark_web_web_storage)
28 {}
29 
GetOrigins()30 std::vector<std::shared_ptr<OHOS::NWeb::NWebWebStorageOrigin>> ArkWebWebStorageWrapper::GetOrigins()
31 {
32     return ArkWebWebStorageOriginVectorStructToClass(ark_web_web_storage_->GetOrigins());
33 }
34 
GetOrigins(std::shared_ptr<OHOS::NWeb::NWebWebStorageOriginVectorValueCallback> callback)35 void ArkWebWebStorageWrapper::GetOrigins(std::shared_ptr<OHOS::NWeb::NWebWebStorageOriginVectorValueCallback> callback)
36 {
37     if (CHECK_SHARED_PTR_IS_NULL(callback)) {
38         ark_web_web_storage_->GetOrigins(nullptr);
39         return;
40     }
41 
42     ark_web_web_storage_->GetOrigins(new ArkWebWebStorageOriginVectorValueCallbackImpl(callback));
43 }
44 
GetOriginQuota(const std::string & origin)45 long ArkWebWebStorageWrapper::GetOriginQuota(const std::string& origin)
46 {
47     ArkWebString stOrigin = ArkWebStringClassToStruct(origin);
48 
49     long code = ark_web_web_storage_->GetOriginQuota(stOrigin);
50 
51     ArkWebStringStructRelease(stOrigin);
52     return code;
53 }
54 
GetOriginQuota(const std::string & origin,std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)55 void ArkWebWebStorageWrapper::GetOriginQuota(
56     const std::string& origin, std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)
57 {
58     ArkWebString stOrigin = ArkWebStringClassToStruct(origin);
59 
60     if (CHECK_SHARED_PTR_IS_NULL(callback)) {
61         ark_web_web_storage_->GetOriginQuota(stOrigin, nullptr);
62         return;
63     } else {
64         ark_web_web_storage_->GetOriginQuota(stOrigin, new ArkWebLongValueCallbackImpl(callback));
65     }
66 
67     ArkWebStringStructRelease(stOrigin);
68 }
69 
GetOriginUsage(const std::string & origin)70 long ArkWebWebStorageWrapper::GetOriginUsage(const std::string& origin)
71 {
72     ArkWebString stOrigin = ArkWebStringClassToStruct(origin);
73 
74     long code = ark_web_web_storage_->GetOriginUsage(stOrigin);
75 
76     ArkWebStringStructRelease(stOrigin);
77     return code;
78 }
79 
GetOriginUsage(const std::string & origin,std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)80 void ArkWebWebStorageWrapper::GetOriginUsage(
81     const std::string& origin, std::shared_ptr<OHOS::NWeb::NWebLongValueCallback> callback)
82 {
83     ArkWebString stOrigin = ArkWebStringClassToStruct(origin);
84 
85     if (CHECK_SHARED_PTR_IS_NULL(callback)) {
86         ark_web_web_storage_->GetOriginUsage(stOrigin, nullptr);
87     } else {
88         ark_web_web_storage_->GetOriginUsage(stOrigin, new ArkWebLongValueCallbackImpl(callback));
89     }
90 
91     ArkWebStringStructRelease(stOrigin);
92 }
93 
DeleteOrigin(const std::string & origin)94 int ArkWebWebStorageWrapper::DeleteOrigin(const std::string& origin)
95 {
96     ArkWebString stOrigin = ArkWebStringClassToStruct(origin);
97 
98     int code = ark_web_web_storage_->DeleteOrigin(stOrigin);
99 
100     ArkWebStringStructRelease(stOrigin);
101     return code;
102 }
103 
DeleteAllData(bool incognito_mode)104 void ArkWebWebStorageWrapper::DeleteAllData(bool incognito_mode)
105 {
106     ark_web_web_storage_->DeleteAllData(incognito_mode);
107 }
108 
109 } // namespace OHOS::ArkWeb
110