Use new read(Embedded)Buffer APIs.

Bug: 34134129
Test: mma, hidl_test_java
Change-Id: I13b3841778d5df4e7c37760610712a26c68896d6
diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp
index b9d810a..aefdc84 100644
--- a/core/jni/android_os_HwParcel.cpp
+++ b/core/jni/android_os_HwParcel.cpp
@@ -568,15 +568,16 @@
 
     size_t parentHandle;
 
-    const hidl_string *s = static_cast<const hidl_string *>(
-            parcel->readBuffer(&parentHandle));
+    const hidl_string *s;
+    status_t err = parcel->readBuffer(&parentHandle,
+            reinterpret_cast<const void**>(&s));
 
-    if (s == NULL) {
-        signalExceptionForError(env, UNKNOWN_ERROR);
+    if (err != OK) {
+        signalExceptionForError(env, err);
         return NULL;
     }
 
-    status_t err = ::android::hardware::readEmbeddedFromParcel(
+    err = ::android::hardware::readEmbeddedFromParcel(
             const_cast<hidl_string *>(s),
             *parcel, parentHandle, 0 /* parentOffset */);
 
@@ -593,20 +594,20 @@
         JNIEnv *env, jobject thiz) {                                           \
     hardware::Parcel *parcel =                                                 \
         JHwParcel::GetNativeContext(env, thiz)->getParcel();                   \
-                                                                               \
     size_t parentHandle;                                                       \
                                                                                \
-    const hidl_vec<Type> *vec =                                                \
-        (const hidl_vec<Type> *)parcel->readBuffer(&parentHandle);             \
+    const hidl_vec<Type> *vec;                                                 \
+    status_t err = parcel->readBuffer(&parentHandle,                           \
+            reinterpret_cast<const void**>(&vec));                             \
                                                                                \
-    if (vec == NULL) {                                                         \
-        signalExceptionForError(env, UNKNOWN_ERROR);                           \
+    if (err != OK) {                                                           \
+        signalExceptionForError(env, err);                                     \
         return NULL;                                                           \
     }                                                                          \
                                                                                \
     size_t childHandle;                                                        \
                                                                                \
-    status_t err = ::android::hardware::readEmbeddedFromParcel(                \
+    err = ::android::hardware::readEmbeddedFromParcel(                         \
                 const_cast<hidl_vec<Type> *>(vec),                             \
                 *parcel,                                                       \
                 parentHandle,                                                  \
@@ -638,17 +639,18 @@
 
     size_t parentHandle;
 
-    const hidl_vec<bool> *vec =
-        (const hidl_vec<bool> *)parcel->readBuffer(&parentHandle);
+    const hidl_vec<bool> *vec;
+    status_t err = parcel->readBuffer(&parentHandle,
+            reinterpret_cast<const void**>(&vec));
 
-    if (vec == NULL) {
-        signalExceptionForError(env, UNKNOWN_ERROR);
+    if (err != OK) {
+        signalExceptionForError(env, err);
         return NULL;
     }
 
     size_t childHandle;
 
-    status_t err = ::android::hardware::readEmbeddedFromParcel(
+    err = ::android::hardware::readEmbeddedFromParcel(
                 const_cast<hidl_vec<bool> *>(vec),
                 *parcel,
                 parentHandle,
@@ -701,16 +703,17 @@
 
     size_t parentHandle;
 
-    const string_vec *vec=
-        (const string_vec *)parcel->readBuffer(&parentHandle);
+    const string_vec *vec;
+    status_t err = parcel->readBuffer(&parentHandle,
+            reinterpret_cast<const void **>(&vec));
 
-    if (vec == NULL) {
-        signalExceptionForError(env, UNKNOWN_ERROR);
+    if (err != OK) {
+        signalExceptionForError(env, err);
         return NULL;
     }
 
     size_t childHandle;
-    status_t err = ::android::hardware::readEmbeddedFromParcel(
+    err = ::android::hardware::readEmbeddedFromParcel(
             const_cast<string_vec *>(vec),
             *parcel, parentHandle, 0 /* parentOffset */, &childHandle);
 
@@ -807,9 +810,10 @@
         JHwParcel::GetNativeContext(env, thiz)->getParcel();
 
     size_t handle;
-    const void *ptr = parcel->readBuffer(&handle);
+    const void *ptr;
+    status_t status = parcel->readBuffer(&handle, &ptr);
 
-    if (ptr == nullptr) {
+    if (status != OK) {
         jniThrowException(env, "java/util/NoSuchElementException", NULL);
         return nullptr;
     }
@@ -824,10 +828,11 @@
 
     size_t childHandle;
 
-    const void *ptr =
-        parcel->readEmbeddedBuffer(&childHandle, parentHandle, offset);
+    const void *ptr;
+    status_t status =
+        parcel->readEmbeddedBuffer(&childHandle, parentHandle, offset, &ptr);
 
-    if (ptr == nullptr) {
+    if (status != OK) {
         jniThrowException(env, "java/util/NoSuchElementException", NULL);
         return 0;
     }