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 "ime_info_inquirer.h"
17 
18 #include "global.h"
19 namespace OHOS {
20 namespace MiscServices {
21 std::shared_ptr<ImeInfo> ImeInfoInquirer::defaultIme_ = nullptr;
22 std::shared_ptr<Property> ImeInfoInquirer::defaultImeProperty_ = nullptr;
23 std::shared_ptr<Property> ImeInfoInquirer::currentIme_ = nullptr;
24 constexpr const char *MOCK_APP_ID = "MockAppId";
GetInstance()25 ImeInfoInquirer &ImeInfoInquirer::GetInstance()
26 {
27     static ImeInfoInquirer instance;
28     return instance;
29 }
30 
GetDefaultImeInfo(int32_t userId)31 std::shared_ptr<ImeInfo> ImeInfoInquirer::GetDefaultImeInfo(int32_t userId)
32 {
33     return defaultIme_;
34 }
35 
GetCurrentInputMethod(int32_t userId)36 std::shared_ptr<Property> ImeInfoInquirer::GetCurrentInputMethod(int32_t userId)
37 {
38     return currentIme_;
39 }
40 
GetDefaultImeCfgProp()41 std::shared_ptr<Property> ImeInfoInquirer::GetDefaultImeCfgProp()
42 {
43     return defaultImeProperty_;
44 }
45 
GetImeAppId(int32_t userId, const std::string &bundleName, std::string &appId)46 bool ImeInfoInquirer::GetImeAppId(int32_t userId, const std::string &bundleName, std::string &appId)
47 {
48     appId = MOCK_APP_ID;
49     return true;
50 }
51 
GetImeVersionCode(int32_t userId, const std::string &bundleName, uint32_t &versionCode)52 bool ImeInfoInquirer::GetImeVersionCode(int32_t userId, const std::string &bundleName, uint32_t &versionCode)
53 {
54     versionCode = 0;
55     return true;
56 }
57 
QueryFullImeInfo(std::vector<std::pair<int32_t, std::vector<FullImeInfo>>> &fullImeInfos) const58 int32_t ImeInfoInquirer::QueryFullImeInfo(std::vector<std::pair<int32_t, std::vector<FullImeInfo>>> &fullImeInfos) const
59 {
60     if (!isQueryAllFullImeInfosOk_) {
61         return ErrorCode::ERROR_PACKAGE_MANAGER;
62     }
63     fullImeInfos = allFullImeInfos_;
64     return ErrorCode::NO_ERROR;
65 }
66 
QueryFullImeInfo(int32_t userId, std::vector<FullImeInfo> &imeInfos) const67 int32_t ImeInfoInquirer::QueryFullImeInfo(int32_t userId, std::vector<FullImeInfo> &imeInfos) const
68 {
69     if (!isQueryFullImeInfosOk_) {
70         return ErrorCode::ERROR_PACKAGE_MANAGER;
71     }
72     imeInfos = fullImeInfos_;
73     return ErrorCode::NO_ERROR;
74 }
75 
GetFullImeInfo(int32_t userId, const std::string &bundleName, FullImeInfo &imeInfo) const76 int32_t ImeInfoInquirer::GetFullImeInfo(int32_t userId, const std::string &bundleName, FullImeInfo &imeInfo) const
77 {
78     if (!isGetFullImeInfoOk_) {
79         return ErrorCode::ERROR_PACKAGE_MANAGER;
80     }
81     imeInfo = fullImeInfo_;
82     return ErrorCode::NO_ERROR;
83 }
84 
SetFullImeInfo(bool isReturnOk, const FullImeInfo &imeInfo)85 void ImeInfoInquirer::SetFullImeInfo(bool isReturnOk, const FullImeInfo &imeInfo)
86 {
87     isGetFullImeInfoOk_ = isReturnOk;
88     fullImeInfo_ = imeInfo;
89 }
90 
SetFullImeInfo(bool isReturnOk, const std::vector<FullImeInfo> &imeInfos)91 void ImeInfoInquirer::SetFullImeInfo(bool isReturnOk, const std::vector<FullImeInfo> &imeInfos)
92 {
93     isQueryFullImeInfosOk_ = isReturnOk;
94     fullImeInfos_ = imeInfos;
95 }
96 
SetFullImeInfo( bool isReturnOk, const std::vector<std::pair<int32_t, std::vector<FullImeInfo>>> &fullImeInfos)97 void ImeInfoInquirer::SetFullImeInfo(
98     bool isReturnOk, const std::vector<std::pair<int32_t, std::vector<FullImeInfo>>> &fullImeInfos)
99 {
100     isQueryAllFullImeInfosOk_ = isReturnOk;
101     allFullImeInfos_ = fullImeInfos;
102 }
103 } // namespace MiscServices
104 } // namespace OHOS