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