1 /*
2 * Copyright (c) 2022-2024 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 "dfx_hisysevent.h"
17
18 #include <fstream>
19
20 #include "i_input_windows_manager.h"
21 #include "parameters.h"
22
23 #undef MMI_LOG_DOMAIN
24 #define MMI_LOG_DOMAIN MMI_LOG_SERVER
25 #undef MMI_LOG_TAG
26 #define MMI_LOG_TAG "DfxHisysevent"
27
28 namespace OHOS {
29 namespace MMI {
30 namespace {
31 constexpr int32_t INVALID_DEVICE_ID { -1 };
32 constexpr uint32_t REPORT_DISPATCH_TIMES { 100 };
33 constexpr uint32_t REPORT_COMBO_START_TIMES { 100 };
34 constexpr uint32_t POINTER_CLEAR_TIMES { 10 };
35 constexpr int32_t CONVERSION_US_TO_MS { 1000 };
36 constexpr int32_t TIMES_LEVEL1 { 10 };
37 constexpr int32_t TIMES_LEVEL2 { 25 };
38 constexpr int32_t TIMES_LEVEL3 { 30 };
39 constexpr int32_t TIMES_LEVEL4 { 50 };
40 constexpr int32_t FINGERSENSE_EVENT_TIMES { 1 };
41 constexpr size_t SINGLE_KNUCKLE_SIZE { 1 };
42 constexpr size_t DOUBLE_KNUCKLE_SIZE { 2 };
43 constexpr int32_t FAIL_SUCC_TIME_DIFF { 3 * 60 * 1000 };
44 constexpr int32_t MIN_GESTURE_TIMESTAMPS_SIZE { 2 };
45 constexpr int32_t DOWN_TO_PREV_UP_MAX_TIME_THRESHOLD { 1000 * 1000 };
46 constexpr int32_t FOLDABLE_DEVICE { 2 };
47 const int32_t ROTATE_POLICY = system::GetIntParameter("const.window.device.rotate_policy", 0);
48 const std::string EMPTY_STRING { "" };
49 const std::string LCD_PATH { "/sys/class/graphics/fb0/lcd_model" };
50 const std::string ACC_PATH { "/sys/devices/platform/huawei_sensor/acc_info" };
51 const std::string ACC0_PATH { "/sys/class/sensors/acc_sensor/info" };
52 const std::string TP_PATH { "/sys/touchscreen/touch_chip_info" };
53 const std::string TP0_PATH { "/sys/touchscreen0/touch_chip_info" };
54 const std::string TP1_PATH { "/sys/touchscreen1/touch_chip_info" };
55 } // namespace
56
GetVendorInfo(const std::string & nodePath)57 static std::string GetVendorInfo(const std::string &nodePath)
58 {
59 char realPath[PATH_MAX] = {};
60 if (realpath(nodePath.c_str(), realPath) == nullptr) {
61 MMI_HILOGE("The realpath return nullptr");
62 return "";
63 }
64 std::ifstream file(realPath);
65 if (!file.is_open()) {
66 MMI_HILOGE("Unable to open file:%{public}s, error:%{public}d", nodePath.c_str(), errno);
67 return "";
68 }
69 std::string vendorInfo;
70 file >> vendorInfo;
71 file.close();
72 return vendorInfo;
73 }
74
OnDeviceConnect(int32_t id,OHOS::HiviewDFX::HiSysEvent::EventType type)75 void DfxHisysevent::OnDeviceConnect(int32_t id, OHOS::HiviewDFX::HiSysEvent::EventType type)
76 {
77 std::shared_ptr<InputDevice> dev = INPUT_DEV_MGR->GetInputDevice(id);
78 CHKPV(dev);
79 std::string message;
80 std::string name;
81 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::FAULT) {
82 message = "The input_device connection failed for already existing";
83 name = "INPUT_DEV_CONNECTION_FAILURE";
84 } else {
85 message = "The input_device connection succeed";
86 name = "INPUT_DEV_CONNECTION_SUCCESS";
87 }
88 if (id == INT32_MAX) {
89 int32_t ret = HiSysEventWrite(
90 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
91 name,
92 type,
93 "MSG", "The input_device connection failed because the nextId_ exceeded the upper limit");
94 if (ret != 0) {
95 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
96 }
97 } else {
98 int32_t ret = HiSysEventWrite(
99 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
100 name,
101 type,
102 "DEVICE_ID", id,
103 "DEVICE_PHYS", dev->GetPhys(),
104 "DEVICE_NAME", dev->GetName(),
105 "DEVICE_TYPE", dev->GetType(),
106 "MSG", message);
107 if (ret != 0) {
108 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
109 }
110 }
111 }
112
OnDeviceDisconnect(int32_t id,OHOS::HiviewDFX::HiSysEvent::EventType type)113 void DfxHisysevent::OnDeviceDisconnect(int32_t id, OHOS::HiviewDFX::HiSysEvent::EventType type)
114 {
115 if (id == INVALID_DEVICE_ID) {
116 int32_t ret = HiSysEventWrite(
117 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
118 "INPUT_DEV_DISCONNECTION_FAILURE",
119 type,
120 "MSG", "The input device failed to disconnect to server");
121 if (ret != 0) {
122 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
123 }
124 } else {
125 std::shared_ptr dev = INPUT_DEV_MGR->GetInputDevice(id);
126 CHKPV(dev);
127 int32_t ret = HiSysEventWrite(
128 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
129 "INPUT_DEV_DISCONNECTION_SUCCESS",
130 type,
131 "DEVICE_Id", id,
132 "DEVICE_PHYS", dev->GetPhys(),
133 "DEVICE_NAME", dev->GetName(),
134 "DEVICE_TYPE", dev->GetType(),
135 "MSG", "The input device successfully disconnect to server");
136 if (ret != 0) {
137 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
138 }
139 }
140 }
141
OnClientConnect(const ClientConnectData & data,OHOS::HiviewDFX::HiSysEvent::EventType type)142 void DfxHisysevent::OnClientConnect(const ClientConnectData &data, OHOS::HiviewDFX::HiSysEvent::EventType type)
143 {
144 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
145 int32_t ret = HiSysEventWrite(
146 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
147 "CLIENT_CONNECTION_SUCCESS",
148 type,
149 "PID", data.pid,
150 "UID", data.uid,
151 "MODULE_TYPE", data.moduleType,
152 "SERVER_FD", data.serverFd,
153 "PROGRAMNAME", data.programName,
154 "MSG", "The client successfully connected to the server");
155 if (ret != 0) {
156 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
157 }
158 } else {
159 int32_t ret = HiSysEventWrite(
160 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
161 "CLIENT_CONNECTION_FAILURE",
162 type,
163 "PID", data.pid,
164 "UID", data.uid,
165 "MODULE_TYPE", data.moduleType,
166 "PROGRAMNAME", data.programName,
167 "MSG", "The client failed to connect to the server");
168 if (ret != 0) {
169 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
170 }
171 }
172 }
173
OnClientDisconnect(const SessionPtr & secPtr,int32_t fd,OHOS::HiviewDFX::HiSysEvent::EventType type)174 void DfxHisysevent::OnClientDisconnect(const SessionPtr& secPtr, int32_t fd,
175 OHOS::HiviewDFX::HiSysEvent::EventType type)
176 {
177 CHKPV(secPtr);
178 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
179 int32_t ret = HiSysEventWrite(
180 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
181 "CLIENT_DISCONNECTION_SUCCESS",
182 type,
183 "PID", secPtr->GetPid(),
184 "UID", secPtr->GetUid(),
185 "MODULE_TYPE", secPtr->GetModuleType(),
186 "FD", fd,
187 "PROGRAMNAME", secPtr->GetProgramName(),
188 "MSG", "The client successfully disconnected to the server");
189 if (ret != 0) {
190 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
191 }
192 } else {
193 if (secPtr == nullptr) {
194 int32_t ret = HiSysEventWrite(
195 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
196 "CLIENT_DISCONNECTION_FAILURE",
197 type,
198 "MSG", "The client failed to disconnect to the server because secPtr is nullptr");
199 if (ret != 0) {
200 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
201 }
202 } else {
203 int32_t ret = HiSysEventWrite(
204 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
205 "CLIENT_DISCONNECTION_FAILURE",
206 type,
207 "MSG", "The client failed to disconnect to the server because close(fd) return error");
208 if (ret != 0) {
209 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
210 }
211 }
212 }
213 }
214
OnUpdateTargetPointer(std::shared_ptr<PointerEvent> pointer,int32_t fd,OHOS::HiviewDFX::HiSysEvent::EventType type)215 void DfxHisysevent::OnUpdateTargetPointer(std::shared_ptr<PointerEvent> pointer, int32_t fd,
216 OHOS::HiviewDFX::HiSysEvent::EventType type)
217 {
218 CHKPV(pointer);
219 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
220 int32_t ret = HiSysEventWrite(
221 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
222 "TARGET_POINTER_EVENT_SUCCESS",
223 type,
224 "EVENTTYPE", pointer->GetEventType(),
225 "AGENT_WINDOWID", pointer->GetAgentWindowId(),
226 "TARGET_WINDOWID", pointer->GetTargetWindowId(),
227 "PID", WIN_MGR->GetWindowPid(pointer->GetTargetWindowId()),
228 "FD", fd,
229 "MSG", "The window manager successfully update target pointer");
230 if (ret != 0) {
231 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
232 }
233 } else {
234 int32_t ret = HiSysEventWrite(
235 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
236 "TARGET_POINTER_EVENT_FAILURE",
237 OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
238 "EVENTTYPE", pointer->GetEventType(),
239 "MSG", "The window manager failed to update target pointer");
240 if (ret != 0) {
241 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
242 }
243 }
244 }
245
OnUpdateTargetKey(std::shared_ptr<KeyEvent> key,int32_t fd,OHOS::HiviewDFX::HiSysEvent::EventType type)246 void DfxHisysevent::OnUpdateTargetKey(std::shared_ptr<KeyEvent> key, int32_t fd,
247 OHOS::HiviewDFX::HiSysEvent::EventType type)
248 {
249 CHKPV(key);
250 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
251 int32_t ret = HiSysEventWrite(
252 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
253 "TARGET_KEY_EVENT_SUCCESS",
254 type,
255 "EVENTTYPE", key->GetEventType(),
256 "KEYCODE", key->GetKeyCode(),
257 "ACTION", key->GetAction(),
258 "ACTION_TIME", key->GetActionTime(),
259 "ACTION_STARTTIME", key->GetActionStartTime(),
260 "FLAG", key->GetFlag(),
261 "KEYACTION", key->GetKeyAction(),
262 "FD", fd,
263 "AGENT_WINDOWID", key->GetAgentWindowId(),
264 "TARGET_WINDOWID", key->GetTargetWindowId(),
265 "PID", WIN_MGR->GetWindowPid(key->GetTargetWindowId()),
266 "MSG", "The window manager successfully update target key");
267 if (ret != 0) {
268 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
269 }
270 } else {
271 int32_t ret = HiSysEventWrite(
272 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
273 "TARGET_KEY_EVENT_FAILURE",
274 type,
275 "EVENTTYPE", key->GetEventType(),
276 "KEYCODE", key->GetKeyCode(),
277 "ACTION", key->GetAction(),
278 "ACTION_TIME", key->GetActionTime(),
279 "ACTION_STARTTIME", key->GetActionStartTime(),
280 "FLAG", key->GetFlag(),
281 "KEYACTION", key->GetKeyAction(),
282 "MSG", "The window manager failed to update target key");
283 if (ret != 0) {
284 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
285 }
286 }
287 }
288
OnFocusWindowChanged(int32_t oldFocusWindowId,int32_t newFocusWindowId,int32_t oldFocusWindowPid,int32_t newFocusWindowPid)289 void DfxHisysevent::OnFocusWindowChanged(int32_t oldFocusWindowId, int32_t newFocusWindowId,
290 int32_t oldFocusWindowPid, int32_t newFocusWindowPid)
291 {
292 int32_t ret = HiSysEventWrite(
293 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
294 "FOCUS_WINDOW_CHANGE",
295 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
296 "OLD_FOCUS_WINDOWID", oldFocusWindowId,
297 "NEW_FOCUS_WINDOWID", newFocusWindowId,
298 "OLD_FOCUS_WINDOWPID", oldFocusWindowPid,
299 "NEW_FOCUS_WINDOWPID", newFocusWindowPid,
300 "MSG", "The focusWindowId changing succeeded");
301 if (ret != 0) {
302 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
303 }
304 }
305
OnZorderWindowChanged(int32_t oldZorderFirstWindowId,int32_t newZorderFirstWindowId,int32_t oldZorderFirstWindowPid,int32_t newZorderFirstWindowPid)306 void DfxHisysevent::OnZorderWindowChanged(int32_t oldZorderFirstWindowId, int32_t newZorderFirstWindowId,
307 int32_t oldZorderFirstWindowPid, int32_t newZorderFirstWindowPid)
308 {
309 int32_t ret = HiSysEventWrite(
310 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
311 "Z_ORDER_WINDOW_CHANGE",
312 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
313 "OLD_ZORDER_FIRST_WINDOWID", oldZorderFirstWindowId,
314 "NEW_ZORDER_FIRST_WINDOWID", newZorderFirstWindowId,
315 "OLD_ZORDER_FIRST_WINDOWPID", oldZorderFirstWindowPid,
316 "NEW_ZORDER_FIRST_WINDOWPID", newZorderFirstWindowPid,
317 "MSG", "The ZorderFirstWindow changing succeeded");
318 if (ret != 0) {
319 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
320 }
321 }
322
OnLidSwitchChanged(int32_t lidSwitch)323 void DfxHisysevent::OnLidSwitchChanged(int32_t lidSwitch)
324 {
325 int32_t ret = HiSysEventWrite(
326 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
327 "LID_SWITCH",
328 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
329 "SWITCH", lidSwitch);
330 if (ret != 0) {
331 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
332 }
333 }
334
ApplicationBlockInput(const SessionPtr & sess)335 void DfxHisysevent::ApplicationBlockInput(const SessionPtr& sess)
336 {
337 int32_t ret = HiSysEventWrite(
338 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
339 "APPLICATION_BLOCK_INPUT",
340 OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
341 "PID", sess->GetPid(),
342 "UID", sess->GetUid(),
343 "PACKAGE_NAME", sess->GetProgramName(),
344 "PROCESS_NAME", sess->GetProgramName(),
345 "MSG", "User input does not respond");
346 if (ret != 0) {
347 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
348 }
349 }
350
CalcKeyDispTimes()351 void DfxHisysevent::CalcKeyDispTimes()
352 {
353 int64_t endTime = GetSysClockTime();
354 dispCastTime_.totalTimes++;
355 int64_t castTime = (endTime - dispatchStartTime_) / CONVERSION_US_TO_MS;
356 if (castTime <= TIMES_LEVEL1) {
357 dispCastTime_.below10msTimes++;
358 } else if (castTime <= TIMES_LEVEL2) {
359 dispCastTime_.below25msTimes++;
360 } else if (castTime <= TIMES_LEVEL4) {
361 dispCastTime_.below50msTimes++;
362 } else {
363 dispCastTime_.above50msTimes++;
364 }
365 }
366
CalcPointerDispTimes()367 void DfxHisysevent::CalcPointerDispTimes()
368 {
369 int64_t endTime = GetSysClockTime();
370 dispCastTime_.sampleCount++;
371 int64_t castTime = (endTime - dispatchStartTime_) / CONVERSION_US_TO_MS;
372 if (dispCastTime_.sampleCount == POINTER_CLEAR_TIMES) {
373 dispCastTime_.sampleCount = 0;
374 dispCastTime_.totalTimes++;
375 if (castTime <= TIMES_LEVEL1) {
376 dispCastTime_.below10msTimes++;
377 } else if (castTime <= TIMES_LEVEL2) {
378 dispCastTime_.below25msTimes++;
379 } else if (castTime <= TIMES_LEVEL4) {
380 dispCastTime_.below50msTimes++;
381 } else {
382 dispCastTime_.above50msTimes++;
383 }
384 }
385 }
386
ReportDispTimes()387 void DfxHisysevent::ReportDispTimes()
388 {
389 if (dispCastTime_.totalTimes >= REPORT_DISPATCH_TIMES) {
390 int32_t ret = HiSysEventWrite(
391 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
392 "INPUT_DISPATCH_TIME",
393 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
394 "BELOW10MS", dispCastTime_.below10msTimes,
395 "BELOW25MS", dispCastTime_.below25msTimes,
396 "BELOW50MS", dispCastTime_.below50msTimes,
397 "ABOVE50MS", dispCastTime_.above50msTimes,
398 "MSG", "The costing time to dispatch event");
399 if (ret != 0) {
400 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
401 } else {
402 dispCastTime_.sampleCount = 0;
403 dispCastTime_.totalTimes = 0;
404 dispCastTime_.below10msTimes = 0;
405 dispCastTime_.below25msTimes = 0;
406 dispCastTime_.below50msTimes = 0;
407 dispCastTime_.above50msTimes = 0;
408 }
409 }
410 }
411
CalcComboStartTimes(const int32_t keyDownDuration)412 void DfxHisysevent::CalcComboStartTimes(const int32_t keyDownDuration)
413 {
414 int64_t endTime = GetSysClockTime();
415 comboStartCastTime_.totalTimes++;
416 int64_t castTime = (endTime - comboStartTime_) / CONVERSION_US_TO_MS - keyDownDuration;
417 if (castTime <= TIMES_LEVEL1) {
418 comboStartCastTime_.below10msTimes++;
419 } else if (castTime <= TIMES_LEVEL3) {
420 comboStartCastTime_.below30msTimes++;
421 } else if (castTime <= TIMES_LEVEL4) {
422 comboStartCastTime_.below50msTimes++;
423 } else {
424 comboStartCastTime_.above50msTimes++;
425 }
426 }
427
ReportComboStartTimes()428 void DfxHisysevent::ReportComboStartTimes()
429 {
430 if (comboStartCastTime_.totalTimes >= REPORT_COMBO_START_TIMES) {
431 int32_t ret = HiSysEventWrite(
432 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
433 "COMBO_START_TIME",
434 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
435 "BELOW10MS", comboStartCastTime_.below10msTimes,
436 "BELOW30MS", comboStartCastTime_.below30msTimes,
437 "BELOW50MS", comboStartCastTime_.below50msTimes,
438 "ABOVE50MS", comboStartCastTime_.above50msTimes,
439 "MSG", "The costing time to launch application of combination");
440 if (ret != 0) {
441 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
442 } else {
443 comboStartCastTime_.totalTimes = 0;
444 comboStartCastTime_.below10msTimes = 0;
445 comboStartCastTime_.below30msTimes = 0;
446 comboStartCastTime_.below50msTimes = 0;
447 comboStartCastTime_.above50msTimes = 0;
448 }
449 }
450 }
451
ReportPowerInfo(std::shared_ptr<KeyEvent> key,OHOS::HiviewDFX::HiSysEvent::EventType type)452 void DfxHisysevent::ReportPowerInfo(std::shared_ptr<KeyEvent> key, OHOS::HiviewDFX::HiSysEvent::EventType type)
453 {
454 CHKPV(key);
455 if (key->GetKeyAction() == KeyEvent::KEY_ACTION_UP) {
456 int32_t ret = HiSysEventWrite(
457 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
458 "INPUT_POWER_UP",
459 type);
460 if (ret != RET_OK) {
461 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
462 }
463 } else if (key->GetKeyAction() == KeyEvent::KEY_ACTION_DOWN) {
464 int32_t ret = HiSysEventWrite(
465 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
466 "INPUT_POWER_DOWN",
467 type);
468 if (ret != RET_OK) {
469 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
470 }
471 } else {
472 MMI_HILOGW("press power key is error");
473 }
474 }
475
StatisticTouchpadGesture(std::shared_ptr<PointerEvent> pointerEvent)476 void DfxHisysevent::StatisticTouchpadGesture(std::shared_ptr<PointerEvent> pointerEvent)
477 {
478 CHKPV(pointerEvent);
479 int32_t pointerAction = pointerEvent->GetPointerAction();
480 int32_t fingerCount = pointerEvent->GetFingerCount();
481
482 if (pointerAction == PointerEvent::POINTER_ACTION_AXIS_BEGIN) {
483 int32_t ret = HiSysEventWrite(
484 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
485 "TOUCHPAD_PINCH",
486 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
487 "FINGER_COUNT", fingerCount);
488 if (ret != RET_OK) {
489 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
490 }
491 } else if (pointerAction == PointerEvent::POINTER_ACTION_SWIPE_BEGIN) {
492 int32_t ret = HiSysEventWrite(
493 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
494 "TOUCHPAD_SWIPE",
495 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
496 "FINGER_COUNT", fingerCount);
497 if (ret != RET_OK) {
498 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
499 }
500 } else {
501 MMI_HILOGW("HiviewDFX Statistic touchpad gesture is error, pointer action is invalid");
502 }
503 }
504
ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode,bool flag)505 void DfxHisysevent::ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode, bool flag)
506 {
507 const std::map<uint32_t, std::string> mapSettingCodeToSettingType = {
508 { TOUCHPAD_SCROLL_SETTING, "TOUCHPAD_SCROLL_SETTING" },
509 { TOUCHPAD_SCROLL_DIR_SETTING, "TOUCHPAD_SCROLL_DIR_SETTING" },
510 { TOUCHPAD_TAP_SETTING, "TOUCHPAD_TAP_SETTING" },
511 { TOUCHPAD_SWIPE_SETTING, "TOUCHPAD_SWIPE_SETTING" },
512 { TOUCHPAD_PINCH_SETTING, "TOUCHPAD_PINCH_SETTING" },
513 { TOUCHPAD_DOUBLE_TAP_DRAG_SETTING, "TOUCHPAD_DOUBLE_TAP_DRAG_SETTING" },
514 };
515
516 auto it = mapSettingCodeToSettingType.find(settingCode);
517 if (it == mapSettingCodeToSettingType.end()) {
518 MMI_HILOGE("HiviewDFX Report touchpad setting state is error, setting code is invalid");
519 return;
520 }
521 std::string name = it->second;
522
523 int32_t ret = HiSysEventWrite(
524 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
525 name,
526 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
527 "SWITCH_STATE", flag);
528 if (ret != RET_OK) {
529 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
530 }
531 }
532
ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode,int32_t value)533 void DfxHisysevent::ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode, int32_t value)
534 {
535 const std::map<uint32_t, std::string> mapSettingCodeToSettingType = {
536 { TOUCHPAD_POINTER_SPEED_SETTING, "TOUCHPAD_POINTER_SPEED_SETTING" },
537 { TOUCHPAD_RIGHT_CLICK_SETTING, "TOUCHPAD_RIGHT_CLICK_SETTING" },
538 };
539
540 auto it = mapSettingCodeToSettingType.find(settingCode);
541 if (it == mapSettingCodeToSettingType.end()) {
542 MMI_HILOGW("HiviewDFX Report touchpad setting state is error, setting code is invalid");
543 return;
544 }
545 std::string name = it->second;
546
547 int32_t ret = HiSysEventWrite(
548 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
549 name,
550 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
551 "SWITCH_VALUE", value);
552 if (ret != RET_OK) {
553 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
554 }
555 }
556
ReportSingleKnuckleDoubleClickEvent(int32_t intervalTime,int32_t distanceInterval)557 void DfxHisysevent::ReportSingleKnuckleDoubleClickEvent(int32_t intervalTime, int32_t distanceInterval)
558 {
559 int32_t ret = HiSysEventWrite(
560 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
561 "FINGERSENSE_KNOCK_EVENT_INFO",
562 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
563 "SK_S_T", FINGERSENSE_EVENT_TIMES,
564 "SKS_T_I", intervalTime / CONVERSION_US_TO_MS,
565 "DKS_D_I", distanceInterval,
566 "TP_INFO", GetTpVendorName(),
567 "S_INFO", GetAccVendorName(),
568 "LCD_INFO", GetLcdInfo());
569 if (ret != RET_OK) {
570 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
571 }
572 }
573
ReportFailIfInvalidTime(const std::shared_ptr<PointerEvent> touchEvent,int32_t intervalTime)574 void DfxHisysevent::ReportFailIfInvalidTime(const std::shared_ptr<PointerEvent> touchEvent, int32_t intervalTime)
575 {
576 if (intervalTime >= DOWN_TO_PREV_UP_MAX_TIME_THRESHOLD) {
577 return;
578 }
579 CHKPV(touchEvent);
580 size_t size = touchEvent->GetPointerIds().size();
581 std::string knuckleFailCount;
582 std::string invalidTimeFailCount;
583 if (size == SINGLE_KNUCKLE_SIZE) {
584 knuckleFailCount = "SKF_T_I";
585 invalidTimeFailCount = "SK_F_T";
586 } else if (size == DOUBLE_KNUCKLE_SIZE) {
587 knuckleFailCount = "DKF_T_I";
588 invalidTimeFailCount = "DK_F_T";
589 } else {
590 MMI_HILOGE("HiviewDFX Report knuckle state error, knuckle size:%{public}zu", size);
591 return;
592 }
593 int32_t ret = HiSysEventWrite(
594 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
595 "FINGERSENSE_KNOCK_EVENT_INFO",
596 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
597 "FSF_T_C", FINGERSENSE_EVENT_TIMES,
598 knuckleFailCount, intervalTime / CONVERSION_US_TO_MS,
599 invalidTimeFailCount, FINGERSENSE_EVENT_TIMES,
600 "TP_INFO", GetTpVendorName(),
601 "S_INFO", GetAccVendorName(),
602 "LCD_INFO", GetLcdInfo());
603 if (ret != RET_OK) {
604 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
605 }
606 }
607
ReportFailIfInvalidDistance(const std::shared_ptr<PointerEvent> touchEvent,float distance)608 void DfxHisysevent::ReportFailIfInvalidDistance(const std::shared_ptr<PointerEvent> touchEvent, float distance)
609 {
610 CHKPV(touchEvent);
611 int32_t ret = HiSysEventWrite(
612 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
613 "FINGERSENSE_KNOCK_EVENT_INFO",
614 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
615 "SK_F_T", FINGERSENSE_EVENT_TIMES,
616 "DKF_D_I", distance,
617 "FSF_D_C", FINGERSENSE_EVENT_TIMES,
618 "TP_INFO", GetTpVendorName(),
619 "S_INFO", GetAccVendorName(),
620 "LCD_INFO", GetLcdInfo());
621 if (ret != RET_OK) {
622 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
623 }
624 }
625
ReportKnuckleClickEvent()626 void DfxHisysevent::ReportKnuckleClickEvent()
627 {
628 int32_t ret = HiSysEventWrite(
629 OHOS::HiviewDFX::HiSysEvent::Domain::INPUT_UE,
630 "KNUCKLE_CLICK",
631 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
632 "PNAMEID", EMPTY_STRING,
633 "PVERSIONID", EMPTY_STRING);
634 if (ret != RET_OK) {
635 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
636 }
637 }
638
ReportScreenCaptureGesture()639 void DfxHisysevent::ReportScreenCaptureGesture()
640 {
641 int32_t ret = HiSysEventWrite(
642 OHOS::HiviewDFX::HiSysEvent::Domain::INPUT_UE,
643 "SINGLE_KNUCKLE_DOUBLE_CLICK",
644 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
645 "PNAMEID", EMPTY_STRING,
646 "PVERSIONID", EMPTY_STRING);
647 if (ret != RET_OK) {
648 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
649 }
650 }
651
652 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR
ReportMagicCursorColorChange(std::string fill_Color,std::string stroke_Color)653 void DfxHisysevent::ReportMagicCursorColorChange(std::string fill_Color, std::string stroke_Color)
654 {
655 int32_t ret = HiSysEventWrite(
656 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
657 "MAGIC_CURSOR_COLOR",
658 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
659 "FILL_COLOR", fill_Color,
660 "STROKE_COLOR", stroke_Color);
661 if (ret != RET_OK) {
662 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
663 }
664 }
665
ReportMagicCursorShapeChange(std::string fill_Code,OHOS::MMI::MOUSE_ICON mouse_Style)666 void DfxHisysevent::ReportMagicCursorShapeChange(std::string fill_Code, OHOS::MMI::MOUSE_ICON mouse_Style)
667 {
668 int32_t ret = HiSysEventWrite(
669 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
670 "MAGIC_CURSOR_SHAPE",
671 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
672 "MOUSE_STYLE", mouse_Style,
673 "FILL_CODE", fill_Code);
674 if (ret != RET_OK) {
675 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
676 }
677 }
678
ReportMagicCursorSizeChange(std::string fill_Code,std::string mouse_Size)679 void DfxHisysevent::ReportMagicCursorSizeChange(std::string fill_Code, std::string mouse_Size)
680 {
681 int32_t ret = HiSysEventWrite(
682 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
683 "MAGIC_CURSOR_SIZE",
684 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
685 "MOUSE_SIZE", mouse_Size,
686 "FILL_CODE", fill_Code);
687 if (ret != RET_OK) {
688 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
689 }
690 }
691
ReportMagicCursorFault(std::string error_Code,std::string error_Name)692 void DfxHisysevent::ReportMagicCursorFault(std::string error_Code, std::string error_Name)
693 {
694 int32_t ret = HiSysEventWrite(
695 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
696 "FANTASY_CURSOR_FAILED",
697 OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
698 "ERROR_CODE", error_Code,
699 "ERROR_NAME", error_Name);
700 if (ret != RET_OK) {
701 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
702 }
703 }
704 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR
705
ReportSmartShotSuccTimes()706 void DfxHisysevent::ReportSmartShotSuccTimes()
707 {
708 int32_t ret = HiSysEventWrite(
709 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
710 "FINGERSENSE_KNOCK_EVENT_INFO",
711 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
712 "RG_S_T", FINGERSENSE_EVENT_TIMES,
713 "TP_INFO", GetTpVendorName(),
714 "S_INFO", GetAccVendorName(),
715 "LCD_INFO", GetLcdInfo());
716 if (ret != RET_OK) {
717 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
718 }
719 }
720
ReportKnuckleGestureTrackLength(int32_t knuckleGestureTrackLength)721 void DfxHisysevent::ReportKnuckleGestureTrackLength(int32_t knuckleGestureTrackLength)
722 {
723 int32_t ret = HiSysEventWrite(
724 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
725 "FINGERSENSE_KNOCK_EVENT_INFO",
726 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
727 "RG_TRACK_LENGTH", knuckleGestureTrackLength,
728 "TP_INFO", GetTpVendorName(),
729 "S_INFO", GetAccVendorName(),
730 "LCD_INFO", GetLcdInfo());
731 if (ret != RET_OK) {
732 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
733 }
734 }
735
ReportKnuckleGestureTrackTime(const std::vector<int64_t> & gestureTimeStamps)736 void DfxHisysevent::ReportKnuckleGestureTrackTime(const std::vector<int64_t> &gestureTimeStamps)
737 {
738 size_t size = gestureTimeStamps.size();
739 if (size < MIN_GESTURE_TIMESTAMPS_SIZE) {
740 MMI_HILOGE("HiviewDFX Report knuckle gesture track time error, knuckle timestamps size:%{public}zu", size);
741 return;
742 }
743 int32_t knuckleGestureTrackTime = (gestureTimeStamps[size - 1] - gestureTimeStamps[0]) / CONVERSION_US_TO_MS;
744 int32_t ret = HiSysEventWrite(
745 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
746 "FINGERSENSE_KNOCK_EVENT_INFO",
747 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
748 "RG_TRACK_TIME", knuckleGestureTrackTime,
749 "TP_INFO", GetTpVendorName(),
750 "S_INFO", GetAccVendorName(),
751 "LCD_INFO", GetLcdInfo());
752 if (ret != RET_OK) {
753 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
754 }
755 }
756
ReportScreenRecorderGesture(int32_t intervalTime)757 void DfxHisysevent::ReportScreenRecorderGesture(int32_t intervalTime)
758 {
759 int32_t ret = HiSysEventWrite(
760 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
761 "FINGERSENSE_KNOCK_EVENT_INFO",
762 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
763 "DK_S_T", FINGERSENSE_EVENT_TIMES,
764 "DKS_T_I", intervalTime / CONVERSION_US_TO_MS,
765 "TP_INFO", GetTpVendorName(),
766 "S_INFO", GetAccVendorName(),
767 "LCD_INFO", GetLcdInfo());
768 if (ret != RET_OK) {
769 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
770 }
771 }
772
ReportKnuckleGestureFaildTimes()773 void DfxHisysevent::ReportKnuckleGestureFaildTimes()
774 {
775 int32_t ret = HiSysEventWrite(
776 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
777 "FINGERSENSE_KNOCK_EVENT_INFO",
778 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
779 "LG_F_T", FINGERSENSE_EVENT_TIMES,
780 "TP_INFO", GetTpVendorName(),
781 "S_INFO", GetAccVendorName(),
782 "LCD_INFO", GetLcdInfo());
783 if (ret != RET_OK) {
784 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
785 }
786 }
787
ReportKnuckleDrawSSuccessTimes()788 void DfxHisysevent::ReportKnuckleDrawSSuccessTimes()
789 {
790 int32_t ret = HiSysEventWrite(
791 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
792 "FINGERSENSE_KNOCK_EVENT_INFO",
793 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
794 "L_S_S_T", FINGERSENSE_EVENT_TIMES,
795 "TP_INFO", GetTpVendorName(),
796 "S_INFO", GetAccVendorName(),
797 "LCD_INFO", GetLcdInfo());
798 if (ret != RET_OK) {
799 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
800 }
801 }
802
ReportKnuckleGestureFromFailToSuccessTime(int32_t intervalTime)803 void DfxHisysevent::ReportKnuckleGestureFromFailToSuccessTime(int32_t intervalTime)
804 {
805 intervalTime /= CONVERSION_US_TO_MS;
806 if (intervalTime < 0 || intervalTime >= FAIL_SUCC_TIME_DIFF) {
807 return;
808 }
809 int32_t ret = HiSysEventWrite(
810 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
811 "FINGERSENSE_KNOCK_EVENT_INFO",
812 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
813 "RG_F_S_TIME_DIFF", intervalTime,
814 "TP_INFO", GetTpVendorName(),
815 "S_INFO", GetAccVendorName(),
816 "LCD_INFO", GetLcdInfo());
817 if (ret != RET_OK) {
818 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
819 }
820 }
821
ReportKnuckleGestureFromSuccessToFailTime(int32_t intervalTime)822 void DfxHisysevent::ReportKnuckleGestureFromSuccessToFailTime(int32_t intervalTime)
823 {
824 intervalTime /= CONVERSION_US_TO_MS;
825 if (intervalTime < 0 || intervalTime >= FAIL_SUCC_TIME_DIFF) {
826 return;
827 }
828 int32_t ret = HiSysEventWrite(
829 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
830 "FINGERSENSE_KNOCK_EVENT_INFO",
831 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
832 "RG_S_F_TIME_DIFF", intervalTime,
833 "TP_INFO", GetTpVendorName(),
834 "S_INFO", GetAccVendorName(),
835 "LCD_INFO", GetLcdInfo());
836 if (ret != RET_OK) {
837 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
838 }
839 }
840
ReportFailIfKnockTooFast()841 void DfxHisysevent::ReportFailIfKnockTooFast()
842 {
843 int32_t ret = HiSysEventWrite(
844 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
845 "FINGERSENSE_KNOCK_EVENT_INFO",
846 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
847 "SK_F_T", FINGERSENSE_EVENT_TIMES,
848 "FSF_C_C", FINGERSENSE_EVENT_TIMES,
849 "TP_INFO", GetTpVendorName(),
850 "S_INFO", GetAccVendorName(),
851 "LCD_INFO", GetLcdInfo());
852 if (ret != RET_OK) {
853 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
854 }
855 }
856
ReportFailIfOneSuccTwoFail(std::shared_ptr<PointerEvent> touchEvent)857 void DfxHisysevent::ReportFailIfOneSuccTwoFail(std::shared_ptr<PointerEvent> touchEvent)
858 {
859 CHKPV(touchEvent);
860 int32_t id = touchEvent->GetPointerId();
861 PointerEvent::PointerItem item;
862 touchEvent->GetPointerItem(id, item);
863 if (item.GetToolType() == PointerEvent::TOOL_TYPE_KNUCKLE) {
864 return;
865 }
866 int32_t ret = HiSysEventWrite(
867 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
868 "FINGERSENSE_KNOCK_EVENT_INFO",
869 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
870 "SK_F_T", FINGERSENSE_EVENT_TIMES,
871 "FSF_1S_2F_C", FINGERSENSE_EVENT_TIMES,
872 "TP_INFO", GetTpVendorName(),
873 "S_INFO", GetAccVendorName(),
874 "LCD_INFO", GetLcdInfo());
875 if (ret != RET_OK) {
876 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
877 }
878 }
879
GetTpVendorName()880 std::string DfxHisysevent::GetTpVendorName()
881 {
882 if (ROTATE_POLICY != FOLDABLE_DEVICE) {
883 return GetVendorInfo(TP_PATH);
884 }
885 auto displayMode = WIN_MGR->GetDisplayMode();
886 if (displayMode == DisplayMode::FULL) {
887 return GetVendorInfo(TP0_PATH);
888 } else if (displayMode == DisplayMode::MAIN) {
889 return GetVendorInfo(TP1_PATH);
890 }
891 return "NA";
892 }
893
GetAccVendorName()894 std::string DfxHisysevent::GetAccVendorName()
895 {
896 if (ROTATE_POLICY != FOLDABLE_DEVICE) {
897 return GetVendorInfo(ACC_PATH);
898 }
899 return GetVendorInfo(ACC0_PATH);
900 }
901
GetLcdInfo()902 std::string DfxHisysevent::GetLcdInfo()
903 {
904 return GetVendorInfo(LCD_PATH);
905 }
906
ReportSubscribeKeyEvent(int32_t subscribeId,int32_t finalKey,std::string name,int32_t pid)907 void DfxHisysevent::ReportSubscribeKeyEvent(int32_t subscribeId, int32_t finalKey,
908 std::string name, int32_t pid)
909 {
910 int32_t ret = HiSysEventWrite(
911 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
912 "SUBSCRIBE_KEY_EVENT",
913 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
914 "SUBSCRIBE_ID", subscribeId,
915 "FINAL_KEY", finalKey,
916 "NAME", name,
917 "PID", pid);
918 if (ret != RET_OK) {
919 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
920 }
921 }
922
ReportUnSubscribeKeyEvent(int32_t subscribeId,int32_t finalKey,std::string name,int32_t pid)923 void DfxHisysevent::ReportUnSubscribeKeyEvent(int32_t subscribeId, int32_t finalKey,
924 std::string name, int32_t pid)
925 {
926 int32_t ret = HiSysEventWrite(
927 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
928 "UNSUBSCRIBE_KEY_EVENT",
929 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
930 "SUBSCRIBE_ID", subscribeId,
931 "FINAL_KEY", finalKey,
932 "NAME", name,
933 "PID", pid);
934 if (ret != RET_OK) {
935 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
936 }
937 }
938
ReportKeyboardEvent(int32_t eventType,int32_t keyCode,int32_t keyAction)939 void DfxHisysevent::ReportKeyboardEvent(int32_t eventType, int32_t keyCode, int32_t keyAction)
940 {
941 int32_t ret = HiSysEventWrite(
942 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
943 "KAYBOARD_EVENT",
944 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
945 "KEY_EVENT_TYPE", eventType,
946 "KEY_CODE", keyCode,
947 "KEY_ACTION", keyAction);
948 if (ret != RET_OK) {
949 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
950 }
951 }
952
ReportLaunchAbility(std::string bundleName)953 void DfxHisysevent::ReportLaunchAbility(std::string bundleName)
954 {
955 int32_t ret = HiSysEventWrite(
956 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
957 "LAUNCH_ABILITY",
958 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
959 "BUNDLE_NAME", bundleName);
960 if (ret != RET_OK) {
961 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
962 }
963 }
964
ReportCommonAction(std::string action)965 void DfxHisysevent::ReportCommonAction(std::string action)
966 {
967 int32_t ret = HiSysEventWrite(
968 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
969 "COMMON_ACTION",
970 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
971 "ACTION", action);
972 if (ret != RET_OK) {
973 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
974 }
975 }
976
ReportTouchEvent(int32_t pointAction,int32_t pointId,int32_t windowId)977 void DfxHisysevent::ReportTouchEvent(int32_t pointAction, int32_t pointId, int32_t windowId)
978 {
979 int32_t ret = HiSysEventWrite(
980 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
981 "TOUCH_EVENT",
982 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
983 "POINT_ACTION", pointAction,
984 "POINT_ID", pointId,
985 "WINDOW_ID", windowId);
986 if (ret != RET_OK) {
987 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
988 }
989 }
990
ReportSetCustomCursor(int32_t windowPid,int32_t windowId)991 void DfxHisysevent::ReportSetCustomCursor(int32_t windowPid, int32_t windowId)
992 {
993 int32_t ret = HiSysEventWrite(
994 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
995 "SET_CUSTOM_CURSOR",
996 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
997 "WINDOW_PID", windowPid,
998 "WINDOW_ID", windowId);
999 if (ret != RET_OK) {
1000 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1001 }
1002 }
1003
ReportSetMouseIcon(int32_t windowId)1004 void DfxHisysevent::ReportSetMouseIcon(int32_t windowId)
1005 {
1006 int32_t ret = HiSysEventWrite(
1007 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1008 "SET_MOUSE_ICON",
1009 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1010 "WINDOW_ID", windowId);
1011 if (ret != RET_OK) {
1012 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1013 }
1014 }
1015
ReportSetPointerStyle(int32_t windowId,int32_t pointerStyleId,bool isUiExtension)1016 void DfxHisysevent::ReportSetPointerStyle(int32_t windowId, int32_t pointerStyleId, bool isUiExtension)
1017 {
1018 int32_t ret = HiSysEventWrite(
1019 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1020 "SET_POINTER_STYLE",
1021 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1022 "WINDOW_ID", windowId,
1023 "POINTER_STYLE_ID", pointerStyleId,
1024 "IS_UIEXTENSION", isUiExtension);
1025 if (ret != RET_OK) {
1026 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1027 }
1028 }
1029
ReportSetPointerVisible(bool visible,int32_t priority)1030 void DfxHisysevent::ReportSetPointerVisible(bool visible, int32_t priority)
1031 {
1032 int32_t ret = HiSysEventWrite(
1033 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1034 "SET_POINTER_VISIBLE",
1035 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1036 "VISIBLE", visible,
1037 "PRIORITY", priority);
1038 if (ret != RET_OK) {
1039 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1040 }
1041 }
1042
ReportSetPointerSpeed(int32_t speed)1043 void DfxHisysevent::ReportSetPointerSpeed(int32_t speed)
1044 {
1045 int32_t ret = HiSysEventWrite(
1046 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1047 "SET_POINTER_SPEED",
1048 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1049 "SPEED", speed);
1050 if (ret != RET_OK) {
1051 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1052 }
1053 }
1054
ReportAddInputHandler(int32_t handlerType)1055 void DfxHisysevent::ReportAddInputHandler(int32_t handlerType)
1056 {
1057 int32_t ret = HiSysEventWrite(
1058 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1059 "ADD_INPUT_HANDLER",
1060 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1061 "INPUT_HANDLER_TYPE", handlerType);
1062 if (ret != RET_OK) {
1063 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1064 }
1065 }
1066
ReportRemoveInputHandler(int32_t handlerType)1067 void DfxHisysevent::ReportRemoveInputHandler(int32_t handlerType)
1068 {
1069 int32_t ret = HiSysEventWrite(
1070 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1071 "REMOVE_INPUT_HANDLER",
1072 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1073 "INPUT_HANDLER_TYPE", handlerType);
1074 if (ret != RET_OK) {
1075 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1076 }
1077 }
1078
ReportInjectPointerEvent(bool isNativeInject)1079 void DfxHisysevent::ReportInjectPointerEvent(bool isNativeInject)
1080 {
1081 int32_t ret = HiSysEventWrite(
1082 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1083 "INJECT_POINTER_EVENT",
1084 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1085 "IS_NATIVE_INJECT", isNativeInject);
1086 if (ret != RET_OK) {
1087 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1088 }
1089 }
1090
ReportEnableCombineKey(bool enable)1091 void DfxHisysevent::ReportEnableCombineKey(bool enable)
1092 {
1093 int32_t ret = HiSysEventWrite(
1094 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1095 "ENABLE_COMBINE_KEY",
1096 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1097 "ENABLE", enable);
1098 if (ret != RET_OK) {
1099 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1100 }
1101 }
1102
ReportAppendExtraData()1103 void DfxHisysevent::ReportAppendExtraData()
1104 {
1105 int32_t ret = HiSysEventWrite(
1106 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1107 "APPEND_EXTRA_DATA",
1108 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR);
1109 if (ret != RET_OK) {
1110 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1111 }
1112 }
1113
ReportTransmitInfrared(int64_t number)1114 void DfxHisysevent::ReportTransmitInfrared(int64_t number)
1115 {
1116 int32_t ret = HiSysEventWrite(
1117 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1118 "APPEND_EXTRA_DATA",
1119 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1120 "ENABLE", number);
1121 if (ret != RET_OK) {
1122 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1123 }
1124 }
1125
ReportSetCurrentUser(int32_t userId)1126 void DfxHisysevent::ReportSetCurrentUser(int32_t userId)
1127 {
1128 int32_t ret = HiSysEventWrite(
1129 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
1130 "SET_CURRENT_USER",
1131 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
1132 "USER_ID", userId);
1133 if (ret != RET_OK) {
1134 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
1135 }
1136 }
1137 } // namespace MMI
1138 } // namespace OHOS