ExportResult implement Parcelable interface
Simplify the code and prepare for the switch to cpp-aidl generated
interface, proxy and stub file.
Change-Id: I6873ee376642e62aff8cd88da7bdcb6f16d30df7
Signed-off-by: Bin Chen <pierr.chen@gmail.com>
diff --git a/keystore/IKeystoreService.cpp b/keystore/IKeystoreService.cpp
index 6507f79..2996659 100644
--- a/keystore/IKeystoreService.cpp
+++ b/keystore/IKeystoreService.cpp
@@ -105,7 +105,8 @@
ExportResult::~ExportResult() {
}
-void ExportResult::readFromParcel(const Parcel& in) {
+status_t ExportResult::readFromParcel(const Parcel* inn) {
+ const Parcel& in = *inn;
resultCode = in.readInt32();
ssize_t length = in.readInt32();
dataLength = 0;
@@ -123,9 +124,10 @@
ALOGE("Failed to readInplace ExportData data");
}
}
+ return OK;
}
-void ExportResult::writeToParcel(Parcel* out) const {
+status_t ExportResult::writeToParcel(Parcel* out) const {
out->writeInt32(resultCode);
out->writeInt32(dataLength);
if (exportData && dataLength) {
@@ -136,6 +138,7 @@
ALOGE("Failed to writeInplace ExportResult data.");
}
}
+ return OK;
}
KeymasterArguments::KeymasterArguments() {
@@ -1126,9 +1129,8 @@
result->resultCode = KM_ERROR_UNKNOWN_ERROR;
return;
}
- if (reply.readInt32() != 0) {
- result->readFromParcel(reply);
- }
+
+ reply.readParcelable(result);
}
virtual void begin(const sp<IBinder>& appToken, const String16& name,
@@ -1724,8 +1726,7 @@
ExportResult result;
exportKey(name, format, clientId.get(), appData.get(), &result);
reply->writeNoException();
- reply->writeInt32(1);
- result.writeToParcel(reply);
+ reply->writeParcelable(result);
return NO_ERROR;
}
diff --git a/keystore/include/keystore/IKeystoreService.h b/keystore/include/keystore/IKeystoreService.h
index 6655e72..60d2de7 100644
--- a/keystore/include/keystore/IKeystoreService.h
+++ b/keystore/include/keystore/IKeystoreService.h
@@ -69,11 +69,11 @@
};
// struct for serializing the results of export
-struct ExportResult {
+struct ExportResult : public ::android::Parcelable {
ExportResult();
~ExportResult();
- void readFromParcel(const Parcel& in);
- void writeToParcel(Parcel* out) const;
+ status_t readFromParcel(const Parcel* in) override;
+ status_t writeToParcel(Parcel* out) const override;
int resultCode;
std::unique_ptr<uint8_t[], MallocDeleter> exportData;