1eace7efcSopenharmony_ci/* 2eace7efcSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3eace7efcSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4eace7efcSopenharmony_ci * you may not use this file except in compliance with the License. 5eace7efcSopenharmony_ci * You may obtain a copy of the License at 6eace7efcSopenharmony_ci * 7eace7efcSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8eace7efcSopenharmony_ci * 9eace7efcSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10eace7efcSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11eace7efcSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12eace7efcSopenharmony_ci * See the License for the specific language governing permissions and 13eace7efcSopenharmony_ci * limitations under the License. 14eace7efcSopenharmony_ci */ 15eace7efcSopenharmony_ci 16eace7efcSopenharmony_ci#ifndef OHOS_AAFWK_DLP_STATE_ITME_H 17eace7efcSopenharmony_ci#define OHOS_AAFWK_DLP_STATE_ITME_H 18eace7efcSopenharmony_ci 19eace7efcSopenharmony_ci#include <list> 20eace7efcSopenharmony_ci 21eace7efcSopenharmony_ci#include "ability_record.h" 22eace7efcSopenharmony_ci#include "dlp_state_data.h" 23eace7efcSopenharmony_ci 24eace7efcSopenharmony_cinamespace OHOS { 25eace7efcSopenharmony_cinamespace AAFwk { 26eace7efcSopenharmony_ci/** 27eace7efcSopenharmony_ci * @class DlpStateItem 28eace7efcSopenharmony_ci * DlpStateItem,This class is used to record connection state of a process. 29eace7efcSopenharmony_ci */ 30eace7efcSopenharmony_ciclass DlpStateItem : public std::enable_shared_from_this<DlpStateItem> { 31eace7efcSopenharmony_cipublic: 32eace7efcSopenharmony_ci DlpStateItem(int32_t dlpUid, int32_t dlpPid); 33eace7efcSopenharmony_ci virtual ~DlpStateItem(); 34eace7efcSopenharmony_ci 35eace7efcSopenharmony_ci /** 36eace7efcSopenharmony_ci * add an opened dlp ability. 37eace7efcSopenharmony_ci * 38eace7efcSopenharmony_ci * @param record target dlp ability. 39eace7efcSopenharmony_ci * @param data output relationship data. 40eace7efcSopenharmony_ci * @return Returns true if need report relationship. 41eace7efcSopenharmony_ci */ 42eace7efcSopenharmony_ci bool AddDlpConnectionState(const std::shared_ptr<AbilityRecord> &record, AbilityRuntime::DlpStateData &data); 43eace7efcSopenharmony_ci 44eace7efcSopenharmony_ci /** 45eace7efcSopenharmony_ci * remove an closed dlp ability. 46eace7efcSopenharmony_ci * 47eace7efcSopenharmony_ci * @param record target dlp ability. 48eace7efcSopenharmony_ci * @param data output relationship data. 49eace7efcSopenharmony_ci * @return Returns true if need report relationship. 50eace7efcSopenharmony_ci */ 51eace7efcSopenharmony_ci bool RemoveDlpConnectionState(const std::shared_ptr<AbilityRecord> &record, AbilityRuntime::DlpStateData &data); 52eace7efcSopenharmony_ci 53eace7efcSopenharmony_ci int32_t GetDlpUid() const; 54eace7efcSopenharmony_ci int32_t GetOpenedAbilitySize() const; 55eace7efcSopenharmony_ci 56eace7efcSopenharmony_ciprivate: 57eace7efcSopenharmony_ci DISALLOW_COPY_AND_MOVE(DlpStateItem); 58eace7efcSopenharmony_ci 59eace7efcSopenharmony_ci bool HandleDlpConnectionState(const std::shared_ptr<AbilityRecord> &record, bool isAdd, 60eace7efcSopenharmony_ci AbilityRuntime::DlpStateData &data); 61eace7efcSopenharmony_ci void GenerateDlpStateData(const std::shared_ptr<AbilityRecord> &dlpAbility, AbilityRuntime::DlpStateData &data); 62eace7efcSopenharmony_ci 63eace7efcSopenharmony_ci int32_t dlpUid_ = 0; 64eace7efcSopenharmony_ci int32_t dlpPid_ = 0; 65eace7efcSopenharmony_ci std::list<sptr<IRemoteObject>> dlpAbilities_; 66eace7efcSopenharmony_ci}; 67eace7efcSopenharmony_ci} // namespace AAFwk 68eace7efcSopenharmony_ci} // namespace OHOS 69eace7efcSopenharmony_ci#endif // OHOS_AAFWK_DLP_STATE_ITME_H 70