1 /*
2 * Copyright (c) 2023 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 "form_event_report.h"
17
18 #include <map>
19
20 #include "fms_log_wrapper.h"
21
22 namespace OHOS {
23 namespace AppExecFwk {
24 namespace {
25 // event params
26 constexpr const char *EVENT_KEY_FORM_ID = "FORM_ID";
27 constexpr const char *EVENT_KEY_BUNDLE_NAME = "BUNDLE_NAME";
28 constexpr const char *EVENT_KEY_MODULE_NAME = "MODULE_NAME";
29 constexpr const char *EVENT_KEY_ABILITY_NAME = "ABILITY_NAME";
30 const std::map<FormEventName, std::string> EVENT_NAME_MAP = {
31 std::map<FormEventName, std::string>::value_type(FormEventName::ADD_FORM, "ADD_FORM"),
32 std::map<FormEventName, std::string>::value_type(FormEventName::REQUEST_FORM, "REQUEST_FORM"),
33 std::map<FormEventName, std::string>::value_type(FormEventName::REQUEST_FORM, "REQUEST_FORM"),
34 std::map<FormEventName, std::string>::value_type(FormEventName::DELETE_FORM, "DELETE_FORM"),
35 std::map<FormEventName, std::string>::value_type(FormEventName::CASTTEMP_FORM, "CASTTEMP_FORM"),
36 std::map<FormEventName, std::string>::value_type(FormEventName::ACQUIREFORMSTATE_FORM, "ACQUIREFORMSTATE_FORM"),
37 std::map<FormEventName, std::string>::value_type(FormEventName::MESSAGE_EVENT_FORM, "MESSAGE_EVENT_FORM"),
38 std::map<FormEventName, std::string>::value_type(FormEventName::ROUTE_EVENT_FORM, "ROUTE_EVENT_FORM"),
39 std::map<FormEventName, std::string>::value_type(FormEventName::BACKGROUND_EVENT_FORM, "BACKGROUND_EVENT_FORM"),
40 std::map<FormEventName, std::string>::value_type(FormEventName::RELEASE_FORM, "RELEASE_FORM"),
41 std::map<FormEventName, std::string>::value_type(FormEventName::DELETE_INVALID_FORM, "DELETE_INVALID_FORM"),
42 std::map<FormEventName, std::string>::value_type(FormEventName::SET_NEXT_REFRESH_TIME_FORM, "SET_NEXT_REFRESH_TIME_FORM"),
43 std::map<FormEventName, std::string>::value_type(FormEventName::FORM_RENDER_BLOCK, "FORM_RENDER_BLOCK"),
44 };
45 }
46
SendFormEvent(const FormEventName & eventName,HiSysEventType type,const FormEventInfo & eventInfo)47 void FormEventReport::SendFormEvent(const FormEventName &eventName, HiSysEventType type, const FormEventInfo &eventInfo)
48 {
49 std::string name = ConvertEventName(eventName);
50 if (name == "INVALIDEVENTNAME") {
51 HILOG_ERROR("invalid eventName");
52 return;
53 }
54
55 switch (eventName) {
56 case FormEventName::DELETE_INVALID_FORM:
57 HiSysEventWrite(HiSysEvent::Domain::FORM_MANAGER, name, type);
58 break;
59 case FormEventName::ACQUIREFORMSTATE_FORM:
60 case FormEventName::MESSAGE_EVENT_FORM:
61 HiSysEventWrite(
62 HiSysEvent::Domain::FORM_MANAGER,
63 name,
64 type,
65 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
66 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
67 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
68 break;
69 case FormEventName::ADD_FORM:
70 case FormEventName::REQUEST_FORM:
71 case FormEventName::BACKGROUND_EVENT_FORM:
72 case FormEventName::ROUTE_EVENT_FORM:
73 HiSysEventWrite(
74 HiSysEvent::Domain::FORM_MANAGER,
75 name,
76 type,
77 EVENT_KEY_FORM_ID, eventInfo.formId,
78 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
79 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
80 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
81 break;
82 case FormEventName::DELETE_FORM:
83 case FormEventName::CASTTEMP_FORM:
84 case FormEventName::RELEASE_FORM:
85 case FormEventName::SET_NEXT_REFRESH_TIME_FORM:
86 HiSysEventWrite(
87 HiSysEvent::Domain::FORM_MANAGER, name, type, EVENT_KEY_FORM_ID, eventInfo.formId);
88 break;
89 case FormEventName::FORM_RENDER_BLOCK:
90 HiSysEventWrite(
91 HiSysEvent::Domain::FORM_MANAGER,
92 name,
93 type,
94 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName);
95 break;
96 default:
97 break;
98 }
99 }
100
ConvertEventName(const FormEventName & eventName)101 std::string FormEventReport::ConvertEventName(const FormEventName &eventName)
102 {
103 auto it = EVENT_NAME_MAP.find(eventName);
104 if (it != EVENT_NAME_MAP.end()) {
105 return it->second;
106 }
107 return "INVALIDEVENTNAME";
108 }
109 } // namespace AppExecFwk
110 } // namespace OHOS
111