1 /*
2  * Copyright (c) 2023 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_imftext_listener_adapter_wrapper.h"
17 
18 #include "ohos_adapter/bridge/ark_imf_adapter_function_key_adapter_impl.h"
19 
20 #include "base/bridge/ark_web_bridge_macros.h"
21 
22 namespace OHOS::ArkWeb {
23 
ArkIMFTextListenerAdapterWrapper(ArkWebRefPtr<ArkIMFTextListenerAdapter> ref)24 ArkIMFTextListenerAdapterWrapper::ArkIMFTextListenerAdapterWrapper(ArkWebRefPtr<ArkIMFTextListenerAdapter> ref)
25     : ctocpp_(ref)
26 {}
27 
InsertText(const std::u16string & text)28 void ArkIMFTextListenerAdapterWrapper::InsertText(const std::u16string& text)
29 {
30     ArkWebU16String str = ArkWebU16StringClassToStruct(text);
31     ctocpp_->InsertText(str);
32     ArkWebU16StringStructRelease(str);
33 }
34 
DeleteForward(int32_t length)35 void ArkIMFTextListenerAdapterWrapper::DeleteForward(int32_t length)
36 {
37     ctocpp_->DeleteForward(length);
38 }
39 
DeleteBackward(int32_t length)40 void ArkIMFTextListenerAdapterWrapper::DeleteBackward(int32_t length)
41 {
42     ctocpp_->DeleteBackward(length);
43 }
44 
SendKeyEventFromInputMethod()45 void ArkIMFTextListenerAdapterWrapper::SendKeyEventFromInputMethod()
46 {
47     ctocpp_->SendKeyEventFromInputMethod();
48 }
49 
SendKeyboardStatus(const OHOS::NWeb::IMFAdapterKeyboardStatus & keyboardStatus)50 void ArkIMFTextListenerAdapterWrapper::SendKeyboardStatus(const OHOS::NWeb::IMFAdapterKeyboardStatus& keyboardStatus)
51 {
52     ctocpp_->SendKeyboardStatus((int32_t)keyboardStatus);
53 }
54 
SendFunctionKey(std::shared_ptr<OHOS::NWeb::IMFAdapterFunctionKeyAdapter> functionKey)55 void ArkIMFTextListenerAdapterWrapper::SendFunctionKey(
56     std::shared_ptr<OHOS::NWeb::IMFAdapterFunctionKeyAdapter> functionKey)
57 {
58     if (CHECK_SHARED_PTR_IS_NULL(functionKey)) {
59         return ctocpp_->SendFunctionKey(nullptr);
60     }
61 
62     ctocpp_->SendFunctionKey(new ArkIMFAdapterFunctionKeyAdapterImpl(functionKey));
63 }
64 
SetKeyboardStatus(bool status)65 void ArkIMFTextListenerAdapterWrapper::SetKeyboardStatus(bool status)
66 {
67     ctocpp_->SetKeyboardStatus(status);
68 }
69 
MoveCursor(const OHOS::NWeb::IMFAdapterDirection direction)70 void ArkIMFTextListenerAdapterWrapper::MoveCursor(const OHOS::NWeb::IMFAdapterDirection direction)
71 {
72     ctocpp_->MoveCursor((uint32_t)direction);
73 }
74 
HandleSetSelection(int32_t start,int32_t end)75 void ArkIMFTextListenerAdapterWrapper::HandleSetSelection(int32_t start, int32_t end)
76 {
77     ctocpp_->HandleSetSelection(start, end);
78 }
79 
HandleExtendAction(int32_t action)80 void ArkIMFTextListenerAdapterWrapper::HandleExtendAction(int32_t action)
81 {
82     ctocpp_->HandleExtendAction(action);
83 }
84 
HandleSelect(int32_t keyCode,int32_t cursorMoveSkip)85 void ArkIMFTextListenerAdapterWrapper::HandleSelect(int32_t keyCode, int32_t cursorMoveSkip)
86 {
87     ctocpp_->HandleSelect(keyCode, cursorMoveSkip);
88 }
89 
GetTextIndexAtCursor()90 int32_t ArkIMFTextListenerAdapterWrapper::GetTextIndexAtCursor()
91 {
92     return ctocpp_->GetTextIndexAtCursor();
93 }
94 
GetLeftTextOfCursor(int32_t number)95 std::u16string ArkIMFTextListenerAdapterWrapper::GetLeftTextOfCursor(int32_t number)
96 {
97     ArkWebU16String str = ctocpp_->GetLeftTextOfCursor(number);
98     std::u16string result = ArkWebU16StringStructToClass(str);
99 
100     ArkWebU16StringStructRelease(str);
101     return result;
102 }
103 
GetRightTextOfCursor(int32_t number)104 std::u16string ArkIMFTextListenerAdapterWrapper::GetRightTextOfCursor(int32_t number)
105 {
106     ArkWebU16String str = ctocpp_->GetRightTextOfCursor(number);
107     std::u16string result = ArkWebU16StringStructToClass(str);
108 
109     ArkWebU16StringStructRelease(str);
110     return result;
111 }
112 
SetPreviewText(const std::u16string & text,int32_t start,int32_t end)113 int32_t ArkIMFTextListenerAdapterWrapper::SetPreviewText(const std::u16string& text, int32_t start, int32_t end)
114 {
115     ArkWebU16String str = ArkWebU16StringClassToStruct(text);
116     int32_t result = ctocpp_->SetPreviewText(str, start, end);
117 
118     ArkWebU16StringStructRelease(str);
119     return result;
120 }
121 
FinishTextPreview()122 void ArkIMFTextListenerAdapterWrapper::FinishTextPreview()
123 {
124     ctocpp_->FinishTextPreview();
125 }
126 
SetNeedUnderLine(bool isNeedUnderline)127 void ArkIMFTextListenerAdapterWrapper::SetNeedUnderLine(bool isNeedUnderline)
128 {
129     ctocpp_->SetNeedUnderLine(isNeedUnderline);
130 }
131 
AutoFillWithIMFEvent(bool isUsername,bool isOtherAccount,bool isNewPassword,const std::string & content)132 void ArkIMFTextListenerAdapterWrapper::AutoFillWithIMFEvent(bool isUsername, bool isOtherAccount, bool isNewPassword,
133     const std::string& content)
134 {
135     ArkWebString str = ArkWebStringClassToStruct(content);
136     ctocpp_->AutoFillWithIMFEvent(isUsername, isOtherAccount, isNewPassword, str);
137 
138     ArkWebStringStructRelease(str);
139 }
140 
KeyboardUpperRightCornerHide()141 void ArkIMFTextListenerAdapterWrapper::KeyboardUpperRightCornerHide()
142 {
143     ctocpp_->KeyboardUpperRightCornerHide();
144 }
145 
146 } // namespace OHOS::ArkWeb
147