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