diff --git a/frameworks/inputmethod_ability/include/event_target.h b/frameworks/inputmethod_ability/include/event_target.h index e4aa7509..afd0c492 100644 --- a/frameworks/inputmethod_ability/include/event_target.h +++ b/frameworks/inputmethod_ability/include/event_target.h @@ -45,9 +45,6 @@ namespace MiscServices { napi_ref thisVarRef_; EventListener *first_; EventListener *last_; - - private: - static const int LISTENER_TYPTE_MAX_LENGTH = 64; }; } } diff --git a/frameworks/inputmethod_ability/src/event_target.cpp b/frameworks/inputmethod_ability/src/event_target.cpp index f769c719..4c6f1b03 100644 --- a/frameworks/inputmethod_ability/src/event_target.cpp +++ b/frameworks/inputmethod_ability/src/event_target.cpp @@ -19,10 +19,10 @@ #include "utils/log.h" #include "input_method_ability.h" +#define LISTENER_TYPTE_MAX_LENGTH 64 namespace OHOS { namespace MiscServices { struct EventListener { - static const int LISTENER_TYPTE_MAX_LENGTH = 64; char type[LISTENER_TYPTE_MAX_LENGTH] = { 0 }; bool isOnce = false; napi_ref handlerRef = nullptr; @@ -181,7 +181,6 @@ namespace MiscServices { uv_work_t *work = new (std::nothrow) uv_work_t; if (work == nullptr) { IMSA_HILOGI("EventTarget::Emit No memory work == nullptr"); - delete work; return; } @@ -191,7 +190,7 @@ namespace MiscServices { work->data = (void *)eventTargetCB; int ret = uv_queue_work(loop, work, [](uv_work_t *work) {}, [](uv_work_t *work, int status) { - // Js Thread + //Js Thread if (work == nullptr) { IMSA_HILOGI("EventTarget::Emit work == nullptr"); return; @@ -203,15 +202,13 @@ namespace MiscServices { napi_value thisVar = nullptr; napi_get_reference_value(eventTargetCB->env, eventTargetCB->thisVarRef, &thisVar); - for (EventListener *eventListener = eventTargetCB->first; eventListener != nullptr; - eventListener = eventListener->next) { + for (EventListener *eventListener = eventTargetCB->first; eventListener != nullptr; eventListener = eventListener->next) { if (strcmp(eventListener->type, eventTargetCB->type) == 0) { napi_value jsEvent = eventTargetCB->event ? eventTargetCB->event->ToJsObject() : nullptr; napi_value handler = nullptr; napi_value result = nullptr; napi_get_reference_value(eventTargetCB->env, eventListener->handlerRef, &handler); - napi_call_function(eventTargetCB->env, thisVar, handler, - jsEvent ? 1 : 0, jsEvent ? &jsEvent : nullptr, &result); + napi_call_function(eventTargetCB->env, thisVar, handler, jsEvent ? 1 : 0, jsEvent ? &jsEvent : nullptr, &result); if (eventListener->isOnce) { eventTargetCB->eventTarget->Off(eventTargetCB->type, handler); } @@ -222,11 +219,12 @@ namespace MiscServices { if (eventTargetCB) { delete eventTargetCB; } + delete work; }); if (ret != 0) { IMSA_HILOGI("EventTarget::Emit failed to execute libuv work queue"); + delete work; } - delete work; } } } \ No newline at end of file diff --git a/frameworks/inputmethod_ability/src/input_method_ability.cpp b/frameworks/inputmethod_ability/src/input_method_ability.cpp index 1f3b59d7..c14fd5ff 100644 --- a/frameworks/inputmethod_ability/src/input_method_ability.cpp +++ b/frameworks/inputmethod_ability/src/input_method_ability.cpp @@ -32,7 +32,6 @@ namespace MiscServices { InputMethodAbility::InputMethodAbility() : stop_(false) { writeInputChannel = nullptr; - editorAttribute = nullptr; Initialize(); OnConnect(); } @@ -90,9 +89,8 @@ namespace MiscServices { sptr stub2 = stub; if (mImms != nullptr) { mImms->setInputMethodCore(stub2); - } else { - IMSA_HILOGI("InputMethodAbility::OnConnect() mImms is nullptr"); } + IMSA_HILOGI("InputMethodAbility::OnConnect() mImms is nullptr"); return nullptr; } diff --git a/frameworks/inputmethod_ability/src/input_method_agent_proxy.cpp b/frameworks/inputmethod_ability/src/input_method_agent_proxy.cpp index e1481631..1e06f7e0 100644 --- a/frameworks/inputmethod_ability/src/input_method_agent_proxy.cpp +++ b/frameworks/inputmethod_ability/src/input_method_agent_proxy.cpp @@ -19,7 +19,7 @@ namespace OHOS { namespace MiscServices { using namespace ErrorCode; InputMethodAgentProxy::InputMethodAgentProxy(const sptr &object) - : IRemoteProxy(object) + : IRemoteProxy(object) { } diff --git a/frameworks/inputmethod_ability/src/input_method_core_proxy.cpp b/frameworks/inputmethod_ability/src/input_method_core_proxy.cpp index 113207af..58dc01ac 100644 --- a/frameworks/inputmethod_ability/src/input_method_core_proxy.cpp +++ b/frameworks/inputmethod_ability/src/input_method_core_proxy.cpp @@ -21,7 +21,7 @@ namespace OHOS { namespace MiscServices { InputMethodCoreProxy::InputMethodCoreProxy(const OHOS::sptr &impl) - : IRemoteProxy(impl) + : IRemoteProxy(impl) { } diff --git a/frameworks/inputmethod_ability/src/input_method_core_stub.cpp b/frameworks/inputmethod_ability/src/input_method_core_stub.cpp index a0d5a0f6..bf51a666 100644 --- a/frameworks/inputmethod_ability/src/input_method_core_stub.cpp +++ b/frameworks/inputmethod_ability/src/input_method_core_stub.cpp @@ -12,6 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include +#include #include "message_handler.h" #include "i_input_data_channel.h" #include "input_method_core_stub.h" diff --git a/frameworks/inputmethod_controller/include/input_client_proxy.h b/frameworks/inputmethod_controller/include/input_client_proxy.h index fbac59e8..a6324edf 100644 --- a/frameworks/inputmethod_controller/include/input_client_proxy.h +++ b/frameworks/inputmethod_controller/include/input_client_proxy.h @@ -22,14 +22,13 @@ namespace OHOS { namespace MiscServices { - class InputClientProxy : public IRemoteProxy { +class InputClientProxy : public IRemoteProxy { public: explicit InputClientProxy(const sptr &object); ~InputClientProxy() = default; DISALLOW_COPY_AND_MOVE(InputClientProxy); - int32_t onInputReady(int32_t retValue, const sptr& agent, - const InputChannel *channel) override; + int32_t onInputReady(int32_t retValue, const sptr& agent, const InputChannel *channel) override; int32_t onInputReleased(int32_t retValue) override; int32_t setDisplayMode(int32_t mode) override; diff --git a/frameworks/inputmethod_controller/include/input_method_controller.h b/frameworks/inputmethod_controller/include/input_method_controller.h index 891aa4fc..6c5c1988 100644 --- a/frameworks/inputmethod_controller/include/input_method_controller.h +++ b/frameworks/inputmethod_controller/include/input_method_controller.h @@ -30,13 +30,15 @@ namespace OHOS { namespace MiscServices { + class InputDataChannelStub; + class InputMethodSystemAbilityProxy; class OnTextChangedListener : public virtual RefBase { public: virtual void InsertText(const std::u16string& text) = 0; virtual void DeleteForward(int32_t length) = 0; virtual void DeleteBackward(int32_t length) = 0; - virtual void sendKeyEventFromInputMethod(KeyEvent event) = 0; - virtual void sendKeyboardStatus(KeyboardStatus status) = 0; + virtual void SendKeyEventFromInputMethod(const KeyEvent& event) = 0; + virtual void SendKeyboardInfo(const KeyboardInfo& info) = 0; virtual void SetKeyboardStatus(bool status) = 0; }; @@ -56,9 +58,9 @@ namespace MiscServices { void HideTextInput(); void Close(); void OnRemoteSaDied(const wptr &object); - void onCursorUpdate(CursorInfo cursorInfo); + void OnCursorUpdate(CursorInfo cursorInfo); void OnSelectionChange(std::u16string text, int start, int end); - void onConfigurationChange(Configuration info); + void OnConfigurationChange(Configuration info); private: InputMethodController(); ~InputMethodController(); @@ -91,4 +93,4 @@ namespace MiscServices { }; } } -#endif \ No newline at end of file +#endif diff --git a/frameworks/inputmethod_controller/include/input_method_utils.h b/frameworks/inputmethod_controller/include/input_method_utils.h index 332e78e3..99ea82fd 100644 --- a/frameworks/inputmethod_controller/include/input_method_utils.h +++ b/frameworks/inputmethod_controller/include/input_method_utils.h @@ -16,34 +16,102 @@ #ifndef FM_IMC_PROJECT_INPUT_METHOD_UTILS_H #define FM_IMC_PROJECT_INPUT_METHOD_UTILS_H +#include + namespace OHOS { - namespace MiscServices { - class Configuration { - public: - enum { - TEXT_FIELD_ACTION_UNSPECIFIED = 0, - TEXT_FIELD_ACTION_NONE, - TEXT_FIELD_ACTION_GO, - TEXT_FIELD_ACTION_SEARCH, - TEXT_FIELD_ACTION_SEND, - TEXT_FIELD_ACTION_NEXT, - TEXT_FIELD_ACTION_DONE, - TEXT_FIELD_ACTION_PREVIOUS - }; - int mTextFieldAction; - }; - class CursorInfo { - }; - class KeyEvent { - }; - class KeyboardStatus { - public: - enum { - KEYBOARD_STATUS_HIDE = 0, - KEYBOARD_STATUS_SHOW - }; - int mKeyboardStatus; - }; - } +namespace MiscServices { + enum class EnterKeyType { + UNSPECIFIED = 0, + NONE, + GO, + SEARCH, + SEND, + NEXT, + DONE, + PREVIOUS + }; + + enum class TextInputType { + TEXT = 0, + MULTILINE, + NUMBER, + PHONE, + DATETIME, + EMAIL_ADDRESS, + URL, + VISIBLE_PASSWORD, + }; + class Configuration { + public: + EnterKeyType GetEnterKeyType() const + { + return enterKeyType; + } + + void SetEnterKeyType(EnterKeyType keyType) + { + enterKeyType = keyType; + } + TextInputType GetTextInputType() const + { + return textInputType; + } + + void SetTextInputType(TextInputType textType) + { + textInputType = textType; + } + + private: + EnterKeyType enterKeyType = EnterKeyType::UNSPECIFIED; + TextInputType textInputType = TextInputType::TEXT; + }; + + struct CursorInfo { + double left = 0.0; + double top = 0.0; + double width = 0.0; + double height = 0.0; + }; + + class KeyEvent { + }; + + enum class KeyboardStatus { + NONE = 0, + HIDE, + SHOW + }; + enum class FunctionKey { + NONE = 0, + CONFIRM, + }; + class KeyboardInfo { + public: + KeyboardStatus GetKeyboardStatus() const + { + return keyboardStatus; + } + + void SetKeyboardStatus(int32_t status) + { + keyboardStatus = static_cast(status); + } + + FunctionKey GetFunctionKey() const + { + return functionKey; + } + + void SetFunctionKey(int32_t key) + { + functionKey = static_cast(key); + } + + private: + KeyboardStatus keyboardStatus = KeyboardStatus::NONE; + FunctionKey functionKey = FunctionKey::NONE; + }; } -#endif // FM_IMC_PROJECT_INPUT_METHOD_UTILS_H \ No newline at end of file +} +#endif // FM_IMC_PROJECT_INPUT_METHOD_UTILS_H diff --git a/frameworks/inputmethod_controller/src/input_method_controller.cpp b/frameworks/inputmethod_controller/src/input_method_controller.cpp index b4c05e7d..9b9a255d 100644 --- a/frameworks/inputmethod_controller/src/input_method_controller.cpp +++ b/frameworks/inputmethod_controller/src/input_method_controller.cpp @@ -113,7 +113,7 @@ using namespace MessageID; MessageParcel *data = msg->msgContent_; int32_t length = data->ReadInt32(); if (textListener != nullptr) { - textListener->DeleteBackward(length); + textListener->DeleteForward(length); } break; } @@ -159,7 +159,7 @@ using namespace MessageID; void InputMethodController::Attach(sptr &listener) { PrepareInput(0, mClient, mInputDataChannel, mAttribute); - textListener = listener; + textListener=listener; } void InputMethodController::ShowTextInput() @@ -253,9 +253,9 @@ using namespace MessageID; InputMethodController::GetInstance()->OnRemoteSaDied(object); } - void InputMethodController::onCursorUpdate(CursorInfo cursorInfo) + void InputMethodController::OnCursorUpdate(CursorInfo cursorInfo) { - IMSA_HILOGI("InputMethodController::onCursorUpdate"); + IMSA_HILOGI("InputMethodController::OnCursorUpdate"); } void InputMethodController::OnSelectionChange(std::u16string text, int start, int end) @@ -266,9 +266,9 @@ using namespace MessageID; mSelectEnd = end; } - void InputMethodController::onConfigurationChange(Configuration info) + void InputMethodController::OnConfigurationChange(Configuration info) { - IMSA_HILOGI("InputMethodController::onConfigurationChange"); + IMSA_HILOGI("InputMethodController::OnConfigurationChange"); } } } \ No newline at end of file diff --git a/frameworks/inputmethod_controller/src/input_method_utils.cpp b/frameworks/inputmethod_controller/src/input_method_utils.cpp index f7626c70..c3659bcc 100644 --- a/frameworks/inputmethod_controller/src/input_method_utils.cpp +++ b/frameworks/inputmethod_controller/src/input_method_utils.cpp @@ -12,4 +12,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include "input_method_utils.h" +namespace OHOS { +namespace MiscServices { +} +} diff --git a/interfaces/kits/js/declaration/api/@ohos.inputmethodengine.d.ts b/interfaces/kits/js/declaration/api/@ohos.inputmethodengine.d.ts index 6daa45ff..0d4ef4db 100644 --- a/interfaces/kits/js/declaration/api/@ohos.inputmethodengine.d.ts +++ b/interfaces/kits/js/declaration/api/@ohos.inputmethodengine.d.ts @@ -34,7 +34,7 @@ declare namespace inputMethodEngine { function DeleteBackward(length: number, callback: () => void): void; function DeleteBackward(length: number): Promise; - function HideKeyboardSelf(callback: () => void): void; + function HideKeyboardSelf(callback: callback: () => void): void; function HideKeyboardSelf(): Promise; } diff --git a/services/include/i_platform_api.h b/services/include/i_platform_api.h index 006b0395..1c7066c5 100644 --- a/services/include/i_platform_api.h +++ b/services/include/i_platform_api.h @@ -56,6 +56,7 @@ namespace OHOS { InputMethodProperty *inputMethodProperty) = 0; virtual int32_t getInputMethodSetting(int userId, InputMethodSetting *inputMethodSetting) = 0; virtual int32_t setInputMethodSetting(int userId, const InputMethodSetting& inputMethodSetting) = 0; + }; } } diff --git a/services/include/input_method_setting.h b/services/include/input_method_setting.h index 0594a124..589fa656 100644 --- a/services/include/input_method_setting.h +++ b/services/include/input_method_setting.h @@ -32,6 +32,7 @@ namespace MiscServices { const static std::u16string CURRENT_SYS_KEYBOARD_TYPE_TAG; // default keyboard type for security IME const static std::u16string SYSTEM_LOCALE_TAG; // locale list supported in the system + InputMethodSetting(); ~InputMethodSetting(); InputMethodSetting(const InputMethodSetting& inputMethodSetting); diff --git a/services/include/input_method_system_ability_stub.h b/services/include/input_method_system_ability_stub.h index c04361ec..ad4d8192 100644 --- a/services/include/input_method_system_ability_stub.h +++ b/services/include/input_method_system_ability_stub.h @@ -26,8 +26,7 @@ namespace OHOS { namespace MiscServices { class InputMethodSystemAbilityStub : public IRemoteStub { public: - int32_t OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, - MessageOption &option) override; + int32_t OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override; virtual void prepareInput(MessageParcel& data) override; virtual void releaseInput(MessageParcel& data) override; diff --git a/services/include/message_handler.h b/services/include/message_handler.h index 93e89469..b370193c 100644 --- a/services/include/message_handler.h +++ b/services/include/message_handler.h @@ -58,7 +58,7 @@ namespace MessageID { MSG_ID_SHELL_COMMAND, // shell command MSG_ID_EXIT_SERVICE, // exit service - // the request from IMSA to IMC + //the request from IMSA to IMC MSG_ID_INSERT_CHAR, MSG_ID_DELETE_BACKWARD, MSG_ID_CLOSE, diff --git a/services/include/peruser_session.h b/services/include/peruser_session.h index 84b63402..77fdbb51 100644 --- a/services/include/peruser_session.h +++ b/services/include/peruser_session.h @@ -125,7 +125,6 @@ namespace MiscServices { int IME_ERROR_CODE = 3; int COMMON_COUNT_THREE_HUNDRED = 300; int SLEEP_TIME = 300000; - int SLEEP_TIME_MORE = 1600000; InputMethodProperty *currentIme[MAX_IME]; // 0 - the default ime. 1 - security ime diff --git a/services/include/utils.h b/services/include/utils.h index 8cb9d01d..8312017f 100644 --- a/services/include/utils.h +++ b/services/include/utils.h @@ -19,6 +19,7 @@ #define FM_IMMS_PROJECT_UTILS_H #include +#include #include #include @@ -26,12 +27,10 @@ namespace OHOS { namespace MiscServices { class Utils { public: - static std::string to_utf8(std::u16string str16) - { + static std::string to_utf8(std::u16string str16) { return std::wstring_convert, char16_t> {}.to_bytes(str16); } - static std::u16string to_utf16(std::string str) - { + static std::u16string to_utf16(std::string str) { return std::wstring_convert, char16_t> {}.from_bytes(str); } }; diff --git a/services/src/input_attribute.cpp b/services/src/input_attribute.cpp index 3e1cb6dc..e739e811 100644 --- a/services/src/input_attribute.cpp +++ b/services/src/input_attribute.cpp @@ -21,7 +21,6 @@ namespace MiscServices { */ InputAttribute::InputAttribute() : enterKeyType(0), inputOption(0) { - inputPattern = PATTERN_TEXT; } /*! Constructor diff --git a/services/src/input_method_ability_connection_stub.cpp b/services/src/input_method_ability_connection_stub.cpp index b5108c99..88dc8928 100644 --- a/services/src/input_method_ability_connection_stub.cpp +++ b/services/src/input_method_ability_connection_stub.cpp @@ -22,7 +22,6 @@ namespace MiscServices { InputMethodAbilityConnectionStub::InputMethodAbilityConnectionStub(const int index) { mIndex = index; - messageHandler = nullptr; } InputMethodAbilityConnectionStub::~InputMethodAbilityConnectionStub() diff --git a/services/src/input_method_property.cpp b/services/src/input_method_property.cpp index 90401503..349f8216 100644 --- a/services/src/input_method_property.cpp +++ b/services/src/input_method_property.cpp @@ -22,7 +22,6 @@ namespace MiscServices { */ InputMethodProperty::InputMethodProperty() { - mDefaultImeId = 0; } /*! Destructor diff --git a/services/src/input_method_system_ability.cpp b/services/src/input_method_system_ability.cpp index 71b6ddf2..246dc981 100644 --- a/services/src/input_method_system_ability.cpp +++ b/services/src/input_method_system_ability.cpp @@ -58,7 +58,7 @@ namespace MiscServices { } std::map::const_iterator it; - for (it = userSessions.cbegin(); it != userSessions.cend(); ) { + for (it = userSessions.cbegin(); it != userSessions.cend();) { PerUserSession *session = it->second; it = userSessions.erase(it); delete session; @@ -66,7 +66,7 @@ namespace MiscServices { } userSessions.clear(); std::map::const_iterator it1; - for (it1 = userSettings.cbegin(); it1 != userSettings.cend(); ) { + for (it1 = userSettings.cbegin(); it1 != userSettings.cend();) { PerUserSetting *setting = it1->second; it1 = userSettings.erase(it1); delete setting; @@ -74,7 +74,7 @@ namespace MiscServices { } userSettings.clear(); std::map::const_iterator it2; - for (it2 = msgHandlers.cbegin(); it2 != msgHandlers.cend(); ) { + for (it2 = msgHandlers.cbegin(); it2 != msgHandlers.cend();) { MessageHandler *handler = it2->second; it2 = msgHandlers.erase(it2); delete handler; diff --git a/services/src/keyboard_type.cpp b/services/src/keyboard_type.cpp index 237052bf..c92fe774 100644 --- a/services/src/keyboard_type.cpp +++ b/services/src/keyboard_type.cpp @@ -110,6 +110,7 @@ namespace MiscServices { } else { mHashCode = ID_NONE; } + } void KeyboardType::setLabelId(int32_t labelId) diff --git a/services/src/peruser_session.cpp b/services/src/peruser_session.cpp index f0393676..3be9b5ad 100644 --- a/services/src/peruser_session.cpp +++ b/services/src/peruser_session.cpp @@ -12,13 +12,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "unistd.h" // usleep + +#include "unistd.h" #include "platform.h" #include "parcel.h" #include "message_parcel.h" #include "utils.h" #include "want.h" #include "input_method_ability_connection_stub.h" +#include #include "peruser_session.h" #include "ability_connect_callback_proxy.h" #include "ability_manager_interface.h" @@ -711,7 +713,7 @@ namespace MiscServices { parcel->WriteInt32(index); parcel->WriteString16(currentIme[index]->mImeId); Message *msg = new Message(MSG_ID_RESTART_IMS, parcel); - usleep(SLEEP_TIME_MORE); // wait that PACKAGE_REMOVED message is received if this ime has been removed + usleep(1600*1000); // wait that PACKAGE_REMOVED message is received if this ime has been removed MessageHandler::Instance()->SendMessage(msg); } IMSA_HILOGI("End...[%{public}d]\n", userId_); @@ -993,7 +995,7 @@ namespace MiscServices { time_t now = time(0); double diffSeconds = difftime(now, past[imeIndex]); - // time difference is more than 5 minutes, reset time and error num; + //time difference is more than 5 minutes, reset time and error num; if (diffSeconds > COMMON_COUNT_THREE_HUNDRED) { past[imeIndex] = now; errorNum[imeIndex] = 1; diff --git a/services/src/peruser_setting.cpp b/services/src/peruser_setting.cpp index 574d9210..5dcdf453 100644 --- a/services/src/peruser_setting.cpp +++ b/services/src/peruser_setting.cpp @@ -12,8 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -#include "unistd.h" // usleep + +#include "unistd.h" #include "peruser_setting.h" #include "platform.h" #include "utils.h" diff --git a/services/src/platform_api_proxy.cpp b/services/src/platform_api_proxy.cpp index 5cf2b198..4906fadf 100644 --- a/services/src/platform_api_proxy.cpp +++ b/services/src/platform_api_proxy.cpp @@ -76,7 +76,7 @@ namespace MiscServices { return nullptr; } int code = reply.ReadException(); - if (code != 0) { // code = 0, means no exception. + if (code != 0) {// code = 0, means no exception. LOG_DEBUG("exception code : %d\n", code); return nullptr; } diff --git a/unitest/src/input_method_controller_test.cpp b/unitest/src/input_method_controller_test.cpp index f55f8f95..b0330889 100644 --- a/unitest/src/input_method_controller_test.cpp +++ b/unitest/src/input_method_controller_test.cpp @@ -56,13 +56,13 @@ namespace MiscServices { { IMSA_HILOGI("IMC TEST TextListener DeleteForward length: %{public}d", length); } - void sendKeyEventFromInputMethod(KeyEvent event) + void SendKeyEventFromInputMethod(const KeyEvent& event) { IMSA_HILOGI("IMC TEST TextListener sendKeyEventFromInputMethod"); } - void sendKeyboardStatus(KeyboardStatus status) + void SendKeyboardInfo(const KeyboardInfo& info) { - IMSA_HILOGI("IMC TEST TextListener sendKeyboardStatus"); + IMSA_HILOGI("IMC TEST TextListener SendKeyboardInfo"); } }; class InputMethodControllerTest : public testing::Test {