Group privilege check refactoring
[platform/core/test/security-tests.git] / src / security-manager-tests / common / scoped_app_launcher.h
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 #pragma once
17
18 #include <functional>
19
20 #include <app_install_helper.h>
21 #include <synchronization_pipe.h>
22
23 class ScopedAppLauncher final {
24 public:
25     explicit ScopedAppLauncher(const AppInstallHelper& app,
26                                const std::function<void(void)>& runInAppContext = []{});
27     ~ScopedAppLauncher();
28
29     ScopedAppLauncher(const ScopedAppLauncher&) = delete;
30     ScopedAppLauncher& operator=(const ScopedAppLauncher&) = delete;
31
32 private:
33     SynchronizationPipe m_syncPipe;
34     pid_t m_pid;
35     const uid_t m_uid;
36     const std::string m_appId;
37 };