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 
SetPlainText(void * plainText)51 bool ArkPasteDataRecordAdapterImpl::SetPlainText(void* plainText)
52 {
53     std::shared_ptr<std::string>* temp = static_cast<std::shared_ptr<std::string>*>(plainText);
54     return real_->SetPlainText(*temp);
55 }
56 
SetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)57 bool ArkPasteDataRecordAdapterImpl::SetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)
58 {
59     if (CHECK_REF_PTR_IS_NULL(imageData)) {
60         return real_->SetImgData(nullptr);
61     }
62 
63     return real_->SetImgData(std::make_shared<ArkClipBoardImageDataAdapterWrapper>(imageData));
64 }
65 
GetMimeType()66 ArkWebString ArkPasteDataRecordAdapterImpl::GetMimeType()
67 {
68     return ArkWebStringClassToStruct(real_->GetMimeType());
69 }
70 
GetHtmlText(void * data)71 void ArkPasteDataRecordAdapterImpl::GetHtmlText(void* data)
72 {
73     std::shared_ptr<std::string> str = real_->GetHtmlText();
74     std::shared_ptr<std::string>* html = static_cast<std::shared_ptr<std::string>*>(data);
75     *html = str;
76 }
77 
GetPlainText(void * data)78 void ArkPasteDataRecordAdapterImpl::GetPlainText(void* data)
79 {
80     std::shared_ptr<std::string> str = real_->GetPlainText();
81     std::shared_ptr<std::string>* text = static_cast<std::shared_ptr<std::string>*>(data);
82     *text = str;
83 }
84 
GetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)85 bool ArkPasteDataRecordAdapterImpl::GetImgData(ArkWebRefPtr<ArkClipBoardImageDataAdapter> imageData)
86 {
87     if (CHECK_REF_PTR_IS_NULL(imageData)) {
88         return real_->GetImgData(nullptr);
89     }
90 
91     return real_->GetImgData(std::make_shared<ArkClipBoardImageDataAdapterWrapper>(imageData));
92 }
93 
SetUri(const ArkWebString & uriString)94 bool ArkPasteDataRecordAdapterImpl::SetUri(const ArkWebString& uriString)
95 {
96     return real_->SetUri(ArkWebStringStructToClass(uriString));
97 }
98 
SetCustomData(void * data)99 bool ArkPasteDataRecordAdapterImpl::SetCustomData(void* data)
100 {
101     NWeb::PasteCustomData* temp = static_cast<NWeb::PasteCustomData*>(data);
102     return real_->SetCustomData(*temp);
103 }
104 
GetUri(void * data)105 void ArkPasteDataRecordAdapterImpl::GetUri(void* data)
106 {
107     std::shared_ptr<std::string> str = real_->GetUri();
108     std::shared_ptr<std::string>* uri = static_cast<std::shared_ptr<std::string>*>(data);
109     *uri = str;
110 }
111 
GetCustomData(void * data)112 void ArkPasteDataRecordAdapterImpl::GetCustomData(void* data)
113 {
114     std::shared_ptr<NWeb::PasteCustomData> custom = real_->GetCustomData();
115     std::shared_ptr<NWeb::PasteCustomData>* temp = static_cast<std::shared_ptr<NWeb::PasteCustomData>*>(data);
116     *temp = custom;
117 }
118 
119 } // namespace OHOS::ArkWeb
120