1 // Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by an apache 2.0 license that can be
3 // found in the LICENSE file.
5 #include "common/pkgmgr_interface.h"
9 #include "common/app_query_interface.h"
11 namespace common_installer {
13 PkgMgrPtr PkgMgrInterface::Create(int argc, char** argv,
14 AppQueryInterface* interface) {
15 PkgMgrPtr instance(new PkgMgrInterface(interface));
16 int result = instance->InitInternal(argc, argv);
23 int PkgMgrInterface::InitInternal(int argc, char** argv) {
24 pi_ = pkgmgr_installer_new();
27 LOG(ERROR) << "Cannot create pkgmgr_installer object";
31 int result = pkgmgr_installer_receive_request(pi_, argc, argv);
33 LOG(ERROR) << "Cannot receive request. Invalid arguments?";
34 // no need to free pkgmgr_installer here. it will be freed in DTOR.
37 is_app_installed_ = false;
39 is_app_installed_ = query_interface_->IsAppInstalledByArgv(argc, argv);
44 PkgMgrInterface::~PkgMgrInterface() {
46 pkgmgr_installer_free(pi_);
49 RequestType PkgMgrInterface::GetRequestType() const {
50 switch (pkgmgr_installer_get_request_type(pi_)) {
51 case PKGMGR_REQ_INSTALL:
52 if (!is_app_installed_) {
53 return RequestType::Install;
55 return RequestType::Update;
57 case PKGMGR_REQ_UNINSTALL:
58 return RequestType::Uninstall;
59 case PKGMGR_REQ_REINSTALL:
60 return RequestType::Reinstall;
61 case PKGMGR_REQ_RECOVER:
62 return RequestType::Recovery;
64 return RequestType::Unknown;
68 const char* PkgMgrInterface::GetRequestInfo() const {
69 return pkgmgr_installer_get_request_info(pi_);
72 } // namespace common_installer