2 * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
17 #include <PrivacyManagerClient.h>
\r
18 #include <SocketClient.h>
\r
19 #include <PrivacyIdInfo.h>
\r
20 #include <algorithm>
\r
24 std::mutex PrivacyManagerClient::m_singletonMutex;
\r
25 PrivacyManagerClient* PrivacyManagerClient::m_pInstance = NULL;
\r
26 const std::string PrivacyManagerClient::INTERFACE_NAME("PrivacyInfoService");
\r
28 PrivacyManagerClient::PrivacyManagerClient(void)
\r
30 std::unique_ptr<SocketClient> pSocketClient(new SocketClient(INTERFACE_NAME));
\r
31 m_pSocketClient = std::move(pSocketClient);
\r
34 PrivacyManagerClient*
\r
35 PrivacyManagerClient::getInstance(void)
\r
37 std::lock_guard<std::mutex> guard(m_singletonMutex);
\r
38 if (m_pInstance == NULL)
\r
39 m_pInstance = new PrivacyManagerClient();
\r
44 PrivacyManagerClient::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& pList)
\r
47 std::list < std::string > privacyList;
\r
49 int res = PrivacyIdInfo::getPrivacyIdListFromPrivilegeList(pList, privacyList);
\r
50 if (res != PRIV_MGR_ERROR_SUCCESS )
\r
53 if (privacyList.size() == 0)
\r
54 return PRIV_MGR_ERROR_SUCCESS;
\r
56 #ifdef __READ_DB_IPC__
\r
57 m_pSocketClient->connect();
\r
58 m_pSocketClient->call("addPrivacyInfo", pkgId, privacyList, &result);
\r
59 m_pSocketClient->disconnect();
\r
65 static const std::string pkgInfoQuery("INSERT INTO PackageInfo(PKG_ID, IS_SET) VALUES(?, ?)");
\r
66 static const std::string privacyQuery("INSERT INTO PrivacyInfo(PKG_ID, PRIVACY_ID, IS_ENABLED) VALUES(?, ?, ?)");
\r
68 openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);
\r
69 prepareDb(pDbHandler, pkgInfoQuery.c_str(), pPkgInfoStmt);
\r
71 res = sqlite3_bind_text(pPkgInfoStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);
\r
72 TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);
\r
74 res = sqlite3_bind_int(pPkgInfoStmt.get(), 2, 0);
\r
75 TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);
\r
77 res = sqlite3_step(pPkgInfoStmt.get());
\r
78 TryReturn( res == SQLITE_DONE || res == SQLITE_CONSTRAINT, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);
\r
80 prepareDb(pDbHandler, privacyQuery.c_str(), pPrivacyStmt);
\r
81 for ( std::list <std::string>::const_iterator iter = privacyList.begin(); iter != privacyList.end(); ++iter)
\r
83 LOGD(" install privacy: %s", iter->c_str());
\r
85 res = sqlite3_bind_text(pPrivacyStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);
\r
86 TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);
\r
88 res = sqlite3_bind_text(pPrivacyStmt.get(), 2, iter->c_str(), -1, SQLITE_TRANSIENT);
\r
89 TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);
\r
91 // Before setting app and popup is ready, default value is true
\r
92 res = sqlite3_bind_int(pPrivacyStmt.get(), 3, 1);
\r
93 TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);
\r
95 res = sqlite3_step(pPrivacyStmt.get());
\r
96 TryReturn( res == SQLITE_DONE || res == SQLITE_CONSTRAINT, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);
\r
98 sqlite3_reset(pPrivacyStmt.get());
\r
106 PrivacyManagerClient::removeAppPackagePrivacyInfo(const std::string pkgId)
\r
109 m_pSocketClient->connect();
\r
110 m_pSocketClient->call("removePrivacyInfo", pkgId, &result);
\r
111 m_pSocketClient->disconnect();
\r
117 PrivacyManagerClient::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool isEnabled)
\r
120 m_pSocketClient->connect();
\r
121 m_pSocketClient->call("setPrivacySetting", pkgId, privacyId, isEnabled, &result);
\r
122 m_pSocketClient->disconnect();
\r
128 PrivacyManagerClient::getPrivacyAppPackages(std::list < std::string >& pList)
\r
132 SocketClient* p = new SocketClient(INTERFACE_NAME);
\r
134 p->call("getPrivacyAppPackages", &result, &size, &pList);
\r
141 PrivacyManagerClient::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair <std::string, bool > > & list)
\r
144 std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));
\r
147 pSocketClient->connect();
\r
148 pSocketClient->call("getAppPackagePrivacyInfo", pkgId, &result, &list);
\r
150 pSocketClient->disconnect();
\r
152 for (std::list < std::pair <std::string, bool > >::const_iterator iter = list.begin(); iter != list.end(); ++iter){
\r
153 LOGD(" %s : %d", iter->first.c_str(), iter->second);
\r
160 PrivacyManagerClient::isUserPrompted(const std::string pkgId, bool& isPrompted)
\r
164 std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));
\r
167 pSocketClient->connect();
\r
168 pSocketClient->call("isUserPrompted", pkgId, &result, &isPrompted);
\r
169 pSocketClient->disconnect();
\r
177 PrivacyManagerClient::setUserPrompted(const std::string pkgId, bool prompted)
\r
181 std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));
\r
184 pSocketClient->connect();
\r
185 pSocketClient->call("setUserPrompted", pkgId, prompted, &result);
\r
186 pSocketClient->disconnect();
\r