1/*
2 * Copyright (c) 2024 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#include "native_inputmethod_utils.h"
16#include <map>
17
18#include "global.h"
19using namespace OHOS::MiscServices;
20static const std::map<int32_t, InputMethod_ErrorCode> ERROR_CODE_MAP = {
21    { ErrorCode::NO_ERROR,                           IME_ERR_OK             },
22    { ErrorCode::ERROR_CONTROLLER_INVOKING_FAILED,   IME_ERR_CONTROLLER     },
23    { ErrorCode::ERROR_REMOTE_CLIENT_DIED,           IME_ERR_IMCLIENT       },
24    { ErrorCode::ERROR_CLIENT_NOT_FOUND,             IME_ERR_IMCLIENT       },
25    { ErrorCode::ERROR_CLIENT_NULL_POINTER,          IME_ERR_IMCLIENT       },
26    { ErrorCode::ERROR_CLIENT_NOT_FOCUSED,           IME_ERR_IMCLIENT       },
27    { ErrorCode::ERROR_CLIENT_NOT_EDITABLE,          IME_ERR_IMCLIENT       },
28    { ErrorCode::ERROR_CLIENT_NOT_BOUND,             IME_ERR_DETACHED       },
29    { ErrorCode::ERROR_CLIENT_ADD_FAILED,            IME_ERR_IMCLIENT       },
30    { ErrorCode::ERROR_NULL_POINTER,                 IME_ERR_IMMS           },
31    { ErrorCode::ERROR_BAD_PARAMETERS,               IME_ERR_IMMS           },
32    { ErrorCode::ERROR_SERVICE_START_FAILED,         IME_ERR_IMMS           },
33    { ErrorCode::ERROR_IME_START_FAILED,             IME_ERR_IMMS           },
34    { ErrorCode::ERROR_KBD_SHOW_FAILED,              IME_ERR_IMMS           },
35    { ErrorCode::ERROR_KBD_HIDE_FAILED,              IME_ERR_IMMS           },
36    { ErrorCode::ERROR_IME_NOT_STARTED,              IME_ERR_IMMS           },
37    { ErrorCode::ERROR_EX_NULL_POINTER,              IME_ERR_IMMS           },
38    { ErrorCode::ERROR_PACKAGE_MANAGER,              IME_ERR_PACKAGEMANAGER },
39    { ErrorCode::ERROR_EX_UNSUPPORTED_OPERATION,     IME_ERR_IMMS           },
40    { ErrorCode::ERROR_EX_SERVICE_SPECIFIC,          IME_ERR_IMMS           },
41    { ErrorCode::ERROR_EX_PARCELABLE,                IME_ERR_IMMS           },
42    { ErrorCode::ERROR_EX_ILLEGAL_ARGUMENT,          IME_ERR_IMMS           },
43    { ErrorCode::ERROR_EX_ILLEGAL_STATE,             IME_ERR_IMMS           },
44    { ErrorCode::ERROR_IME_START_INPUT_FAILED,       IME_ERR_IMMS           },
45    { ErrorCode::ERROR_IME,                          IME_ERR_IMENGINE       },
46    { ErrorCode::ERROR_PARAMETER_CHECK_FAILED,       IME_ERR_PARAMCHECK     },
47    { ErrorCode::ERROR_ENABLE_IME,                   IME_ERR_IMMS           },
48    { ErrorCode::ERROR_NOT_CURRENT_IME,              IME_ERR_IMMS           },
49    { ErrorCode::ERROR_GET_TEXT_CONFIG,              IME_ERR_IMCLIENT       },
50    { ErrorCode::ERROR_INVALID_PRIVATE_COMMAND_SIZE, IME_ERR_PARAMCHECK     },
51    { ErrorCode::ERROR_TEXT_LISTENER_ERROR,          IME_ERR_IMCLIENT       },
52    { ErrorCode::ERROR_INVALID_RANGE,                IME_ERR_PARAMCHECK     },
53};
54
55InputMethod_ErrorCode ErrorCodeConvert(int32_t code)
56{
57    IMSA_HILOGD("Convert start.");
58    auto iter = ERROR_CODE_MAP.find(code);
59    if (iter != ERROR_CODE_MAP.end()) {
60        IMSA_HILOGE("ErrorCode: %{public}d", iter->second);
61        return iter->second;
62    }
63    IMSA_HILOGD("Convert end.");
64    return IME_ERR_UNDEFINED;
65}