• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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