Revert "libaudiohal@aidl: Make IHalAdapterVendorExtension mandatory"

Revert submission 2929484-fix-b-321651892-ihaladapter

Reason for revert: possible cause of b/323385784

Reverted changes: /q/submissionid:2929484-fix-b-321651892-ihaladapter

Change-Id: Ifaafeec27bee08648a3ced6d507b99454c317692
diff --git a/media/libaudiohal/impl/DevicesFactoryHalAidl.cpp b/media/libaudiohal/impl/DevicesFactoryHalAidl.cpp
index 24df32d..3dbc14a 100644
--- a/media/libaudiohal/impl/DevicesFactoryHalAidl.cpp
+++ b/media/libaudiohal/impl/DevicesFactoryHalAidl.cpp
@@ -23,7 +23,6 @@
 //#define LOG_NDEBUG 0
 
 #include <aidl/android/hardware/audio/core/IModule.h>
-#include <aidl/android/media/audio/BnHalAdapterVendorExtension.h>
 #include <android/binder_manager.h>
 #include <media/AidlConversionNdkCpp.h>
 #include <media/AidlConversionUtil.h>
@@ -36,7 +35,6 @@
 using aidl::android::hardware::audio::core::IConfig;
 using aidl::android::hardware::audio::core::IModule;
 using aidl::android::hardware::audio::core::SurroundSoundConfig;
-using aidl::android::hardware::audio::core::VendorParameter;
 using aidl::android::media::audio::common::AudioHalEngineConfig;
 using aidl::android::media::audio::IHalAdapterVendorExtension;
 using android::detail::AudioHalVersionInfo;
@@ -64,86 +62,10 @@
     return cpp;
 }
 
-class HalAdapterVendorExtensionWrapper :
-            public ::aidl::android::media::audio::BnHalAdapterVendorExtension {
-  private:
-    ndk::ScopedAStatus parseVendorParameterIds(ParameterScope in_scope,
-                                               const std::string& in_rawKeys,
-                                               std::vector<std::string>* _aidl_return) override {
-        ndk::ScopedAStatus status;
-        while (true) {
-            status = get()->parseVendorParameterIds(in_scope, in_rawKeys, _aidl_return);
-            if (status.getStatus() != STATUS_DEAD_OBJECT) break;
-            mVendorExt.reset();
-        }
-        return status;
-    }
-
-    ndk::ScopedAStatus parseVendorParameters(
-            ParameterScope in_scope, const std::string& in_rawKeysAndValues,
-            std::vector<VendorParameter>* out_syncParameters,
-            std::vector<VendorParameter>* out_asyncParameters) override {
-        ndk::ScopedAStatus status;
-        while (true) {
-            status = get()->parseVendorParameters(in_scope, in_rawKeysAndValues,
-                    out_syncParameters, out_asyncParameters);
-            if (status.getStatus() != STATUS_DEAD_OBJECT) break;
-            mVendorExt.reset();
-        }
-        return status;
-    }
-
-    ndk::ScopedAStatus parseBluetoothA2dpReconfigureOffload(
-            const std::string& in_rawValue, std::vector<VendorParameter>* _aidl_return) override {
-        ndk::ScopedAStatus status;
-        while (true) {
-            status = get()->parseBluetoothA2dpReconfigureOffload(in_rawValue, _aidl_return);
-            if (status.getStatus() != STATUS_DEAD_OBJECT) break;
-            mVendorExt.reset();
-        }
-        return status;
-    }
-
-    ndk::ScopedAStatus parseBluetoothLeReconfigureOffload(const std::string& in_rawValue,
-            std::vector<VendorParameter>* _aidl_return) override {
-        ndk::ScopedAStatus status;
-        while (true) {
-            status = get()->parseBluetoothLeReconfigureOffload(in_rawValue, _aidl_return);
-            if (status.getStatus() != STATUS_DEAD_OBJECT) break;
-            mVendorExt.reset();
-        }
-        return status;
-    }
-
-    ndk::ScopedAStatus processVendorParameters(ParameterScope in_scope,
-                                               const std::vector<VendorParameter>& in_parameters,
-                                               std::string* _aidl_return) override {
-        ndk::ScopedAStatus status;
-        while (true) {
-            status = get()->processVendorParameters(in_scope, in_parameters, _aidl_return);
-            if (status.getStatus() != STATUS_DEAD_OBJECT) break;
-            mVendorExt.reset();
-        }
-        return status;
-    }
-
-    std::shared_ptr<IHalAdapterVendorExtension> get() {
-        if (!mVendorExt) {
-            auto serviceName = std::string(IHalAdapterVendorExtension::descriptor) + "/default";
-            mVendorExt = IHalAdapterVendorExtension::fromBinder(ndk::SpAIBinder(
-                            AServiceManager_waitForService(serviceName.c_str())));
-        }
-        return mVendorExt;
-    }
-
-    std::shared_ptr<::aidl::android::media::audio::IHalAdapterVendorExtension> mVendorExt;
-};
-
 }  // namespace
 
 DevicesFactoryHalAidl::DevicesFactoryHalAidl(std::shared_ptr<IConfig> config)
-        : mConfig(std::move(config)),
-          mVendorExt(ndk::SharedRefBase::make<HalAdapterVendorExtensionWrapper>()) {
+    : mConfig(std::move(config)) {
 }
 
 status_t DevicesFactoryHalAidl::getDeviceNames(std::vector<std::string> *names) {
@@ -188,7 +110,7 @@
         ALOGE("%s fromBinder %s failed", __func__, serviceName.c_str());
         return NO_INIT;
     }
-    *device = sp<DeviceHalAidl>::make(name, service, mVendorExt);
+    *device = sp<DeviceHalAidl>::make(name, service, getVendorExtension());
     return OK;
 }
 
@@ -227,6 +149,20 @@
     return OK;
 }
 
+std::shared_ptr<IHalAdapterVendorExtension> DevicesFactoryHalAidl::getVendorExtension() {
+    if (!mVendorExt.has_value()) {
+        auto serviceName = std::string(IHalAdapterVendorExtension::descriptor) + "/default";
+        if (AServiceManager_isDeclared(serviceName.c_str())) {
+            mVendorExt = std::shared_ptr<IHalAdapterVendorExtension>(
+                    IHalAdapterVendorExtension::fromBinder(ndk::SpAIBinder(
+                                    AServiceManager_waitForService(serviceName.c_str()))));
+        } else {
+            mVendorExt = nullptr;
+        }
+    }
+    return mVendorExt.value();
+}
+
 // Main entry-point to the shared library.
 extern "C" __attribute__((visibility("default"))) void* createIDevicesFactoryImpl() {
     auto serviceName = std::string(IConfig::descriptor) + "/default";