• 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 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