• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022-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 #ifndef MISCSERVICES_PASTEBOARD_HI_VIEW_ADAPTER_H
17 #define MISCSERVICES_PASTEBOARD_HI_VIEW_ADAPTER_H
18 
19 #include "dfx_code_constant.h"
20 #include "dfx_types.h"
21 #include "hisysevent_c.h"
22 #include "paste_data.h"
23 
24 namespace OHOS {
25 namespace MiscServices {
26 enum DataConsumingLevel : std::int32_t {
27     DATA_LEVEL_ONE = 0,
28     DATA_LEVEL_TWO,
29     DATA_LEVEL_THREE,
30     DATA_LEVEL_FOUR,
31     DATA_LEVEL_FIVE,
32     DATA_LEVEL_SIX,
33     DATA_LEVEL_SEVEN,
34 };
35 enum TimeConsumingLevel : std::int32_t {
36     TIME_LEVEL_ONE = 0,
37     TIME_LEVEL_TWO,
38     TIME_LEVEL_THREE,
39     TIME_LEVEL_FOUR,
40     TIME_LEVEL_FIVE,
41     TIME_LEVEL_SIX,
42     TIME_LEVEL_SEVEN,
43     TIME_LEVEL_EIGHT,
44     TIME_LEVEL_NINE,
45     TIME_LEVEL_TEN,
46     TIME_LEVEL_ELEVEN,
47 };
48 
49 class API_EXPORT HiViewAdapter {
50 public:
51     ~HiViewAdapter();
52 
53     static inline const char *PASTEBOARD_STATE = "PASTEBOARD_STATE";
54     static inline const char *COPY_STATE = "COPY_STATE";
55     static inline const char *PASTE_STATE = "PASTE_STATE";
56     static inline const char *PASTEBOARD_DOMAIN = "PASTEBOARD";
57 
58     static void ReportPasteboardFault(int dfxCode, const PasteboardFaultMsg &msg);
59     static void ReportTimeConsumingStatistic(const TimeConsumingStat &stat);
60     static void ReportPasteboardBehaviour(const PasteboardBehaviourMsg &msg);
61     static void StartTimerThread();
62     static std::map<int, int> InitDataMap();
63     static std::map<int, int> InitTimeMap();
64 
65     static void ReportUseBehaviour(PasteData &pastData, const char *state, int32_t result);
66 
67 private:
68     static void InvokePasteBoardBehaviour();
69     static void InitializeTimeConsuming(int initFlag);
70     static void CopyTimeConsumingCount(int dataLevel, int timeLevel);
71     static void PasteTimeConsumingCount(int dataLevel, int timeLevel);
72     static void RemotePasteTimeConsumingCount(int dataLevel, int timeLevel);
73     static void CopyTimeConsuming(const TimeConsumingStat &stat, int level);
74     static void PasteTimeConsuming(const TimeConsumingStat &stat, int level);
75     static const char *GetDataLevel(int dataLevel);
76     static void InvokeTimeConsuming();
77     static void ReportBehaviour(std::map<std::string, int> &behaviour, const char *statePasteboard);
78     static void ReportStatisticEvent(
79         const std::vector<std::map<int, int>> &timeConsumingStat, const std::string &pasteboardState);
80 
81     static std::mutex timeConsumingMutex_;
82     static std::vector<std::map<int, int>> copyTimeConsumingStat_;
83     static std::vector<std::map<int, int>> pasteTimeConsumingStat_;
84     static std::vector<std::map<int, int>> remotePasteTimeConsumingStat_;
85 
86     static std::mutex behaviourMutex_;
87     static std::map<std::string, int> copyPasteboardBehaviour_;
88     static std::map<std::string, int> pastePasteboardBehaviour_;
89     static std::map<std::string, int> remotePastePasteboardBehaviour_;
90 
91     static std::map<int, int> dataMap_;
92     static std::map<int, int> timeMap_;
93 
94     static std::string CoverEventID(int dfxCode);
95 
96 private:
97     static std::mutex runMutex_;
98     static bool running_;
99 
100     static inline constexpr int ONE_DAY_IN_HOURS = 24;
101     static inline constexpr int EXEC_HOUR_TIME = 23;
102     static inline constexpr int EXEC_MIN_TIME = 60;
103     static inline constexpr int ONE_MINUTE_IN_SECONDS = 60;
104     static inline constexpr int ONE_HOUR_IN_SECONDS = 1 * 60 * 60; // 1 hour
105 
106     // statistic key
107     static inline const char *ZERO_TO_HUNDRED_KB = "ZERO_TO_HUNDRED_KB";
108     static inline const char *HUNDRED_TO_FIVE_HUNDREDS_KB = "HUNDRED_TO_FIVE_HUNDREDS_KB";
109     static inline const char *FIVE_HUNDREDS_TO_THOUSAND_KB = "FIVE_HUNDREDS_TO_THOUSAND_KB";
110     static inline const char *ONE_TO_FIVE_MB = "ONE_TO_FIVE_MB";
111     static inline const char *FIVE_TO_TEN_MB = "FIVE_TO_TEN_MB";
112     static inline const char *TEN_TO_FIFTY_MB = "TEN_TO_FIFTY_MB";
113     static inline const char *OVER_FIFTY_MB = "OVER_FIFTY_MB";
114     static inline const char *CONSUMING_DATA = "CONSUMING_DATA";
115     static inline const char *DATA_LEVEL = "DATA_LEVEL";
116     static inline constexpr const char *NET_TYPE = "NET_TYPE";
117     // behaviour key
118     static inline const char *TOP_ONE_APP = "TOP_ONE_APP";
119     static inline const char *TOP_TOW_APP = "TOP_TOW_APP";
120     static inline const char *TOP_THREE_APP = "TOP_THREE_APP";
121     static inline const char *TOP_FOUR_APP = "TOP_FOUR_APP";
122     static inline const char *TOP_FIVE_APP = "TOP_FIVE_APP";
123     static inline const char *TOP_SIX_APP = "TOP_SIX_APP";
124     static inline const char *TOP_SEVEN_APP = "TOP_SEVEN_APP";
125     static inline const char *TOP_EIGHT_APP = "TOP_EIGHT_APP";
126     static inline const char *TOP_NINE_APP = "TOP_NINE_APP";
127     static inline const char *TOP_TEN_APP = "TOP_TEN_APP";
128 
129     static inline constexpr const char *REMOTE_PASTE_STATE = "REMOTE_PASTE_STATE";
130 
131     // use behaviour key
132     static inline const char *BOOTTIME = "BOOTTIME";
133     static inline const char *WALLTIME = "WALLTIME";
134     static inline const char *RESULT = "RESULT";
135     static inline const char *OPERATE_APP = "OPERATE_APP";
136     static inline const char *PRI_MIME_TYPE = "PRI_MIME_TYPE";
137     static inline const char *ISLOCALPASTE = "ISLOCALPASTE";
138     static inline const char *ISREMOTE = "ISREMOTE";
139     static inline const char *SHAREOPTION = "SHAREOPTION";
140 
141     static inline const int INIT_COPY_TIME_CONSUMING = 7;
142     static inline const int INIT_PASTE_TIME_CONSUMING = 8;
143     static inline constexpr const int INIT_REMOTE_PASTE_TIME_CONSUMING = 9;
144 };
145 } // namespace MiscServices
146 } // namespace OHOS
147 #endif // MISCSERVICES_PASTEBOARD_HI_VIEW_ADAPTER_H
148