• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 "base/log/event_report.h"
17 
18 #include <unistd.h>
19 
20 #include "hisysevent.h"
21 
22 #include "core/common/ace_engine.h"
23 #ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
24 #include "res_sched_client.h"
25 #include "res_type.h"
26 #endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
27 
28 namespace OHOS::Ace {
29     FRCSceneFpsInfo EventReport::curFRCSceneFpsInfo_;
30     int64_t EventReport::calTime_ = 0;
31     int32_t EventReport::calFrameRate_ = 0;
32 
33 namespace {
34 
35 constexpr char EVENT_KEY_ERROR_TYPE[] = "ERROR_TYPE";
36 constexpr char EVENT_KEY_UID[] = "UID";
37 constexpr char EVENT_KEY_PID[] = "PID";
38 constexpr char EVENT_KEY_SESSIONID[] = "SESSION_ID";
39 constexpr char EVENT_KEY_PACKAGE_NAME[] = "PACKAGE_NAME";
40 constexpr char EVENT_KEY_PROCESS_NAME[] = "PROCESS_NAME";
41 constexpr char EVENT_KEY_MESSAGE[] = "MSG";
42 constexpr char EVENT_KEY_CMD[] = "CMD";
43 constexpr char EVENT_KEY_REASON[] = "REASON";
44 constexpr char EVENT_KEY_SUMMARY[] = "SUMMARY";
45 constexpr char APP_RUNNING_UNIQUE_ID[] = "APP_RUNNING_UNIQUE_ID";
46 constexpr char EVENT_NAME_JS_ERROR[] = "JS_ERROR";
47 constexpr char STATISTIC_DURATION[] = "DURATION";
48 constexpr char EVENT_KEY_STARTTIME[] = "STARTTIME";
49 constexpr char EVENT_KEY_VERSION_CODE[] = "VERSION_CODE";
50 constexpr char EVENT_KEY_VERSION_NAME[] = "VERSION_NAME";
51 constexpr char EVENT_KEY_BUNDLE_NAME[] = "BUNDLE_NAME";
52 constexpr char EVENT_KEY_ABILITY_NAME[] = "ABILITY_NAME";
53 constexpr char EVENT_KEY_PAGE_URL[] = "PAGE_URL";
54 constexpr char EVENT_KEY_JANK_STATS[] = "JANK_STATS";
55 constexpr char EVENT_KEY_JANK_STATS_VER[] = "JANK_STATS_VER";
56 constexpr char EVENT_KEY_APP_PID[] = "APP_PID";
57 constexpr char EVENT_KEY_SCENE_ID[] = "SCENE_ID";
58 constexpr char EVENT_KEY_INPUT_TIME[] = "INPUT_TIME";
59 constexpr char EVENT_KEY_ANIMATION_START_LATENCY[] = "ANIMATION_START_LATENCY";
60 constexpr char EVENT_KEY_ANIMATION_END_LATENCY[] = "ANIMATION_END_LATENCY";
61 constexpr char EVENT_KEY_E2E_LATENCY[] = "E2E_LATENCY";
62 constexpr char EVENT_KEY_UNIQUE_ID[] = "UNIQUE_ID";
63 constexpr char EVENT_KEY_MODULE_NAME[] = "MODULE_NAME";
64 constexpr char EVENT_KEY_DURITION[] = "DURITION";
65 constexpr char EVENT_KEY_TOTAL_FRAMES[] = "TOTAL_FRAMES";
66 constexpr char EVENT_KEY_TOTAL_MISSED_FRAMES[] = "TOTAL_MISSED_FRAMES";
67 constexpr char EVENT_KEY_MAX_FRAMETIME[] = "MAX_FRAMETIME";
68 constexpr char EVENT_KEY_MAX_FRAMETIME_SINCE_START[] = "MAX_FRAMETIME_SINCE_START";
69 constexpr char EVENT_KEY_MAX_HITCH_TIME[] = "MAX_HITCH_TIME";
70 constexpr char EVENT_KEY_MAX_HITCH_TIME_SINCE_START[] = "MAX_HITCH_TIME_SINCE_START";
71 constexpr char EVENT_KEY_MAX_SEQ_MISSED_FRAMES[] = "MAX_SEQ_MISSED_FRAMES";
72 constexpr char EVENT_KEY_SOURCE_TYPE[] = "SOURCE_TYPE";
73 constexpr char EVENT_KEY_NOTE[] = "NOTE";
74 constexpr char ACTION_NAME[] = "ACTION_NAME";
75 constexpr char EVENT_KEY_DISPLAY_ANIMATOR[] = "DISPLAY_ANIMATOR";
76 constexpr char EVENT_KEY_SKIPPED_FRAME_TIME[] = "SKIPPED_FRAME_TIME";
77 constexpr char EVENT_KEY_REAL_SKIPPED_FRAME_TIME[] = "REAL_SKIPPED_FRAME_TIME";
78 constexpr char EVENT_KEY_PAGE_NODE_COUNT[] = "PAGE_NODE_COUNT";
79 constexpr char EVENT_KEY_PAGE_NODE_THRESHOLD[] = "PAGE_NODE_THRESHOLD";
80 constexpr char EVENT_KEY_PAGE_DEPTH[] = "PAGE_DEPTH";
81 constexpr char EVENT_KEY_PAGE_DEPTH_THRESHOLD[] = "PAGE_DEPTH_THRESHOLD";
82 constexpr char EVENT_KEY_FUNCTION_NAME[] = "FUNCTION_NAME";
83 constexpr char EVENT_KEY_FUNCTION_EXECUTE_TIME[] = "FUNCTION_EXECUTE_TIME";
84 constexpr char EVENT_KEY_FUNCTION_TIME_THRESHOLD[] = "FUNCTION_TIME_THRESHOLD";
85 constexpr char EVENT_KEY_NOTIFY_HOVER_STATUS_CHANGE[] = "NOTIFY_HOVER_STATUS_CHANGE";
86 constexpr char EVENT_KEY_FOLDER_STATUS[] = "FOLDER_STATUS";
87 constexpr char EVENT_KEY_HOVER_TIME[] = "HOVER_TIME";
88 constexpr char EVENT_KEY_IS_HOVER_MODE[] = "IS_HOVER_MODE";
89 constexpr char EVENT_KEY_APP_ROTATION[] = "APP_ROTATION";
90 constexpr char EVENT_KEY_WINDOW_MODE[] = "WINDOW_MODE";
91 constexpr char EVENT_KEY_NON_MANUAL_POSTCARD_ACTION[] = "NON_MANUAL_POSTCARD_ACTION";
92 constexpr char EVENT_KEY_TEXTFIELD_ERROR[] = "TEXTFIELD_ERROR";
93 constexpr char EVENT_KEY_TEXTFIELD_ERROR_TYPE[] = "TEXTFIELD_ERROR_TYPE";
94 constexpr char EVENT_KEY_CLIPBOARD_FAIL_TYPE[] = "EVENT_KEY_CLIPBOARD_FAIL_TYPE";
95 constexpr char EVENT_KEY_FRAME_NODE_ID[] = "FRAME_NODE_ID";
96 constexpr char EVENT_KEY_CLIPBOARD_FAIL[] = "CLIPBOARD_FAIL";
97 constexpr char EVENT_KEY_PAGE_NAME[] = "PAGE_NAME";
98 constexpr char EVENT_KEY_FILTER_TYPE[] = "FILTER_TYPE";
99 constexpr char EVENT_KEY_FORM_NAME[] = "FORM_NAME";
100 constexpr char EVENT_KEY_DIMENSION[] = "DIMENSION";
101 constexpr char EVENT_KEY_SCENE[] = "SCENE";
102 constexpr char EVENT_KEY_PACNAME[] = "PACNAME";
103 constexpr char EVENT_KEY_DURATION_60[] = "DURATION_60";
104 constexpr char EVENT_KEY_DURATION_72[] = "DURATION_72";
105 constexpr char EVENT_KEY_DURATION_90[] = "DURATION_90";
106 constexpr char EVENT_KEY_DURATION_120[] = "DURATION_120";
107 constexpr int32_t FRAME_60 = 60;
108 constexpr int32_t FRAME_72 = 72;
109 constexpr int32_t FRAME_90 = 90;
110 constexpr int32_t FRAME_120 = 120;
111 
112 constexpr int32_t MAX_PACKAGE_NAME_LENGTH = 128;
113 #ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
114 constexpr int32_t MAX_JANK_FRAME_TIME = 32;
115 #endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
116 
117 constexpr char DUMP_LOG_COMMAND[] = "B";
118 
119 constexpr char CLICK_TITLE_MAXIMIZE_MENU[] = "CLICK_TITLE_MAXIMIZE_MENU";
120 constexpr char DOUBLE_CLICK_TITLE[] = "DOUBLE_CLICK_TITLE";
121 constexpr char CURRENTPKG[] = "CURRENTPKG";
122 constexpr char STATECHANGE[] = "STATECHANGE";
123 constexpr char MAXMENUITEM[] = "MAXMENUITEM";
124 constexpr char SCENE_BOARD_UE_DOMAIN[] = "SCENE_BOARD_UE";
125 #ifdef VSYNC_TIMEOUT_CHECK
126 constexpr char UI_VSYNC_TIMEOUT[] = "UI_VSYNC_TIMEOUT";
127 constexpr char EVENT_KEY_WINDOW_ID[] = "WINDOW_ID";
128 constexpr char EVENT_KEY_INSTANCE_ID[] = "INSTANCE_ID";
129 constexpr char EVENT_KEY_VSYNC_TIMESTAMP[] = "VSYNC_TIMESTAMP";
130 #endif
131 constexpr char EVENT_KEY_RICH_EDITOR_ERROR[] = "RICH_EDITOR_ERROR";
132 constexpr char EVENT_KEY_SPAN_LENGTH[] = "SPAN_LENGTH";
133 constexpr char EVENT_KEY_TEXT_LENGTH[] = "TEXT_LENGTH";
134 constexpr char EVENT_KEY_SPAN_INDEX[] = "SPAN_INDEX";
135 constexpr char ACCESSIBILITY_FAIL[] = "ACCESSIBILITY_FAIL";
136 constexpr char PAGE_NODE_OVERFLOW[] = "PAGE_NODE_OVERFLOW";
137 constexpr char PAGE_DEPTH_OVERFLOW[] = "PAGE_DEPTH_OVERFLOW";
138 constexpr char UI_LIFECIRCLE_FUNCTION_TIMEOUT[] = "UI_LIFECIRCLE_FUNCTION_TIMEOUT";
139 constexpr char UIEXTENSION_TRANSPARENT_DETECTED[] = "UIEXTENSION_TRANSPARENT_DETECTED";
140 constexpr char EVENT_KEY_SCROLLABLE_ERROR[] = "SCROLLABLE_ERROR";
141 constexpr char EVENT_KEY_NODE_TYPE[] = "NODE_TYPE";
142 constexpr char EVENT_KEY_SUB_ERROR_TYPE[] = "SUB_ERROR_TYPE";
143 constexpr char EVENT_KEY_TARGET_API_VERSION[] = "TARGET_API_VERSION";
144 constexpr char EVENT_KEY_REUSED_NODE_SKIP_MEASURE[] = "REUSED_NODE_SKIP_MEASURE";
145 
StrTrim(std::string & str)146 void StrTrim(std::string& str)
147 {
148     if (str.size() > MAX_PACKAGE_NAME_LENGTH) {
149         str = str.substr(0, MAX_PACKAGE_NAME_LENGTH);
150     }
151 }
152 
153 } // namespace
154 
SendEvent(const EventInfo & eventInfo)155 void EventReport::SendEvent(const EventInfo& eventInfo)
156 {
157     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
158     if (packageName.size() > MAX_PACKAGE_NAME_LENGTH) {
159         StrTrim(packageName);
160     }
161     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventInfo.eventType,
162         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
163         EVENT_KEY_ERROR_TYPE, eventInfo.errorType,
164         EVENT_KEY_PACKAGE_NAME, packageName);
165 }
166 
SendJsCardRenderTimeEvent(const std::string & sessionID,const std::string & timeType,uint64_t timeDelay)167 void EventReport::SendJsCardRenderTimeEvent(
168     const std::string& sessionID,
169     const std::string& timeType,
170     uint64_t timeDelay)
171 {
172     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, timeType,
173         OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
174         EVENT_KEY_SESSIONID, sessionID,
175         STATISTIC_DURATION, timeDelay);
176 }
177 
FrameRateDurationsStatistics(int32_t expectedRate,const std::string & scene,NG::SceneStatus status)178 void EventReport::FrameRateDurationsStatistics(int32_t expectedRate, const std::string& scene, NG::SceneStatus status)
179 {
180     switch (status) {
181         case NG::SceneStatus::START: {
182             curFRCSceneFpsInfo_ = FRCSceneFpsInfo();
183             calTime_ = 0;
184             calFrameRate_ = 0;
185             return;
186         }
187         case NG::SceneStatus::RUNNING: {
188             if (calTime_ == 0) {
189                 calTime_ = GetSysTimestamp();
190                 calFrameRate_ = expectedRate;
191             }
192             if (expectedRate != calFrameRate_) {
193                 int32_t endTime = GetSysTimestamp();
194                 int32_t duration = endTime - calTime_;
195                 calTime_ = endTime;
196             AddFrameRateDuration(calFrameRate_, duration);
197             }
198             calFrameRate_ = expectedRate;
199             return;
200         }
201         case NG::SceneStatus::END: {
202             int32_t endTime = GetSysTimestamp();
203             int32_t duration = endTime - calTime_;
204             calTime_ = endTime;
205             AddFrameRateDuration(calFrameRate_, duration);
206             EventReport::SendDiffFrameRatesDuring(scene, curFRCSceneFpsInfo_);
207             return;
208         }
209         default:
210             return;
211     }
212 }
213 
AddFrameRateDuration(int32_t frameRate,int32_t duration)214 void EventReport::AddFrameRateDuration(int32_t frameRate, int32_t duration)
215 {
216     switch (frameRate) {
217         case FRAME_120: {
218             curFRCSceneFpsInfo_.duration_120 += duration;
219             break;
220         }
221         case FRAME_90: {
222             curFRCSceneFpsInfo_.duration_90 += duration;
223             break;
224         }
225         case FRAME_72: {
226             curFRCSceneFpsInfo_.duration_72 += duration;
227             break;
228         }
229         case FRAME_60: {
230             curFRCSceneFpsInfo_.duration_60 += duration;
231             break;
232         }
233         default:
234             break;
235     }
236 }
237 
SendDiffFrameRatesDuring(const std::string & scene,const FRCSceneFpsInfo & curFRCSceneFpsInfo_)238 void EventReport::SendDiffFrameRatesDuring(const std::string& scene, const FRCSceneFpsInfo& curFRCSceneFpsInfo_)
239 {
240     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
241     std::string eventName = "FRC_SCENE_INFO";
242     if (packageName.size() > MAX_PACKAGE_NAME_LENGTH) {
243         StrTrim(packageName);
244     }
245     auto frameRateDuring_60_ms = curFRCSceneFpsInfo_.duration_60 / NS_TO_MS;
246     auto frameRateDuring_72_ms = curFRCSceneFpsInfo_.duration_72 / NS_TO_MS;
247     auto frameRateDuring_90_ms = curFRCSceneFpsInfo_.duration_90 / NS_TO_MS;
248     auto frameRateDuring_120_ms = curFRCSceneFpsInfo_.duration_120 / NS_TO_MS;
249     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
250         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
251         EVENT_KEY_SCENE, scene,
252         EVENT_KEY_PACNAME, packageName,
253         EVENT_KEY_DURATION_120, frameRateDuring_120_ms,
254         EVENT_KEY_DURATION_90, frameRateDuring_90_ms,
255         EVENT_KEY_DURATION_72, frameRateDuring_72_ms,
256         EVENT_KEY_DURATION_60, frameRateDuring_60_ms);
257 }
258 
SendAppStartException(AppStartExcepType type)259 void EventReport::SendAppStartException(AppStartExcepType type)
260 {
261     EventInfo eventInfo = {
262         .eventType = EXCEPTION_FRAMEWORK_APP_START,
263         .errorType = static_cast<int32_t>(type),
264     };
265 
266     SendEventInner(eventInfo);
267 }
268 
SendPageRouterException(PageRouterExcepType type,const std::string & pageUrl)269 void EventReport::SendPageRouterException(PageRouterExcepType type, const std::string& pageUrl)
270 {
271     EventInfo eventInfo = {
272         .eventType = EXCEPTION_FRAMEWORK_PAGE_ROUTER,
273         .errorType = static_cast<int32_t>(type),
274         .pageUrl = pageUrl,
275     };
276 
277     SendEventInner(eventInfo);
278 }
279 
SendComponentException(ComponentExcepType type)280 void EventReport::SendComponentException(ComponentExcepType type)
281 {
282     EventInfo eventInfo = {
283         .eventType = EXCEPTION_COMPONENT,
284         .errorType = static_cast<int32_t>(type),
285     };
286 
287     SendEventInner(eventInfo);
288 }
289 
SendAPIChannelException(APIChannelExcepType type)290 void EventReport::SendAPIChannelException(APIChannelExcepType type)
291 {
292     EventInfo eventInfo = {
293         .eventType = EXCEPTION_API_CHANNEL,
294         .errorType = static_cast<int32_t>(type),
295     };
296 
297     SendEventInner(eventInfo);
298 }
299 
SendRenderException(RenderExcepType type)300 void EventReport::SendRenderException(RenderExcepType type)
301 {
302     EventInfo eventInfo = {
303         .eventType = EXCEPTION_RENDER,
304         .errorType = static_cast<int32_t>(type),
305     };
306 
307     SendEventInner(eventInfo);
308 }
309 
SendJsException(JsExcepType type)310 void EventReport::SendJsException(JsExcepType type)
311 {
312     EventInfo eventInfo = {
313         .eventType = EXCEPTION_JS,
314         .errorType = static_cast<int32_t>(type),
315     };
316 
317     SendEventInner(eventInfo);
318 }
319 
SendAnimationException(AnimationExcepType type)320 void EventReport::SendAnimationException(AnimationExcepType type)
321 {
322     EventInfo eventInfo = {
323         .eventType = EXCEPTION_ANIMATION,
324         .errorType = static_cast<int32_t>(type),
325     };
326 
327     SendEventInner(eventInfo);
328 }
329 
SendEventException(EventExcepType type)330 void EventReport::SendEventException(EventExcepType type)
331 {
332     EventInfo eventInfo = {
333         .eventType = EXCEPTION_EVENT,
334         .errorType = static_cast<int32_t>(type),
335     };
336 
337     SendEventInner(eventInfo);
338 }
339 
SendInternalException(InternalExcepType type)340 void EventReport::SendInternalException(InternalExcepType type)
341 {
342     EventInfo eventInfo = {
343         .eventType = EXCEPTION_INTERNATIONALIZATION,
344         .errorType = static_cast<int32_t>(type),
345     };
346 
347     SendEventInner(eventInfo);
348 }
349 
SendAccessibilityException(AccessibilityExcepType type)350 void EventReport::SendAccessibilityException(AccessibilityExcepType type)
351 {
352     EventInfo eventInfo = {
353         .eventType = EXCEPTION_ACCESSIBILITY,
354         .errorType = static_cast<int32_t>(type),
355     };
356 
357     SendEventInner(eventInfo);
358 }
359 
ReportAccessibilityFailEvent(const std::string & actionName)360 void EventReport::ReportAccessibilityFailEvent(const std::string& actionName)
361 {
362     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
363     auto abilityName = AceApplicationInfo::GetInstance().GetAbilityName();
364     auto processName = AceApplicationInfo::GetInstance().GetProcessName();
365     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, ACCESSIBILITY_FAIL,
366         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
367         EVENT_KEY_BUNDLE_NAME, packageName,
368         EVENT_KEY_ABILITY_NAME, abilityName,
369         EVENT_KEY_PROCESS_NAME, processName,
370         ACTION_NAME, actionName);
371 }
372 
SendFormException(FormExcepType type)373 void EventReport::SendFormException(FormExcepType type)
374 {
375     EventInfo eventInfo = {
376         .eventType = EXCEPTION_FORM,
377         .errorType = static_cast<int32_t>(type),
378     };
379 
380     SendEventInner(eventInfo);
381 }
382 
383 #ifdef VSYNC_TIMEOUT_CHECK
SendVsyncException(VsyncExcepType type,uint32_t windowId,int32_t instanceId,uint64_t timeStamp)384 void EventReport::SendVsyncException(VsyncExcepType type, uint32_t windowId, int32_t instanceId, uint64_t timeStamp)
385 {
386     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
387     StrTrim(packageName);
388     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, UI_VSYNC_TIMEOUT,
389         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
390         EVENT_KEY_ERROR_TYPE, static_cast<int32_t>(type),
391         EVENT_KEY_PACKAGE_NAME, packageName,
392         EVENT_KEY_WINDOW_ID, windowId,
393         EVENT_KEY_INSTANCE_ID, instanceId,
394         EVENT_KEY_VSYNC_TIMESTAMP, timeStamp);
395 }
396 #endif
397 
JsEventReport(int32_t eventType,const std::string & jsonStr)398 void EventReport::JsEventReport(int32_t eventType, const std::string& jsonStr)
399 {
400     if (!JsonUtil::ParseJsonString(jsonStr)) {
401         LOGE("jsonStr is not a JsonArray.");
402         return;
403     }
404 }
405 
JsErrReport(const std::string & packageName,const std::string & reason,const std::string & summary,const std::string & uniqueId)406 void EventReport::JsErrReport(
407     const std::string& packageName, const std::string& reason, const std::string& summary, const std::string& uniqueId)
408 {
409     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_NAME_JS_ERROR,
410         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
411         EVENT_KEY_PACKAGE_NAME, packageName,
412         EVENT_KEY_REASON, reason,
413         EVENT_KEY_SUMMARY, summary,
414         APP_RUNNING_UNIQUE_ID, uniqueId);
415 }
416 
ANRRawReport(RawEventType type,int32_t uid,const std::string & packageName,const std::string & processName,const std::string & msg)417 void EventReport::ANRRawReport(RawEventType type, int32_t uid, const std::string& packageName,
418     const std::string& processName, const std::string& msg)
419 {
420     int32_t pid = getpid();
421     std::string cmd = " ";
422     std::string eventName = "";
423     if (type == RawEventType::WARNING) {
424         eventName = "UI_BLOCK_3S";
425         cmd = "p=" + std::to_string(pid);
426     } else if (type == RawEventType::FREEZE) {
427         eventName = "UI_BLOCK_6S";
428         cmd = DUMP_LOG_COMMAND;
429     } else {
430         eventName = "UI_BLOCK_RECOVERED";
431     }
432     std::string uidStr = std::to_string(uid);
433     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
434         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
435         EVENT_KEY_UID, uidStr,
436         EVENT_KEY_PACKAGE_NAME, packageName,
437         EVENT_KEY_PROCESS_NAME, processName,
438         EVENT_KEY_MESSAGE, msg,
439         EVENT_KEY_CMD, cmd);
440 }
441 
ANRShowDialog(int32_t uid,const std::string & packageName,const std::string & processName,const std::string & msg)442 void EventReport::ANRShowDialog(int32_t uid, const std::string& packageName,
443     const std::string& processName, const std::string& msg)
444 {
445     int32_t pid = getpid();
446     std::string eventName = "UI_BLOCK_DIALOG";
447     std::string uidStr = std::to_string(uid);
448     std::string pidStr = std::to_string(pid);
449     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
450         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
451         EVENT_KEY_UID, uidStr,
452         EVENT_KEY_PID, pidStr,
453         EVENT_KEY_PACKAGE_NAME, packageName,
454         EVENT_KEY_PROCESS_NAME, processName,
455         EVENT_KEY_MESSAGE, msg);
456 }
457 
JankFrameReport(int64_t startTime,int64_t duration,const std::vector<uint16_t> & jank,const std::string & pageUrl,uint32_t jankStatusVersion)458 void EventReport::JankFrameReport(int64_t startTime, int64_t duration, const std::vector<uint16_t>& jank,
459     const std::string& pageUrl, uint32_t jankStatusVersion)
460 {
461     std::string eventName = "JANK_STATS_APP";
462     auto app_version_code = AceApplicationInfo::GetInstance().GetAppVersionCode();
463     auto app_version_name = AceApplicationInfo::GetInstance().GetAppVersionName();
464     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
465     auto abilityName = AceApplicationInfo::GetInstance().GetAbilityName();
466     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
467         OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
468         EVENT_KEY_STARTTIME, startTime,
469         STATISTIC_DURATION, duration,
470         EVENT_KEY_VERSION_CODE, app_version_code,
471         EVENT_KEY_VERSION_NAME, app_version_name,
472         EVENT_KEY_BUNDLE_NAME, packageName,
473         EVENT_KEY_ABILITY_NAME, abilityName,
474         EVENT_KEY_PAGE_URL, pageUrl,
475         EVENT_KEY_JANK_STATS, jank,
476         EVENT_KEY_JANK_STATS_VER, jankStatusVersion);
477 }
478 
SendEventInner(const EventInfo & eventInfo)479 void EventReport::SendEventInner(const EventInfo& eventInfo)
480 {
481     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
482     StrTrim(packageName);
483     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventInfo.eventType,
484             OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
485             EVENT_KEY_ERROR_TYPE, eventInfo.errorType,
486             EVENT_KEY_PACKAGE_NAME, packageName);
487 }
488 
ReportDragInfo(const DragInfo & dragInfo)489 void EventReport::ReportDragInfo(const DragInfo& dragInfo)
490 {
491     HiSysEventWrite(
492         OHOS::HiviewDFX::HiSysEvent::Domain::DRAG_UE,
493         dragInfo.dragBehavior,
494         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
495         "PNAMEID", dragInfo.pNameId,
496         "PVERSIONID", dragInfo.pVersionId,
497         "ISCROSSING", dragInfo.isCrossing,
498         "RESULT", dragInfo.result,
499         "HOSTNAME", dragInfo.hostName,
500         "SUMMARYTYPE", dragInfo.summaryType,
501         "SUMMARYNUM", dragInfo.summaryNum,
502         "ALLOW_DROP_TYPE", dragInfo.allowDropType);
503 }
504 
ReportRichEditorInfo(const RichEditorInfo & richEditorInfo)505 void EventReport::ReportRichEditorInfo(const RichEditorInfo& richEditorInfo)
506 {
507     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
508     auto appVersionCode = AceApplicationInfo::GetInstance().GetAppVersionCode();
509     auto appVersionName = AceApplicationInfo::GetInstance().GetAppVersionName();
510     StrTrim(packageName);
511     StrTrim(appVersionName);
512     HiSysEventWrite(
513         OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_RICH_EDITOR_ERROR,
514         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
515         EVENT_KEY_BUNDLE_NAME, packageName,
516         EVENT_KEY_VERSION_CODE, appVersionCode,
517         EVENT_KEY_VERSION_NAME, appVersionName,
518         EVENT_KEY_ERROR_TYPE, static_cast<int32_t>(richEditorInfo.errorType),
519         EVENT_KEY_SPAN_LENGTH, richEditorInfo.spanLength,
520         EVENT_KEY_TEXT_LENGTH, richEditorInfo.textLength,
521         EVENT_KEY_SPAN_INDEX, richEditorInfo.spanIndex);
522 }
523 
ReportEventComplete(DataBase & data)524 void EventReport::ReportEventComplete(DataBase& data)
525 {
526     std::string eventName = "INTERACTION_COMPLETED_LATENCY";
527     const auto& appPid = data.baseInfo.pid;
528     const auto& bundleName = data.baseInfo.bundleName;
529     const auto& processName = data.baseInfo.processName;
530     const auto& abilityName = data.baseInfo.abilityName;
531     const auto& pageUrl = data.baseInfo.pageUrl;
532     const auto& versionCode = data.baseInfo.versionCode;
533     const auto& versionName = data.baseInfo.versionName;
534     const auto& pageName = data.baseInfo.pageName;
535     const auto& sceneId = data.sceneId;
536     const auto& sourceType = GetSourceTypeName(data.sourceType);
537     auto inputTime = data.inputTime;
538     ConvertRealtimeToSystime(data.inputTime, inputTime);
539     const auto& animationStartLantency = (data.beginVsyncTime - data.inputTime) / NS_TO_MS;
540     const auto& animationEndLantency = (data.endVsyncTime - data.beginVsyncTime) / NS_TO_MS;
541     const auto& e2eLatency = animationStartLantency + animationEndLantency;
542     const auto& note = data.baseInfo.note;
543     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
544         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
545         EVENT_KEY_APP_PID, appPid,
546         EVENT_KEY_BUNDLE_NAME, bundleName,
547         EVENT_KEY_PROCESS_NAME, processName,
548         EVENT_KEY_ABILITY_NAME, abilityName,
549         EVENT_KEY_PAGE_URL, pageUrl,
550         EVENT_KEY_VERSION_CODE, versionCode,
551         EVENT_KEY_VERSION_NAME, versionName,
552         EVENT_KEY_PAGE_NAME, pageName,
553         EVENT_KEY_SCENE_ID, sceneId,
554         EVENT_KEY_SOURCE_TYPE, sourceType,
555         EVENT_KEY_INPUT_TIME, static_cast<uint64_t>(inputTime),
556         EVENT_KEY_ANIMATION_START_LATENCY, static_cast<uint64_t>(animationStartLantency),
557         EVENT_KEY_ANIMATION_END_LATENCY, static_cast<uint64_t>(animationEndLantency),
558         EVENT_KEY_E2E_LATENCY, static_cast<uint64_t>(e2eLatency),
559         EVENT_KEY_NOTE, note);
560     ACE_SCOPED_TRACE("INTERACTION_COMPLETED_LATENCY: sceneId =%s, inputTime=%lld(ms),"
561         "e2eLatency=%lld(ms)", sceneId.c_str(),
562         static_cast<long long>(inputTime), static_cast<long long>(e2eLatency));
563 }
564 
565 #ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
ReportAppFrameDropToRss(const bool isInteractionJank,const std::string & bundleName,const int64_t maxFrameTime)566 void EventReport::ReportAppFrameDropToRss(const bool isInteractionJank, const std::string &bundleName,
567     const int64_t maxFrameTime)
568 {
569     uint32_t eventType = ResourceSchedule::ResType::RES_TYPE_APP_FRAME_DROP;
570     int32_t subType = isInteractionJank ? ResourceSchedule::ResType::AppFrameDropType::INTERACTION_APP_JANK
571                                         : ResourceSchedule::ResType::AppFrameDropType::JANK_FRAME_APP;
572     std::unordered_map<std::string, std::string> payload = {
573         { "bundleName", bundleName },
574         { "maxFrameTime", std::to_string(maxFrameTime) },
575     };
576     ResourceSchedule::ResSchedClient::GetInstance().ReportData(eventType, subType, payload);
577 }
578 #endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
579 
ReportEventJankFrame(DataBase & data)580 void EventReport::ReportEventJankFrame(DataBase& data)
581 {
582     std::string eventName = "INTERACTION_APP_JANK";
583     const auto& uniqueId = data.beginVsyncTime / NS_TO_MS;
584     const auto& sceneId = data.sceneId;
585     const auto& bundleName = data.baseInfo.bundleName;
586     const auto& processName = data.baseInfo.processName;
587     const auto& abilityName = data.baseInfo.abilityName;
588     auto startTime = data.beginVsyncTime;
589     ConvertRealtimeToSystime(data.beginVsyncTime, startTime);
590     const auto& durition = (data.endVsyncTime - data.beginVsyncTime) / NS_TO_MS;
591     const auto& totalFrames = data.totalFrames;
592     const auto& totalMissedFrames = data.totalMissed;
593     const auto& maxFrameTime = data.maxFrameTime / NS_TO_MS;
594     const auto& maxFrameTimeSinceStart = data.maxFrameTimeSinceStart;
595     const auto& maxHitchTime = data.maxHitchTime;
596     const auto& maxHitchTimeSinceStart = data.maxHitchTimeSinceStart;
597     const auto& maxSeqMissedFrames = data.maxSuccessiveFrames;
598     const auto& note = data.baseInfo.note;
599     const auto& isDisplayAnimator = data.isDisplayAnimator;
600     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
601         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
602         EVENT_KEY_UNIQUE_ID, static_cast<int32_t>(uniqueId),
603         EVENT_KEY_SCENE_ID, sceneId,
604         EVENT_KEY_PROCESS_NAME, processName,
605         EVENT_KEY_MODULE_NAME, bundleName,
606         EVENT_KEY_ABILITY_NAME, abilityName,
607         EVENT_KEY_PAGE_URL, data.baseInfo.pageUrl,
608         EVENT_KEY_VERSION_CODE, data.baseInfo.versionCode,
609         EVENT_KEY_VERSION_NAME, data.baseInfo.versionName,
610         EVENT_KEY_PAGE_NAME, data.baseInfo.pageName,
611         EVENT_KEY_STARTTIME, static_cast<uint64_t>(startTime),
612         EVENT_KEY_DURITION, static_cast<uint64_t>(durition),
613         EVENT_KEY_TOTAL_FRAMES, totalFrames,
614         EVENT_KEY_TOTAL_MISSED_FRAMES, totalMissedFrames,
615         EVENT_KEY_MAX_FRAMETIME, static_cast<uint64_t>(maxFrameTime),
616         EVENT_KEY_MAX_FRAMETIME_SINCE_START, static_cast<uint64_t>(maxFrameTimeSinceStart),
617         EVENT_KEY_MAX_HITCH_TIME, static_cast<uint64_t>(maxHitchTime),
618         EVENT_KEY_MAX_HITCH_TIME_SINCE_START, static_cast<uint64_t>(maxHitchTimeSinceStart),
619         EVENT_KEY_MAX_SEQ_MISSED_FRAMES, maxSeqMissedFrames,
620         EVENT_KEY_NOTE, note,
621         EVENT_KEY_DISPLAY_ANIMATOR, isDisplayAnimator);
622     ACE_SCOPED_TRACE("INTERACTION_APP_JANK: sceneId =%s, startTime=%lld(ms),"
623         "maxFrameTime=%lld(ms)", sceneId.c_str(),
624         static_cast<long long>(startTime), static_cast<long long>(maxFrameTime));
625 #ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
626     if (isDisplayAnimator && maxFrameTime > MAX_JANK_FRAME_TIME) {
627         ReportAppFrameDropToRss(true, bundleName, maxFrameTime);
628     }
629 #endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
630 }
631 
ReportJankFrameApp(JankInfo & info)632 void EventReport::ReportJankFrameApp(JankInfo& info)
633 {
634     std::string eventName = "JANK_FRAME_APP";
635     const auto& bundleName = info.baseInfo.bundleName;
636     const auto& processName = info.baseInfo.processName;
637     const auto& abilityName = info.baseInfo.abilityName;
638     const auto& pageUrl = info.baseInfo.pageUrl;
639     const auto& versionCode = info.baseInfo.versionCode;
640     const auto& versionName = info.baseInfo.versionName;
641     const auto& pageName = info.baseInfo.pageName;
642     const auto& skippedFrameTime = info.skippedFrameTime;
643     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
644         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
645         EVENT_KEY_PROCESS_NAME, processName,
646         EVENT_KEY_MODULE_NAME, bundleName,
647         EVENT_KEY_ABILITY_NAME, abilityName,
648         EVENT_KEY_PAGE_URL, pageUrl,
649         EVENT_KEY_VERSION_CODE, versionCode,
650         EVENT_KEY_VERSION_NAME, versionName,
651         EVENT_KEY_PAGE_NAME, pageName,
652         EVENT_KEY_SKIPPED_FRAME_TIME, static_cast<uint64_t>(skippedFrameTime));
653     ACE_SCOPED_TRACE("JANK_FRAME_APP: skipppedFrameTime=%lld(ms)", static_cast<long long>(skippedFrameTime / NS_TO_MS));
654 #ifdef RESOURCE_SCHEDULE_SERVICE_ENABLE
655     ReportAppFrameDropToRss(false, bundleName);
656 #endif // RESOURCE_SCHEDULE_SERVICE_ENABLE
657 }
658 
ReportJankFrameFiltered(JankInfo & info)659 void EventReport::ReportJankFrameFiltered(JankInfo& info)
660 {
661     std::string eventName = "JANK_FRAME_FILTERED";
662     const auto& bundleName = info.baseInfo.bundleName;
663     const auto& processName = info.baseInfo.processName;
664     const auto& abilityName = info.baseInfo.abilityName;
665     const auto& pageUrl = info.baseInfo.pageUrl;
666     const auto& versionCode = info.baseInfo.versionCode;
667     const auto& versionName = info.baseInfo.versionName;
668     const auto& pageName = info.baseInfo.pageName;
669     const auto& skippedFrameTime = info.skippedFrameTime;
670     const auto& windowName = info.windowName;
671     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
672         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
673         EVENT_KEY_PROCESS_NAME, processName,
674         EVENT_KEY_MODULE_NAME, bundleName,
675         EVENT_KEY_ABILITY_NAME, abilityName,
676         EVENT_KEY_PAGE_URL, pageUrl,
677         EVENT_KEY_VERSION_CODE, versionCode,
678         EVENT_KEY_VERSION_NAME, versionName,
679         EVENT_KEY_PAGE_NAME, pageName,
680         EVENT_KEY_SKIPPED_FRAME_TIME, static_cast<uint64_t>(skippedFrameTime));
681     ACE_SCOPED_TRACE("JANK_FRAME_FILTERED: skipppedFrameTime=%lld(ms), windowName=%s",
682         static_cast<long long>(skippedFrameTime / NS_TO_MS), windowName.c_str());
683 }
684 
ReportJankFrameUnFiltered(JankInfo & info)685 void EventReport::ReportJankFrameUnFiltered(JankInfo& info)
686 {
687     std::string eventName = "JANK_FRAME_UNFILTERED";
688     const auto& bundleName = info.baseInfo.bundleName;
689     const auto& processName = info.baseInfo.processName;
690     const auto& abilityName = info.baseInfo.abilityName;
691     const auto& pageUrl = info.baseInfo.pageUrl;
692     const auto& versionCode = info.baseInfo.versionCode;
693     const auto& versionName = info.baseInfo.versionName;
694     const auto& pageName = info.baseInfo.pageName;
695     const auto& skippedFrameTime = info.skippedFrameTime;
696     const auto& realSkippedFrameTime = info.realSkippedFrameTime;
697     const auto& windowName = info.windowName;
698     const auto& filterType = info.filterType;
699     const auto& sceneId = info.sceneId;
700     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, eventName,
701         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
702         EVENT_KEY_PROCESS_NAME, processName,
703         EVENT_KEY_MODULE_NAME, bundleName,
704         EVENT_KEY_ABILITY_NAME, abilityName,
705         EVENT_KEY_PAGE_URL, pageUrl,
706         EVENT_KEY_VERSION_CODE, versionCode,
707         EVENT_KEY_VERSION_NAME, versionName,
708         EVENT_KEY_PAGE_NAME, pageName,
709         EVENT_KEY_FILTER_TYPE, filterType,
710         EVENT_KEY_SCENE_ID, sceneId,
711         EVENT_KEY_REAL_SKIPPED_FRAME_TIME, static_cast<uint64_t>(realSkippedFrameTime),
712         EVENT_KEY_SKIPPED_FRAME_TIME, static_cast<uint64_t>(skippedFrameTime));
713     ACE_SCOPED_TRACE("JANK_FRAME_UNFILTERED: skipppedFrameTime=%lld(ms), windowName=%s, filterType=%d",
714         static_cast<long long>(skippedFrameTime / NS_TO_MS), windowName.c_str(), filterType);
715 }
716 
ReportPageShowMsg(const std::string & pageUrl,const std::string & bundleName,const std::string & pageName)717 void EventReport::ReportPageShowMsg(const std::string& pageUrl, const std::string& bundleName,
718                                     const std::string& pageName)
719 {
720     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, "APP_PAGE_INFO_UPDATE",
721         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
722         EVENT_KEY_PAGE_URL, pageUrl, EVENT_KEY_BUNDLE_NAME, bundleName,
723         EVENT_KEY_PAGE_NAME, pageName);
724 }
725 
ReportDoubleClickTitle(int32_t stateChange)726 void EventReport::ReportDoubleClickTitle(int32_t stateChange)
727 {
728     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
729     StrTrim(packageName);
730     HiSysEventWrite(SCENE_BOARD_UE_DOMAIN, DOUBLE_CLICK_TITLE,
731         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
732         CURRENTPKG, packageName,
733         STATECHANGE, stateChange);
734 }
735 
ReportClickTitleMaximizeMenu(int32_t maxMenuItem,int32_t stateChange)736 void EventReport::ReportClickTitleMaximizeMenu(int32_t maxMenuItem, int32_t stateChange)
737 {
738     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
739     StrTrim(packageName);
740     HiSysEventWrite(SCENE_BOARD_UE_DOMAIN, CLICK_TITLE_MAXIMIZE_MENU,
741         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
742         CURRENTPKG, packageName,
743         MAXMENUITEM, maxMenuItem,
744         STATECHANGE, stateChange);
745 }
746 
ReportPageNodeOverflow(const std::string & pageUrl,int32_t nodeCount,int32_t threshold)747 void EventReport::ReportPageNodeOverflow(const std::string& pageUrl, int32_t nodeCount, int32_t threshold)
748 {
749     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
750     StrTrim(packageName);
751     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, PAGE_NODE_OVERFLOW,
752         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
753         EVENT_KEY_PACKAGE_NAME, packageName,
754         EVENT_KEY_PAGE_URL, pageUrl,
755         EVENT_KEY_PAGE_NODE_COUNT, nodeCount,
756         EVENT_KEY_PAGE_NODE_THRESHOLD, threshold);
757 }
758 
ReportPageDepthOverflow(const std::string & pageUrl,int32_t depth,int32_t threshold)759 void EventReport::ReportPageDepthOverflow(const std::string& pageUrl, int32_t depth, int32_t threshold)
760 {
761     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
762     StrTrim(packageName);
763     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, PAGE_DEPTH_OVERFLOW,
764         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
765         EVENT_KEY_PACKAGE_NAME, packageName,
766         EVENT_KEY_PAGE_URL, pageUrl,
767         EVENT_KEY_PAGE_DEPTH, depth,
768         EVENT_KEY_PAGE_DEPTH_THRESHOLD, threshold);
769 }
770 
ReportFunctionTimeout(const std::string & functionName,int64_t time,int32_t threshold)771 void EventReport::ReportFunctionTimeout(const std::string& functionName, int64_t time, int32_t threshold)
772 {
773     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
774     StrTrim(packageName);
775     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, UI_LIFECIRCLE_FUNCTION_TIMEOUT,
776         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
777         EVENT_KEY_PACKAGE_NAME, packageName,
778         EVENT_KEY_FUNCTION_NAME, functionName,
779         EVENT_KEY_FUNCTION_EXECUTE_TIME, time,
780         EVENT_KEY_FUNCTION_TIME_THRESHOLD, threshold);
781 }
782 
ReportHoverStatusChange(int32_t foldStatus,int32_t time,bool isHoverMode,int32_t appRotation,int32_t windowMode)783 void EventReport::ReportHoverStatusChange(
784     int32_t foldStatus, int32_t time, bool isHoverMode, int32_t appRotation, int32_t windowMode)
785 {
786     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
787     auto abilityName = AceApplicationInfo::GetInstance().GetAbilityName();
788     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_NOTIFY_HOVER_STATUS_CHANGE,
789         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
790         EVENT_KEY_BUNDLE_NAME, packageName,
791         EVENT_KEY_ABILITY_NAME, abilityName,
792         EVENT_KEY_FOLDER_STATUS, foldStatus,
793         EVENT_KEY_HOVER_TIME, time,
794         EVENT_KEY_IS_HOVER_MODE, isHoverMode,
795         EVENT_KEY_WINDOW_MODE, windowMode,
796         EVENT_KEY_APP_ROTATION, appRotation);
797 }
798 
ReportNonManualPostCardActionInfo(const std::string & formName,const std::string & bundleName,const std::string & abilityName,const std::string & moduleName,int32_t dimension)799 void EventReport::ReportNonManualPostCardActionInfo(const std::string& formName, const std::string& bundleName,
800     const std::string& abilityName, const std::string& moduleName, int32_t dimension)
801 {
802     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_NON_MANUAL_POSTCARD_ACTION,
803         OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
804         EVENT_KEY_FORM_NAME, formName,
805         EVENT_KEY_BUNDLE_NAME, bundleName,
806         EVENT_KEY_ABILITY_NAME, abilityName,
807         EVENT_KEY_MODULE_NAME, moduleName,
808         EVENT_KEY_DIMENSION, dimension);
809 }
810 
ReportUiExtensionTransparentEvent(const std::string & pageUrl,const std::string & bundleName,const std::string & moduleName)811 void EventReport::ReportUiExtensionTransparentEvent(const std::string& pageUrl, const std::string& bundleName,
812     const std::string& moduleName)
813 {
814     auto app_version_code = AceApplicationInfo::GetInstance().GetAppVersionCode();
815     auto app_version_name = AceApplicationInfo::GetInstance().GetAppVersionName();
816     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, UIEXTENSION_TRANSPARENT_DETECTED,
817         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
818         EVENT_KEY_PAGE_NAME, pageUrl,
819         EVENT_KEY_VERSION_CODE, app_version_code,
820         EVENT_KEY_VERSION_NAME, app_version_name,
821         EVENT_KEY_BUNDLE_NAME, bundleName,
822         EVENT_KEY_MODULE_NAME, moduleName);
823 }
824 
ReportScrollableErrorEvent(const std::string & nodeType,ScrollableErrorType errorType,const std::string & subErrorType)825 void EventReport::ReportScrollableErrorEvent(
826     const std::string& nodeType, ScrollableErrorType errorType, const std::string& subErrorType)
827 {
828     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
829     auto app_version_code = AceApplicationInfo::GetInstance().GetAppVersionCode();
830     auto app_version_name = AceApplicationInfo::GetInstance().GetAppVersionName();
831     auto target_api_version = AceApplicationInfo::GetInstance().GetApiTargetVersion();
832     StrTrim(packageName);
833     StrTrim(app_version_name);
834     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_SCROLLABLE_ERROR,
835         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
836         EVENT_KEY_NODE_TYPE, nodeType,
837         EVENT_KEY_ERROR_TYPE, static_cast<int32_t>(errorType),
838         EVENT_KEY_SUB_ERROR_TYPE, subErrorType,
839         EVENT_KEY_BUNDLE_NAME, packageName,
840         EVENT_KEY_TARGET_API_VERSION, target_api_version,
841         EVENT_KEY_VERSION_CODE, app_version_code,
842         EVENT_KEY_VERSION_NAME, app_version_name);
843 }
844 
ReportTextFieldErrorEvent(int32_t frameNodeId,int32_t depth,const std::string & errorType)845 void EventReport::ReportTextFieldErrorEvent(int32_t frameNodeId, int32_t depth, const std::string& errorType)
846 {
847     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
848     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_TEXTFIELD_ERROR,
849         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, EVENT_KEY_PACKAGE_NAME, packageName, EVENT_KEY_FRAME_NODE_ID,
850         frameNodeId, EVENT_KEY_PAGE_DEPTH, depth, EVENT_KEY_TEXTFIELD_ERROR_TYPE, errorType);
851 }
852 
ReportClipboardFailEvent(const std::string & errorType)853 void EventReport::ReportClipboardFailEvent(const std::string& errorType)
854 {
855     auto packageName = AceApplicationInfo::GetInstance().GetPackageName();
856     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_CLIPBOARD_FAIL,
857         OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, EVENT_KEY_PACKAGE_NAME, packageName,
858         EVENT_KEY_CLIPBOARD_FAIL_TYPE, errorType);
859 }
860 
ReportReusedNodeSkipMeasureApp()861 void EventReport::ReportReusedNodeSkipMeasureApp()
862 {
863     auto progressName = AceApplicationInfo::GetInstance().GetProcessName();
864     HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_REUSED_NODE_SKIP_MEASURE,
865         OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC, EVENT_KEY_PACKAGE_NAME, progressName);
866 }
867 } // namespace OHOS::Ace
868