Support nested types in NdkFullClassName()

NdkFullClassName() is used in NDK backend to get a C++ type for
AidlDefinedType. Previously, it didn't care about nested types. Now it
returns ::aidl::my::pkg::ParentType::MyType.

Bug: 201730188
Test: aidl_unittests
Change-Id: Ib13389248152b3f9afa6f60d3702721a35d9954d
diff --git a/aidl_to_ndk.cpp b/aidl_to_ndk.cpp
index f535d10..49766e0 100644
--- a/aidl_to_ndk.cpp
+++ b/aidl_to_ndk.cpp
@@ -24,6 +24,7 @@
 #include <functional>
 
 using ::android::base::Join;
+using ::android::base::Split;
 
 namespace android {
 namespace aidl {
@@ -415,10 +416,10 @@
 
 std::string NdkFullClassName(const AidlDefinedType& type, cpp::ClassNames name) {
   std::vector<std::string> pieces = {"::aidl"};
-  std::vector<std::string> package = type.GetSplitPackage();
-  pieces.insert(pieces.end(), package.begin(), package.end());
-  pieces.push_back(cpp::ClassName(type, name));
-
+  std::vector<std::string> split_name = Split(type.GetCanonicalName(), ".");
+  pieces.insert(pieces.end(), split_name.begin(), split_name.end());
+  // Override name part with cpp::ClassName(type, name)
+  pieces.back() = cpp::ClassName(type, name);
   return Join(pieces, "::");
 }