Add test automation privilege operation
[platform/core/security/privacy-manager.git] / client / src / PrivacyManagerClient.cpp
1 /*\r
2  * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
3  *\r
4  *    Licensed under the Apache License, Version 2.0 (the "License");\r
5  *    you may not use this file except in compliance with the License.\r
6  *    You may obtain a copy of the License at\r
7  *\r
8  *        http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  *    Unless required by applicable law or agreed to in writing, software\r
11  *    distributed under the License is distributed on an "AS IS" BASIS,\r
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  *    See the License for the specific language governing permissions and\r
14  *    limitations under the License.\r
15  */\r
16 \r
17 #include <PrivacyManagerClient.h>\r
18 #include <PrivacyDb.h>\r
19 #include <SocketClient.h>\r
20 #include <PrivacyIdInfo.h>\r
21 #include <algorithm> \r
22 #include <memory>\r
23 #include <Utils.h>\r
24 \r
25 #undef __READ_DB_IPC__\r
26 \r
27 \r
28 std::mutex PrivacyManagerClient::m_singletonMutex;\r
29 PrivacyManagerClient* PrivacyManagerClient::m_pInstance = NULL;\r
30 const std::string PrivacyManagerClient::INTERFACE_NAME("PrivacyInfoService");\r
31 \r
32 PrivacyManagerClient::PrivacyManagerClient(void)\r
33 {\r
34         std::unique_ptr<SocketClient> pSocketClient(new SocketClient(INTERFACE_NAME));\r
35         m_pSocketClient = std::move(pSocketClient);\r
36 }\r
37 \r
38 PrivacyManagerClient*\r
39 PrivacyManagerClient::getInstance(void)\r
40 {\r
41         std::lock_guard<std::mutex> guard(m_singletonMutex);\r
42         if (m_pInstance == NULL)\r
43                 m_pInstance = new PrivacyManagerClient();\r
44         return m_pInstance;\r
45 }\r
46 \r
47 int\r
48 PrivacyManagerClient::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& list, bool privacyPopupRequired, bool isServerOperation)\r
49 {\r
50 \r
51         std::list < std::string > privacyList;\r
52 \r
53         int res = PrivacyIdInfo::getPrivacyIdListFromPrivilegeList(list, privacyList);\r
54         if (res != PRIV_MGR_ERROR_SUCCESS )\r
55                 return res;\r
56 \r
57         if (privacyList.size() == 0)\r
58                 return PRIV_MGR_ERROR_SUCCESS;\r
59 \r
60         if (isServerOperation == true)\r
61         {\r
62                 int result = PRIV_MGR_ERROR_SUCCESS;\r
63                 res = m_pSocketClient->connect();\r
64                 TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
65                 res = m_pSocketClient->call("addPrivacyInfo", pkgId, privacyList, privacyPopupRequired, &result);\r
66                 TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
67                 res = m_pSocketClient->disconnect();\r
68                 TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
69 \r
70                 return result;\r
71         }\r
72         else\r
73         {\r
74                 return PrivacyDb::getInstance()->addAppPackagePrivacyInfo(pkgId, privacyList, privacyPopupRequired);\r
75         }\r
76 }\r
77 \r
78 int\r
79 PrivacyManagerClient::removeAppPackagePrivacyInfo(const std::string pkgId, bool isServerOperation)\r
80 {\r
81         if (isServerOperation == true)\r
82         {\r
83                 int result = PRIV_MGR_ERROR_SUCCESS;\r
84                 int res = m_pSocketClient->connect();\r
85                 TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
86                 result = m_pSocketClient->call("removePrivacyInfo", pkgId, &result);\r
87                 TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
88                 result = m_pSocketClient->disconnect();\r
89                 TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
90 \r
91                 return result;\r
92         }\r
93         else\r
94                 return PrivacyDb::getInstance()->removeAppPackagePrivacyInfo(pkgId);\r
95 }\r
96 \r
97 int\r
98 PrivacyManagerClient::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool isEnabled)\r
99 {\r
100         int result = PRIV_MGR_ERROR_SUCCESS;\r
101         int res = m_pSocketClient->connect();\r
102         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
103         res = m_pSocketClient->call("setPrivacySetting", pkgId, privacyId, isEnabled, &result);\r
104         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
105         res = m_pSocketClient->disconnect();\r
106         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
107 \r
108         return result;\r
109 }\r
110         \r
111 int\r
112 PrivacyManagerClient::getPrivacyAppPackages(std::list < std::string >& list) const\r
113 {\r
114 #ifdef __READ_DB_IPC__\r
115 \r
116         std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
117 \r
118         int result = PRIV_MGR_ERROR_SUCCESS\r
119         int size = 0;\r
120 \r
121         int res = pSocketClient->connect();\r
122         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
123         res = pSocketClient->call("getPrivacyAppPackages", &result, &size, &list);\r
124         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
125         res = pSocketClient->disconnect();\r
126         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
127 \r
128         return result;\r
129 #endif\r
130 \r
131         return PrivacyDb::getInstance()->getPrivacyAppPackages(list);\r
132 }\r
133 \r
134 int\r
135 PrivacyManagerClient::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair <std::string, bool > > & list) const\r
136 {\r
137 #ifdef __READ_DB_IPC__\r
138         std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
139 \r
140         int result = PRIV_MGR_ERROR_SUCCESS;\r
141         int res = pSocketClient->connect();\r
142         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
143         pSocketClient->call("getAppPackagePrivacyInfo", pkgId, &result, &list);\r
144         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
145         pSocketClient->disconnect();\r
146         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
147 \r
148         return result;\r
149 #endif \r
150 \r
151         return PrivacyDb::getInstance()->getAppPackagePrivacyInfo(pkgId, list);\r
152 }\r
153 \r
154 int\r
155 PrivacyManagerClient::isUserPrompted(const std::string pkgId, bool& isPrompted) const\r
156 {\r
157 #ifdef __READ_DB_IPC__\r
158         LOGI("enter");\r
159 \r
160         std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
161 \r
162         int result = PRIV_MGR_ERROR_SUCCESS;\r
163         int res = pSocketClient->connect();\r
164         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
165         res = pSocketClient->call("isUserPrompted", pkgId, &result, &isPrompted);\r
166         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
167         res = pSocketClient->disconnect();\r
168         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
169 \r
170         LOGI("leave");\r
171 \r
172         return result;\r
173 #endif\r
174         return PrivacyDb::getInstance()->isUserPrompted(pkgId, isPrompted);\r
175 }\r
176 \r
177 int\r
178 PrivacyManagerClient::setUserPrompted(const std::string pkgId, bool prompted)\r
179 {\r
180         LOGI("enter");\r
181 \r
182         std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
183 \r
184         int result = PRIV_MGR_ERROR_SUCCESS;\r
185         int res = pSocketClient->connect();\r
186         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
187         res = pSocketClient->call("setUserPrompted", pkgId, prompted, &result);\r
188         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
189         res = pSocketClient->disconnect();\r
190         TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
191 \r
192         LOGI("leave");\r
193 \r
194         return result;\r
195 }\r
196 \r
197 int\r
198 PrivacyManagerClient::getAppPackagesbyPrivacyId(const std::string privacyId, std::list < std::pair < std::string, bool > >& list) const\r
199 {\r
200         return PrivacyDb::getInstance()->getAppPackagesbyPrivacyId(privacyId, list);\r
201 }\r
202 \r
203 int\r
204 PrivacyManagerClient::getPrivaycDisplayName(const std::string privacyId, std::string& displayName) const\r
205 {\r
206         return PrivacyIdInfo::getPrivaycDisplayName(privacyId, displayName);\r
207 }\r
208 \r
209 int\r
210 PrivacyManagerClient::getPrivaycDescription(const std::string privacyId, std::string& description) const\r
211 {\r
212         return PrivacyIdInfo::getPrivaycDescription(privacyId, description);\r
213 }\r