Merge "Revert "audio policy: handle errors for usb broadcast device connection"" into main am: 21e2e90a3f

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/3248237

Change-Id: I12c87c9addea7398bc53209707e517b0682b78c7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 48d7f14..41b6aeb 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -122,16 +122,17 @@
     }
 }
 
-status_t AudioPolicyManager::broadcastDeviceConnectionState(const sp<DeviceDescriptor> &device,
+void AudioPolicyManager::broadcastDeviceConnectionState(const sp<DeviceDescriptor> &device,
                                                         media::DeviceConnectedState state)
 {
     audio_port_v7 devicePort;
     device->toAudioPort(&devicePort);
-    status_t status = mpClientInterface->setDeviceConnectedState(&devicePort, state);
-    ALOGE_IF(status != OK, "Error %d while setting connected state %d for device %s", status,
-             static_cast<int>(state), device->getDeviceTypeAddr().toString(false).c_str());
-
-    return status;
+    if (status_t status = mpClientInterface->setDeviceConnectedState(&devicePort, state);
+            status != OK) {
+        ALOGE("Error %d while setting connected state %d for device %s",
+                status, static_cast<int>(state),
+                device->getDeviceTypeAddr().toString(false).c_str());
+    }
 }
 
 status_t AudioPolicyManager::setDeviceConnectionStateInt(
@@ -212,14 +213,7 @@
 
             // Before checking outputs, broadcast connect event to allow HAL to retrieve dynamic
             // parameters on newly connected devices (instead of opening the outputs...)
-            if (broadcastDeviceConnectionState(
-                        device, media::DeviceConnectedState::CONNECTED) != NO_ERROR) {
-                mAvailableOutputDevices.remove(device);
-                mHwModules.cleanUpForDevice(device);
-                ALOGE("%s() device %s format %x connection failed", __func__,
-                      device->toString().c_str(), device->getEncodedFormat());
-                return INVALID_OPERATION;
-            }
+            broadcastDeviceConnectionState(device, media::DeviceConnectedState::CONNECTED);
 
             if (checkOutputsForDevice(device, state, outputs) != NO_ERROR) {
                 mAvailableOutputDevices.remove(device);
@@ -404,14 +398,7 @@
 
             // Before checking intputs, broadcast connect event to allow HAL to retrieve dynamic
             // parameters on newly connected devices (instead of opening the inputs...)
-            if (broadcastDeviceConnectionState(
-                        device, media::DeviceConnectedState::CONNECTED) != NO_ERROR) {
-                mAvailableInputDevices.remove(device);
-                mHwModules.cleanUpForDevice(device);
-                ALOGE("%s() device %s format %x connection failed", __func__,
-                      device->toString().c_str(), device->getEncodedFormat());
-                return INVALID_OPERATION;
-            }
+            broadcastDeviceConnectionState(device, media::DeviceConnectedState::CONNECTED);
             // Propagate device availability to Engine
             setEngineDeviceConnectionState(device, state);
 
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index 9d2166a..953fd2a 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -1105,8 +1105,8 @@
         // It can give a chance to HAL implementer to retrieve dynamic capabilities associated
         // to this device for example.
         // TODO avoid opening stream to retrieve capabilities of a profile.
-        status_t broadcastDeviceConnectionState(const sp<DeviceDescriptor> &device,
-                                                media::DeviceConnectedState state);
+        void broadcastDeviceConnectionState(const sp<DeviceDescriptor> &device,
+                                            media::DeviceConnectedState state);
 
         // updates device caching and output for streams that can influence the
         //    routing of notifications
diff --git a/services/audiopolicy/tests/audiopolicymanager_tests.cpp b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
index 456b67f..f958ede 100644
--- a/services/audiopolicy/tests/audiopolicymanager_tests.cpp
+++ b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
@@ -2530,29 +2530,8 @@
 
     void setSimulateFailure(bool simulateFailure) { mSimulateFailure = simulateFailure; }
 
-    void setSimulateBroadcastDeviceStatus(audio_devices_t device, status_t status) {
-        if (status != NO_ERROR) {
-            // simulate device connect status
-            mSimulateBroadcastDeviceStatus[device] = status;
-        } else {
-            // remove device connection fixed status
-            mSimulateBroadcastDeviceStatus.erase(device);
-        }
-    }
-
-    status_t setDeviceConnectedState(const struct audio_port_v7* port,
-                                     media::DeviceConnectedState state) override {
-        if (mSimulateBroadcastDeviceStatus.find(port->ext.device.type) !=
-            mSimulateBroadcastDeviceStatus.end()) {
-            // If a simulated status exists, return a status value
-            return mSimulateBroadcastDeviceStatus[port->ext.device.type];
-        }
-        return AudioPolicyManagerTestClient::setDeviceConnectedState(port, state);
-    }
-
   private:
     bool mSimulateFailure = false;
-    std::map<audio_devices_t, status_t> mSimulateBroadcastDeviceStatus;
 };
 
 }  // namespace
@@ -2573,9 +2552,6 @@
     void setSimulateOpenFailure(bool simulateFailure) {
         mFullClient->setSimulateFailure(simulateFailure); }
 
-    void setSimulateBroadcastDeviceStatus(audio_devices_t device, status_t status) {
-        mFullClient->setSimulateBroadcastDeviceStatus(device, status); }
-
     static const std::string sBluetoothConfig;
 
   private:
@@ -2619,30 +2595,6 @@
     }
 }
 
-TEST_P(AudioPolicyManagerTestDeviceConnectionFailed, BroadcastDeviceFailure) {
-    const audio_devices_t type = std::get<0>(GetParam());
-    const std::string name = std::get<1>(GetParam());
-    const std::string address = std::get<2>(GetParam());
-    const audio_format_t format = std::get<3>(GetParam());
-
-    // simulate broadcastDeviceConnectionState return failure
-    setSimulateBroadcastDeviceStatus(type, INVALID_OPERATION);
-    ASSERT_EQ(INVALID_OPERATION, mManager->setDeviceConnectionState(
-            type, AUDIO_POLICY_DEVICE_STATE_AVAILABLE,
-            address.c_str(), name.c_str(), format));
-
-    // if broadcast is fail, device should not be added to available devices list
-    if (audio_is_output_device(type)) {
-        auto availableDevices = mManager->getAvailableOutputDevices();
-        EXPECT_FALSE(availableDevices.containsDeviceWithType(type));
-    } else if (audio_is_input_device(type)) {
-        auto availableDevices = mManager->getAvailableInputDevices();
-        EXPECT_FALSE(availableDevices.containsDeviceWithType(type));
-    }
-
-    setSimulateBroadcastDeviceStatus(type, NO_ERROR);
-}
-
 INSTANTIATE_TEST_CASE_P(
         DeviceConnectionFailure,
         AudioPolicyManagerTestDeviceConnectionFailed,