Merge "Add test for NoSuchElementException in java test."
diff --git a/c2hal/test/test.h b/c2hal/test/test.h
index e53e296..b1a0058 100644
--- a/c2hal/test/test.h
+++ b/c2hal/test/test.h
@@ -273,7 +273,7 @@
 
     int (*store_meta_data_in_buffers)(struct camera_device *, int enable);
 
-    typedef void (*scan_result_callback)(bt_bdaddr_t* bda, int rssi, vector<uint8_t> adv_data);
+    typedef void (*scan_result_callback)(FooFooBarFoo* bda, int rssi, vector<uint8_t> adv_data);
 
     pthread_t (* gps_create_thread)(const char* name, void (*start)(void *), void* arg);
 
diff --git a/generateCpp.cpp b/generateCpp.cpp
index 19fa039..2ff1c51 100644
--- a/generateCpp.cpp
+++ b/generateCpp.cpp
@@ -226,11 +226,15 @@
         out << "#ifdef __ANDROID_TREBLE__\n\n"
             << "#ifdef __ANDROID_DEBUGGABLE__\n"
             << "const char* env = std::getenv(\"TREBLE_TESTING_OVERRIDE\");\n"
-            << "const bool vintfLegacy = (transport == Transport::EMPTY) && env && !strcmp(env, \"true\");\n"
+            << "const bool trebleTestingOverride =  env && !strcmp(env, \"true\");\n"
+            << "const bool vintfLegacy = (transport == Transport::EMPTY) && trebleTestingOverride;\n"
             << "#else // __ANDROID_TREBLE__ but not __ANDROID_DEBUGGABLE__\n"
+            << "const bool trebleTestingOverride = false;\n"
             << "const bool vintfLegacy = false;\n"
             << "#endif // __ANDROID_DEBUGGABLE__\n\n"
             << "#else // not __ANDROID_TREBLE__\n"
+            << "const char* env = std::getenv(\"TREBLE_TESTING_OVERRIDE\");\n"
+            << "const bool trebleTestingOverride =  env && !strcmp(env, \"true\");\n"
             << "const bool vintfLegacy = (transport == Transport::EMPTY);\n\n"
             << "#endif // __ANDROID_TREBLE__\n\n";
 
@@ -329,8 +333,10 @@
                     out << "sp<" << gIBaseFqName.cppName()
                         << "> baseInterface = ret;\n";
                     out.sIf("baseInterface != nullptr", [&]() {
-                        out << "iface = new " << fqName.getInterfacePassthroughName()
-                            << "(" << interfaceName << "::castFrom(baseInterface));\n";
+                        out << "iface = " << interfaceName << "::castFrom(baseInterface);\n";
+                        out.sIf("!getStub || trebleTestingOverride", [&] () {
+                            out << "iface = new " << fqName.getInterfacePassthroughName() << "(iface);\n";
+                        }).endl();
                     }).endl();
                 }).endl();
             }).endl();