Fix Parcelable (#87)
author김일호/Tizen Platform Lab(SR)/Engineer/삼성전자 <ilho159.kim@samsung.com>
Wed, 3 Mar 2021 04:37:36 +0000 (13:37 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 3 Mar 2021 04:37:36 +0000 (13:37 +0900)
* Fix Parcelable

- add ExtractPkgInfo() in PkgInfoParcelable
- FilterParcelable doesn't need to handle pkgmgrinfo_filter_x*

Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
src/common/parcel/appinfo_parcelable.cc
src/common/parcel/appinfo_parcelable.hh
src/common/parcel/certinfo_parcelable.cc
src/common/parcel/certinfo_parcelable.hh
src/common/parcel/filter_parcelable.cc
src/common/parcel/filter_parcelable.hh
src/common/parcel/pkginfo_parcelable.cc
src/common/parcel/pkginfo_parcelable.hh

index da23712..5fb73b7 100644 (file)
@@ -381,18 +381,16 @@ AppInfoParcelable::AppInfoParcelable()
     : AbstractParcelable(0, ParcelableType::AppInfo) {}
 
 AppInfoParcelable::AppInfoParcelable(std::vector<application_x *>&& app_list)
-    : app_list_(std::move(app_list)) {}
-
-AppInfoParcelable::~AppInfoParcelable() {
-  for (auto app : app_list_) {
-    pkgmgrinfo_basic_free_application(app);
-  }
-}
+    : AbstractParcelable(0, ParcelableType::AppInfo), app_list_(std::move(app_list)) {}
 
 const std::vector<application_x *>& AppInfoParcelable::GetAppInfo() {
   return app_list_;
 }
 
+std::vector<application_x *>&& AppInfoParcelable::ExtractAppInfo() {
+  return std::move(app_list_);
+}
+
 application_x *AppInfoParcelable::ReadApplication(tizen_base::Parcel* parcel) {
   application_x* application =
       reinterpret_cast<application_x*>(calloc(1, sizeof(application_x)));
index 43bcead..26a3d51 100644 (file)
@@ -23,8 +23,8 @@ class EXPORT_API AppInfoParcelable : public AbstractParcelable {
 
   AppInfoParcelable();
   AppInfoParcelable(std::vector<application_x *>&& app_list);
-  ~AppInfoParcelable();
   const std::vector<application_x *>& GetAppInfo();
+  std::vector<application_x *>&&ExtractAppInfo();
 
   void WriteToParcel(tizen_base::Parcel* parcel) const override;
   void ReadFromParcel(tizen_base::Parcel* parcel) override;
index 5625334..619508b 100644 (file)
@@ -44,10 +44,6 @@ CertInfoParcelable::CertInfoParcelable(uid_t uid, pkgmgr_certinfo_x* cert_info,
       cert_info_(cert_info),
       pkgid_(pkgid) {}
 
-CertInfoParcelable::~CertInfoParcelable() {
-  pkgmgrinfo_pkginfo_destroy_certinfo(cert_info_);
-}
-
 const pkgmgr_certinfo_x* CertInfoParcelable::GetCertInfo() {
   return cert_info_;
 }
index 72946e9..a56bc02 100644 (file)
@@ -27,7 +27,6 @@ class EXPORT_API CertInfoParcelable : public AbstractParcelable {
   CertInfoParcelable(uid_t uid, pkgmgr_certinfo_x *cert_info);
   CertInfoParcelable(uid_t uid,
       pkgmgr_certinfo_x *cert_info, std::string pkgid);
-  ~CertInfoParcelable();
   const pkgmgr_certinfo_x *GetCertInfo();
   const std::string& GetPkgId();
 
index 688e7f9..ce00ccb 100644 (file)
@@ -36,10 +36,6 @@ FilterParcelable::FilterParcelable(uid_t uid, pkgmgrinfo_filter_x *filter,
       filter_(filter),
       flag_(flag) {}
 
-FilterParcelable::~FilterParcelable() {
-  pkgmgrinfo_pkginfo_filter_destroy(filter_);
-}
-
 const pkgmgrinfo_filter_x *FilterParcelable::GetFilter() { return filter_; }
 
 int FilterParcelable::GetFlag() { return flag_; }
index 4d0e7b2..f5719d4 100644 (file)
@@ -23,7 +23,6 @@ class EXPORT_API FilterParcelable : public AbstractParcelable {
 
   FilterParcelable();
   FilterParcelable(uid_t uid, pkgmgrinfo_filter_x *filter, int flag);
-  ~FilterParcelable();
   const pkgmgrinfo_filter_x* GetFilter();
   int GetFlag();
 
index e674bcf..82fba0b 100644 (file)
@@ -438,13 +438,8 @@ PkgInfoParcelable::PkgInfoParcelable()
     : AbstractParcelable(0, ParcelableType::PkgInfo) {}
 
 PkgInfoParcelable::PkgInfoParcelable(std::vector<package_x *>&& pkg_list)
-    : pkg_list_(std::move(pkg_list)) {}
-
-PkgInfoParcelable::~PkgInfoParcelable() {
-  for (auto pkg : pkg_list_) {
-    pkgmgrinfo_basic_free_package(pkg);
-  }
-}
+    : AbstractParcelable(0, ParcelableType::PkgInfo),
+        pkg_list_(std::move(pkg_list)) {}
 
 const std::vector<package_x *>& PkgInfoParcelable::GetPkgInfo() {
   return pkg_list_;
index db2afc5..04e7824 100644 (file)
@@ -23,8 +23,8 @@ class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
 
   PkgInfoParcelable();
   PkgInfoParcelable(std::vector<package_x *>&& pkg_list);
-  ~PkgInfoParcelable();
   const std::vector<package_x *>& GetPkgInfo();
+  std::vector<package_x *>&& ExtractPkgInfo();
 
   void WriteToParcel(tizen_base::Parcel* parcel) const override;
   void ReadFromParcel(tizen_base::Parcel* parcel) override;