• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "quick_fix_error_utils.h"
17 
18 #include <map>
19 
20 namespace OHOS {
21 namespace AAFwk {
22 namespace {
23 const std::map<int32_t, int32_t> INTERNAL_ERR_CODE_MAP = {
24     { QUICK_FIX_OK,                         ERR_OK },
25     { QUICK_FIX_WRITE_PARCEL_FAILED,        ERR_QUICKFIX_INTERNAL_ERROR },
26     { QUICK_FIX_READ_PARCEL_FAILED,         ERR_QUICKFIX_INTERNAL_ERROR },
27     { QUICK_FIX_SEND_REQUEST_FAILED,        ERR_QUICKFIX_INTERNAL_ERROR },
28     { QUICK_FIX_COPY_FILES_FAILED,          ERR_QUICKFIX_HQF_INVALID },
29     { QUICK_FIX_INVALID_PARAM,              ERR_QUICKFIX_PARAM_INVALID },
30     { QUICK_FIX_CONNECT_FAILED,             ERR_QUICKFIX_INTERNAL_ERROR },
31     { QUICK_FIX_VERIFY_PERMISSION_FAILED,   ERR_QUICKFIX_PERMISSION_DENIED },
32     { QUICK_FIX_GET_BUNDLE_INFO_FAILED,     ERR_QUICKFIX_BUNDLE_NAME_INVALID },
33     { QUICK_FIX_DEPLOY_FAILED,              ERR_QUICKFIX_HQF_DEPLOY_FAILED },
34     { QUICK_FIX_SWICH_FAILED,               ERR_QUICKFIX_HQF_SWITCH_FAILED },
35     { QUICK_FIX_DELETE_FAILED,              ERR_QUICKFIX_HQF_DELETE_FAILED },
36     { QUICK_FIX_NOTIFY_LOAD_PATCH_FAILED,   ERR_QUICKFIX_LOAD_PATCH_FAILED },
37     { QUICK_FIX_NOTIFY_RELOAD_PAGE_FAILED,  ERR_QUICKFIX_INTERNAL_ERROR },
38     { QUICK_FIX_REGISTER_OBSERVER_FAILED,   ERR_QUICKFIX_INTERNAL_ERROR },
39     { QUICK_FIX_APPMGR_INVALID,             ERR_QUICKFIX_INTERNAL_ERROR },
40     { QUICK_FIX_BUNDLEMGR_INVALID,          ERR_QUICKFIX_INTERNAL_ERROR },
41     { QUICK_FIX_SET_INFO_FAILED,            ERR_QUICKFIX_INTERNAL_ERROR },
42     { QUICK_FIX_PROCESS_TIMEOUT,            ERR_QUICKFIX_INTERNAL_ERROR },
43     { QUICK_FIX_NOTIFY_UNLOAD_PATCH_FAILED, ERR_QUICKFIX_UNLOAD_PATCH_FAILED },
44 };
45 
46 const std::map<int32_t, std::string> INTERNAL_ERR_MSG_MAP = {
47     { QUICK_FIX_WRITE_PARCEL_FAILED,       "Write parcel failed." },
48     { QUICK_FIX_READ_PARCEL_FAILED,        "Read parcel failed." },
49     { QUICK_FIX_SEND_REQUEST_FAILED,       "Send request failed." },
50     { QUICK_FIX_CONNECT_FAILED,            "Connect failed." },
51     { QUICK_FIX_NOTIFY_RELOAD_PAGE_FAILED, "Reload page failed." },
52     { QUICK_FIX_REGISTER_OBSERVER_FAILED,  "Register observer failed." },
53     { QUICK_FIX_APPMGR_INVALID,            "AppMgr invalid." },
54     { QUICK_FIX_BUNDLEMGR_INVALID,         "BundleMgr invalid." },
55     { QUICK_FIX_SET_INFO_FAILED,           "Set quickfix info failed." },
56     { QUICK_FIX_PROCESS_TIMEOUT,           "Process timeout." },
57 };
58 
59 const std::map<int32_t, std::string> EXTERNAL_ERR_MSG_MAP = {
60     { ERR_OK,                           "Success." },
61     { ERR_QUICKFIX_PERMISSION_DENIED,   "The application does not have permission to call the interface." },
62     { ERR_QUICKFIX_PARAM_INVALID,       "Invalid input parameter." },
63     { ERR_QUICKFIX_BUNDLE_NAME_INVALID, "The specified bundleName is invalid." },
64     { ERR_QUICKFIX_HQF_INVALID,         "The specified hqf is invalid. Hqf may not exist or inaccessible." },
65     { ERR_QUICKFIX_HQF_DEPLOY_FAILED,   "Deploy hqf failed." },
66     { ERR_QUICKFIX_HQF_SWITCH_FAILED,   "Switch hqf failed." },
67     { ERR_QUICKFIX_HQF_DELETE_FAILED,   "Delete hqf failed." },
68     { ERR_QUICKFIX_LOAD_PATCH_FAILED,   "Load patch failed." },
69     { ERR_QUICKFIX_UNLOAD_PATCH_FAILED, "Unload patch failed." },
70     { ERR_QUICKFIX_INTERNAL_ERROR,      "Internal error." },
71 };
72 } // namespace
73 
GetErrorCode(int32_t errCode)74 int32_t QuickFixErrorUtil::GetErrorCode(int32_t errCode)
75 {
76     // no need to convert is errCode is external error code.
77     auto iter = EXTERNAL_ERR_MSG_MAP.find(errCode);
78     if (iter != EXTERNAL_ERR_MSG_MAP.end()) {
79         return errCode;
80     }
81 
82     auto iterInternal = INTERNAL_ERR_CODE_MAP.find(errCode);
83     if (iterInternal != INTERNAL_ERR_CODE_MAP.end()) {
84         return iterInternal->second;
85     }
86 
87     return ERR_QUICKFIX_INTERNAL_ERROR;
88 }
89 
GetErrorMessage(int32_t errCode)90 std::string QuickFixErrorUtil::GetErrorMessage(int32_t errCode)
91 {
92     std::string errMsg;
93     auto externalErrCode = GetErrorCode(errCode);
94     auto iter = EXTERNAL_ERR_MSG_MAP.find(externalErrCode);
95     if (iter != EXTERNAL_ERR_MSG_MAP.end()) {
96         errMsg = iter->second;
97     } else {
98         errMsg = EXTERNAL_ERR_MSG_MAP.at(ERR_QUICKFIX_INTERNAL_ERROR);
99     }
100 
101     auto iterInternal = INTERNAL_ERR_MSG_MAP.find(errCode);
102     if (iterInternal != INTERNAL_ERR_MSG_MAP.end()) {
103         errMsg += " " + iterInternal->second;
104     }
105 
106     return errMsg;
107 }
108 } // namespace AAFwk
109 } // namespace OHOS