Merge "Adding JNI for create random parcel"
diff --git a/core/tests/fuzzers/FuzzService/FuzzBinder.java b/core/tests/fuzzers/FuzzService/FuzzBinder.java
index 7096f52..52aafeb 100644
--- a/core/tests/fuzzers/FuzzService/FuzzBinder.java
+++ b/core/tests/fuzzers/FuzzService/FuzzBinder.java
@@ -15,6 +15,7 @@
  */
 package randomparcel;
 import android.os.IBinder;
+import android.os.Parcel;
 
 public class FuzzBinder {
     static {
@@ -33,6 +34,12 @@
         fuzzServiceInternal(binder, data);
     }
 
+    // This API creates random parcel object
+    public static void createRandomParcel(Parcel parcel, byte[] data) {
+        getRandomParcel(parcel, data);
+    }
+
     private static native void fuzzServiceInternal(IBinder binder, byte[] data);
+    private static native void getRandomParcel(Parcel parcel, byte[] data);
     private static native int registerNatives();
 }
diff --git a/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp b/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp
index c0528d5..dbeae87 100644
--- a/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp
+++ b/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp
@@ -16,7 +16,9 @@
 
 #include "random_parcel_jni.h"
 #include <android_util_Binder.h>
+#include <android_os_Parcel.h>
 #include <fuzzbinder/libbinder_driver.h>
+#include <fuzzbinder/random_parcel.h>
 #include <fuzzer/FuzzedDataProvider.h>
 using namespace android;
 
@@ -35,3 +37,15 @@
 JNIEXPORT jint JNICALL Java_randomparcel_FuzzBinder_registerNatives(JNIEnv* env) {
     return registerFrameworkNatives(env);
 }
+
+JNIEXPORT void JNICALL Java_randomparcel_FuzzBinder_getRandomParcel(JNIEnv *env, jobject thiz, jobject jparcel, jbyteArray fuzzData) {
+    size_t len = static_cast<size_t>(env->GetArrayLength(fuzzData));
+    uint8_t data[len];
+    env->GetByteArrayRegion(fuzzData, 0, len, reinterpret_cast<jbyte*>(data));
+
+    FuzzedDataProvider provider(data, len);
+    RandomParcelOptions options;
+
+    Parcel* parcel = parcelForJavaObject(env, jparcel);
+    fillRandomParcel(parcel, std::move(provider), &options);
+}
diff --git a/core/tests/fuzzers/FuzzService/random_parcel_jni.h b/core/tests/fuzzers/FuzzService/random_parcel_jni.h
index 20a4c9d..bc18b2f 100644
--- a/core/tests/fuzzers/FuzzService/random_parcel_jni.h
+++ b/core/tests/fuzzers/FuzzService/random_parcel_jni.h
@@ -23,4 +23,6 @@
 
     // Function from AndroidRuntime
     jint registerFrameworkNatives(JNIEnv* env);
+
+    JNIEXPORT void JNICALL Java_randomparcel_FuzzBinder_getRandomParcel(JNIEnv *env, jobject thiz, jobject parcel, jbyteArray fuzzData);
 }