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 #ifndef INPUTMETHOD_IMF_INPUT__CLIENT_INFO_H
17 #define INPUTMETHOD_IMF_INPUT__CLIENT_INFO_H
18 
19 #include "i_input_client.h"
20 #include "i_input_data_channel.h"
21 #include "input_attribute.h"
22 #include "input_death_recipient.h"
23 
24 namespace OHOS {
25 namespace MiscServices {
26 enum class UpdateFlag : uint32_t {
27     EVENTFLAG = 0,
28     ISSHOWKEYBOARD,
29     BINDIMETYPE,
30     STATE,
31     TEXT_CONFIG,
32     UIEXTENSION_TOKENID,
33 };
34 enum class ImeType : int32_t { IME = 0, PROXY_IME, NONE };
35 enum class ClientState : uint32_t { INACTIVE = 0, ACTIVE };
36 constexpr uint32_t NO_EVENT_ON = 0;
37 constexpr uint32_t IMF_INVALID_TOKENID = 0;
38 struct InputClientInfo {
39     pid_t pid{ -1 };                                       // process id
40     pid_t uid{ -1 };                                       // uid
41     int32_t userID{ 0 };                                   // user id of input client
42     bool isShowKeyboard{ false };                          // soft keyboard status
43     ImeType bindImeType{ ImeType::NONE };                  // type of the ime client bind
44     TextTotalConfig config = {};                           // text config
45     uint32_t eventFlag{ NO_EVENT_ON };                     // the flag of the all listen event
46     InputAttribute attribute;                              // the input client attribute
47     sptr<IInputClient> client{ nullptr };       // the remote object handler for service to callback input client
48     sptr<IRemoteObject> channel{ nullptr };     // the remote object handler for ime to callback input client
49     sptr<InputDeathRecipient> deathRecipient{ nullptr }; // death recipient of client
50     ClientState state{ ClientState::INACTIVE };          // the state of input client
51     bool isNotifyInputStart{ true };
52     bool needHide { false }; // panel needs to be hidden first, when input pattern is switched between pwd and normal
53     uint32_t uiExtensionTokenId{ IMF_INVALID_TOKENID }; // the value is valid only in curClient and only UIExtension
54 };
55 } // namespace MiscServices
56 } // namespace OHOS
57 
58 #endif //INPUTMETHOD_IMF_INPUT_CLIENT_INFO_H
59