Merge cherrypicks of [17395476] into rvc-platform-release. am: 19d7f9d2fe

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/tools/aidl/+/17844582

Change-Id: I8b39a0cab834762ff707001b1a604f6ed28b231e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/generate_cpp.cpp b/generate_cpp.cpp
index 284c67f..e77142b 100644
--- a/generate_cpp.cpp
+++ b/generate_cpp.cpp
@@ -1118,6 +1118,9 @@
           out << " = " << cppType << "(0)";
         }
       }
+    } else if (AidlTypenames::IsPrimitiveTypename(variable->GetType().GetName()) &&
+               !variable->GetType().IsArray()) {
+      out << " = {}";
     }
     out << ";\n";
 
diff --git a/generate_ndk.cpp b/generate_ndk.cpp
index 5d60599..87c4b56 100644
--- a/generate_ndk.cpp
+++ b/generate_ndk.cpp
@@ -886,6 +886,9 @@
           out << " = " << NdkNameOf(types, variable->GetType(), StorageMode::STACK) << "(0)";
         }
       }
+    } else if (AidlTypenames::IsPrimitiveTypename(variable->GetType().GetName()) &&
+               !variable->GetType().IsArray()) {
+      out << " = {}";
     }
     out << ";\n";
   }
diff --git a/tests/android/aidl/tests/StructuredParcelable.aidl b/tests/android/aidl/tests/StructuredParcelable.aidl
index 28046e2..0908782 100644
--- a/tests/android/aidl/tests/StructuredParcelable.aidl
+++ b/tests/android/aidl/tests/StructuredParcelable.aidl
@@ -158,5 +158,16 @@
     // String expressions
     @utf8InCpp String addString1 = "hello" + " world!";
     @utf8InCpp String addString2 = "The quick brown fox jumps " + "over the lazy dog.";
+
+    // primitive types will be initialized with {}.
+    boolean aBoolean;
+    byte aByte;
+    char aChar;
+    int anInt;
+    long aLong;
+    float aFloat;
+    double aDouble;
+    // arrays are not primitive type.
+    int[] anIntArray;
 }