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 #ifndef DFX_HISYSEVENT_H 17 #define DFX_HISYSEVENT_H 18 19 #include <string> 20 21 #include "hisysevent.h" 22 23 #include "input_device_manager.h" 24 #include "key_event.h" 25 #include "mmi_log.h" 26 #include "pointer_event.h" 27 #include "uds_session.h" 28 29 namespace OHOS { 30 namespace MMI { 31 class DfxHisysevent { 32 public: 33 struct DispCastTime { 34 uint32_t sampleCount; 35 uint32_t totalTimes; 36 uint32_t below10msTimes; 37 uint32_t below25msTimes; 38 uint32_t below50msTimes; 39 uint32_t above50msTimes; 40 }; 41 struct ComboStartCastTime { 42 uint32_t totalTimes; 43 uint32_t below10msTimes; 44 uint32_t below30msTimes; 45 uint32_t below50msTimes; 46 uint32_t above50msTimes; 47 }; 48 struct ClientConnectData { 49 int32_t pid { -1 }; 50 int32_t uid { -1 }; 51 int32_t moduleType { -1 }; 52 std::string programName; 53 int32_t serverFd { -1 }; 54 }; 55 56 enum TOUCHPAD_SETTING_CODE { 57 TOUCHPAD_SCROLL_SETTING = 1, 58 TOUCHPAD_SCROLL_DIR_SETTING, 59 TOUCHPAD_TAP_SETTING, 60 TOUCHPAD_SWIPE_SETTING, 61 TOUCHPAD_PINCH_SETTING, 62 TOUCHPAD_POINTER_SPEED_SETTING, 63 TOUCHPAD_RIGHT_CLICK_SETTING, 64 TOUCHPAD_ROTATE_SETTING, 65 TOUCHPAD_DOUBLE_TAP_DRAG_SETTING, 66 }; 67 68 static void OnDeviceConnect(int32_t id, OHOS::HiviewDFX::HiSysEvent::EventType type); 69 static void OnDeviceDisconnect(int32_t id, OHOS::HiviewDFX::HiSysEvent::EventType type); 70 static void OnClientConnect(const ClientConnectData &data, OHOS::HiviewDFX::HiSysEvent::EventType type); 71 static void OnClientDisconnect(const SessionPtr& secPtr, int32_t fd, 72 OHOS::HiviewDFX::HiSysEvent::EventType type); 73 static void OnUpdateTargetPointer(std::shared_ptr<PointerEvent> pointer, int32_t fd, 74 OHOS::HiviewDFX::HiSysEvent::EventType type); 75 static void OnUpdateTargetKey(std::shared_ptr<KeyEvent> key, int32_t fd, 76 OHOS::HiviewDFX::HiSysEvent::EventType type); 77 static void OnFocusWindowChanged(int32_t oldFocusWindowId, int32_t newFocusWindowId, 78 int32_t oldFocusWindowPid, int32_t newFocusWindowPid); 79 static void OnZorderWindowChanged(int32_t oldZorderFirstWindowId, int32_t newZorderFirstWindowId, 80 int32_t oldZorderFirstWindowPid, int32_t newZorderFirstWindowPid); 81 static void OnLidSwitchChanged(int32_t lidSwitch); 82 static void ApplicationBlockInput(const SessionPtr& sess); 83 static void CalcKeyDispTimes(); 84 static void CalcPointerDispTimes(); 85 static void CalcComboStartTimes(int32_t keyDownDuration); 86 static void ReportDispTimes(); 87 static void ReportComboStartTimes(); 88 static void ReportPowerInfo(std::shared_ptr<KeyEvent> key, OHOS::HiviewDFX::HiSysEvent::EventType type); GetComboStartTime()89 static inline void GetComboStartTime() 90 { 91 comboStartTime_ = GetSysClockTime(); 92 } GetDispStartTime()93 static inline void GetDispStartTime() 94 { 95 dispatchStartTime_ = GetSysClockTime(); 96 } 97 static void ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode, bool flag); 98 static void ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode, int32_t value); 99 static void StatisticTouchpadGesture(std::shared_ptr<PointerEvent> pointerEvent); 100 static void ReportKnuckleClickEvent(); 101 static void ReportScreenCaptureGesture(); 102 static void ReportSingleKnuckleDoubleClickEvent(int32_t intervalTime, int32_t distanceInterval); 103 static void ReportFailIfInvalidTime(const std::shared_ptr<PointerEvent> touchEvent, int32_t intervalTime); 104 static void ReportFailIfInvalidDistance(const std::shared_ptr<PointerEvent> touchEvent, float distance); 105 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR 106 static void ReportMagicCursorColorChange(std::string fill_Color, std::string stroke_Color); 107 static void ReportMagicCursorShapeChange(std::string fill_Code, OHOS::MMI::MOUSE_ICON mouse_Style); 108 static void ReportMagicCursorSizeChange(std::string fill_Code, std::string mouse_Size); 109 static void ReportMagicCursorFault(std::string error_Code, std::string error_Name); 110 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR 111 static void ReportSmartShotSuccTimes(); 112 static void ReportKnuckleGestureTrackLength(int32_t knuckleGestureTrackLength); 113 static void ReportKnuckleGestureTrackTime(const std::vector<int64_t> &gestureTimeStamps); 114 static void ReportKnuckleGestureFaildTimes(); 115 static void ReportKnuckleDrawSSuccessTimes(); 116 static void ReportKnuckleGestureFromFailToSuccessTime(int32_t intervalTime); 117 static void ReportKnuckleGestureFromSuccessToFailTime(int32_t intervalTime); 118 static void ReportScreenRecorderGesture(int32_t intervalTime); 119 static void ReportFailIfKnockTooFast(); 120 static void ReportFailIfOneSuccTwoFail(std::shared_ptr<PointerEvent> touchEvent); 121 static std::string GetTpVendorName(); 122 static std::string GetAccVendorName(); 123 static std::string GetLcdInfo(); 124 static void ReportSubscribeKeyEvent(int32_t subscribeId, int32_t finalKey, std::string name, int32_t pid); 125 static void ReportUnSubscribeKeyEvent(int32_t subscribeId, int32_t finalKey, std::string name, int32_t pid); 126 static void ReportKeyboardEvent(int32_t eventType, int32_t keyCode, int32_t keyAction); 127 static void ReportLaunchAbility(std::string bundleName); 128 static void ReportCommonAction(std::string action); 129 static void ReportTouchEvent(int32_t pointAction, int32_t pointId, int32_t windowId); 130 static void ReportSetCustomCursor(int32_t windowPid, int32_t windowId); 131 static void ReportSetMouseIcon(int32_t windowId); 132 static void ReportSetPointerStyle(int32_t windowId, int32_t pointerStyleId, bool isUiExtension); 133 static void ReportSetPointerVisible(bool visible, int32_t priority); 134 static void ReportSetPointerSpeed(int32_t speed); 135 static void ReportAddInputHandler(int32_t handlerType); 136 static void ReportRemoveInputHandler(int32_t handlerType); 137 static void ReportInjectPointerEvent(bool isNativeInject); 138 static void ReportEnableCombineKey(bool enable); 139 static void ReportAppendExtraData(); 140 static void ReportTransmitInfrared(int64_t number); 141 static void ReportSetCurrentUser(int32_t userId); 142 143 private: 144 static inline int64_t dispatchStartTime_ { 0 }; 145 static inline int64_t comboStartTime_ { 0 }; 146 static inline DispCastTime dispCastTime_ { 0 }; 147 static inline ComboStartCastTime comboStartCastTime_ { 0 }; 148 }; 149 } // namespace MMI 150 } // namespace OHOS 151 #endif // BYTRACE_ADAPTER_H 152