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 #include <sstream> 21 22 #include "message_parcel.h" 23 24 namespace OHOS { 25 namespace MiscServices { 26 struct InputAttribute { 27 static const int32_t PATTERN_TEXT = 0x00000001; 28 static const int32_t PATTERN_PASSWORD = 0x00000007; 29 static const int32_t PATTERN_PASSWORD_NUMBER = 0x00000008; 30 static const int32_t PATTERN_PASSWORD_SCREEN_LOCK = 0x00000009; 31 static const int32_t PATTERN_NEWPASSWORD = 0x0000000b; 32 int32_t inputPattern = 0; 33 int32_t enterKeyType = 0; 34 int32_t inputOption = 0; 35 bool isTextPreviewSupported { false }; 36 std::string bundleName { "" }; 37 int32_t immersiveMode = 0; 38 uint32_t windowId = 0; // for transfer 39 uint64_t callingDisplayId = 0; 40 MarshallingInputAttribute41 static bool Marshalling(const InputAttribute &in, MessageParcel &data) 42 { 43 return data.WriteInt32(in.inputPattern) && data.WriteInt32(in.enterKeyType) && 44 data.WriteInt32(in.inputOption) && data.WriteString(in.bundleName) && 45 data.WriteInt32(in.immersiveMode) && data.WriteUint32(in.windowId) && 46 data.WriteUint64(in.callingDisplayId); 47 } 48 UnmarshallingInputAttribute49 static bool Unmarshalling(InputAttribute &out, MessageParcel &data) 50 { 51 return data.ReadInt32(out.inputPattern) && data.ReadInt32(out.enterKeyType) && 52 data.ReadInt32(out.inputOption) && data.ReadString(out.bundleName) && 53 data.ReadInt32(out.immersiveMode) && data.ReadUint32(out.windowId) && 54 data.ReadUint64(out.callingDisplayId); 55 } 56 GetSecurityFlagInputAttribute57 bool GetSecurityFlag() const 58 { 59 return inputPattern == PATTERN_PASSWORD || inputPattern == PATTERN_PASSWORD_SCREEN_LOCK || 60 PATTERN_PASSWORD_NUMBER == inputPattern || PATTERN_NEWPASSWORD == inputPattern; 61 } 62 63 bool operator==(const InputAttribute &info) const 64 { 65 return inputPattern == info.inputPattern && enterKeyType == info.enterKeyType && 66 inputOption == info.inputOption && isTextPreviewSupported == info.isTextPreviewSupported; 67 } 68 ToStringInputAttribute69 inline std::string ToString() const 70 { 71 std::stringstream ss; 72 ss << "[" << "inputPattern:" << inputPattern 73 << "enterKeyType:" << enterKeyType << "inputOption:" << inputOption 74 << "isTextPreviewSupported:" << isTextPreviewSupported << "bundleName:" << bundleName 75 << "immersiveMode:" << immersiveMode << "windowId:" << windowId 76 << "callingDisplayId:" << callingDisplayId << "]"; 77 return ss.str(); 78 } 79 }; 80 } // namespace MiscServices 81 } // namespace OHOS 82 83 #endif // SERVICES_INCLUDE_INPUT_ATTRIBUTE_H 84