#include <vector>
#include "pkgmgrinfo_private.h"
+#include "pkgmgr-info.h"
namespace pkgmgr_common {
namespace parcel {
-std::unique_ptr<pkgmgr_certinfo_x> CertInfoParcelable::GetCertInfo() {
- return nullptr;
+CertInfoParcelable::CertInfoParcelable(pkgmgr_certinfo_x *cert_info)
+ : cert_info_(cert_info) {}
+
+CertInfoParcelable::~CertInfoParcelable() {
+ pkgmgrinfo_pkginfo_destroy_certinfo(cert_info_);
+}
+
+const pkgmgr_certinfo_x *CertInfoParcelable::GetCertInfo() {
+ return cert_info_;
+}
+
+void CertInfoParcelable::WriteToParcel(tizen_base::Parcel* parcel) const {
+ WriteCertInfo(parcel, cert_info_);
+}
+
+void CertInfoParcelable::ReadFromParcel(tizen_base::Parcel* parcel) {
+ ReadCertInfo(parcel);
}
-bool CertInfoParcelable::SetCertInfo(std::unique_ptr<pkgmgr_certinfo_x> certinfo) {
+bool CertInfoParcelable::WriteCertInfo(tizen_base::Parcel* parcel, pkgmgr_certinfo_x *cert_info) const {
+ WriteInt(parcel, cert_info->for_all_users);
+ WriteString(parcel, cert_info->pkgid);
+ WriteString(parcel, cert_info->cert_value);
+ for (int i = 0; i < MAX_CERT_TYPE; ++i)
+ WriteString(parcel, cert_info->cert_info[i]);
+ for (int i = 0; i < MAX_CERT_TYPE; ++i)
+ WriteInt(parcel, cert_info->cert_id[i]);
+
return true;
}
-std::unique_ptr<AbstractParcelable> CertInfoParcelable::Deserialize(
- std::vector<unsigned char> data) {
- return nullptr;
+void CertInfoParcelable::ReadCertInfo(tizen_base::Parcel* parcel) {
+ cert_info_ = reinterpret_cast<pkgmgr_certinfo_x *>(calloc(1, sizeof(pkgmgr_certinfo_x)));
+ ReadInt(parcel, &cert_info_->for_all_users);
+ ReadString(parcel, &cert_info_->pkgid);
+ ReadString(parcel, &cert_info_->cert_value);
+ for (int i = 0; i < MAX_CERT_TYPE; ++i)
+ ReadString(parcel, &cert_info_->cert_info[i]);
+ for (int i = 0; i < MAX_CERT_TYPE; ++i)
+ ReadInt(parcel, &cert_info_->cert_id[i]);
}
std::unique_ptr<AbstractParcelable> CertInfoParcelable::Factory::CreateParcel() {
public:
std::unique_ptr<AbstractParcelable> CreateParcel();
};
- std::unique_ptr<pkgmgr_certinfo_x> GetCertInfo();
- bool SetCertInfo(std::unique_ptr<pkgmgr_certinfo_x> certinfo);
- std::unique_ptr<AbstractParcelable> Deserialize(std::vector<unsigned char> data);
-
- virtual void WriteToParcel(tizen_base::Parcel* parcel) const {
- parcel->WriteString("test");
- parcel->WriteUInt32(32);
- }
-
- virtual void ReadFromParcel(tizen_base::Parcel* parcel) {
- std::string a = parcel->ReadString();
- unsigned int b;
- parcel->ReadUInt32(&b);
- }
+
+ CertInfoParcelable() = default;
+ CertInfoParcelable(pkgmgr_certinfo_x *cert_info);
+ ~CertInfoParcelable();
+ const pkgmgr_certinfo_x *GetCertInfo();
+
+ void WriteToParcel(tizen_base::Parcel* parcel) const override;
+ void ReadFromParcel(tizen_base::Parcel* parcel) override;
+
+ private:
+ bool WriteCertInfo(tizen_base::Parcel* parcel, pkgmgr_certinfo_x *cert_info) const;
+ void ReadCertInfo(tizen_base::Parcel* parcel);
+
+ pkgmgr_certinfo_x *cert_info_;
};
} // namespace parcel
std::cout << "bbbbbb" << std::endl;
}
}
+
+pkgmgr_certinfo_x *GetTestCertInfo() {
+ pkgmgr_certinfo_x *cert_info;
+ cert_info = reinterpret_cast<pkgmgr_certinfo_x*>(calloc(1, sizeof(pkgmgr_certinfo_x)));
+
+ cert_info->for_all_users = 1;
+ cert_info->pkgid = strdup("test_pkgid");
+ cert_info->cert_value = strdup("test_cert_value");
+ for (int i = 0; i < MAX_CERT_TYPE; ++i) {
+ char buf[1024] = { 0, };
+ snprintf(buf, sizeof(buf), "test_cert_info_%d", i);
+ cert_info->cert_info[i] = strdup(buf);
+ }
+ for (int i = 0; i < MAX_CERT_TYPE; ++i) {
+ cert_info->cert_id[i] = i + 1000;
+ }
+
+ return cert_info;
+}
+
+bool IsEqualCertInfo(const pkgmgr_certinfo_x *certA,
+ const pkgmgr_certinfo_x *certB) {
+ INT_EQ(certA->for_all_users, certB->for_all_users);
+ STR_EQ(certA->pkgid, certB->pkgid);
+ STR_EQ(certA->cert_value, certB->cert_value);
+ for (int i = 0; i < MAX_CERT_TYPE; ++i)
+ STR_EQ(certA->cert_info[i], certB->cert_info[i]);
+ for (int i = 0; i < MAX_CERT_TYPE; ++i)
+ INT_EQ(certA->cert_id[i], certB->cert_id[i]);
+}
bool IsEqualFilter(const pkgmgrinfo_filter_x *filterA,
const pkgmgrinfo_filter_x *filterB);
+
+pkgmgr_certinfo_x *GetTestCertInfo();
+
+bool IsEqualCertInfo(const pkgmgr_certinfo_x *certA,
+ const pkgmgr_certinfo_x *certB);
origin_parcelable.GetFilter(), new_parcelable.GetFilter()));
EXPECT_EQ(origin_parcelable.GetFlag(), new_parcelable.GetFlag());
}
+
+TEST_F(ParcelTest, CertInfoParcelable) {
+ tizen_base::Parcel parcel;
+ pkgmgr_certinfo_x *certinfo = GetTestCertInfo();
+
+ pp::CertInfoParcelable origin_parcelable(certinfo);
+ pp::CertInfoParcelable new_parcelable;
+ parcel.WriteParcelable(origin_parcelable);
+ parcel.ReadParcelable(&new_parcelable);
+
+ EXPECT_TRUE(IsEqualCertInfo(
+ origin_parcelable.GetCertInfo(), new_parcelable.GetCertInfo()));
+}