getService: respect persist.hal.binderization
Bug: 34256441
Test: nfc and lights work with ag/1833821 with persist.hal.binderization
set to on and off. There are no additional selinux denials.
Change-Id: I3d4678aaf4d602aec05617d4d792935814b1c2bc
diff --git a/generateCpp.cpp b/generateCpp.cpp
index cd67c4d..aa22362 100644
--- a/generateCpp.cpp
+++ b/generateCpp.cpp
@@ -172,7 +172,9 @@
out << "= ::android::hardware::defaultServiceManager();\n";
});
out.sIf("sm != nullptr", [&] {
- out.sIf("transport == ::android::vintf::Transport::HWBINDER", [&]() {
+ // TODO(b/34274385) remove sysprop check
+ out.sIf("transport == ::android::vintf::Transport::HWBINDER &&"
+ " ::android::hardware::details::blockingHalBinderizationEnabled()", [&]() {
out << "::android::hardware::details::waitForHwService("
<< interfaceName << "::descriptor" << ", serviceName);\n";
}).endl();
@@ -191,6 +193,8 @@
out.sIf("getStub || "
"transport == ::android::vintf::Transport::PASSTHROUGH || "
+ "(transport == ::android::vintf::Transport::HWBINDER &&"
+ " !::android::hardware::details::blockingHalBinderizationEnabled()) ||"
"transport == ::android::vintf::Transport::EMPTY", [&] {
out << "const ::android::sp<::android::hidl::manager::V1_0::IServiceManager> pm\n";
out.indent(2, [&] {
@@ -948,6 +952,9 @@
// This is a no-op for IServiceManager itself.
out << "#include <android/hidl/manager/1.0/IServiceManager.h>\n";
+ // TODO(b/34274385) remove this
+ out << "#include <hidl/LegacySupport.h>\n";
+
generateCppPackageInclude(out, mPackage, iface->getProxyName());
generateCppPackageInclude(out, mPackage, iface->getStubName());
generateCppPackageInclude(out, mPackage, iface->getPassthroughName());