1 /* 2 * Copyright (c) 2021-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 "event_filter_handler.h" 17 18 #include "error_multimodal.h" 19 #include "mmi_log.h" 20 21 namespace OHOS { 22 namespace MMI { 23 namespace { 24 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "EventFilterHandler" }; 25 } // namespace 26 EventFilterHandler()27EventFilterHandler::EventFilterHandler() 28 { 29 CALL_DEBUG_ENTER; 30 } 31 ~EventFilterHandler()32EventFilterHandler::~EventFilterHandler() 33 { 34 CALL_DEBUG_ENTER; 35 } 36 #ifdef OHOS_BUILD_ENABLE_KEYBOARD HandleKeyEvent(const std::shared_ptr<KeyEvent> keyEvent)37void EventFilterHandler::HandleKeyEvent(const std::shared_ptr<KeyEvent> keyEvent) 38 { 39 CALL_DEBUG_ENTER; 40 CHKPV(keyEvent); 41 CHKPV(nextHandler_); 42 nextHandler_->HandleKeyEvent(keyEvent); 43 } 44 #endif // OHOS_BUILD_ENABLE_KEYBOARD 45 46 #ifdef OHOS_BUILD_ENABLE_POINTER HandlePointerEvent(const std::shared_ptr<PointerEvent> pointerEvent)47void EventFilterHandler::HandlePointerEvent(const std::shared_ptr<PointerEvent> pointerEvent) 48 { 49 CHKPV(pointerEvent); 50 if (HandlePointerEventFilter(pointerEvent)) { 51 MMI_HILOGI("Pointer event Filter succeeded"); 52 return; 53 } 54 CHKPV(nextHandler_); 55 nextHandler_->HandlePointerEvent(pointerEvent); 56 } 57 #endif // OHOS_BUILD_ENABLE_POINTER 58 59 #ifdef OHOS_BUILD_ENABLE_TOUCH HandleTouchEvent(const std::shared_ptr<PointerEvent> pointerEvent)60void EventFilterHandler::HandleTouchEvent(const std::shared_ptr<PointerEvent> pointerEvent) 61 { 62 CHKPV(pointerEvent); 63 if (HandlePointerEventFilter(pointerEvent)) { 64 MMI_HILOGI("Pointer event Filter succeeded"); 65 return; 66 } 67 CHKPV(nextHandler_); 68 nextHandler_->HandleTouchEvent(pointerEvent); 69 } 70 #endif // OHOS_BUILD_ENABLE_TOUCH 71 AddInputEventFilter(sptr<IEventFilter> filter)72int32_t EventFilterHandler::AddInputEventFilter(sptr<IEventFilter> filter) 73 { 74 CALL_INFO_TRACE; 75 std::lock_guard<std::mutex> guard(lockFilter_); 76 filter_ = filter; 77 return RET_OK; 78 } 79 HandlePointerEventFilter(std::shared_ptr<PointerEvent> point)80bool EventFilterHandler::HandlePointerEventFilter(std::shared_ptr<PointerEvent> point) 81 { 82 CALL_DEBUG_ENTER; 83 CHKPF(point); 84 std::lock_guard<std::mutex> guard(lockFilter_); 85 if (filter_ == nullptr) { 86 MMI_HILOGD("The filter is not setted"); 87 return false; 88 } 89 if (filter_->HandlePointerEvent(point)) { 90 MMI_HILOGD("Call HandlePointerEvent return true"); 91 return true; 92 } 93 return false; 94 } 95 } // namespace MMI 96 } // namespace OHOS 97