• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 "imf_hisysevent_info.h"
17 
18 #include <algorithm>
19 
20 namespace OHOS {
21 namespace MiscServices {
Builder()22 HiSysOriginalInfo::Builder::Builder()
23 {
24     info_ = std::make_shared<HiSysOriginalInfo>();
25     info_->eventCode = 0;
26     info_->errCode = 0;
27     info_->peerPid = 0;
28     info_->peerUserId = 0;
29     info_->clientType = ClientType::CLIENT_TYPE_END;
30     info_->inputPattern = 0;
31     info_->isShowKeyboard = true;
32     info_->imeCbTime = -1;
33     info_->baseTextOperationTime = -1;
34 }
SetEventCode(int32_t eventCode)35 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetEventCode(int32_t eventCode)
36 {
37     info_->eventCode = eventCode;
38     return *this;
39 }
SetErrCode(int32_t errCode)40 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetErrCode(int32_t errCode)
41 {
42     info_->errCode = errCode;
43     return *this;
44 }
SetPeerName(const std::string & peerName)45 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetPeerName(const std::string &peerName)
46 {
47     info_->peerName = peerName;
48     return *this;
49 }
SetPeerPid(int64_t peerPid)50 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetPeerPid(int64_t peerPid)
51 {
52     info_->peerPid = peerPid;
53     return *this;
54 }
SetPeerUserId(int32_t peerUserId)55 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetPeerUserId(int32_t peerUserId)
56 {
57     info_->peerUserId = peerUserId;
58     return *this;
59 }
SetClientType(ClientType clientType)60 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetClientType(ClientType clientType)
61 {
62     info_->clientType = clientType;
63     return *this;
64 }
SetInputPattern(int32_t inputPattern)65 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetInputPattern(int32_t inputPattern)
66 {
67     info_->inputPattern = inputPattern;
68     return *this;
69 }
SetIsShowKeyboard(bool isShowKeyboard)70 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetIsShowKeyboard(bool isShowKeyboard)
71 {
72     info_->isShowKeyboard = isShowKeyboard;
73     return *this;
74 }
SetImeName(const std::string & imeName)75 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetImeName(const std::string &imeName)
76 {
77     info_->imeName = imeName;
78     return *this;
79 }
SetImeCbTime(int32_t imeCbTime)80 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetImeCbTime(int32_t imeCbTime)
81 {
82     info_->imeCbTime = imeCbTime;
83     return *this;
84 }
SetBaseTextOperatorTime(int32_t baseTextOperationTime)85 HiSysOriginalInfo::Builder &HiSysOriginalInfo::Builder::SetBaseTextOperatorTime(int32_t baseTextOperationTime)
86 {
87     info_->baseTextOperationTime = baseTextOperationTime;
88     return *this;
89 }
Build()90 std::shared_ptr<HiSysOriginalInfo> HiSysOriginalInfo::Builder::Build()
91 {
92     return info_;
93 }
94 
ModCountDistributions(uint32_t intervalIndex,const std::string & key)95 void CountDistributionInfo::ModCountDistributions(uint32_t intervalIndex, const std::string &key)
96 {
97     count++;
98     if (intervalIndex >= countDistributions.size()) {
99         return;
100     }
101     auto &intervalInfos = countDistributions[intervalIndex];
102     auto it = std::find_if(intervalInfos.begin(), intervalInfos.end(),
103         [key](const std::pair<std::string, uint64_t> &infoTmp) { return infoTmp.first == key; });
104     if (it == intervalInfos.end()) {
105         intervalInfos.emplace_back(key, 1);
106         return;
107     }
108     it->second++;
109 }
110 
Marshal(cJSON * node) const111 bool CountDistributionInfo::Marshal(cJSON *node) const
112 {
113     auto ret = SetValue(node, GET_NAME(COUNT), count);
114     std::vector<std::vector<std::string>> distributions;
115     for (const auto &distribution : countDistributions) {
116         std::vector<std::string> infos;
117         for (const auto &info : distribution) {
118             std::string str(info.first);
119             str.append("/").append(std::to_string(info.second));
120             infos.push_back(str);
121         }
122         distributions.push_back(infos);
123     }
124     return SetValue(node, GET_NAME(COUNT_DISTRIBUTION), distributions) && ret;
125 }
126 } // namespace MiscServices
127 } // namespace OHOS