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 "mock_message_parcel.h" 17 #include "iremote_object.h" 18 #include "message_parcel.h" 19 #include "window_manager_hilog.h" 20 namespace OHOS { 21 namespace { 22 bool g_setWriteBoolErrorFlag = false; 23 bool g_setWriteInt32ErrorFlag = false; 24 bool g_setWriteInt64ErrorFlag = false; 25 bool g_setWriteUint32ErrorFlag = false; 26 bool g_setWriteUint64ErrorFlag = false; 27 bool g_setWriteFloatErrorFlag = false; 28 bool g_setWriteString16ErrorFlag = false; 29 bool g_setWriteStringErrorFlag = false; 30 bool g_setWriteParcelableErrorFlag = false; 31 bool g_setWriteInterfaceTokenErrorFlag = false; 32 bool g_setWriteRemoteObjectErrorFlag = false; 33 bool g_setReadBoolErrorFlag = false; 34 bool g_setReadUint32ErrorFlag = false; 35 bool g_setReadInt32ErrorFlag = false; 36 bool g_setReadUint64ErrorFlag = false; 37 bool g_setReadInt64ErrorFlag = false; 38 bool g_setReadFloatErrorFlag = false; 39 bool g_setReadStringVectorErrorFlag = false; 40 bool g_setReadStringErrorFlag = false; 41 #ifdef ENABLE_MOCK_WRITE_STRING 42 const static std::string ERROR_FLAG = "error"; 43 #endif 44 constexpr int32_t ERROR_INT = -1; 45 constexpr float ERROR_FLOAT = -1.0f; 46 #ifdef ENABLE_MOCK_WRITE_STRING_VECTOR 47 constexpr int32_t ERROR_SIZE = 1; 48 #endif 49 50 } // namespace 51 namespace Rosen { ClearAllErrorFlag()52void MockMessageParcel::ClearAllErrorFlag() 53 { 54 g_setWriteBoolErrorFlag = false; 55 g_setWriteInt32ErrorFlag = false; 56 g_setWriteInt64ErrorFlag = false; 57 g_setWriteUint32ErrorFlag = false; 58 g_setWriteUint64ErrorFlag = false; 59 g_setWriteFloatErrorFlag = false; 60 g_setWriteString16ErrorFlag = false; 61 g_setWriteStringErrorFlag = false; 62 g_setWriteParcelableErrorFlag = false; 63 g_setWriteInterfaceTokenErrorFlag = false; 64 g_setWriteRemoteObjectErrorFlag = false; 65 g_setReadBoolErrorFlag = false; 66 g_setReadUint32ErrorFlag = false; 67 g_setReadInt32ErrorFlag = false; 68 g_setReadUint64ErrorFlag = false; 69 g_setReadInt64ErrorFlag = false; 70 g_setReadFloatErrorFlag = false; 71 g_setReadStringVectorErrorFlag = false; 72 g_setReadStringErrorFlag = false; 73 } 74 SetWriteBoolErrorFlag(bool flag)75void MockMessageParcel::SetWriteBoolErrorFlag(bool flag) 76 { 77 g_setWriteBoolErrorFlag = flag; 78 } 79 SetWriteInt32ErrorFlag(bool flag)80void MockMessageParcel::SetWriteInt32ErrorFlag(bool flag) 81 { 82 g_setWriteInt32ErrorFlag = flag; 83 } 84 SetWriteInt64ErrorFlag(bool flag)85void MockMessageParcel::SetWriteInt64ErrorFlag(bool flag) 86 { 87 g_setWriteInt64ErrorFlag = flag; 88 } 89 SetWriteUint32ErrorFlag(bool flag)90void MockMessageParcel::SetWriteUint32ErrorFlag(bool flag) 91 { 92 g_setWriteUint32ErrorFlag = flag; 93 } 94 SetWriteUint64ErrorFlag(bool flag)95void MockMessageParcel::SetWriteUint64ErrorFlag(bool flag) 96 { 97 g_setWriteUint64ErrorFlag = flag; 98 } 99 SetWriteFloatErrorFlag(bool flag)100void MockMessageParcel::SetWriteFloatErrorFlag(bool flag) 101 { 102 g_setWriteFloatErrorFlag = flag; 103 } 104 SetWriteString16ErrorFlag(bool flag)105void MockMessageParcel::SetWriteString16ErrorFlag(bool flag) 106 { 107 g_setWriteString16ErrorFlag = flag; 108 } 109 SetWriteStringErrorFlag(bool flag)110void MockMessageParcel::SetWriteStringErrorFlag(bool flag) 111 { 112 g_setWriteStringErrorFlag = flag; 113 } 114 SetWriteParcelableErrorFlag(bool flag)115void MockMessageParcel::SetWriteParcelableErrorFlag(bool flag) 116 { 117 g_setWriteParcelableErrorFlag = flag; 118 } 119 SetWriteInterfaceTokenErrorFlag(bool flag)120void MockMessageParcel::SetWriteInterfaceTokenErrorFlag(bool flag) 121 { 122 g_setWriteInterfaceTokenErrorFlag = flag; 123 } 124 SetWriteRemoteObjectErrorFlag(bool flag)125void MockMessageParcel::SetWriteRemoteObjectErrorFlag(bool flag) 126 { 127 g_setWriteRemoteObjectErrorFlag = flag; 128 } 129 SetReadUint32ErrorFlag(bool flag)130void MockMessageParcel::SetReadUint32ErrorFlag(bool flag) 131 { 132 g_setReadUint32ErrorFlag = flag; 133 } 134 SetReadInt32ErrorFlag(bool flag)135void MockMessageParcel::SetReadInt32ErrorFlag(bool flag) 136 { 137 g_setReadInt32ErrorFlag = flag; 138 } 139 SetReadBoolErrorFlag(bool flag)140void MockMessageParcel::SetReadBoolErrorFlag(bool flag) 141 { 142 g_setReadBoolErrorFlag = flag; 143 } 144 SetReadUint64ErrorFlag(bool flag)145void MockMessageParcel::SetReadUint64ErrorFlag(bool flag) 146 { 147 g_setReadUint64ErrorFlag = flag; 148 } 149 SetReadInt64ErrorFlag(bool flag)150void MockMessageParcel::SetReadInt64ErrorFlag(bool flag) 151 { 152 g_setReadInt64ErrorFlag = flag; 153 } 154 SetReadFloatErrorFlag(bool flag)155void MockMessageParcel::SetReadFloatErrorFlag(bool flag) 156 { 157 g_setReadFloatErrorFlag = flag; 158 } 159 SetReadStringVectorErrorFlag(bool flag)160void MockMessageParcel::SetReadStringVectorErrorFlag(bool flag) 161 { 162 g_setReadStringVectorErrorFlag = flag; 163 } 164 SetReadStringErrorFlag(bool flag)165void MockMessageParcel::SetReadStringErrorFlag(bool flag) 166 { 167 g_setReadStringErrorFlag = flag; 168 } 169 } 170 WriteInterfaceToken(std::u16string name)171bool MessageParcel::WriteInterfaceToken(std::u16string name) 172 { 173 if (g_setWriteInterfaceTokenErrorFlag) { 174 return false; 175 } 176 return true; 177 } 178 179 #ifdef ENABLE_MOCK_WRITE_REMOTE_OBJECT WriteRemoteObject(const sptr<IRemoteObject> & object)180bool MessageParcel::WriteRemoteObject(const sptr<IRemoteObject> &object) 181 { 182 if (g_setWriteRemoteObjectErrorFlag) { 183 return false; 184 } 185 return true; 186 } 187 #endif 188 WriteParcelable(const Parcelable * object)189bool Parcel::WriteParcelable(const Parcelable* object) 190 { 191 (void)object; 192 if (g_setWriteParcelableErrorFlag) { 193 return false; 194 } 195 return true; 196 } 197 WriteBool(bool value)198bool Parcel::WriteBool(bool value) 199 { 200 (void)value; 201 return !g_setWriteBoolErrorFlag; 202 } 203 WriteInt32(int32_t value)204bool Parcel::WriteInt32(int32_t value) 205 { 206 (void)value; 207 if (g_setWriteInt32ErrorFlag || value == ERROR_INT) { 208 return false; 209 } 210 return true; 211 } 212 WriteInt64(int64_t value)213bool Parcel::WriteInt64(int64_t value) 214 { 215 (void)value; 216 if (g_setWriteInt64ErrorFlag || value == ERROR_INT) { 217 return false; 218 } 219 return true; 220 } 221 WriteUint32(uint32_t value)222bool Parcel::WriteUint32(uint32_t value) 223 { 224 (void)value; 225 if (g_setWriteUint32ErrorFlag) { 226 return false; 227 } 228 return true; 229 } 230 WriteUint64(uint64_t value)231bool Parcel::WriteUint64(uint64_t value) 232 { 233 (void)value; 234 if (g_setWriteUint64ErrorFlag) { 235 return false; 236 } 237 return true; 238 } 239 WriteFloat(float value)240bool Parcel::WriteFloat(float value) 241 { 242 (void)value; 243 if (g_setWriteFloatErrorFlag || value == ERROR_FLOAT) { 244 return false; 245 } 246 return true; 247 } 248 WriteString16(const std::u16string & value)249bool Parcel::WriteString16(const std::u16string& value) 250 { 251 (void)value; 252 return !g_setWriteString16ErrorFlag; 253 } 254 WriteString(const std::string & value)255bool Parcel::WriteString(const std::string& value) 256 { 257 (void)value; 258 return !g_setWriteStringErrorFlag; 259 } 260 ReadBool(bool & value)261bool Parcel::ReadBool(bool& value) 262 { 263 if (g_setReadBoolErrorFlag) { 264 return false; 265 } 266 return true; 267 } 268 269 #ifdef ENABLE_MOCK_READ_UINT32 ReadUint32(uint32_t & value)270bool Parcel::ReadUint32(uint32_t& value) 271 { 272 if (g_setReadUint32ErrorFlag) { 273 return false; 274 } 275 return true; 276 } 277 #endif 278 279 #ifdef ENABLE_MOCK_READ_INT32 ReadInt32(int32_t & value)280bool Parcel::ReadInt32(int32_t& value) 281 { 282 if (g_setReadInt32ErrorFlag) { 283 return false; 284 } 285 return true; 286 } 287 #endif 288 ReadUint64(uint64_t & value)289bool Parcel::ReadUint64(uint64_t& value) 290 { 291 if (g_setReadUint64ErrorFlag) { 292 return false; 293 } 294 return true; 295 } 296 297 #ifdef ENABLE_MOCK_READ_INT64 ReadInt64(int64_t & value)298bool Parcel::ReadInt64(int64_t& value) 299 { 300 if (g_setReadInt64ErrorFlag) { 301 return false; 302 } 303 return true; 304 } 305 #endif 306 ReadFloat(float & value)307bool Parcel::ReadFloat(float& value) 308 { 309 if (g_setReadFloatErrorFlag) { 310 return false; 311 } 312 return true; 313 } 314 315 #ifdef ENABLE_MOCK_WRITE_STRING_VECTOR WriteStringVector(const std::vector<std::string> & val)316bool Parcel::WriteStringVector(const std::vector<std::string>& val) 317 { 318 (void)val; 319 if (val.size() == ERROR_SIZE) { 320 return false; 321 } 322 return true; 323 } 324 #endif 325 ReadStringVector(std::vector<std::string> * val)326bool Parcel::ReadStringVector(std::vector<std::string>* val) 327 { 328 if (g_setReadStringVectorErrorFlag) { 329 return false; 330 } 331 return true; 332 } 333 ReadString(std::string & val)334bool Parcel::ReadString(std::string& val) 335 { 336 if (g_setReadStringErrorFlag) { 337 return false; 338 } 339 return true; 340 } 341 } // namespace OHOS 342