1 /*
2 * Copyright (c) 2022 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_adapter/bridge/ark_paste_data_record_adapter_impl.h"
17
18 #include "ohos_adapter/bridge/ark_clip_board_image_data_adapter_wrapper.h"
19
20 #include "base/bridge/ark_web_bridge_macros.h"
21
22 namespace OHOS::ArkWeb {
23
NewRecord(const ArkWebString & mimeType)24 ArkWebRefPtr<ArkPasteDataRecordAdapter> ArkPasteDataRecordAdapter::NewRecord(const ArkWebString& mimeType)
25 {
26 std::shared_ptr<NWeb::PasteDataRecordAdapter> adapter =
27 NWeb::PasteDataRecordAdapter::NewRecord(ArkWebStringStructToClass(mimeType));
28 return new ArkPasteDataRecordAdapterImpl(adapter);
29 }
30
NewRecord(const ArkWebString & mimeType,void * htmlText,void * plainText)31 ArkWebRefPtr<ArkPasteDataRecordAdapter> ArkPasteDataRecordAdapter::NewRecord(
32 const ArkWebString& mimeType, void* htmlText, void* plainText)
33 {
34 std::shared_ptr<std::string>* html = static_cast<std::shared_ptr<std::string>*>(htmlText);
35 std::shared_ptr<std::string>* plain = static_cast<std::shared_ptr<std::string>*>(plainText);
36 std::shared_ptr<NWeb::PasteDataRecordAdapter> adapter =
37 NWeb::PasteDataRecordAdapter::NewRecord(ArkWebStringStructToClass(mimeType), *html, *plain);
38 return new ArkPasteDataRecordAdapterImpl(adapter);
39 }
40
ArkPasteDataRecordAdapterImpl(std::shared_ptr<OHOS::NWeb::PasteDataRecordAdapter> ref)41 ArkPasteDataRecordAdapterImpl::ArkPasteDataRecordAdapterImpl(std::shared_ptr<OHOS::NWeb::PasteDataRecordAdapter> ref)
42 : real_(ref)
43 {}
44
SetHtmlText(void * htmlText)45 bool ArkPasteDataRecordAdapterImpl::SetHtmlText(void* htmlText)
46 {
47 std::shared_ptr<std::string>* temp = static_cast<std::shared_ptr<std::string>*>(htmlText);
48 return real_->SetHtmlText(*temp);
49 }
50
SetHtmlTextV2(const ArkWebString & htmlText)51 bool ArkPasteDataRecordAdapterImpl::SetHtmlTextV2(const ArkWebString& htmlText)
52 {
53 std::shared_ptr<std::string> temp = std::make_shared<std::string>(ArkWebStringStructToClass(htmlText));
54 return real_->SetHtmlText(temp);
55 }
56
SetPlainText(void * plainText)57 bool ArkPasteDataRecordAdapterImpl::SetPlainText(void* plainText)
58 {
59 std::shared_ptr<std::string>* temp = static_cast<std::shared_ptr<std::string>*>(plainText);
60 return real_->SetPlainText(*temp);
61 }
62
SetPlainTextV2(const ArkWebString & plainText)63 bool ArkPasteDataRecordAdapterImpl::SetPlainTextV2(const ArkWebString& plainText)
64 {
65 std::shared_ptr<std::string> temp = std::make_shared<std::string>(ArkWebStringStructToClass(plainText));
66 return real_->SetPlainText(temp);
67 }
68
SetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)69 bool ArkPasteDataRecordAdapterImpl::SetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)
70 {
71 if (CHECK_REF_PTR_IS_NULL(imageData)) {
72 return real_->SetImgData(nullptr);
73 }
74
75 return real_->SetImgData(std::make_shared<ArkClipBoardImageDataAdapterWrapper>(imageData));
76 }
77
GetMimeType()78 ArkWebString ArkPasteDataRecordAdapterImpl::GetMimeType()
79 {
80 return ArkWebStringClassToStruct(real_->GetMimeType());
81 }
82
GetHtmlText(void * data)83 void ArkPasteDataRecordAdapterImpl::GetHtmlText(void* data)
84 {
85 std::shared_ptr<std::string> str = real_->GetHtmlText();
86 std::shared_ptr<std::string>* html = static_cast<std::shared_ptr<std::string>*>(data);
87 *html = str;
88 }
89
GetHtmlTextV2(ArkWebString & data)90 bool ArkPasteDataRecordAdapterImpl::GetHtmlTextV2(ArkWebString& data)
91 {
92 std::shared_ptr<std::string> str = real_->GetHtmlText();
93 if (str) {
94 data = ArkWebStringClassToStruct(*str);
95 return true;
96 }
97 return false;
98 }
99
GetPlainText(void * data)100 void ArkPasteDataRecordAdapterImpl::GetPlainText(void* data)
101 {
102 std::shared_ptr<std::string> str = real_->GetPlainText();
103 std::shared_ptr<std::string>* text = static_cast<std::shared_ptr<std::string>*>(data);
104 *text = str;
105 }
106
GetPlainTextV2(ArkWebString & data)107 bool ArkPasteDataRecordAdapterImpl::GetPlainTextV2(ArkWebString& data)
108 {
109 std::shared_ptr<std::string> str = real_->GetPlainText();
110 if (str) {
111 data = ArkWebStringClassToStruct(*str);
112 return true;
113 }
114 return false;
115 }
116
GetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)117 bool ArkPasteDataRecordAdapterImpl::GetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)
118 {
119 if (CHECK_REF_PTR_IS_NULL(imageData)) {
120 return real_->GetImgData(nullptr);
121 }
122
123 return real_->GetImgData(std::make_shared<ArkClipBoardImageDataAdapterWrapper>(imageData));
124 }
125
SetUri(const ArkWebString & uriString)126 bool ArkPasteDataRecordAdapterImpl::SetUri(const ArkWebString& uriString)
127 {
128 return real_->SetUri(ArkWebStringStructToClass(uriString));
129 }
130
SetCustomData(void * data)131 bool ArkPasteDataRecordAdapterImpl::SetCustomData(void* data)
132 {
133 NWeb::PasteCustomData* temp = static_cast<NWeb::PasteCustomData*>(data);
134 return real_->SetCustomData(*temp);
135 }
136
SetCustomDataV2(ArkWebUInt8VectorMap & data)137 bool ArkPasteDataRecordAdapterImpl::SetCustomDataV2(ArkWebUInt8VectorMap& data)
138 {
139 NWeb::PasteCustomData temp = ArkWebUInt8VectorMapStructToClass(data);
140 return real_->SetCustomData(temp);
141 }
142
GetUri(void * data)143 void ArkPasteDataRecordAdapterImpl::GetUri(void* data)
144 {
145 std::shared_ptr<std::string> str = real_->GetUri();
146 std::shared_ptr<std::string>* uri = static_cast<std::shared_ptr<std::string>*>(data);
147 *uri = str;
148 }
149
GetUriV2(ArkWebString & data)150 bool ArkPasteDataRecordAdapterImpl::GetUriV2(ArkWebString& data)
151 {
152 std::shared_ptr<std::string> str = real_->GetUri();
153 if (str) {
154 data = ArkWebStringClassToStruct(*str);
155 return true;
156 }
157 return false;
158 }
159
GetCustomData(void * data)160 void ArkPasteDataRecordAdapterImpl::GetCustomData(void* data)
161 {
162 std::shared_ptr<NWeb::PasteCustomData> custom = real_->GetCustomData();
163 std::shared_ptr<NWeb::PasteCustomData>* temp = static_cast<std::shared_ptr<NWeb::PasteCustomData>*>(data);
164 *temp = custom;
165 }
166
GetCustomDataV2(ArkWebUInt8VectorMap & data)167 bool ArkPasteDataRecordAdapterImpl::GetCustomDataV2(ArkWebUInt8VectorMap& data)
168 {
169 std::shared_ptr<NWeb::PasteCustomData> custom = real_->GetCustomData();
170 if (custom) {
171 data = ArkWebUInt8VectorMapClassToStruct(*custom);
172 return true;
173 }
174 return false;
175 }
176
177 } // namespace OHOS::ArkWeb
178