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