• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "event_report.h"
17 #include "hilog_tag_wrapper.h"
18 #include "hitrace_meter.h"
19 #include "record_cost_time_util.h"
20 
21 namespace OHOS {
22 namespace AAFwk {
23 namespace {
24 // event params
25 constexpr const char *EVENT_KEY_APP_PID = "APP_PID";
26 constexpr const char *EVENT_KEY_USERID = "USER_ID";
27 constexpr const char *EVENT_KEY_ERROR_CODE = "ERROR_CODE";
28 constexpr const char *EVENT_KEY_BUNDLE_NAME = "BUNDLE_NAME";
29 constexpr const char *EVENT_KEY_MODULE_NAME = "MODULE_NAME";
30 constexpr const char *EVENT_KEY_ABILITY_NAME = "ABILITY_NAME";
31 constexpr const char *EVENT_KEY_ABILITY_NUMBER = "ABILITY_NUMBER";
32 constexpr const char *EVENT_KEY_ABILITY_TYPE = "ABILITY_TYPE";
33 constexpr const char *EVENT_KEY_VERSION_NAME = "VERSION_NAME";
34 constexpr const char *EVENT_KEY_VERSION_CODE = "VERSION_CODE";
35 constexpr const char *EVENT_KEY_PROCESS_NAME = "PROCESS_NAME";
36 constexpr const char *EVENT_KEY_EXTENSION_TYPE = "EXTENSION_TYPE";
37 constexpr const char *EVENT_KEY_STARTUP_TIME = "STARTUP_TIME";
38 constexpr const char *EVENT_KEY_STARTUP_ABILITY_TYPE = "STARTUP_ABILITY_TYPE";
39 constexpr const char *EVENT_KEY_STARTUP_EXTENSION_TYPE = "STARTUP_EXTENSION_TYPE";
40 constexpr const char *EVENT_KEY_CALLER_BUNDLE_NAME = "CALLER_BUNDLE_NAME";
41 constexpr const char *EVENT_KEY_CALLER_UID = "CALLER_UID";
42 constexpr const char *EVENT_KEY_CALLER_PROCESS_NAME = "CALLER_PROCESS_NAME";
43 constexpr const char *EVENT_KEY_CALLER_PROCESS_ID = "CALLER_PROCESS_ID";
44 constexpr const char *EVENT_KEY_EXIT_TIME = "EXIT_TIME";
45 constexpr const char *EVENT_KEY_EXIT_RESULT = "EXIT_RESULT";
46 constexpr const char *EVENT_KEY_EXIT_PID = "EXIT_PID";
47 constexpr const char *EVENT_KEY_EXIT_REASON = "EXIT_REASON";
48 constexpr const char *EVENT_KEY_BUNDLE_TYPE = "BUNDLE_TYPE";
49 constexpr const char *EVENT_KEY_START_TYPE = "START_TYPE";
50 constexpr const char *EVENT_KEY_START_REASON = "START_REASON";
51 constexpr const char *EVENT_KEY_CALLER_STATE = "CALLER_STATE";
52 constexpr const char *EVENT_KEY_CALLER_VERSION_NAME = "CALLER_VERSION_NAME";
53 constexpr const char *EVENT_KEY_CALLER_VERSION_CODE = "CALLER_VERSION_CODE";
54 constexpr const char *EVENT_KEY_URI = "URI";
55 constexpr const char *EVENT_KEY_RESTART_TIME = "RESTART_TIME";
56 constexpr const char *EVENT_KEY_APP_UID = "APP_UID";
57 constexpr const char *EVENT_KEY_PROCESS_TYPE = "PROCESS_TYPE";
58 constexpr const char *EVENT_KEY_TIME = "TIME";
59 constexpr const char *EVENT_KEY_PID = "PID";
60 constexpr const char *EVENT_KEY_REASON = "REASON";
61 constexpr const char *EVENT_KEY_SUB_REASON = "SUB_REASON";
62 constexpr const char *INVALID_EVENT_NAME = "INVALIDEVENTNAME";
63 constexpr const char *EVENT_KEY_APP_INDEX = "APP_INDEX";
64 constexpr const char *EVENT_KEY_LIFE_CYCLE_STATE = "LIFE_CYCLE_STATE";
65 constexpr const char *EVENT_KEY_ERR_REASON = "ERR_REASON";
66 constexpr const char *EVENT_KEY_LIFE_CYCLE = "LIFE_CYCLE";
67 constexpr const char *EVENT_KEY_PERSISTENT_ID = "PERSISTENT_ID";
68 constexpr const char *EVENT_KEY_INTENT_NAME = "INTENT_NAME";
69 constexpr const char *EVENT_KEY_ERROR_MESSAGE = "ERROR_MESSAGE";
70 constexpr const char *EVENT_FILE_OR_FOLDER_PATH = "FILE_OR_FOLDER_PATH";
71 constexpr const char *EVENT_FILE_OR_FOLDER_SIZE = "FILE_OR_FOLDER_SIZE";
72 constexpr const char *EVENT_COMPONENT_NAME_KEY = "COMPONENT_NAME";
73 constexpr const char *EVENT_PARTITION_NAME_KEY = "PARTITION_NAME";
74 constexpr const char *EVENT_REMAIN_PARTITION_SIZE_KEY = "REMAIN_PARTITION_SIZE";
75 constexpr const char *EVENT_KEY_CALLER_PID = "CALLER_PID";
76 constexpr const char *EVENT_KEY_EXIT_MESSAGE = "EXIT_MESSAGE";
77 constexpr const char *EVENT_KEY_SHOULD_KILL_FOREGROUND = "SHOULD_KILL_FOREGROUND";
78 
79 constexpr const int32_t DEFAULT_EXTENSION_TYPE = -1;
80 }
81 
SendAppEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)82 void EventReport::SendAppEvent(const EventName &eventName, HiSysEventType type, const EventInfo &eventInfo)
83 {
84     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
85     RecordCostTimeUtil timeRecord("SendAppEvent");
86     std::string name = ConvertEventName(eventName);
87     if (name == INVALID_EVENT_NAME) {
88         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
89         return;
90     }
91     switch (eventName) {
92         case EventName::APP_STARTUP_TYPE:
93             HiSysEventWrite(
94                 HiSysEvent::Domain::AAFWK,
95                 name,
96                 type,
97                 EVENT_KEY_APP_PID, eventInfo.pid,
98                 EVENT_KEY_VERSION_CODE, eventInfo.versionCode,
99                 EVENT_KEY_VERSION_NAME, eventInfo.versionName,
100                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
101                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
102                 EVENT_KEY_START_TYPE, eventInfo.startType,
103                 EVENT_KEY_START_REASON, eventInfo.startReason);
104             break;
105         case EventName::DRAWN_COMPLETED:
106             TAG_LOGI(AAFwkTag::DEFAULT,
107                 "DRAWN_COMPLETED, bundle: %{public}s, ability: %{public}s",
108                 eventInfo.bundleName.c_str(), eventInfo.abilityName.c_str());
109             HiSysEventWrite(
110                 HiSysEvent::Domain::AAFWK,
111                 name,
112                 type,
113                 EVENT_KEY_USERID, eventInfo.userId,
114                 EVENT_KEY_APP_PID, eventInfo.pid,
115                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
116                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
117                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
118             break;
119         default:
120             HiSysEventWrite(
121                 HiSysEvent::Domain::AAFWK,
122                 name,
123                 type,
124                 EVENT_KEY_APP_PID, eventInfo.pid,
125                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
126                 EVENT_KEY_VERSION_NAME, eventInfo.versionName,
127                 EVENT_KEY_VERSION_CODE, eventInfo.versionCode,
128                 EVENT_KEY_PROCESS_NAME, eventInfo.processName);
129             break;
130     }
131 }
132 
LogErrorEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)133 void EventReport::LogErrorEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
134 {
135     HiSysEventWrite(
136         HiSysEvent::Domain::AAFWK,
137         name,
138         type,
139         EVENT_KEY_USERID, eventInfo.userId,
140         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
141         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
142         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
143         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
144         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
145         EVENT_KEY_ERROR_MESSAGE, eventInfo.errMsg);
146 }
147 
LogStartErrorEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)148 void EventReport::LogStartErrorEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
149 {
150     HiSysEventWrite(
151         HiSysEvent::Domain::AAFWK,
152         name,
153         type,
154         EVENT_KEY_USERID, eventInfo.userId,
155         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
156         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
157         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
158         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
159         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
160         EVENT_KEY_ERROR_MESSAGE, eventInfo.errMsg,
161         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName);
162 }
163 
LogSystemErrorEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)164 void EventReport::LogSystemErrorEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
165 {
166     HiSysEventWrite(
167         HiSysEvent::Domain::AAFWK,
168         name,
169         type,
170         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
171         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
172         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
173         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
174         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
175         EVENT_KEY_ERROR_MESSAGE, eventInfo.errMsg);
176 }
177 
LogStartAbilityEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)178 void EventReport::LogStartAbilityEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
179 {
180     HiSysEventWrite(
181         HiSysEvent::Domain::AAFWK,
182         name,
183         type,
184         EVENT_KEY_USERID, eventInfo.userId,
185         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
186         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
187         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
188         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
189 }
190 
LogTerminateAbilityEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)191 void EventReport::LogTerminateAbilityEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
192 {
193     HiSysEventWrite(
194         HiSysEvent::Domain::AAFWK,
195         name,
196         type,
197         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
198         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
199         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
200 }
201 
LogAbilityOnForegroundEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)202 void EventReport::LogAbilityOnForegroundEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
203 {
204     HiSysEventWrite(
205         HiSysEvent::Domain::AAFWK,
206         name,
207         type,
208         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
209         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
210         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
211         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
212         EVENT_KEY_BUNDLE_TYPE, eventInfo.bundleType,
213         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
214         EVENT_KEY_LIFE_CYCLE_STATE, eventInfo.lifeCycleState);
215 }
216 
LogAbilityOnBackgroundEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)217 void EventReport::LogAbilityOnBackgroundEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
218 {
219     HiSysEventWrite(
220         HiSysEvent::Domain::AAFWK,
221         name,
222         type,
223         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
224         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
225         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
226         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
227         EVENT_KEY_BUNDLE_TYPE, eventInfo.bundleType,
228         EVENT_KEY_LIFE_CYCLE_STATE, eventInfo.lifeCycleState);
229 }
230 
LogAbilityOnActiveEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)231 void EventReport::LogAbilityOnActiveEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
232 {
233     HiSysEventWrite(
234         HiSysEvent::Domain::AAFWK,
235         name,
236         type,
237         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
238         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
239         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
240         EVENT_KEY_ABILITY_TYPE, eventInfo.abilityType,
241         EVENT_KEY_BUNDLE_TYPE, eventInfo.bundleType,
242         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName);
243 }
244 
LogAbilityOnInactiveEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)245 void EventReport::LogAbilityOnInactiveEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
246 {
247     HiSysEventWrite(
248         HiSysEvent::Domain::AAFWK,
249         name,
250         type,
251         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
252         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
253         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
254         EVENT_KEY_BUNDLE_TYPE, eventInfo.bundleType);
255 }
256 
LogStartStandardEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)257 void EventReport::LogStartStandardEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
258 {
259     TAG_LOGD(AAFwkTag::DEFAULT, "EventInfo: [%{public}d, %{public}s, %{public}s, %{public}s]",
260         eventInfo.userId, eventInfo.bundleName.c_str(), eventInfo.moduleName.c_str(),
261         eventInfo.abilityName.c_str());
262     HiSysEventWrite(
263         HiSysEvent::Domain::AAFWK,
264         name,
265         type,
266         EVENT_KEY_USERID, eventInfo.userId,
267         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
268         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
269         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
270         EVENT_KEY_ABILITY_NUMBER, eventInfo.abilityNumber);
271 }
272 
LogStartAbilityByAppLinking(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)273 void EventReport::LogStartAbilityByAppLinking(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
274 {
275     TAG_LOGD(AAFwkTag::DEFAULT, "EventInfo, bundleName: %{public}s, callerBundleName: %{public}s, uri: %{public}s",
276         eventInfo.bundleName.c_str(), eventInfo.callerBundleName.c_str(), eventInfo.uri.c_str());
277     auto ret = HiSysEventWrite(
278         HiSysEvent::Domain::AAFWK,
279         name,
280         type,
281         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
282         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
283         EVENT_KEY_URI, eventInfo.uri);
284     if (ret != 0) {
285         TAG_LOGE(AAFwkTag::DEFAULT, "Write event fail: %{public}s, ret %{public}d", name.c_str(), ret);
286     }
287 }
288 
LogKillProcessWithReason(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)289 void EventReport::LogKillProcessWithReason(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
290 {
291     HiSysEventWrite(
292         HiSysEvent::Domain::AAFWK,
293         name,
294         type,
295         EVENT_KEY_CALLER_PID, eventInfo.callerPid,
296         EVENT_KEY_PID, eventInfo.pid,
297         EVENT_KEY_EXIT_MESSAGE, eventInfo.exitMsg,
298         EVENT_KEY_SHOULD_KILL_FOREGROUND, eventInfo.shouldKillForeground,
299         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
300         EVENT_KEY_ERROR_MESSAGE, eventInfo.errMsg);
301 }
302 
LogUIExtensionErrorEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)303 void EventReport::LogUIExtensionErrorEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
304 {
305     HiSysEventWrite(
306         HiSysEvent::Domain::AAFWK,
307         name,
308         type,
309         EVENT_KEY_USERID, eventInfo.userId,
310         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
311         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
312         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
313         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
314         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
315         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
316         EVENT_KEY_ERR_REASON, eventInfo.errReason,
317         EVENT_KEY_LIFE_CYCLE, eventInfo.lifeCycle,
318         EVENT_KEY_CALLER_UID, eventInfo.callerUid,
319         EVENT_KEY_PERSISTENT_ID, eventInfo.persistentId);
320 }
321 
LogUIServiceExtErrorEvent(const std::string & name,HiSysEventType type,const EventInfo & eventInfo)322 void EventReport::LogUIServiceExtErrorEvent(const std::string &name, HiSysEventType type, const EventInfo &eventInfo)
323 {
324     HiSysEventWrite(
325         HiSysEvent::Domain::AAFWK,
326         name,
327         type,
328         EVENT_KEY_USERID, eventInfo.userId,
329         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
330         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
331         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
332         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
333         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
334         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
335         EVENT_KEY_ERR_REASON, eventInfo.errReason,
336         EVENT_KEY_CALLER_UID, eventInfo.callerUid,
337         EVENT_KEY_LIFE_CYCLE, eventInfo.lifeCycle);
338 }
339 
SendAbilityEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)340 void EventReport::SendAbilityEvent(const EventName &eventName, HiSysEventType type, const EventInfo &eventInfo)
341 {
342     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
343     std::string name = ConvertEventName(eventName);
344     if (name == INVALID_EVENT_NAME) {
345         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
346         return;
347     }
348     switch (eventName) {
349         case EventName::START_ABILITY_ERROR:
350             LogStartErrorEvent(name, type, eventInfo);
351             break;
352         case EventName::TERMINATE_ABILITY_ERROR:
353             LogErrorEvent(name, type, eventInfo);
354             break;
355         case EventName::START_ABILITY_SYSTEM_ERROR:
356             LogSystemErrorEvent(name, type, eventInfo);
357             break;
358         case EventName::START_ABILITY:
359             LogStartAbilityEvent(name, type, eventInfo);
360             break;
361         case EventName::TERMINATE_ABILITY:
362         case EventName::CLOSE_ABILITY:
363             LogTerminateAbilityEvent(name, type, eventInfo);
364             break;
365         case EventName::ABILITY_ONFOREGROUND:
366             LogAbilityOnForegroundEvent(name, type, eventInfo);
367             break;
368         case EventName::ABILITY_ONBACKGROUND:
369             LogAbilityOnBackgroundEvent(name, type, eventInfo);
370             break;
371         case EventName::ABILITY_ONINACTIVE:
372             LogAbilityOnInactiveEvent(name, type, eventInfo);
373             break;
374         case EventName::ABILITY_ONACTIVE:
375             LogAbilityOnActiveEvent(name, type, eventInfo);
376             break;
377         case EventName::START_STANDARD_ABILITIES:
378             LogStartStandardEvent(name, type, eventInfo);
379             break;
380         case EventName::START_ABILITY_BY_APP_LINKING:
381             LogStartAbilityByAppLinking(name, type, eventInfo);
382             break;
383         case EventName::KILL_PROCESS_WITH_REASON:
384             LogKillProcessWithReason(name, type, eventInfo);
385             break;
386         default:
387             break;
388     }
389 }
390 
SendAtomicServiceEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)391 void EventReport::SendAtomicServiceEvent(const EventName &eventName, HiSysEventType type, const EventInfo &eventInfo)
392 {
393     std::string name = ConvertEventName(eventName);
394     if (name == INVALID_EVENT_NAME) {
395         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
396         return;
397     }
398     switch (eventName) {
399         case EventName::ATOMIC_SERVICE_DRAWN_COMPLETE:
400             HiSysEventWrite(
401                 HiSysEvent::Domain::AAFWK,
402                 name,
403                 type,
404                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
405                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
406                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
407             break;
408         case EventName::CREATE_ATOMIC_SERVICE_PROCESS:
409             HiSysEventWrite(
410                 HiSysEvent::Domain::AAFWK,
411                 name,
412                 type,
413                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
414                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
415                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
416                 EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
417                 EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName,
418                 EVENT_KEY_CALLER_UID, eventInfo.callerUid);
419             break;
420         default:
421             break;
422     }
423 }
424 
SendGrantUriPermissionEvent(const EventName & eventName,const EventInfo & eventInfo)425 void EventReport::SendGrantUriPermissionEvent(const EventName &eventName, const EventInfo &eventInfo)
426 {
427     std::string name = ConvertEventName(eventName);
428     if (name == INVALID_EVENT_NAME) {
429         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName: %{public}s", name.c_str());
430         return;
431     }
432     switch (eventName) {
433         case EventName::GRANT_URI_PERMISSION:
434             HiSysEventWrite(
435                 HiSysEvent::Domain::AAFWK,
436                 name,
437                 HiSysEventType::BEHAVIOR,
438                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
439                 EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
440                 EVENT_KEY_URI, eventInfo.uri);
441             break;
442         case EventName::SHARE_UNPRIVILEGED_FILE_URI:
443             HiSysEventWrite(
444                 HiSysEvent::Domain::AAFWK,
445                 name,
446                 HiSysEventType::BEHAVIOR,
447                 EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
448                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName);
449             break;
450         default:
451             break;
452     }
453 }
454 
SendExtensionEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)455 void EventReport::SendExtensionEvent(const EventName &eventName, HiSysEventType type, const EventInfo &eventInfo)
456 {
457     HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__);
458     std::string name = ConvertEventName(eventName);
459     if (name == INVALID_EVENT_NAME) {
460         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
461         return;
462     }
463     switch (eventName) {
464         case EventName::START_EXTENSION_ERROR:
465         case EventName::STOP_EXTENSION_ERROR:
466         case EventName::CONNECT_SERVICE_ERROR:
467             HiSysEventWrite(
468                 HiSysEvent::Domain::AAFWK,
469                 name,
470                 type,
471                 EVENT_KEY_USERID, eventInfo.userId,
472                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
473                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
474                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
475                 EVENT_KEY_ERROR_CODE, eventInfo.errCode);
476             break;
477         case EventName::DISCONNECT_SERVICE_ERROR:
478             HiSysEventWrite(HiSysEvent::Domain::AAFWK, name, type, EVENT_KEY_ERROR_CODE, eventInfo.errCode);
479             break;
480         case EventName::UI_EXTENSION_ERROR:
481             LogUIExtensionErrorEvent(name, type, eventInfo);
482             break;
483         case EventName::UI_SERVICE_EXTENSION_ERROR:
484             LogUIServiceExtErrorEvent(name, type, eventInfo);
485             break;
486         default:
487             break;
488     }
489 }
490 
SendKeyEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)491 void EventReport::SendKeyEvent(const EventName &eventName, HiSysEventType type, const EventInfo &eventInfo)
492 {
493     std::string name = ConvertEventName(eventName);
494     if (name == INVALID_EVENT_NAME) {
495         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
496         return;
497     }
498     TAG_LOGI(AAFwkTag::DEFAULT, "name: %{public}s", name.c_str());
499     switch (eventName) {
500         case EventName::FA_SHOW_ON_LOCK:
501         case EventName::START_PRIVATE_ABILITY:
502             HiSysEventWrite(
503                 HiSysEvent::Domain::AAFWK,
504                 name,
505                 type,
506                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
507                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
508                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
509             break;
510         case EventName::RESTART_PROCESS_BY_SAME_APP:
511             HiSysEventWrite(
512                 HiSysEvent::Domain::AAFWK,
513                 name,
514                 type,
515                 EVENT_KEY_RESTART_TIME, eventInfo.time,
516                 EVENT_KEY_APP_UID, eventInfo.appUid,
517                 EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName,
518                 EVENT_KEY_PROCESS_NAME, eventInfo.processName,
519                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName);
520             break;
521         default:
522             break;
523     }
524 }
525 
SendAppLaunchEvent(const EventName & eventName,const EventInfo & eventInfo)526 void EventReport::SendAppLaunchEvent(const EventName &eventName, const EventInfo &eventInfo)
527 {
528     std::string name = ConvertEventName(eventName);
529     if (name == INVALID_EVENT_NAME) {
530         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
531         return;
532     }
533     HiSysEventWrite(
534         HiSysEvent::Domain::AAFWK,
535         name,
536         HiSysEventType::BEHAVIOR,
537         EVENT_KEY_APP_PID, eventInfo.pid,
538         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
539         EVENT_KEY_VERSION_NAME, eventInfo.versionName,
540         EVENT_KEY_VERSION_CODE, eventInfo.versionCode,
541         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
542         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
543         EVENT_KEY_CALLER_VERSION_NAME, eventInfo.callerVersionName,
544         EVENT_KEY_CALLER_VERSION_CODE, eventInfo.callerVersionCode,
545         EVENT_KEY_CALLER_UID, eventInfo.callerUid,
546         EVENT_KEY_CALLER_STATE, eventInfo.callerState);
547 }
548 
SendAppForegroundEvent(const EventName & eventName,const EventInfo & eventInfo)549 void EventReport::SendAppForegroundEvent(const EventName &eventName, const EventInfo &eventInfo)
550 {
551     std::string name = ConvertEventName(eventName);
552     if (name == INVALID_EVENT_NAME) {
553         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
554         return;
555     }
556     auto ret = HiSysEventWrite(
557         HiSysEvent::Domain::AAFWK,
558         name,
559         HiSysEventType::BEHAVIOR,
560         EVENT_KEY_APP_PID, eventInfo.pid,
561         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
562         EVENT_KEY_VERSION_NAME, eventInfo.versionName,
563         EVENT_KEY_VERSION_CODE, eventInfo.versionCode,
564         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
565         EVENT_KEY_BUNDLE_TYPE, eventInfo.bundleType,
566         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
567         EVENT_KEY_PROCESS_TYPE, eventInfo.processType);
568     if (ret != 0) {
569         TAG_LOGE(AAFwkTag::DEFAULT, "fail: %{public}s, ret %{public}d", name.c_str(), ret);
570     }
571 }
572 
SendAppBackgroundEvent(const EventName & eventName,const EventInfo & eventInfo)573 void EventReport::SendAppBackgroundEvent(const EventName &eventName, const EventInfo &eventInfo)
574 {
575     std::string name = ConvertEventName(eventName);
576     if (name == INVALID_EVENT_NAME) {
577         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
578         return;
579     }
580     auto ret = HiSysEventWrite(
581         HiSysEvent::Domain::AAFWK,
582         name,
583         HiSysEventType::BEHAVIOR,
584         EVENT_KEY_APP_PID, eventInfo.pid,
585         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
586         EVENT_KEY_VERSION_NAME, eventInfo.versionName,
587         EVENT_KEY_VERSION_CODE, eventInfo.versionCode,
588         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
589         EVENT_KEY_BUNDLE_TYPE, eventInfo.bundleType,
590         EVENT_KEY_PROCESS_TYPE, eventInfo.processType);
591     if (ret != 0) {
592         TAG_LOGE(AAFwkTag::DEFAULT, "fail: %{public}s, ret %{public}d", name.c_str(), ret);
593     }
594 }
595 
SendProcessStartEvent(const EventName & eventName,const EventInfo & eventInfo)596 void EventReport::SendProcessStartEvent(const EventName &eventName, const EventInfo &eventInfo)
597 {
598     constexpr int32_t defaultVal = -1;
599     std::string name = ConvertEventName(eventName);
600     if (name == INVALID_EVENT_NAME) {
601         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
602         return;
603     }
604     if (eventInfo.extensionType == defaultVal) {
605         HiSysEventWrite(
606             HiSysEvent::Domain::AAFWK,
607             name,
608             HiSysEventType::BEHAVIOR,
609             EVENT_KEY_STARTUP_TIME, eventInfo.time,
610             EVENT_KEY_STARTUP_ABILITY_TYPE, eventInfo.abilityType,
611             EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
612             EVENT_KEY_CALLER_UID, eventInfo.callerUid,
613             EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName,
614             EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
615             EVENT_KEY_PID, eventInfo.pid,
616             EVENT_KEY_PROCESS_NAME, eventInfo.processName,
617             EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid);
618     } else {
619         HiSysEventWrite(
620             HiSysEvent::Domain::AAFWK,
621             name,
622             HiSysEventType::BEHAVIOR,
623             EVENT_KEY_STARTUP_TIME, eventInfo.time,
624             EVENT_KEY_STARTUP_ABILITY_TYPE, eventInfo.abilityType,
625             EVENT_KEY_STARTUP_EXTENSION_TYPE, eventInfo.extensionType,
626             EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
627             EVENT_KEY_CALLER_UID, eventInfo.callerUid,
628             EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName,
629             EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
630             EVENT_KEY_PID, eventInfo.pid,
631             EVENT_KEY_PROCESS_NAME, eventInfo.processName,
632             EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid);
633     }
634 }
635 
SendProcessStartFailedEvent(const EventName & eventName,const EventInfo & eventInfo)636 void EventReport::SendProcessStartFailedEvent(const EventName &eventName, const EventInfo &eventInfo)
637 {
638     std::string name = ConvertEventName(eventName);
639     if (name == INVALID_EVENT_NAME) {
640         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
641         return;
642     }
643     TAG_LOGD(AAFwkTag::DEFAULT, "eventName:%{public}s,processName:%{public}s,reason:%{public}d,subReason:%{public}d",
644         name.c_str(), eventInfo.processName.c_str(), eventInfo.reason, eventInfo.subReason);
645     if (eventInfo.extensionType == DEFAULT_EXTENSION_TYPE) {
646         HiSysEventWrite(
647             HiSysEvent::Domain::AAFWK,
648             name,
649             HiSysEventType::FAULT,
650             EVENT_KEY_STARTUP_TIME, eventInfo.time,
651             EVENT_KEY_STARTUP_ABILITY_TYPE, eventInfo.abilityType,
652             EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
653             EVENT_KEY_CALLER_UID, eventInfo.callerUid,
654             EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName,
655             EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
656             EVENT_KEY_PROCESS_NAME, eventInfo.processName,
657             EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid,
658             EVENT_KEY_PROCESS_TYPE, eventInfo.processType,
659             EVENT_KEY_REASON, eventInfo.reason,
660             EVENT_KEY_SUB_REASON, eventInfo.subReason);
661     } else {
662         HiSysEventWrite(
663             HiSysEvent::Domain::AAFWK,
664             name,
665             HiSysEventType::FAULT,
666             EVENT_KEY_STARTUP_TIME, eventInfo.time,
667             EVENT_KEY_STARTUP_ABILITY_TYPE, eventInfo.abilityType,
668             EVENT_KEY_STARTUP_EXTENSION_TYPE, eventInfo.extensionType,
669             EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
670             EVENT_KEY_CALLER_UID, eventInfo.callerUid,
671             EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName,
672             EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
673             EVENT_KEY_PROCESS_NAME, eventInfo.processName,
674             EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid,
675             EVENT_KEY_PROCESS_TYPE, eventInfo.processType,
676             EVENT_KEY_REASON, eventInfo.reason,
677             EVENT_KEY_SUB_REASON, eventInfo.subReason);
678     }
679 }
680 
SendProcessExitEvent(const EventName & eventName,const EventInfo & eventInfo)681 void EventReport::SendProcessExitEvent(const EventName &eventName, const EventInfo &eventInfo)
682 {
683     std::string name = ConvertEventName(eventName);
684     if (name == INVALID_EVENT_NAME) {
685         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
686         return;
687     }
688     HiSysEventWrite(
689         HiSysEvent::Domain::AAFWK,
690         name,
691         HiSysEventType::BEHAVIOR,
692         EVENT_KEY_EXIT_TIME, eventInfo.time,
693         EVENT_KEY_EXIT_RESULT, eventInfo.exitResult,
694         EVENT_KEY_EXIT_PID, eventInfo.pid,
695         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
696         EVENT_KEY_EXTENSION_TYPE, eventInfo.extensionType,
697         EVENT_KEY_EXIT_REASON, eventInfo.exitReason);
698 }
699 
SendStartServiceEvent(const EventName & eventName,const EventInfo & eventInfo)700 void EventReport::SendStartServiceEvent(const EventName &eventName, const EventInfo &eventInfo)
701 {
702     std::string name = ConvertEventName(eventName);
703     if (name == INVALID_EVENT_NAME) {
704         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
705         return;
706     }
707     HiSysEventWrite(
708         HiSysEvent::Domain::AAFWK,
709         name,
710         HiSysEventType::BEHAVIOR,
711         EVENT_KEY_TIME, eventInfo.time,
712         EVENT_KEY_USERID, eventInfo.userId,
713         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
714         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
715         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
716         EVENT_KEY_EXTENSION_TYPE, eventInfo.extensionType,
717         EVENT_KEY_PID, eventInfo.pid,
718         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
719         EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid,
720         EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName);
721 }
722 
SendStopServiceEvent(const EventName & eventName,const EventInfo & eventInfo)723 void EventReport::SendStopServiceEvent(const EventName &eventName, const EventInfo &eventInfo)
724 {
725     std::string name = ConvertEventName(eventName);
726     if (name == INVALID_EVENT_NAME) {
727         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
728         return;
729     }
730     HiSysEventWrite(
731         HiSysEvent::Domain::AAFWK,
732         name,
733         HiSysEventType::BEHAVIOR,
734         EVENT_KEY_USERID, eventInfo.userId,
735         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
736         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
737         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
738         EVENT_KEY_EXTENSION_TYPE, eventInfo.extensionType,
739         EVENT_KEY_TIME, eventInfo.time,
740         EVENT_KEY_PID, eventInfo.pid,
741         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
742         EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid,
743         EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName);
744 }
745 
SendConnectServiceEvent(const EventName & eventName,const EventInfo & eventInfo)746 void EventReport::SendConnectServiceEvent(const EventName &eventName, const EventInfo &eventInfo)
747 {
748     std::string name = ConvertEventName(eventName);
749     if (name == INVALID_EVENT_NAME) {
750         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
751         return;
752     }
753     HiSysEventWrite(
754         HiSysEvent::Domain::AAFWK,
755         name,
756         HiSysEventType::BEHAVIOR,
757         EVENT_KEY_TIME, eventInfo.time,
758         EVENT_KEY_USERID, eventInfo.userId,
759         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
760         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
761         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
762         EVENT_KEY_PID, eventInfo.pid,
763         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
764         EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid,
765         EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName);
766 }
767 
SendDisconnectServiceEvent(const EventName & eventName,const EventInfo & eventInfo)768 void EventReport::SendDisconnectServiceEvent(const EventName &eventName, const EventInfo &eventInfo)
769 {
770     std::string name = ConvertEventName(eventName);
771     if (name == INVALID_EVENT_NAME) {
772         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
773         return;
774     }
775     HiSysEventWrite(HiSysEvent::Domain::AAFWK,
776         name,
777         HiSysEventType::BEHAVIOR,
778         EVENT_KEY_TIME, eventInfo.time,
779         EVENT_KEY_PID, eventInfo.pid,
780         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
781         EVENT_KEY_CALLER_PROCESS_ID, eventInfo.callerPid,
782         EVENT_KEY_CALLER_PROCESS_NAME, eventInfo.callerProcessName);
783 }
784 
SendStartAbilityOtherExtensionEvent(const EventName & eventName,const EventInfo & eventInfo)785 void EventReport::SendStartAbilityOtherExtensionEvent(const EventName &eventName, const EventInfo &eventInfo)
786 {
787     std::string name = ConvertEventName(eventName);
788     if (name == INVALID_EVENT_NAME) {
789         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
790         return;
791     }
792     HiSysEventWrite(HiSysEvent::Domain::AAFWK,
793         name,
794         HiSysEventType::BEHAVIOR,
795         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
796         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
797         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
798         EVENT_KEY_EXTENSION_TYPE, eventInfo.extensionType,
799         // Historical reason: Word spelling error during event definition
800         "CALLER_BUNLED_NAME", eventInfo.callerBundleName);
801 }
802 
SendExecuteIntentEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)803 void EventReport::SendExecuteIntentEvent(const EventName &eventName, HiSysEventType type, const EventInfo &eventInfo)
804 {
805     std::string name = ConvertEventName(eventName);
806     if (name == INVALID_EVENT_NAME) {
807         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
808         return;
809     }
810     HiSysEventWrite(
811         HiSysEvent::Domain::AAFWK,
812         name,
813         type,
814         EVENT_KEY_USERID, eventInfo.userId,
815         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
816         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
817         EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
818         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
819         EVENT_KEY_CALLER_BUNDLE_NAME, eventInfo.callerBundleName,
820         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
821         EVENT_KEY_ERR_REASON, eventInfo.errReason,
822         EVENT_KEY_INTENT_NAME, eventInfo.intentName);
823 }
824 
SendLaunchFrameworkEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)825 void EventReport::SendLaunchFrameworkEvent(const EventName &eventName, HiSysEventType type, const EventInfo &eventInfo)
826 {
827     std::string name = ConvertEventName(eventName);
828     if (name == INVALID_EVENT_NAME) {
829         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
830         return;
831     }
832     HiSysEventWrite(
833         HiSysEvent::Domain::AAFWK,
834         name,
835         type,
836         EVENT_KEY_USERID, eventInfo.userId,
837         EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
838         EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
839         EVENT_KEY_ERROR_CODE, eventInfo.errCode,
840         EVENT_KEY_PROCESS_NAME, eventInfo.processName,
841         EVENT_KEY_APP_INDEX, eventInfo.appIndex,
842         EVENT_KEY_ERR_REASON, eventInfo.errReason);
843 }
844 
SendReportDataPartitionUsageEvent(const EventName & eventName,HiSysEventType type,const EventInfo & eventInfo)845 void EventReport::SendReportDataPartitionUsageEvent(const EventName &eventName, HiSysEventType type,
846     const EventInfo &eventInfo)
847 {
848     std::string name = ConvertEventName(eventName);
849     if (name == INVALID_EVENT_NAME) {
850         TAG_LOGE(AAFwkTag::DEFAULT, "invalid eventName");
851         return;
852     }
853 
854     HiSysEventWrite(
855 #ifdef USE_EXTENSION_DATA
856         OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT,
857 #else
858         OHOS::HiviewDFX::HiSysEvent::Domain::AAFWK,
859 #endif
860         name,
861         type,
862         EVENT_COMPONENT_NAME_KEY, eventInfo.componentName,
863         EVENT_PARTITION_NAME_KEY, eventInfo.partitionName,
864         EVENT_REMAIN_PARTITION_SIZE_KEY, eventInfo.remainPartitionSize,
865         EVENT_FILE_OR_FOLDER_PATH, eventInfo.fileOfFolderPath,
866         EVENT_FILE_OR_FOLDER_SIZE, eventInfo.fileOfFolderSize);
867 }
868 
ConvertEventName(const EventName & eventName)869 std::string EventReport::ConvertEventName(const EventName &eventName)
870 {
871     const char* eventNames[] = {
872         // fault event
873         "START_ABILITY_ERROR", "TERMINATE_ABILITY_ERROR", "START_EXTENSION_ERROR",
874         "STOP_EXTENSION_ERROR", "CONNECT_SERVICE_ERROR", "DISCONNECT_SERVICE_ERROR",
875         "UI_EXTENSION_ERROR", "UI_SERVICE_EXTENSION_ERROR", "EXECUTE_INSIGHT_INTENT_ERROR",
876         "STARTUP_TASK_ERROR", "START_ABILITY_SYSTEM_ERROR",
877 
878         // ability behavior event
879         "START_ABILITY", "TERMINATE_ABILITY", "CLOSE_ABILITY",
880         "ABILITY_ONFOREGROUND", "ABILITY_ONBACKGROUND", "ABILITY_ONACTIVE", "ABILITY_ONINACTIVE",
881         "START_ABILITY_BY_APP_LINKING", "KILL_PROCESS_WITH_REASON",
882 
883         // serviceExtensionAbility behavior event
884         "START_SERVICE", "STOP_SERVICE", "CONNECT_SERVICE", "DISCONNECT_SERVICE", "START_ABILITY_OTHER_EXTENSION",
885 
886         // app behavior event
887         "APP_ATTACH", "APP_LAUNCH", "APP_FOREGROUND", "APP_BACKGROUND", "APP_TERMINATE",
888         "PROCESS_START", "PROCESS_EXIT", "DRAWN_COMPLETED", "APP_STARTUP_TYPE", "PROCESS_START_FAILED",
889 
890         // key behavior event
891         "GRANT_URI_PERMISSION", "FA_SHOW_ON_LOCK", "START_PRIVATE_ABILITY",
892         "RESTART_PROCESS_BY_SAME_APP", "START_STANDARD_ABILITIES",
893 
894         // atomic service event
895         "CREATE_ATOMIC_SERVICE_PROCESS", "ATOMIC_SERVICE_DRAWN_COMPLETE",
896 
897         // uri permission
898         "SHARE_UNPRIVILEGED_FILE_URI",
899 
900         // report data
901         "USER_DATA_SIZE"
902     };
903     uint32_t eventIndex = static_cast<uint32_t> (eventName);
904     if (eventIndex >= sizeof(eventNames) / sizeof(const char*)) {
905         return INVALID_EVENT_NAME;
906     }
907     return eventNames[eventIndex];
908 }
909 }  // namespace AAFwk
910 }  // namespace OHOS
911