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