Add support for writing byte arrays to parcels
b/13418320
Change-Id: I2285df9e9d3dc8a6a54055b13b352b81660bf45d
diff --git a/include/binder/Parcel.h b/include/binder/Parcel.h
index c95f297..98f20de 100644
--- a/include/binder/Parcel.h
+++ b/include/binder/Parcel.h
@@ -102,6 +102,7 @@
status_t writeStrongBinder(const sp<IBinder>& val);
status_t writeWeakBinder(const wp<IBinder>& val);
status_t writeInt32Array(size_t len, const int32_t *val);
+ status_t writeByteArray(size_t len, const uint8_t *val);
template<typename T>
status_t write(const Flattenable<T>& val);
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp
index 0210606..17ffa05 100644
--- a/libs/binder/Parcel.cpp
+++ b/libs/binder/Parcel.cpp
@@ -628,6 +628,16 @@
}
return ret;
}
+status_t Parcel::writeByteArray(size_t len, const uint8_t *val) {
+ if (!val) {
+ return writeAligned(-1);
+ }
+ status_t ret = writeAligned(len);
+ if (ret == NO_ERROR) {
+ ret = write(val, len * sizeof(*val));
+ }
+ return ret;
+}
status_t Parcel::writeInt64(int64_t val)
{