1 /* 2 * Copyright (C) 2021 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 SERVICES_INCLUDE_INPUT_ATTRIBUTE_H 17 #define SERVICES_INCLUDE_INPUT_ATTRIBUTE_H 18 19 #include <cstdint> 20 21 #include "message_parcel.h" 22 23 namespace OHOS { 24 namespace MiscServices { 25 struct InputAttribute { 26 static const int32_t PATTERN_TEXT = 0x00000001; 27 static const int32_t PATTERN_PASSWORD = 0x00000007; 28 static const int32_t PATTERN_PASSWORD_NUMBER = 0x00000008; 29 static const int32_t PATTERN_PASSWORD_SCREEN_LOCK = 0x00000009; 30 static const int32_t PATTERN_NEWPASSWORD = 0x0000000b; 31 int32_t inputPattern = 0; 32 int32_t enterKeyType = 0; 33 int32_t inputOption = 0; 34 bool isTextPreviewSupported{ false }; 35 std::string bundleName { "" }; 36 MarshallingInputAttribute37 static bool Marshalling(const InputAttribute &in, MessageParcel &data) 38 { 39 return data.WriteInt32(in.inputPattern) && data.WriteInt32(in.enterKeyType) && 40 data.WriteInt32(in.inputOption) && data.WriteString(in.bundleName); 41 } 42 UnmarshallingInputAttribute43 static bool Unmarshalling(InputAttribute &out, MessageParcel &data) 44 { 45 return data.ReadInt32(out.inputPattern) && data.ReadInt32(out.enterKeyType) && 46 data.ReadInt32(out.inputOption) && data.ReadString(out.bundleName); 47 } 48 GetSecurityFlagInputAttribute49 bool GetSecurityFlag() const 50 { 51 return inputPattern == PATTERN_PASSWORD || inputPattern == PATTERN_PASSWORD_SCREEN_LOCK || 52 PATTERN_PASSWORD_NUMBER == inputPattern || PATTERN_NEWPASSWORD == inputPattern; 53 } 54 55 bool operator==(const InputAttribute &info) const 56 { 57 return inputPattern == info.inputPattern && enterKeyType == info.enterKeyType 58 && inputOption == info.inputOption && isTextPreviewSupported == info.isTextPreviewSupported; 59 } 60 }; 61 } // namespace MiscServices 62 } // namespace OHOS 63 64 #endif // SERVICES_INCLUDE_INPUT_ATTRIBUTE_H 65