• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 constexpr const char *EVENT_KEY_HOST_BUNDLE_NAME = "HOST_BUNDLE_NAME";
31 const std::map<FormEventName, std::string> EVENT_NAME_MAP = {
32     std::map<FormEventName, std::string>::value_type(FormEventName::ADD_FORM, "ADD_FORM"),
33     std::map<FormEventName, std::string>::value_type(FormEventName::REQUEST_FORM, "REQUEST_FORM"),
34     std::map<FormEventName, std::string>::value_type(FormEventName::REQUEST_FORM, "REQUEST_FORM"),
35     std::map<FormEventName, std::string>::value_type(FormEventName::DELETE_FORM, "DELETE_FORM"),
36     std::map<FormEventName, std::string>::value_type(FormEventName::CASTTEMP_FORM, "CASTTEMP_FORM"),
37     std::map<FormEventName, std::string>::value_type(FormEventName::ACQUIREFORMSTATE_FORM, "ACQUIREFORMSTATE_FORM"),
38     std::map<FormEventName, std::string>::value_type(FormEventName::MESSAGE_EVENT_FORM, "MESSAGE_EVENT_FORM"),
39     std::map<FormEventName, std::string>::value_type(FormEventName::ROUTE_EVENT_FORM, "ROUTE_EVENT_FORM"),
40     std::map<FormEventName, std::string>::value_type(FormEventName::BACKGROUND_EVENT_FORM, "BACKGROUND_EVENT_FORM"),
41     std::map<FormEventName, std::string>::value_type(FormEventName::RELEASE_FORM, "RELEASE_FORM"),
42     std::map<FormEventName, std::string>::value_type(FormEventName::DELETE_INVALID_FORM, "DELETE_INVALID_FORM"),
43     std::map<FormEventName, std::string>::value_type(
44         FormEventName::SET_NEXT_REFRESH_TIME_FORM, "SET_NEXT_REFRESH_TIME_FORM"),
45     std::map<FormEventName, std::string>::value_type(FormEventName::FORM_RENDER_BLOCK, "FORM_RENDER_BLOCK"),
46 };
47 }
48 
SendFormEvent(const FormEventName & eventName,HiSysEventType type,const FormEventInfo & eventInfo)49 void FormEventReport::SendFormEvent(const FormEventName &eventName, HiSysEventType type,
50     const FormEventInfo &eventInfo)
51 {
52     std::string name = ConvertEventName(eventName);
53     if (name == "INVALIDEVENTNAME") {
54         HILOG_ERROR("invalid eventName");
55         return;
56     }
57 
58     switch (eventName) {
59         case FormEventName::DELETE_INVALID_FORM:
60             HiSysEventWrite(HiSysEvent::Domain::FORM_MANAGER, name, type);
61             break;
62         case FormEventName::ACQUIREFORMSTATE_FORM:
63             HiSysEventWrite(
64                 HiSysEvent::Domain::FORM_MANAGER,
65                 name,
66                 type,
67                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
68                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
69                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
70             break;
71         case FormEventName::MESSAGE_EVENT_FORM:
72             HiSysEventWrite(
73                 HiSysEvent::Domain::FORM_MANAGER,
74                 name,
75                 type,
76                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
77                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
78                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
79                 EVENT_KEY_HOST_BUNDLE_NAME, eventInfo.hostBundleName);
80             break;
81         case FormEventName::ADD_FORM:
82         case FormEventName::ROUTE_EVENT_FORM:
83             HiSysEventWrite(
84                 HiSysEvent::Domain::FORM_MANAGER, name, type,
85                 EVENT_KEY_FORM_ID, eventInfo.formId,
86                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
87                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
88                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName,
89                 EVENT_KEY_HOST_BUNDLE_NAME, eventInfo.hostBundleName);
90             break;
91         default:
92             break;
93     }
94 }
95 
SendSecondFormEvent(const FormEventName & eventName,HiSysEventType type,const FormEventInfo & eventInfo)96 void FormEventReport::SendSecondFormEvent(const FormEventName &eventName, HiSysEventType type,
97     const FormEventInfo &eventInfo)
98 {
99     std::string name = ConvertEventName(eventName);
100     if (name == "INVALIDEVENTNAME") {
101         HILOG_ERROR("invalid eventName");
102         return;
103     }
104 
105     switch (eventName) {
106         case FormEventName::REQUEST_FORM:
107         case FormEventName::BACKGROUND_EVENT_FORM:
108             HiSysEventWrite(
109                 HiSysEvent::Domain::FORM_MANAGER,
110                 name,
111                 type,
112                 EVENT_KEY_FORM_ID, eventInfo.formId,
113                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName,
114                 EVENT_KEY_MODULE_NAME, eventInfo.moduleName,
115                 EVENT_KEY_ABILITY_NAME, eventInfo.abilityName);
116             break;
117         case FormEventName::DELETE_FORM:
118             HiSysEventWrite(HiSysEvent::Domain::FORM_MANAGER, name, type,
119                 EVENT_KEY_FORM_ID, eventInfo.formId,
120                 EVENT_KEY_HOST_BUNDLE_NAME, eventInfo.hostBundleName);
121             break;
122         case FormEventName::CASTTEMP_FORM:
123         case FormEventName::RELEASE_FORM:
124         case FormEventName::SET_NEXT_REFRESH_TIME_FORM:
125             HiSysEventWrite(HiSysEvent::Domain::FORM_MANAGER, name, type, EVENT_KEY_FORM_ID, eventInfo.formId);
126             break;
127         case FormEventName::FORM_RENDER_BLOCK:
128             HiSysEventWrite(
129                 HiSysEvent::Domain::FORM_MANAGER,
130                 name,
131                 type,
132                 EVENT_KEY_BUNDLE_NAME, eventInfo.bundleName);
133             break;
134         default:
135             break;
136     }
137 }
138 
ConvertEventName(const FormEventName & eventName)139 std::string FormEventReport::ConvertEventName(const FormEventName &eventName)
140 {
141     auto it = EVENT_NAME_MAP.find(eventName);
142     if (it != EVENT_NAME_MAP.end()) {
143         return it->second;
144     }
145     return "INVALIDEVENTNAME";
146 }
147 } // namespace AppExecFwk
148 } // namespace OHOS
149