• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 "form_refresh/strategy/refresh_check_mgr.h"
17 
18 #include "fms_log_wrapper.h"
19 #include "form_refresh/check_mgr/system_app_checker.h"
20 #include "form_refresh/check_mgr/self_form_checker.h"
21 #include "form_refresh/check_mgr/calling_user_checker.h"
22 #include "form_refresh/check_mgr/calling_bundle_checker.h"
23 #include "form_refresh/check_mgr/active_user_checker.h"
24 #include "form_refresh/check_mgr/add_finish_checker.h"
25 #include "form_refresh/check_mgr/untrust_app_checker.h"
26 
27 namespace OHOS {
28 namespace AppExecFwk {
29 
RefreshCheckMgr()30 RefreshCheckMgr::RefreshCheckMgr() {}
~RefreshCheckMgr()31 RefreshCheckMgr::~RefreshCheckMgr() {}
32 
33 const static std::map<int32_t, IBaseChecker *> checkerMap = {
34     { TYPE_SYSTEM_APP, &SystemAppChecker::GetInstance() },
35     { TYPE_SELF_FORM, &SelfFormChecker::GetInstance() },
36     { TYPE_CALLING_USER, &CallingUserChecker::GetInstance() },
37     { TYPE_CALLING_BUNDLE, &CallingBundleChecker::GetInstance() },
38     { TYPE_ACTIVE_USER, &ActiveUserChecker::GetInstance() },
39     { TYPE_ADD_FINISH, &AddFinishChecker::GetInstance() },
40     { TYPE_UNTRUST_APP, &UntrustAppChecker::GetInstance() },
41 };
42 
IsBaseValidPass(const std::vector<int32_t> & types,const CheckValidFactor & factor)43 int RefreshCheckMgr::IsBaseValidPass(const std::vector<int32_t> &types, const CheckValidFactor &factor)
44 {
45     if (types.empty()) {
46         HILOG_INFO("the refresh task need't check valid, formId:%{public}" PRId64, factor.formId);
47         return ERR_OK;
48     }
49 
50     int ret = ERR_OK;
51     for (const auto type : types) {
52         ret = HandleCheckValid(factor, type);
53         if (ret != ERR_OK) {
54             // If a check fails, return directly.
55             return ret;
56         }
57     }
58     return ret;
59 }
60 
HandleCheckValid(const CheckValidFactor & factor,const int32_t checkType)61 int RefreshCheckMgr::HandleCheckValid(const CheckValidFactor &factor, const int32_t checkType)
62 {
63     HILOG_DEBUG("checkType:%{public}d, formId:%{public}" PRId64, checkType, factor.formId);
64     auto it = checkerMap.find(checkType);
65     if (it != checkerMap.end()) {
66         return it->second->CheckValid(factor);
67     } else {
68         HILOG_ERROR("invalid checkType");
69         return ERR_APPEXECFWK_FORM_INVALID_PARAM;
70     }
71 }
72 
73 } // namespace AppExecFwk
74 } // namespace OHOS