15e81a82fSopenharmony_ci/*
25e81a82fSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
35e81a82fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
45e81a82fSopenharmony_ci * you may not use this file except in compliance with the License.
55e81a82fSopenharmony_ci * You may obtain a copy of the License at
65e81a82fSopenharmony_ci *
75e81a82fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
85e81a82fSopenharmony_ci *
95e81a82fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
105e81a82fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
115e81a82fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
125e81a82fSopenharmony_ci * See the License for the specific language governing permissions and
135e81a82fSopenharmony_ci * limitations under the License.
145e81a82fSopenharmony_ci * Description: add permission utils
155e81a82fSopenharmony_ci * Author: zhangge
165e81a82fSopenharmony_ci * Create: 2023-05-11
175e81a82fSopenharmony_ci */
185e81a82fSopenharmony_ci
195e81a82fSopenharmony_ci#ifndef CAST_SERVICE_PERMISSION_H
205e81a82fSopenharmony_ci#define CAST_SERVICE_PERMISSION_H
215e81a82fSopenharmony_ci
225e81a82fSopenharmony_ci#include "cast_engine_common.h"
235e81a82fSopenharmony_ci#include <vector>
245e81a82fSopenharmony_ci#include <mutex>
255e81a82fSopenharmony_ci#include "ipc_skeleton.h"
265e81a82fSopenharmony_ci
275e81a82fSopenharmony_cinamespace OHOS {
285e81a82fSopenharmony_cinamespace CastEngine {
295e81a82fSopenharmony_cinamespace CastEngineService {
305e81a82fSopenharmony_ciclass Permission {
315e81a82fSopenharmony_cipublic:
325e81a82fSopenharmony_ci    static bool CheckMirrorPermission();
335e81a82fSopenharmony_ci    static bool CheckStreamPermission();
345e81a82fSopenharmony_ci    static bool CheckPidPermission();
355e81a82fSopenharmony_ci    static void SavePid(pid_t pid);
365e81a82fSopenharmony_ci    static void RemovePid(pid_t pid);
375e81a82fSopenharmony_ci    static void ClearPids();
385e81a82fSopenharmony_ci    static void SaveMirrorAppInfo(std::tuple<int32_t, uint32_t, int32_t> appInfo);
395e81a82fSopenharmony_ci    static std::tuple<int32_t, uint32_t, int32_t> GetMirrorAppInfo();
405e81a82fSopenharmony_ci
415e81a82fSopenharmony_ciprivate:
425e81a82fSopenharmony_ci    static std::mutex pidLock_;
435e81a82fSopenharmony_ci    static std::vector<pid_t> pids_;
445e81a82fSopenharmony_ci    static int32_t appUid_;
455e81a82fSopenharmony_ci    static uint32_t appTokenId_;
465e81a82fSopenharmony_ci    static int32_t appPid_;
475e81a82fSopenharmony_ci};
485e81a82fSopenharmony_ci} // namespace CastEngineService
495e81a82fSopenharmony_ci} // namespace CastEngine
505e81a82fSopenharmony_ci} // namespace OHOS
515e81a82fSopenharmony_ci
525e81a82fSopenharmony_ci#endif