Early remove 25Q4: adapter_service_profiles_use_optional
As per the guidelines in: go/android-flags-guidelines#launched-flags
It's been 10 weeks since the last code change under this flag,
removing this flag early for a lot! of cleanup.
Goodbye `AdapterService#PROFILE_CONSTRUCTORS` 👋🏻!
Goodbye `ServiceFactory` 👋🏻!
This will also open up a lot of dependency injection possibilities for
the various profiles in `AdapterService.java`
Bug: 422543753
Fix: 422543753
Test: atest BluetoothJavaUnitTests
Flag: EXEMPT removal of adapter_service_profiles_use_optional
Change-Id: Ief9644e01a134d42f342072ab7af6f7ca82f398a
diff --git a/android/app/src/com/android/bluetooth/a2dp/A2dpService.java b/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
index eefec07..0c9ee40 100644
--- a/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
+++ b/android/app/src/com/android/bluetooth/a2dp/A2dpService.java
@@ -54,20 +54,16 @@
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.avrcp.AvrcpTargetService;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfp.HeadsetService;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
-import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -78,9 +74,6 @@
// TODO(b/240635097): remove in U
private static final int SOURCE_CODEC_TYPE_OPUS = 6;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static A2dpService sA2dpService;
-
private final A2dpNativeInterface mNativeInterface;
private final A2dpCodecConfig mA2dpCodecConfig;
private final AudioManager mAudioManager;
@@ -90,9 +83,6 @@
// Upper limit of all A2DP devices that are Connected or Connecting
private final int mMaxConnectedAudioDevices;
- // TODO(b/422543753) Delete on flag cleanup
- @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
@GuardedBy("mStateMachines")
private BluetoothDevice mActiveDevice;
@@ -144,26 +134,6 @@
Log.d(TAG, "A2DP offload flag set to " + mA2dpOffloadEnabled);
mAudioManager.registerAudioDeviceCallback(mAudioManagerAudioDeviceCallback, mHandler);
-
- setA2dpService(this);
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<AvrcpTargetService> getAvrcpTargetService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getAvrcpTargetService();
- } else {
- return Optional.ofNullable(mFactory.getAvrcpTargetService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HeadsetService> getHeadsetService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHeadsetService();
- } else {
- return Optional.ofNullable(HeadsetService.getHeadsetService());
- }
}
public static boolean isEnabled() {
@@ -179,17 +149,9 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- if (sA2dpService == null) {
- Log.w(TAG, "cleanup() called before initialization");
- return;
- }
-
// Step 9: Clear active device and stop playing audio
removeActiveDevice(true);
- // Step 8: Mark service as stopped
- setA2dpService(null);
-
// Step 7: Unregister Audio Device Callback
mAudioManager.unregisterAudioDeviceCallback(mAudioManagerAudioDeviceCallback);
@@ -211,25 +173,6 @@
return mCompanionDeviceManager;
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized A2dpService getA2dpService() {
- if (sA2dpService == null) {
- Log.w(TAG, "getA2dpService(): service is null");
- return null;
- }
- if (!sA2dpService.isAvailable()) {
- Log.w(TAG, "getA2dpService(): service is not available");
- return null;
- }
- return sA2dpService;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static synchronized void setA2dpService(A2dpService instance) {
- Log.d(TAG, "setA2dpService(): set to: " + instance);
- sA2dpService = instance;
- }
-
@Override
public boolean connect(BluetoothDevice device) {
Log.d(TAG, "connect(): " + device);
@@ -368,7 +311,7 @@
if (connectionPolicy != CONNECTION_POLICY_UNKNOWN
&& connectionPolicy != CONNECTION_POLICY_ALLOWED) {
if (!isOutgoingRequest) {
- final var headset = getHeadsetService();
+ final var headset = mAdapterService.getHeadsetService();
if (headset.isPresent() && headset.get().okToAcceptConnection(device, true)) {
Log.d(
TAG,
@@ -582,7 +525,7 @@
// Tasks of Bluetooth are done, and now restore the AudioManager side.
int rememberedVolume = -1;
- final var avrcpTarget = getAvrcpTargetService();
+ final var avrcpTarget = mAdapterService.getAvrcpTargetService();
if (avrcpTarget.isPresent()) {
rememberedVolume = avrcpTarget.get().getRememberedVolumeForDevice(newActiveDevice);
}
@@ -646,7 +589,9 @@
}
public void setAvrcpAbsoluteVolume(int volume) {
- getAvrcpTargetService().ifPresent(avrcpTarget -> avrcpTarget.sendVolumeChanged(volume));
+ mAdapterService
+ .getAvrcpTargetService()
+ .ifPresent(avrcpTarget -> avrcpTarget.sendVolumeChanged(volume));
}
boolean isA2dpPlaying(BluetoothDevice device) {
@@ -1072,7 +1017,8 @@
Log.d(TAG, "updateAndBroadcastActiveDevice(" + device + ")");
// Make sure volume has been store before device been remove from active.
- getAvrcpTargetService()
+ mAdapterService
+ .getAvrcpTargetService()
.ifPresent(avrcpTarget -> avrcpTarget.handleA2dpActiveDeviceChanged(device));
mAdapterService.handleActiveDeviceChange(mProfileId, device);
@@ -1122,7 +1068,8 @@
if (bondState != BluetoothDevice.BOND_NONE) {
return;
}
- getAvrcpTargetService()
+ mAdapterService
+ .getAvrcpTargetService()
.ifPresent(
avrcpTarget -> {
Log.d(TAG, "bondStateChanged: going for removeStoredVolumeForDevice");
@@ -1258,12 +1205,14 @@
// Check if the device is disconnected - if unbond, remove the state machine
if (toState == STATE_DISCONNECTED) {
if (mAdapterService.getBondState(device) == BluetoothDevice.BOND_NONE) {
- getAvrcpTargetService()
+ mAdapterService
+ .getAvrcpTargetService()
.ifPresent(avrcpTarget -> avrcpTarget.removeStoredVolumeForDevice(device));
removeStateMachine(device);
}
}
- getAvrcpTargetService()
+ mAdapterService
+ .getAvrcpTargetService()
.ifPresent(
avrcpTarget ->
avrcpTarget.handleA2dpConnectionStateChanged(device, toState));
diff --git a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java
index 1677411..e449855 100644
--- a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java
+++ b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkService.java
@@ -48,9 +48,6 @@
public class A2dpSinkService extends ConnectableProfile {
private static final String TAG = A2dpSinkService.class.getSimpleName();
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static A2dpSinkService sService;
-
// This is also used as a lock for shared data in {@link A2dpSinkService}
@GuardedBy("mDeviceStateMap")
private final Map<BluetoothDevice, A2dpSinkStateMachine> mDeviceStateMap =
@@ -86,8 +83,6 @@
synchronized (mStreamHandlerLock) {
mA2dpSinkStreamHandler = new A2dpSinkStreamHandler(mAdapterService, mNativeInterface);
}
-
- setA2dpSinkService(this);
}
public static boolean isEnabled() {
@@ -98,7 +93,6 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- setA2dpSinkService(null);
mNativeInterface.cleanup();
synchronized (mDeviceStateMap) {
for (A2dpSinkStateMachine stateMachine : mDeviceStateMap.values()) {
@@ -111,18 +105,6 @@
}
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized A2dpSinkService getA2dpSinkService() {
- return sService;
- }
-
- /** Testing API to inject a mockA2dpSinkService. */
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized void setA2dpSinkService(A2dpSinkService service) {
- sService = service;
- }
-
/** Set the device that should be allowed to actively stream */
public boolean setActiveDevice(BluetoothDevice device) {
Log.i(TAG, "setActiveDevice(device=" + device + ")");
diff --git a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java
index 49c637b..4500c1e 100644
--- a/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java
+++ b/android/app/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandler.java
@@ -29,11 +29,7 @@
import android.util.Log;
import com.android.bluetooth.R;
-import com.android.bluetooth.avrcpcontroller.AvrcpControllerService;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
-
-import java.util.Optional;
/**
* Bluetooth A2DP SINK Streaming Handler.
@@ -196,22 +192,16 @@
}
// Route new focus state to AVRCP Controller to handle media player states
- final Optional<AvrcpControllerService> avrcpControllerService;
- if (Flags.adapterServiceProfilesUseOptional()) {
- avrcpControllerService = mAdapterService.getAvrcpControllerService();
- } else {
- avrcpControllerService =
- Optional.ofNullable(AvrcpControllerService.getAvrcpControllerService());
- }
-
- avrcpControllerService.ifPresentOrElse(
- avrcpController ->
- avrcpController.onAudioFocusStateChanged(focusChangeCode),
- () ->
- Log.w(
- TAG,
- "AVRCP Controller Service not available to send focus"
- + " events to."));
+ mAdapterService
+ .getAvrcpControllerService()
+ .ifPresentOrElse(
+ avrcpController ->
+ avrcpController.onAudioFocusStateChanged(focusChangeCode),
+ () ->
+ Log.w(
+ TAG,
+ "AVRCP Controller Service not available to send"
+ + " focus events to."));
}
default -> Log.w(TAG, "Received unexpected event: " + message.what);
}
diff --git a/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java b/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java
index fc5690d..3631401 100644
--- a/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java
+++ b/android/app/src/com/android/bluetooth/avrcp/AvrcpTargetService.java
@@ -52,7 +52,6 @@
import com.android.bluetooth.audio_util.PlayerSettingsManager;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.flags.Flags;
import com.android.internal.annotations.VisibleForTesting;
@@ -68,8 +67,6 @@
private final BluetoothEventLogger mMediaKeyEventLogger =
new BluetoothEventLogger(MEDIA_KEY_EVENT_LOGGER_SIZE, MEDIA_KEY_EVENT_LOGGER_TITLE);
- // TODO(b/422543753) Delete on flag cleanup
- private final ServiceFactory mFactory = new ServiceFactory();
private final BroadcastReceiver mUserUnlockedReceiver =
new BroadcastReceiver() {
@Override
@@ -102,9 +99,6 @@
// Only used to see if the metadata has changed from its previous value
private MediaData mCurrentData;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static AvrcpTargetService sInstance = null;
-
public AvrcpTargetService(AdapterService adapterService) {
this(requireNonNull(adapterService), null, null, null, Looper.myLooper());
}
@@ -170,9 +164,6 @@
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(AudioManager.ACTION_VOLUME_CHANGED);
registerReceiver(mReceiver, filter);
-
- // Only allow the service to be used once it is initialized
- sInstance = this;
}
/** Checks for profile enabled state in Bluetooth sysprops. */
@@ -231,23 +222,6 @@
}
}
- /** Sets the AvrcpTargetService instance. */
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static void set(AvrcpTargetService instance) {
- sInstance = instance;
- }
-
- /**
- * Returns the {@link AvrcpTargetService} instance.
- *
- * <p>Returns null if the service hasn't been initialized.
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static AvrcpTargetService get() {
- return sInstance;
- }
-
/** Returns the {@link AvrcpCoverArtService} instance. */
public AvrcpCoverArtService getCoverArtService() {
return mAvrcpCoverArtService;
@@ -262,16 +236,10 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- if (sInstance == null) {
- Log.w(TAG, "cleanup() called before initialization");
- return;
- }
-
if (mAvrcpCoverArtService != null) {
mAvrcpCoverArtService.stop();
}
- sInstance = null;
unregisterReceiver(mReceiver);
// We check the interfaces first since they only get set on User Unlocked
@@ -284,14 +252,7 @@
/** Returns the active A2DP {@link BluetoothDevice} */
private BluetoothDevice getA2dpActiveDevice() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getA2dpService().map(A2dpService::getActiveDevice).orElse(null);
- }
- A2dpService service = mFactory.getA2dpService();
- if (service == null) {
- return null;
- }
- return service.getActiveDevice();
+ return mAdapterService.getA2dpService().map(A2dpService::getActiveDevice).orElse(null);
}
/**
@@ -305,12 +266,7 @@
mAdapterService.setActiveDevice(device, BluetoothAdapter.ACTIVE_DEVICE_AUDIO);
return;
}
- A2dpService service = A2dpService.getA2dpService();
- if (service == null) {
- Log.d(TAG, "setA2dpActiveDevice: A2dp service not found");
- return;
- }
- service.setActiveDevice(device);
+ mAdapterService.getA2dpService().ifPresent(a2dp -> a2dp.setActiveDevice(device));
}
/** Informs {@link AvrcpVolumeManager} that a new device is connected */
@@ -673,10 +629,6 @@
/** Dump debugging information to the string builder */
public void dump(StringBuilder sb) {
sb.append("\nProfile: AvrcpTargetService:\n");
- if (sInstance == null) {
- sb.append("AvrcpTargetService not running");
- return;
- }
StringBuilder tempBuilder = new StringBuilder();
tempBuilder.append("AVRCP version: ").append(mAvrcpVersion).append("\n");
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java
index 03b4ae8..3b7e456 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java
@@ -35,19 +35,16 @@
import com.android.bluetooth.BluetoothPrefs;
import com.android.bluetooth.R;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dpsink.A2dpSinkService;
import com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService.BrowseResult;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
import com.android.internal.annotations.VisibleForTesting;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@@ -98,9 +95,6 @@
public static final int DEVICE_STATE_INACTIVE = 0;
public static final int DEVICE_STATE_ACTIVE = 1;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static AvrcpControllerService sService;
-
private final Object mActiveDeviceLock = new Object();
private final AvrcpControllerNativeInterface mNativeInterface;
@@ -163,7 +157,6 @@
}
mBrowseTree = new BrowseTree(mAdapterService, null);
- setAvrcpControllerService(this);
// Start the media browser service.
Intent startIntent = new Intent(this, BluetoothMediaBrowserService.class);
@@ -186,7 +179,6 @@
}
mDeviceStateMap.clear();
- setAvrcpControllerService(null);
if (mCoverArtManager != null) {
mCoverArtManager.cleanup();
setComponentAvailable(COVER_ART_PROVIDER, false);
@@ -199,18 +191,6 @@
return mBrowseTree;
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized AvrcpControllerService getAvrcpControllerService() {
- return sService;
- }
-
- /** Testing API to inject a mock AvrcpControllerService */
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized void setAvrcpControllerService(AvrcpControllerService service) {
- sService = service;
- }
-
/** Get the current active device */
public BluetoothDevice getActiveDevice() {
synchronized (mActiveDeviceLock) {
@@ -222,13 +202,8 @@
@VisibleForTesting
boolean setActiveDevice(BluetoothDevice device) {
Log.d(TAG, "setActiveDevice(device=" + device + ")");
- final Optional<A2dpSinkService> a2dpSinkService;
- if (Flags.adapterServiceProfilesUseOptional()) {
- a2dpSinkService = mAdapterService.getA2dpSinkService();
- } else {
- a2dpSinkService = Optional.ofNullable(A2dpSinkService.getA2dpSinkService());
- }
- if (a2dpSinkService.isEmpty()) {
+ final var a2dpSink = mAdapterService.getA2dpSinkService();
+ if (a2dpSink.isEmpty()) {
Log.w(TAG, "setActiveDevice(device=" + device + "): A2DP Sink not available");
return false;
}
@@ -241,7 +216,7 @@
// Try and update the active device
synchronized (mActiveDeviceLock) {
- if (a2dpSinkService.get().setActiveDevice(device)) {
+ if (a2dpSink.get().setActiveDevice(device)) {
mActiveDevice = device;
// Pause the old active device
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java
index 6ea210a..a8a4df6 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachine.java
@@ -43,14 +43,12 @@
import com.android.bluetooth.a2dpsink.A2dpSinkService;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.State;
import com.android.internal.util.StateMachine;
import java.util.ArrayList;
import java.util.List;
-import java.util.Optional;
import java.util.Set;
/**
@@ -194,15 +192,6 @@
debug("State machine created");
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<A2dpSinkService> getA2dpSinkService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getA2dpSinkService();
- } else {
- return Optional.ofNullable(A2dpSinkService.getA2dpSinkService());
- }
- }
-
BrowseTree.BrowseNode findNode(String parentMediaId) {
debug("findNode(mediaId=" + parentMediaId + ")");
return mBrowseTree.findBrowseNodeByID(parentMediaId);
@@ -1241,7 +1230,10 @@
}
private int getFocusState() {
- return getA2dpSinkService().map(A2dpSinkService::getFocusState).orElse(AudioManager.ERROR);
+ return mAdapterService
+ .getA2dpSinkService()
+ .map(A2dpSinkService::getFocusState)
+ .orElse(AudioManager.ERROR);
}
MediaSessionCompat.Callback mSessionCallbacks =
@@ -1310,7 +1302,8 @@
@Override
public void onPrepare() {
debug("onPrepare");
- getA2dpSinkService()
+ mAdapterService
+ .getA2dpSinkService()
.ifPresent(a2dpSink -> a2dpSink.requestAudioFocus(mDevice, true));
}
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java
index 762ed0c..462433e 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpCoverArtProvider.java
@@ -28,7 +28,6 @@
import android.util.Log;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -170,15 +169,9 @@
}
private static Bitmap getImage(BluetoothDevice device, String imageUuid) {
- final Optional<AvrcpControllerService> avrcpController;
- if (Flags.adapterServiceProfilesUseOptional()) {
- avrcpController =
- Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
- .flatMap(AdapterService::getAvrcpControllerService);
- } else {
- avrcpController =
- Optional.ofNullable(AvrcpControllerService.getAvrcpControllerService());
- }
+ final var avrcpController =
+ Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+ .flatMap(AdapterService::getAvrcpControllerService);
if (avrcpController.isEmpty()) {
debug("Failed to get service, cover art not available");
return null;
diff --git a/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java b/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
index 6ab93a6..0d2cccd 100644
--- a/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
+++ b/android/app/src/com/android/bluetooth/avrcpcontroller/BluetoothMediaBrowserService.java
@@ -35,7 +35,6 @@
import com.android.bluetooth.BluetoothPrefs;
import com.android.bluetooth.R;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -209,15 +208,9 @@
}
BrowseResult getContents(final String parentMediaId) {
- final Optional<AvrcpControllerService> avrcpController;
- if (Flags.adapterServiceProfilesUseOptional()) {
- avrcpController =
- Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
- .flatMap(AdapterService::getAvrcpControllerService);
- } else {
- avrcpController =
- Optional.ofNullable(AvrcpControllerService.getAvrcpControllerService());
- }
+ final var avrcpController =
+ Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+ .flatMap(AdapterService::getAvrcpControllerService);
if (avrcpController.isEmpty()) {
Log.w(TAG, "getContents(id=" + parentMediaId + "): AVRCP Controller Service not ready");
return new BrowseResult(null, BrowseResult.ERROR_NO_AVRCP_SERVICE);
diff --git a/android/app/src/com/android/bluetooth/bas/BatteryService.java b/android/app/src/com/android/bluetooth/bas/BatteryService.java
index 5eb736d..169c7df 100644
--- a/android/app/src/com/android/bluetooth/bas/BatteryService.java
+++ b/android/app/src/com/android/bluetooth/bas/BatteryService.java
@@ -47,9 +47,6 @@
public class BatteryService extends ConnectableProfile {
private static final String TAG = BatteryService.class.getSimpleName();
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static BatteryService sBatteryService;
-
private final Looper mLooper;
private final Handler mHandler;
@@ -65,7 +62,6 @@
super(BluetoothProfile.BATTERY, requireNonNull(adapterService));
mHandler = new Handler(requireNonNull(looper));
mLooper = looper;
- setBatteryService(this);
}
public static boolean isEnabled() {
@@ -81,8 +77,6 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- setBatteryService(null);
-
// Destroy state machines and stop handler thread
synchronized (mStateMachines) {
for (BatteryStateMachine sm : mStateMachines.values()) {
@@ -95,29 +89,6 @@
mHandler.removeCallbacksAndMessages(null);
}
- /** Gets the BatteryService instance */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized BatteryService getBatteryService() {
- if (sBatteryService == null) {
- Log.w(TAG, "getBatteryService(): service is NULL");
- return null;
- }
-
- if (!sBatteryService.isAvailable()) {
- Log.w(TAG, "getBatteryService(): service is not available");
- return null;
- }
- return sBatteryService;
- }
-
- /** Sets the battery service instance. It should be called only for testing purpose. */
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized void setBatteryService(BatteryService instance) {
- Log.d(TAG, "setBatteryService(): set to: " + instance);
- sBatteryService = instance;
- }
-
/** Connects to the battery service of the given device. */
@Override
public boolean connect(BluetoothDevice device) {
diff --git a/android/app/src/com/android/bluetooth/bass_client/BassClientService.java b/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
index 8efafa0..6f86831 100644
--- a/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
+++ b/android/app/src/com/android/bluetooth/bass_client/BassClientService.java
@@ -71,10 +71,7 @@
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
import com.android.bluetooth.le_audio.LeAudioStackEvent;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -140,7 +137,6 @@
REMOVE
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
private static BassClientService sService;
private final Map<BluetoothDevice, BassClientStateMachine> mStateMachines = new HashMap<>();
@@ -204,9 +200,6 @@
private static final BluetoothEventLogger sEventLogger =
new BluetoothEventLogger(LOG_NB_EVENTS, TAG + " event log");
- // TODO(b/422543753) Delete on flag cleanup
- @VisibleForTesting ServiceFactory mServiceFactory = new ServiceFactory();
-
private class BassScanCallbackWrapper extends IScannerCallback.Stub {
private static final int SCANNER_ID_NOT_INITIALIZED = -2;
private static final int SCANNER_ID_INITIALIZING = -1;
@@ -539,24 +532,6 @@
setBassClientService(this);
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getCsipSetCoordinatorService();
- } else {
- return Optional.ofNullable(mServiceFactory.getCsipSetCoordinatorService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(mServiceFactory.getLeAudioService());
- }
- }
-
public static boolean isEnabled() {
return BluetoothProperties.isProfileBapBroadcastAssistEnabled().orElse(false);
}
@@ -791,13 +766,15 @@
}
if (mIsAssistantActive) {
- getLeAudioService()
+ mAdapterService
+ .getLeAudioService()
.ifPresent(leAudio -> leAudio.activeBroadcastAssistantNotification(false));
mIsAssistantActive = false;
}
if (mIsAllowedContextOfActiveGroupModified) {
- getLeAudioService()
+ mAdapterService
+ .getLeAudioService()
.ifPresent(
leAudio ->
leAudio.setActiveGroupAllowedContextMask(
@@ -874,7 +851,6 @@
Log.d(TAG, "Updated mSyncHandleToBroadcastIdMap: " + mSyncHandleToBroadcastIdMap);
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
private static synchronized void setBassClientService(BassClientService instance) {
Log.d(TAG, "setBassClientService(): set to: " + instance);
sService = instance;
@@ -974,7 +950,8 @@
&& mPausedBroadcastSinks.isEmpty()) {
mIsAssistantActive = false;
mUnicastSourceStreamStatus = Optional.empty();
- getLeAudioService()
+ mAdapterService
+ .getLeAudioService()
.ifPresent(leAudio -> leAudio.activeBroadcastAssistantNotification(false));
}
}
@@ -999,7 +976,7 @@
}
private boolean isDevicePartOfActiveUnicastGroup(BluetoothDevice device) {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
return false;
}
@@ -1046,7 +1023,7 @@
}
private void checkAndSetGroupAllowedContextMask(BluetoothDevice sink) {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
return;
}
@@ -1066,7 +1043,7 @@
}
private void checkAndResetGroupAllowedContextMask() {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
return;
}
@@ -1108,7 +1085,7 @@
}
if (isLocalBroadcast(broadcastId)) {
Log.d(TAG, "syncRequestForMetadata: local broadcast, updateMetadata");
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (!leAudio.isEmpty()) {
BluetoothLeBroadcastMetadata metadata =
leAudio.get().getBroadcastMetadata(broadcastId);
@@ -1223,7 +1200,7 @@
checkAndStopBroadcastMonitoring();
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
return;
}
@@ -1358,7 +1335,7 @@
private List<BluetoothDevice> getTargetDeviceList(BluetoothDevice device, boolean isGroupOp) {
if (isGroupOp) {
- final var csipClient = getCsipSetCoordinatorService();
+ final var csipClient = mAdapterService.getCsipSetCoordinatorService();
if (csipClient.isPresent()) {
// Check for coordinated set of devices in the context of CAP
List<BluetoothDevice> csipDevices =
@@ -1500,7 +1477,7 @@
return;
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.d(TAG, "DialingOutTimeoutEvent: No available LeAudioService");
return;
@@ -1516,13 +1493,7 @@
}
}
- /**
- * Get the BassClientService instance
- *
- * @return BassClientService instance
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized BassClientService getBassClientService() {
+ private static synchronized BassClientService getBassClientService() {
if (sService == null) {
Log.w(TAG, "getBassClientService(): service is NULL");
return null;
@@ -1616,7 +1587,7 @@
return BluetoothStatusCodes.ERROR_BAD_PARAMETERS;
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (!leAudio.isEmpty()) {
boolean isOnlyHighQualityAvailable =
metadata.getAudioConfigQuality()
@@ -3188,7 +3159,7 @@
}
if (isLocalBroadcast(sourceMetadata)) {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()
|| !(leAudio.get().isPaused(sourceMetadata.getBroadcastId())
|| leAudio.get().isPlaying(sourceMetadata.getBroadcastId()))) {
@@ -3627,7 +3598,7 @@
}
private boolean isLocalBroadcast(int broadcastId) {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
return false;
}
@@ -3747,7 +3718,7 @@
return false;
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.d(TAG, "isAudioSharingModeOn: No available LeAudioService");
return false;
@@ -3758,7 +3729,7 @@
/** Handle disconnection of potential broadcast sinks */
public void handleDeviceDisconnection(BluetoothDevice sink, boolean isIntentional) {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.d(TAG, "BluetoothLeBroadcastReceiveState: No available LeAudioService");
return;
@@ -4384,7 +4355,7 @@
}
public boolean isPrimaryDeviceSyncedToExternalBroadcast() {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.e(TAG, "no LeAudioService");
return false;
diff --git a/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java b/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
index c030bb8..79b8129 100644
--- a/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
+++ b/android/app/src/com/android/bluetooth/btservice/ActiveDeviceManager.java
@@ -37,12 +37,8 @@
import com.android.bluetooth.BluetoothMethodProxy;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.le_audio.LeAudioService;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -51,7 +47,6 @@
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
-import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -120,7 +115,6 @@
private final AdapterService mAdapterService;
private final DatabaseManager mDatabaseManager;
- private final ServiceFactory mFactory; // TODO(b/422543753) Delete on flag cleanup
private HandlerThread mHandlerThread = null;
private Handler mHandler = null;
private final AudioManager mAudioManager;
@@ -402,7 +396,8 @@
if (setHearingAidActiveDevice(device)) {
setA2dpActiveDevice(null, true);
setHfpActiveDevice(null);
- getLeAudioService()
+ mAdapterService
+ .getLeAudioService()
.ifPresentOrElse(
leAudio ->
setLeAudioActiveDevice(
@@ -416,7 +411,7 @@
synchronized (mLock) {
Log.d(TAG, "handleLeAudioConnected: " + device);
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty() || device == null) {
return;
}
@@ -550,7 +545,7 @@
+ ", mLeAudioActiveDevice="
+ mLeAudioActiveDevice);
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty() || device == null) {
return;
}
@@ -641,7 +636,7 @@
updateLeAudioActiveDeviceIfDualMode(mA2dpActiveDevice, device);
} else {
if (Utils.isDualModeAudioEnabled()
- && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
+ && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
Log.d(TAG, "Set LE Audio in-active as new classic device become active ");
setLeAudioActiveDevice(null, true);
}
@@ -731,7 +726,7 @@
}
} else {
if (Utils.isDualModeAudioEnabled()
- && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
+ && !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
Log.d(TAG, "Set LE Audio in-active as new classic device become active ");
setLeAudioActiveDevice(null, true);
}
@@ -784,7 +779,8 @@
+ device
+ ", mHearingAidActiveDevices="
+ mHearingAidActiveDevices);
- getHearingAidService()
+ mAdapterService
+ .getHearingAidService()
.ifPresent(
hearingAid -> {
// Just assign locally the new value
@@ -894,50 +890,13 @@
}
}
- ActiveDeviceManager(AdapterService service, ServiceFactory factory) {
+ ActiveDeviceManager(AdapterService service) {
mAdapterService = service;
mDatabaseManager = mAdapterService.getDatabaseManager();
- mFactory = factory;
mAudioManager = service.getSystemService(AudioManager.class);
mAudioManagerAudioDeviceCallback = new AudioManagerAudioDeviceCallback();
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<A2dpService> getA2dpService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getA2dpService();
- } else {
- return Optional.ofNullable(mFactory.getA2dpService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(mFactory.getLeAudioService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HearingAidService> getHearingAidService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHearingAidService();
- } else {
- return Optional.ofNullable(mFactory.getHearingAidService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HeadsetService> getHeadsetService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHeadsetService();
- } else {
- return Optional.ofNullable(mFactory.getHeadsetService());
- }
- }
-
void start() {
Log.d(TAG, "start()");
@@ -986,7 +945,7 @@
}
}
- final var a2dp = getA2dpService();
+ final var a2dp = mAdapterService.getA2dpService();
if (a2dp.isEmpty()) {
return false;
}
@@ -1015,7 +974,7 @@
mHandler.removeCallbacksAndMessages(mPendingActiveDevice);
mPendingActiveDevice = null;
}
- final var headset = getHeadsetService();
+ final var headset = mAdapterService.getHeadsetService();
if (headset.isEmpty()) {
return false;
}
@@ -1046,7 +1005,7 @@
+ ")"
+ (device == null ? " hasFallbackDevice=" + hasFallbackDevice : ""));
- final var hearingAid = getHearingAidService();
+ final var hearingAid = mAdapterService.getHearingAidService();
if (hearingAid.isEmpty()) {
return false;
}
@@ -1083,7 +1042,7 @@
@Nullable BluetoothDevice device, boolean hasFallbackDevice) {
Log.d(TAG, "setLeAudioActiveDevice(" + device + ", " + hasFallbackDevice + ")");
synchronized (mLock) {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
return false;
}
@@ -1137,7 +1096,7 @@
return false;
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.e(TAG, "LeAudioService not available");
return false;
@@ -1165,7 +1124,7 @@
private boolean setFallbackDeviceActiveLocked(BluetoothDevice recentlyRemovedDevice) {
Log.d(TAG, "setFallbackDeviceActive, recently removed: " + recentlyRemovedDevice);
List<BluetoothDevice> connectedHearingAidDevices = new ArrayList<>();
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (!mHearingAidConnectedDevices.isEmpty()) {
connectedHearingAidDevices.addAll(mHearingAidConnectedDevices);
}
@@ -1216,14 +1175,14 @@
}
}
- final var a2dp = getA2dpService();
+ final var a2dp = mAdapterService.getA2dpService();
BluetoothDevice a2dpFallbackDevice = null;
if (a2dp.isPresent()) {
a2dpFallbackDevice = a2dp.get().getFallbackDevice();
Log.d(TAG, "a2dpFallbackDevice: " + a2dpFallbackDevice);
}
- final var headset = getHeadsetService();
+ final var headset = mAdapterService.getHeadsetService();
BluetoothDevice headsetFallbackDevice = null;
if (headset.isPresent()) {
headsetFallbackDevice = headset.get().getFallbackDevice();
@@ -1374,7 +1333,7 @@
@GuardedBy("mLock")
private long getHearingAidActiveHiSyncIdLocked() {
- final var hearingAid = getHearingAidService();
+ final var hearingAid = mAdapterService.getHearingAidService();
if (hearingAid.isPresent() && !mHearingAidActiveDevices.isEmpty()) {
return hearingAid.get().getHiSyncId(mHearingAidActiveDevices.iterator().next());
}
@@ -1387,7 +1346,7 @@
* @return {@code true} if is broadcasting audio, {@code false} otherwise
*/
private boolean isBroadcastingAudio() {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.d(TAG, "isBroadcastingAudio: false - there is no LeAudioService");
return false;
@@ -1459,10 +1418,10 @@
sb.append(" Active: ");
getDevicesInfo(sb, mA2dpActiveDevice);
sb.append(" Fallback: ");
- final var a2dpService = getA2dpService();
+ final var a2dp = mAdapterService.getA2dpService();
BluetoothDevice a2dpFallbackDevice = null;
- if (!a2dpService.isEmpty()) {
- a2dpFallbackDevice = a2dpService.get().getFallbackDevice();
+ if (!a2dp.isEmpty()) {
+ a2dpFallbackDevice = a2dp.get().getFallbackDevice();
}
getDevicesInfo(sb, a2dpFallbackDevice);
sb.append(" Most recent: ");
@@ -1476,10 +1435,10 @@
sb.append(" Active: ");
getDevicesInfo(sb, mHfpActiveDevice);
sb.append(" Fallback: ");
- final var headsetService = getHeadsetService();
+ final var headset = mAdapterService.getHeadsetService();
BluetoothDevice headsetFallbackDevice = null;
- if (!headsetService.isEmpty()) {
- headsetFallbackDevice = headsetService.get().getFallbackDevice();
+ if (!headset.isEmpty()) {
+ headsetFallbackDevice = headset.get().getFallbackDevice();
}
getDevicesInfo(sb, headsetFallbackDevice);
sb.append(" Most recent: ");
diff --git a/android/app/src/com/android/bluetooth/btservice/AdapterService.java b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
index 4af8f59..ad9bd86 100644
--- a/android/app/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
@@ -204,7 +204,6 @@
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.regex.Pattern;
@@ -306,7 +305,6 @@
private final SdpManagerNativeInterface mSdpManagerNativeInterface;
private final SilenceDeviceManager mSilenceDeviceManager;
private final DatabaseManager mDatabaseManager;
- private final ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
private boolean mIsMediaProfileConnected;
@@ -482,8 +480,7 @@
mAdvertiseManagerNativeInterface = advertiseManagerNativeInterface;
mDistanceMeasurementNativeInterface = distanceMeasurementNativeInterface;
mSdpManagerNativeInterface = sdpManagerNativeInterface;
- mServiceFactory = new ServiceFactory();
- mSilenceDeviceManager = new SilenceDeviceManager(this, mServiceFactory, mLooper);
+ mSilenceDeviceManager = new SilenceDeviceManager(this, mLooper);
mDatabaseManager = new DatabaseManager(this);
}
@@ -1027,12 +1024,12 @@
*/
if (!isAutomotiveDevice && getResources().getBoolean(R.bool.enable_phone_policy)) {
Log.i(TAG, "Phone policy enabled");
- mPhonePolicy = Optional.of(new PhonePolicy(this, mLooper, mServiceFactory));
+ mPhonePolicy = Optional.of(new PhonePolicy(this, mLooper));
} else {
Log.i(TAG, "Phone policy disabled");
}
- mActiveDeviceManager = new ActiveDeviceManager(this, mServiceFactory);
+ mActiveDeviceManager = new ActiveDeviceManager(this);
mActiveDeviceManager.start();
mBtCompanionManager = new CompanionManager(this);
@@ -1219,43 +1216,6 @@
}
}
- // TODO(b/422543753) Delete on flag cleanup
- private static final Map<Integer, Function<AdapterService, ProfileService>>
- PROFILE_CONSTRUCTORS =
- Map.ofEntries(
- Map.entry(BluetoothProfile.A2DP, A2dpService::new),
- Map.entry(BluetoothProfile.A2DP_SINK, A2dpSinkService::new),
- Map.entry(BluetoothProfile.AVRCP, AvrcpTargetService::new),
- Map.entry(
- BluetoothProfile.AVRCP_CONTROLLER, AvrcpControllerService::new),
- Map.entry(
- BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT,
- BassClientService::new),
- Map.entry(BluetoothProfile.BATTERY, BatteryService::new),
- Map.entry(
- BluetoothProfile.CSIP_SET_COORDINATOR,
- CsipSetCoordinatorService::new),
- Map.entry(BluetoothProfile.HAP_CLIENT, HapClientService::new),
- Map.entry(BluetoothProfile.HEADSET, HeadsetService::new),
- Map.entry(BluetoothProfile.HEADSET_CLIENT, HeadsetClientService::new),
- Map.entry(BluetoothProfile.HEARING_AID, HearingAidService::new),
- Map.entry(BluetoothProfile.HID_DEVICE, HidDeviceService::new),
- Map.entry(BluetoothProfile.HID_HOST, HidHostService::new),
- Map.entry(BluetoothProfile.GATT, GattService::new),
- Map.entry(BluetoothProfile.LE_AUDIO, LeAudioService::new),
- Map.entry(BluetoothProfile.LE_AUDIO_BROADCAST, LeAudioBroadcast::new),
- Map.entry(BluetoothProfile.LE_CALL_CONTROL, TbsService::new),
- Map.entry(BluetoothProfile.MAP, BluetoothMapService::new),
- Map.entry(BluetoothProfile.MAP_CLIENT, MapClientService::new),
- Map.entry(BluetoothProfile.MCP_SERVER, McpService::new),
- Map.entry(BluetoothProfile.OPP, BluetoothOppService::new),
- Map.entry(BluetoothProfile.PAN, PanService::new),
- Map.entry(BluetoothProfile.PBAP, BluetoothPbapService::new),
- Map.entry(BluetoothProfile.PBAP_CLIENT, PbapClientService::new),
- Map.entry(BluetoothProfile.SAP, SapService::new),
- Map.entry(BluetoothProfile.VOLUME_CONTROL, VolumeControlService::new),
- Map.entry(BluetoothProfile.VAPS_SERVER, VapsServerService::new));
-
/**
* Constructs a {@link ProfileService} instance for the given profile ID.
*
@@ -1316,25 +1276,10 @@
return;
}
Log.i(TAG, logHdr + " starting profile");
- final ProfileService profileService;
- if (Flags.adapterServiceProfilesUseOptional()) {
- profileService = constructProfile(profileId);
- } else {
- profileService = PROFILE_CONSTRUCTORS.get(profileId).apply(this);
- }
+ final var profileService = constructProfile(profileId);
mStartedProfiles.put(profileId, profileService);
addProfile(profileService);
profileService.setAvailable(true);
- // With `Flags.adapterServiceProfilesUseOptional()` on, this assignment is not required
- // as it already happens within `constructProfile`
- if (!Flags.adapterServiceProfilesUseOptional()) {
- // With `Flags.onlyStartScanDuringBleOn()` GattService initialization is pushed back
- // to `ON` state instead of `BLE_ON`. Here we ensure mGattService is set prior to
- // other Profiles using it.
- if (profileId == BluetoothProfile.GATT && Flags.onlyStartScanDuringBleOn()) {
- mGattService = (GattService) profileService;
- }
- }
onProfileServiceStateChanged(profileService, BluetoothAdapter.STATE_ON);
} else if (state == BluetoothAdapter.STATE_OFF) {
ProfileService profileService = mStartedProfiles.remove(profileId);
diff --git a/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java b/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
index 288c71a..3feec3f 100644
--- a/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
+++ b/android/app/src/com/android/bluetooth/btservice/BondStateMachine.java
@@ -43,17 +43,9 @@
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.a2dpsink.A2dpSinkService;
import com.android.bluetooth.btservice.RemoteDevices.DeviceProperties;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.hfpclient.HeadsetClientService;
-import com.android.bluetooth.hid.HidHostService;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.bluetooth.pbapclient.PbapClientService;
import com.android.bluetooth.vc.VolumeControlService;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.State;
@@ -759,100 +751,41 @@
@VisibleForTesting
void clearProfilePriority(BluetoothDevice device) {
- if (Flags.adapterServiceProfilesUseOptional()) {
- // Preserving existing order
- Stream.of(
- mAdapterService.getHidHostService(),
- mAdapterService.getA2dpService(),
- mAdapterService.getHeadsetService(),
- mAdapterService.getHeadsetClientService(),
- mAdapterService.getA2dpSinkService(),
- mAdapterService.getPbapClientService(),
- mAdapterService.getLeAudioService(),
- mAdapterService.getCsipSetCoordinatorService(),
- mAdapterService.getVolumeControlService(),
- mAdapterService.getHapClientService())
- .flatMap(Optional::stream)
- .forEach(
- profile -> {
- if (profile.getProfileId() == VOLUME_CONTROL
- && Flags.vcpOnMainLooper()
- && !Flags.bondStateMachineLooper()) {
- ((VolumeControlService) profile)
- .syncPost(
- vcs ->
- vcs.setConnectionPolicy(
- device,
- CONNECTION_POLICY_UNKNOWN));
- } else if (profile.getProfileId() == HAP_CLIENT
- && Flags.hapOnMainLooper()
- && !Flags.bondStateMachineLooper()) {
- ((HapClientService) profile)
- .syncPost(
- hap ->
- hap.setConnectionPolicy(
- device,
- CONNECTION_POLICY_UNKNOWN));
- } else {
- profile.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- });
- } else {
- HidHostService hidService = HidHostService.getHidHostService();
- A2dpService a2dpService = A2dpService.getA2dpService();
- HeadsetService headsetService = HeadsetService.getHeadsetService();
- HeadsetClientService headsetClientService =
- HeadsetClientService.getHeadsetClientService();
- A2dpSinkService a2dpSinkService = A2dpSinkService.getA2dpSinkService();
- PbapClientService pbapClientService = PbapClientService.getPbapClientService();
- LeAudioService leAudioService = LeAudioService.getLeAudioService();
- CsipSetCoordinatorService csipSetCoordinatorService =
- CsipSetCoordinatorService.getCsipSetCoordinatorService();
- VolumeControlService volumeControlService =
- VolumeControlService.getVolumeControlService();
- HapClientService hapClientService = HapClientService.getHapClientService();
-
- if (hidService != null) {
- hidService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (a2dpService != null) {
- a2dpService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (headsetService != null) {
- headsetService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (headsetClientService != null) {
- headsetClientService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (a2dpSinkService != null) {
- a2dpSinkService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (pbapClientService != null) {
- pbapClientService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (leAudioService != null) {
- leAudioService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (csipSetCoordinatorService != null) {
- csipSetCoordinatorService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- if (volumeControlService != null) {
- if (Flags.vcpOnMainLooper() && !Flags.bondStateMachineLooper()) {
- volumeControlService.syncPost(
- vcs -> vcs.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN));
- } else {
- volumeControlService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- }
- if (hapClientService != null) {
- if (Flags.hapOnMainLooper() && !Flags.bondStateMachineLooper()) {
- hapClientService.syncPost(
- hap -> hap.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN));
- } else {
- hapClientService.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
- }
- }
- }
+ // Preserving existing order
+ Stream.of(
+ mAdapterService.getHidHostService(),
+ mAdapterService.getA2dpService(),
+ mAdapterService.getHeadsetService(),
+ mAdapterService.getHeadsetClientService(),
+ mAdapterService.getA2dpSinkService(),
+ mAdapterService.getPbapClientService(),
+ mAdapterService.getLeAudioService(),
+ mAdapterService.getCsipSetCoordinatorService(),
+ mAdapterService.getVolumeControlService(),
+ mAdapterService.getHapClientService())
+ .flatMap(Optional::stream)
+ .forEach(
+ profile -> {
+ if (profile.getProfileId() == VOLUME_CONTROL
+ && Flags.vcpOnMainLooper()
+ && !Flags.bondStateMachineLooper()) {
+ ((VolumeControlService) profile)
+ .syncPost(
+ vcs ->
+ vcs.setConnectionPolicy(
+ device, CONNECTION_POLICY_UNKNOWN));
+ } else if (profile.getProfileId() == HAP_CLIENT
+ && Flags.hapOnMainLooper()
+ && !Flags.bondStateMachineLooper()) {
+ ((HapClientService) profile)
+ .syncPost(
+ hap ->
+ hap.setConnectionPolicy(
+ device, CONNECTION_POLICY_UNKNOWN));
+ } else {
+ profile.setConnectionPolicy(device, CONNECTION_POLICY_UNKNOWN);
+ }
+ });
}
public static String bondStateToString(int state) {
diff --git a/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java b/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
index 19307dc..7f9fe21 100644
--- a/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
+++ b/android/app/src/com/android/bluetooth/btservice/PhonePolicy.java
@@ -45,26 +45,15 @@
import com.android.bluetooth.R;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.bas.BatteryService;
-import com.android.bluetooth.bass_client.BassClientService;
import com.android.bluetooth.btservice.storage.DatabaseManager;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
import com.android.bluetooth.hid.HidHostService;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.bluetooth.pan.PanService;
-import com.android.bluetooth.vc.VolumeControlService;
import com.android.internal.annotations.VisibleForTesting;
import java.time.Duration;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Optional;
import java.util.Set;
// Describes the phone policy
@@ -95,7 +84,6 @@
private final DatabaseManager mDatabaseManager;
private final AdapterService mAdapterService;
- private final ServiceFactory mFactory; // TODO(b/422543753) Delete on flag cleanup
private final Handler mHandler;
private final Set<BluetoothDevice> mHeadsetRetrySet = new HashSet<>();
private final Set<BluetoothDevice> mA2dpRetrySet = new HashSet<>();
@@ -104,10 +92,9 @@
@VisibleForTesting boolean mAutoConnectProfilesSupported;
@VisibleForTesting boolean mLeAudioEnabledByDefault;
- PhonePolicy(AdapterService adapterService, Looper looper, ServiceFactory factory) {
+ PhonePolicy(AdapterService adapterService, Looper looper) {
mAdapterService = adapterService;
mDatabaseManager = requireNonNull(mAdapterService.getDatabaseManager());
- mFactory = factory;
mHandler = new Handler(looper);
mAutoConnectProfilesSupported =
SystemProperties.getBoolean(AUTO_CONNECT_PROFILES_PROPERTY, false);
@@ -116,105 +103,6 @@
mAdapterService.registerBluetoothStateCallback(mHandler::post, this);
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<A2dpService> getA2dpService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getA2dpService();
- } else {
- return Optional.ofNullable(mFactory.getA2dpService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<BassClientService> getBassClientService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getBassClientService();
- } else {
- return Optional.ofNullable(mFactory.getBassClientService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<BatteryService> getBatteryService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getBatteryService();
- } else {
- return Optional.ofNullable(mFactory.getBatteryService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getCsipSetCoordinatorService();
- } else {
- return Optional.ofNullable(mFactory.getCsipSetCoordinatorService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HapClientService> getHapClientService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHapClientService();
- } else {
- return Optional.ofNullable(mFactory.getHapClientService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HeadsetService> getHeadsetService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHeadsetService();
- } else {
- return Optional.ofNullable(mFactory.getHeadsetService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HearingAidService> getHearingAidService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHearingAidService();
- } else {
- return Optional.ofNullable(mFactory.getHearingAidService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HidHostService> getHidHostService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHidHostService();
- } else {
- return Optional.ofNullable(mFactory.getHidHostService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(mFactory.getLeAudioService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<PanService> getPanService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getPanService();
- } else {
- return Optional.ofNullable(mFactory.getPanService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<VolumeControlService> getVolumeControlService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getVolumeControlService();
- } else {
- return Optional.ofNullable(mFactory.getVolumeControlService());
- }
- }
-
@Override
public void onBluetoothStateChange(int prevState, int newState) {
// Only act if the adapter has actually changed state from non-ON to ON.
@@ -259,7 +147,7 @@
boolean isLeAudioOnlyGroup(BluetoothDevice device) {
String log = "isLeAudioOnlyGroup(" + device + "): ";
- final var csipSetCoordinator = getCsipSetCoordinatorService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
if (csipSetCoordinator.isEmpty()) {
Log.d(TAG, log + "csipSetCoordinatorService is null");
return false;
@@ -344,7 +232,7 @@
// return true if device support Hearing Access Service and it has not been manually disabled
private boolean shouldEnableHapByDefault(BluetoothDevice device, ParcelUuid[] uuids) {
- final var hap = getHapClientService();
+ final var hap = mAdapterService.getHapClientService();
if (hap.isEmpty()) {
Log.e(TAG, "shouldEnableHapByDefault: No HapClientService");
return false;
@@ -365,7 +253,7 @@
return false;
}
- final var hap = getHapClientService();
+ final var hap = mAdapterService.getHapClientService();
if (hap.isEmpty()) {
Log.e(TAG, "shouldBlockBroadcastForHapDevice: No HapClientService");
return false;
@@ -383,17 +271,17 @@
// Policy implementation, all functions MUST be private
private void processInitProfilePriorities(BluetoothDevice device, ParcelUuid[] uuids) {
String log = "processInitProfilePriorities(" + device + "): ";
- final var a2dp = getA2dpService();
- final var battery = getBatteryService();
- final var bassClient = getBassClientService();
- final var csipSetCoordinator = getCsipSetCoordinatorService();
- final var hapClient = getHapClientService();
- final var headset = getHeadsetService();
- final var hearingAid = getHearingAidService();
- final var hidHost = getHidHostService();
- final var leAudio = getLeAudioService();
- final var pan = getPanService();
- final var volumeControl = getVolumeControlService();
+ final var a2dp = mAdapterService.getA2dpService();
+ final var battery = mAdapterService.getBatteryService();
+ final var bassClient = mAdapterService.getBassClientService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
+ final var hapClient = mAdapterService.getHapClientService();
+ final var headset = mAdapterService.getHeadsetService();
+ final var hearingAid = mAdapterService.getHearingAidService();
+ final var hidHost = mAdapterService.getHidHostService();
+ final var leAudio = mAdapterService.getLeAudioService();
+ final var pan = mAdapterService.getPanService();
+ final var volumeControl = mAdapterService.getVolumeControlService();
final boolean isBypassLeAudioAllowlist =
SystemProperties.getBoolean(BYPASS_LE_AUDIO_ALLOWLIST_PROPERTY, false);
@@ -629,7 +517,7 @@
void handleConnectionPolicyAfterCsipConnect(BluetoothDevice device) {
String log = "handleConnectionPolicyAfterCsipConnect(" + device + "): ";
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()
|| (leAudio.get().getConnectionPolicy(device) == CONNECTION_POLICY_ALLOWED)
|| !mAdapterService.isProfileSupported(device, BluetoothProfile.LE_AUDIO)) {
@@ -641,7 +529,7 @@
boolean isAnyOtherGroupMemberAllowed = false;
/* isLeAudioOnlyGroup returning true implies csipSetCoordinatorService is valid */
- final var csipSetCoordinator = getCsipSetCoordinatorService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
if (csipSetCoordinator.isPresent()) {
/* Since isLeAudioOnlyGroup return true it means csipSetCoordinatorService is valid */
groupDevices =
@@ -745,10 +633,10 @@
Log.d(TAG, log + "isDualMode=" + isDualMode);
if (profile == BluetoothProfile.LE_AUDIO) {
- final var a2dp = getA2dpService();
- final var headset = getHeadsetService();
- final var leAudio = getLeAudioService();
- final var hearingAid = getHearingAidService();
+ final var a2dp = mAdapterService.getA2dpService();
+ final var headset = mAdapterService.getHeadsetService();
+ final var leAudio = mAdapterService.getLeAudioService();
+ final var hearingAid = mAdapterService.getHearingAidService();
if (leAudio.isEmpty()) {
Log.d(TAG, log + "LeAudioService is null");
@@ -786,11 +674,11 @@
private boolean handleAllProfilesDisconnected(BluetoothDevice device) {
boolean atLeastOneProfileConnectedForDevice = false;
boolean allProfilesEmpty = true;
- final var a2dp = getA2dpService();
- final var headset = getHeadsetService();
- final var leAudio = getLeAudioService();
- final var pan = getPanService();
- final var csipSetCoordinator = getCsipSetCoordinatorService();
+ final var a2dp = mAdapterService.getA2dpService();
+ final var headset = mAdapterService.getHeadsetService();
+ final var leAudio = mAdapterService.getLeAudioService();
+ final var pan = mAdapterService.getPanService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
if (headset.isPresent()) {
List<BluetoothDevice> hsConnDevList = headset.get().getConnectedDevices();
@@ -873,7 +761,7 @@
private void autoConnectA2dp(BluetoothDevice device) {
String log = "autoConnectA2dp(" + device + "): ";
- final var a2dp = getA2dpService();
+ final var a2dp = mAdapterService.getA2dpService();
if (a2dp.isEmpty()) {
Log.w(TAG, log + "Failed to connect, A2DP service is null");
return;
@@ -889,7 +777,7 @@
private void autoConnectHeadset(BluetoothDevice device) {
String log = "autoConnectHeadset(" + device + "): ";
- final var headset = getHeadsetService();
+ final var headset = mAdapterService.getHeadsetService();
if (headset.isEmpty()) {
Log.w(TAG, log + "Failed to connect, HFP service is null");
return;
@@ -905,7 +793,7 @@
private void autoConnectHidHost(BluetoothDevice device) {
String log = "autoConnectHidHost(" + device + "): ";
- final var hidHost = getHidHostService();
+ final var hidHost = mAdapterService.getHidHostService();
if (hidHost.isEmpty()) {
Log.w(TAG, log + "Failed to connect, HID service is null");
return;
@@ -962,16 +850,16 @@
return;
}
- final var a2dp = getA2dpService();
- final var bassClient = getBassClientService();
- final var battery = getBatteryService();
- final var csipSetCoordinator = getCsipSetCoordinatorService();
- final var hapClient = getHapClientService();
- final var headset = getHeadsetService();
- final var hidHost = getHidHostService();
- final var leAudio = getLeAudioService();
- final var pan = getPanService();
- final var volumeControl = getVolumeControlService();
+ final var a2dp = mAdapterService.getA2dpService();
+ final var bassClient = mAdapterService.getBassClientService();
+ final var battery = mAdapterService.getBatteryService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
+ final var hapClient = mAdapterService.getHapClientService();
+ final var headset = mAdapterService.getHeadsetService();
+ final var hidHost = mAdapterService.getHidHostService();
+ final var leAudio = mAdapterService.getLeAudioService();
+ final var pan = mAdapterService.getPanService();
+ final var volumeControl = mAdapterService.getVolumeControlService();
if (headset.isPresent()) {
if (!mHeadsetRetrySet.contains(device)
diff --git a/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java b/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java
index f459a4c..2fe3baa 100644
--- a/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java
+++ b/android/app/src/com/android/bluetooth/btservice/RemoteDevices.java
@@ -59,7 +59,6 @@
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.R;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.bas.BatteryService;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.hfp.HeadsetHalConstants;
import com.android.internal.annotations.VisibleForTesting;
@@ -75,7 +74,6 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
@@ -191,15 +189,6 @@
};
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<BatteryService> getBatteryService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getBatteryService();
- } else {
- return Optional.ofNullable(BatteryService.getBatteryService());
- }
- }
-
/**
* Reset should be called when the state of this object needs to be cleared RemoteDevices is
* still usable after reset
@@ -1659,7 +1648,8 @@
|| state == BluetoothAdapter.STATE_BLE_TURNING_ON) {
intent = new Intent(BluetoothAdapter.ACTION_BLE_ACL_CONNECTED);
}
- getBatteryService()
+ mAdapterService
+ .getBatteryService()
.filter(battery -> transport == TRANSPORT_LE)
.ifPresent(battery -> battery.connectIfPossible(device));
mAdapterService.updatePhonePolicyOnAclConnect(device);
@@ -1691,7 +1681,8 @@
}
// Reset battery level on complete disconnection
if (mAdapterService.getConnectionState(device) == 0) {
- getBatteryService()
+ mAdapterService
+ .getBatteryService()
.filter(battery -> transport == TRANSPORT_LE)
.filter(battery -> battery.getConnectionState(device) != STATE_DISCONNECTED)
.ifPresent(battery -> battery.disconnect(device));
@@ -2323,7 +2314,8 @@
@VisibleForTesting
boolean hasBatteryService(BluetoothDevice device) {
- return getBatteryService()
+ return mAdapterService
+ .getBatteryService()
.map(battery -> battery.getConnectionState(device) == STATE_CONNECTED)
.orElse(false);
}
diff --git a/android/app/src/com/android/bluetooth/btservice/ServiceFactory.java b/android/app/src/com/android/bluetooth/btservice/ServiceFactory.java
deleted file mode 100644
index b7553ad..0000000
--- a/android/app/src/com/android/bluetooth/btservice/ServiceFactory.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.bluetooth.btservice;
-
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.avrcp.AvrcpTargetService;
-import com.android.bluetooth.bas.BatteryService;
-import com.android.bluetooth.bass_client.BassClientService;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
-import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.hid.HidHostService;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.bluetooth.mcp.McpService;
-import com.android.bluetooth.pan.PanService;
-import com.android.bluetooth.vc.VolumeControlService;
-
-// Factory class to create instances of static services. Useful in mocking the service objects.
-@Deprecated // TODO(b/422543753) Delete on flag cleanup
-public class ServiceFactory {
- public A2dpService getA2dpService() {
- return A2dpService.getA2dpService();
- }
-
- public CsipSetCoordinatorService getCsipSetCoordinatorService() {
- return CsipSetCoordinatorService.getCsipSetCoordinatorService();
- }
-
- public HeadsetService getHeadsetService() {
- return HeadsetService.getHeadsetService();
- }
-
- public HidHostService getHidHostService() {
- return HidHostService.getHidHostService();
- }
-
- public PanService getPanService() {
- return PanService.getPanService();
- }
-
- public HearingAidService getHearingAidService() {
- return HearingAidService.getHearingAidService();
- }
-
- public LeAudioService getLeAudioService() {
- return LeAudioService.getLeAudioService();
- }
-
- public AvrcpTargetService getAvrcpTargetService() {
- return AvrcpTargetService.get();
- }
-
- public McpService getMcpService() {
- return McpService.getMcpService();
- }
-
- public VolumeControlService getVolumeControlService() {
- return VolumeControlService.getVolumeControlService();
- }
-
- public HapClientService getHapClientService() {
- return HapClientService.getHapClientService();
- }
-
- public BassClientService getBassClientService() {
- return BassClientService.getBassClientService();
- }
-
- public BatteryService getBatteryService() {
- return BatteryService.getBatteryService();
- }
-}
diff --git a/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java b/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java
index 44fe024..0efaa79 100644
--- a/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java
+++ b/android/app/src/com/android/bluetooth/btservice/SilenceDeviceManager.java
@@ -29,15 +29,12 @@
import android.util.Log;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfp.HeadsetService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
/**
* The silence device manager controls silence mode for A2DP, HFP, and AVRCP.
@@ -54,7 +51,6 @@
private static final String TAG = Utils.BT_PREFIX + SilenceDeviceManager.class.getSimpleName();
private final AdapterService mAdapterService;
- private final ServiceFactory mFactory; // TODO(b/422543753) Delete on flag cleanup
private final Handler mHandler;
private final Map<BluetoothDevice, Boolean> mSilenceDevices = new HashMap<>();
@@ -188,9 +184,8 @@
}
}
- SilenceDeviceManager(AdapterService service, ServiceFactory factory, Looper looper) {
+ SilenceDeviceManager(AdapterService service, Looper looper) {
mAdapterService = service;
- mFactory = factory;
mHandler = new SilenceDeviceManagerHandler(looper);
}
@@ -227,21 +222,10 @@
final var stateFinal = state;
mSilenceDevices.replace(device, stateFinal);
- final Optional<A2dpService> a2dpService;
- if (Flags.adapterServiceProfilesUseOptional()) {
- a2dpService = mAdapterService.getA2dpService();
- } else {
- a2dpService = Optional.ofNullable(mFactory.getA2dpService());
- }
- a2dpService.ifPresent(a2dp -> a2dp.setSilenceMode(device, stateFinal));
-
- final Optional<HeadsetService> headsetService;
- if (Flags.adapterServiceProfilesUseOptional()) {
- headsetService = mAdapterService.getHeadsetService();
- } else {
- headsetService = Optional.ofNullable(mFactory.getHeadsetService());
- }
- headsetService.ifPresent(headset -> headset.setSilenceMode(device, stateFinal));
+ mAdapterService.getA2dpService().ifPresent(a2dp -> a2dp.setSilenceMode(device, stateFinal));
+ mAdapterService
+ .getHeadsetService()
+ .ifPresent(headset -> headset.setSilenceMode(device, stateFinal));
Log.i(TAG, "Silence mode change " + device + ": " + oldState + " -> " + stateFinal);
broadcastSilenceStateChange(device);
diff --git a/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java b/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java
index a2332a6..bfd504a 100644
--- a/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java
+++ b/android/app/src/com/android/bluetooth/csip/CsipSetCoordinatorService.java
@@ -52,9 +52,7 @@
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -64,7 +62,6 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@@ -78,14 +75,10 @@
// Timeout for state machine thread join, to prevent potential ANR.
private static final int SM_THREAD_JOIN_TIMEOUT_MS = 1000;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static CsipSetCoordinatorService sCsipSetCoordinatorService;
-
private final Handler mHandler;
private final HandlerThread mStateMachinesThread;
private final Looper mStateMachinesLooper;
private final CsipSetCoordinatorNativeInterface mNativeInterface;
- private final ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@GuardedBy("mStateMachines")
private final Map<BluetoothDevice, CsipSetCoordinatorStateMachine> mStateMachines =
@@ -105,21 +98,19 @@
new ConcurrentHashMap<>();
public CsipSetCoordinatorService(AdapterService adapterService) {
- this(adapterService, null, null, new ServiceFactory());
+ this(adapterService, null, null);
}
@VisibleForTesting
CsipSetCoordinatorService(
AdapterService adapterService,
Looper looper,
- CsipSetCoordinatorNativeInterface nativeInterface,
- ServiceFactory serviceFactory) {
+ CsipSetCoordinatorNativeInterface nativeInterface) {
super(BluetoothProfile.CSIP_SET_COORDINATOR, requireNonNull(adapterService));
mNativeInterface =
requireNonNullElseGet(
nativeInterface,
() -> new CsipSetCoordinatorNativeInterface(mAdapterService, this));
- mServiceFactory = requireNonNull(serviceFactory);
if (looper == null) {
mHandler = new Handler(requireNonNull(Looper.getMainLooper()));
mStateMachinesThread = new HandlerThread("CsipSetCoordinatorService.StateMachines");
@@ -131,22 +122,10 @@
mStateMachinesLooper = looper;
}
- // Mark service as started
- setCsipSetCoordinatorService(this);
-
// Initialize native interface
mNativeInterface.init();
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(mServiceFactory.getLeAudioService());
- }
- }
-
public static boolean isEnabled() {
return BluetoothProperties.isProfileCsipSetCoordinatorEnabled().orElse(false);
}
@@ -160,17 +139,9 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- if (sCsipSetCoordinatorService == null) {
- Log.w(TAG, "cleanup() called before initialization");
- return;
- }
-
// Cleanup native interface
mNativeInterface.cleanup();
- // Mark service as stopped
- setCsipSetCoordinatorService(null);
-
// Destroy state machines and stop handler thread
synchronized (mStateMachines) {
for (CsipSetCoordinatorStateMachine sm : mStateMachines.values()) {
@@ -203,32 +174,6 @@
}
/**
- * Get the CsipSetCoordinatorService instance
- *
- * @return CsipSetCoordinatorService instance
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized CsipSetCoordinatorService getCsipSetCoordinatorService() {
- if (sCsipSetCoordinatorService == null) {
- Log.w(TAG, "getCsipSetCoordinatorService(): service is NULL");
- return null;
- }
-
- if (!sCsipSetCoordinatorService.isAvailable()) {
- Log.w(TAG, "getCsipSetCoordinatorService(): service is not available");
- return null;
- }
- return sCsipSetCoordinatorService;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static synchronized void setCsipSetCoordinatorService(
- CsipSetCoordinatorService instance) {
- Log.d(TAG, "setCsipSetCoordinatorService(): set to: " + instance);
- sCsipSetCoordinatorService = instance;
- }
-
- /**
* Connect the given Bluetooth device.
*
* @return true if connection is successful, false otherwise.
@@ -660,7 +605,7 @@
private void disableCsipIfNeeded(int groupId) {
/* Make sure CSIP connection policy mirrors that of LeAudioService once all CSIP
characteristic reads have completed (ensures we can pair other set devices) */
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.w(TAG, "checkIfGroupPaired: LE Audio Service is null");
return;
diff --git a/android/app/src/com/android/bluetooth/hap/HapClientService.java b/android/app/src/com/android/bluetooth/hap/HapClientService.java
index f6a2224..2dbb374 100644
--- a/android/app/src/com/android/bluetooth/hap/HapClientService.java
+++ b/android/app/src/com/android/bluetooth/hap/HapClientService.java
@@ -54,8 +54,6 @@
import com.android.bluetooth.btservice.ActiveDeviceManager;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -66,7 +64,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
@@ -86,9 +83,6 @@
private static final int MAX_HEARING_ACCESS_STATE_MACHINES = 10;
private static final int SM_THREAD_JOIN_TIMEOUT_MS = 1000;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static HapClientService sHapClient;
-
private final Map<BluetoothDevice, HapClientStateMachine> mStateMachines =
new ConcurrentHashMap<>();
private final Map<BluetoothDevice, Integer> mDeviceCurrentPresetMap = new HashMap<>();
@@ -103,35 +97,6 @@
@GuardedBy("mCallbacks")
final RemoteCallbackList<IBluetoothHapClientCallback> mCallbacks = new RemoteCallbackList<>();
- // TODO(b/422543753) Delete on flag cleanup
- @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- static synchronized void setHapClient(HapClientService instance) {
- Log.d(TAG, "setHapClient(): set to: " + instance);
- sHapClient = instance;
- }
-
- /**
- * Get the HapClientService instance
- *
- * @return HapClientService instance
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized HapClientService getHapClientService() {
- if (sHapClient == null) {
- Log.w(TAG, "getHapClientService(): service is NULL");
- return null;
- }
-
- if (!sHapClient.isAvailable()) {
- Log.w(TAG, "getHapClientService(): service is not available");
- return null;
- }
- return sHapClient;
- }
-
public HapClientService(AdapterService adapterService) {
this(adapterService, Flags.hapOnMainLooper() ? Looper.getMainLooper() : null, null);
}
@@ -168,18 +133,6 @@
// Initialize native interface
mNativeInterface.init();
-
- // Mark service as started
- setHapClient(this);
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getCsipSetCoordinatorService();
- } else {
- return Optional.ofNullable(mFactory.getCsipSetCoordinatorService());
- }
}
public void syncPost(Consumer<HapClientService> consumer) {
@@ -251,14 +204,6 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- if (sHapClient == null) {
- Log.w(TAG, "cleanup() called before initialization");
- return;
- }
-
- // Marks service as stopped
- setHapClient(null);
-
// Destroy state machines and stop handler thread
synchronized (mStateMachines) {
for (HapClientStateMachine sm : mStateMachines.values()) {
@@ -603,7 +548,7 @@
}
int getHapGroup(BluetoothDevice device) {
- final var csipSetCoordinator = getCsipSetCoordinatorService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
if (csipSetCoordinator.isPresent()) {
final Map<Integer, ParcelUuid> groups =
csipSetCoordinator.get().getGroupUuidMapByDevice(device);
@@ -771,7 +716,8 @@
return false;
}
- return getCsipSetCoordinatorService()
+ return mAdapterService
+ .getCsipSetCoordinatorService()
.map(csipClient -> csipClient.getAllGroupIds(BluetoothUuid.CAP).contains(groupId))
.orElse(false);
}
@@ -853,7 +799,8 @@
return emptyList();
}
- return getCsipSetCoordinatorService()
+ return mAdapterService
+ .getCsipSetCoordinatorService()
.map(csipClient -> csipClient.getGroupDevicesOrdered(groupId))
.orElse(emptyList());
}
diff --git a/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java b/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java
index 45311fb..507a285 100644
--- a/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java
+++ b/android/app/src/com/android/bluetooth/hearingaid/HearingAidService.java
@@ -67,9 +67,6 @@
// Upper limit of all HearingAid devices: Bonded or Connected
private static final int MAX_HEARING_AID_STATE_MACHINES = 10;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static HearingAidService sHearingAidService;
-
private final HearingAidNativeInterface mNativeInterface;
private final AudioManager mAudioManager;
private final HandlerThread mStateMachinesThread;
@@ -115,7 +112,6 @@
() -> new HearingAidNativeInterface(mAdapterService, this));
mAudioManager = requireNonNull(obtainSystemService(AudioManager.class));
- setHearingAidService(this);
mNativeInterface.init();
}
@@ -135,9 +131,6 @@
// Cleanup native interface
mNativeInterface.cleanup();
- // Mark service as stopped
- setHearingAidService(null);
-
// Destroy state machines and stop handler thread
synchronized (mStateMachines) {
for (HearingAidStateMachine sm : mStateMachines.values()) {
@@ -167,32 +160,6 @@
}
/**
- * Get the HearingAidService instance
- *
- * @return HearingAidService instance
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized HearingAidService getHearingAidService() {
- if (sHearingAidService == null) {
- Log.w(TAG, "getHearingAidService(): service is NULL");
- return null;
- }
-
- if (!sHearingAidService.isAvailable()) {
- Log.w(TAG, "getHearingAidService(): service is not available");
- return null;
- }
- return sHearingAidService;
- }
-
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- static synchronized void setHearingAidService(HearingAidService instance) {
- Log.d(TAG, "setHearingAidService(): set to: " + instance);
- sHearingAidService = instance;
- }
-
- /**
* Connects the hearing aid profile to the passed in device
*
* @param device is the device with which we will connect the hearing aid profile
diff --git a/android/app/src/com/android/bluetooth/hfp/HeadsetService.java b/android/app/src/com/android/bluetooth/hfp/HeadsetService.java
index 58d109f..6a25cce 100644
--- a/android/app/src/com/android/bluetooth/hfp/HeadsetService.java
+++ b/android/app/src/com/android/bluetooth/hfp/HeadsetService.java
@@ -61,16 +61,12 @@
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
import com.android.bluetooth.btservice.MetricsLogger;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfpclient.HeadsetClientService;
import com.android.bluetooth.hfpclient.HeadsetClientStateMachine;
-import com.android.bluetooth.le_audio.LeAudioService;
import com.android.bluetooth.telephony.BluetoothInCallService;
import com.android.internal.annotations.VisibleForTesting;
@@ -80,7 +76,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
-import java.util.Optional;
/**
* Provides Bluetooth Headset and Handsfree profile, as a service in the Bluetooth application.
@@ -165,15 +160,10 @@
new AudioManagerAudioDeviceCallback();
private final AudioManagerDeviceVolumeListener mAudioManagerDeviceVolumeListener;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static HeadsetService sHeadsetService;
@VisibleForTesting boolean mIsAptXSwbEnabled = false;
@VisibleForTesting boolean mIsAptXSwbPmEnabled = false;
- // TODO(b/422543753) Delete on flag cleanup
- @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
public HeadsetService(AdapterService adapterService) {
this(adapterService, null, null);
}
@@ -226,7 +216,6 @@
SystemProperties.getBoolean(
"bluetooth.hfp.swb.aptx.power_management.enabled", false);
Log.i(TAG, "mIsAptXSwbPmEnabled: " + mIsAptXSwbPmEnabled);
- setHeadsetService(this);
mMaxHeadsetConnections = mAdapterService.getMaxConnectedAudioDevices();
// Add 1 to allow a pending device to be connecting or disconnecting
mNativeInterface.init(mMaxHeadsetConnections + 1, isInbandRingingEnabled());
@@ -260,33 +249,6 @@
registerReceiver(mHeadsetReceiver, filter);
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<A2dpService> getA2dpService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getA2dpService();
- } else {
- return Optional.ofNullable(A2dpService.getA2dpService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HeadsetClientService> getHeadsetClientService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHeadsetClientService();
- } else {
- return Optional.ofNullable(HeadsetClientService.getHeadsetClientService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(mFactory.getLeAudioService());
- }
- }
-
private void initializeDeviceAbsoluteVolumeBehavior(BluetoothDevice device) {
AudioManager audioManager = mSystemInterface.getAudioManager();
AudioDeviceAttributes attributes =
@@ -377,7 +339,6 @@
}
// Step 4: Destroy native interface
mNativeInterface.cleanup();
- setHeadsetService(null);
// Step 3: Destroy system interface
mSystemInterface.stop();
// Step 2: Stop handler thread
@@ -618,27 +579,6 @@
}
}
- // API methods
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized HeadsetService getHeadsetService() {
- if (sHeadsetService == null) {
- Log.w(TAG, "getHeadsetService(): service is NULL");
- return null;
- }
- if (!sHeadsetService.isAvailable()) {
- Log.w(TAG, "getHeadsetService(): service is not available");
- return null;
- }
- return sHeadsetService;
- }
-
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized void setHeadsetService(HeadsetService instance) {
- logD("setHeadsetService(): set to: " + instance);
- sHeadsetService = instance;
- }
-
@Override
public boolean connect(BluetoothDevice device) {
if (getConnectionPolicy(device) == CONNECTION_POLICY_FORBIDDEN) {
@@ -1264,7 +1204,8 @@
* when SCO is going to be created
*/
if (mSystemInterface.isInCall() || mSystemInterface.isRinging()) {
- getLeAudioService()
+ mAdapterService
+ .getLeAudioService()
.filter(leAudio -> !leAudio.getConnectedDevices().isEmpty())
.ifPresent(
leAudio -> {
@@ -2076,7 +2017,8 @@
}
private boolean isHeadsetClientConnected() {
- return getHeadsetClientService()
+ return mAdapterService
+ .getHeadsetClientService()
.map(headsetClient -> !headsetClient.getConnectedDevices().isEmpty())
.orElse(false);
}
@@ -2276,7 +2218,7 @@
// Do it here because some controllers cannot handle SCO and CIS
// co-existence see {@link LeAudioService#setInactiveForHfpHandover}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
boolean isLeAudioConnectedDeviceNotActive =
leAudio.isPresent()
&& !leAudio.get().getConnectedDevices().isEmpty()
@@ -2519,7 +2461,7 @@
&& connectionPolicy != CONNECTION_POLICY_ALLOWED) {
// Otherwise, reject the connection if connection policy is not valid.
if (!isOutgoingRequest) {
- final var a2dp = getA2dpService();
+ final var a2dp = mAdapterService.getA2dpService();
if (a2dp.isPresent() && a2dp.get().okToConnect(device, true)) {
Log.d(
TAG,
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
index d2019e5..9e35db3 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
@@ -47,8 +47,6 @@
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hfp.HeadsetService;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -56,7 +54,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.UUID;
@@ -73,7 +70,6 @@
// Maximum number of devices we can try connecting to in one session
private static final int MAX_STATE_MACHINES_POSSIBLE = 100;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
private static HeadsetClientService sHeadsetClientService;
// This is also used as a lock for shared data in {@link HeadsetClientService}
@@ -136,15 +132,6 @@
setHeadsetClientService(this);
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HeadsetService> getHeadsetService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHeadsetService();
- } else {
- return Optional.ofNullable(HeadsetService.getHeadsetService());
- }
- }
-
public static boolean isEnabled() {
return BluetoothProperties.isProfileHfpHfEnabled().orElse(false);
}
@@ -295,8 +282,7 @@
}
// API methods
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized HeadsetClientService getHeadsetClientService() {
+ private static synchronized HeadsetClientService getHeadsetClientService() {
if (sHeadsetClientService == null) {
Log.w(TAG, "getHeadsetClientService(): service is null");
return null;
@@ -308,9 +294,7 @@
return sHeadsetClientService;
}
- /** Set a {@link HeadsetClientService} instance. */
- @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
+ @VisibleForTesting
public static synchronized void setHeadsetClientService(HeadsetClientService instance) {
Log.d(TAG, "setHeadsetClientService(): set to: " + instance);
sHeadsetClientService = instance;
@@ -928,7 +912,7 @@
new HeadsetClientStateMachine(
mAdapterService,
this,
- getHeadsetService(),
+ mAdapterService.getHeadsetService(),
mSmThread.getLooper(),
mNativeInterface);
mStateMachineMap.put(device, sm);
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java
index 58832df..2aa6ac6 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HeadsetClientServiceInterface.java
@@ -21,7 +21,6 @@
import android.util.Log;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import java.util.List;
import java.util.Optional;
@@ -43,12 +42,8 @@
HeadsetClientServiceInterface() {}
private static Optional<HeadsetClientService> getHeadsetClientService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
- .flatMap(AdapterService::getHeadsetClientService);
- } else {
- return Optional.ofNullable(HeadsetClientService.getHeadsetClientService());
- }
+ return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+ .flatMap(AdapterService::getHeadsetClientService);
}
private static boolean isServiceAvailable(Optional<HeadsetClientService> headsetClient) {
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java b/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java
index 1f33e54..da64fdc 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HfpClientConnectionService.java
@@ -36,8 +36,6 @@
import android.util.Log;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.pbapclient.PbapClientService;
import java.util.Arrays;
import java.util.HashMap;
@@ -45,7 +43,6 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
-import java.util.Optional;
public class HfpClientConnectionService extends ConnectionService {
private static final String TAG = HfpClientConnectionService.class.getSimpleName();
@@ -152,14 +149,12 @@
.handleHeadsetClientConnectionStateChanged(device, oldState, newState);
adapterService.notifyProfileConnectionStateChangeToScan(
BluetoothProfile.HEADSET_CLIENT, oldState, newState);
- final Optional<PbapClientService> pbapClientService;
- if (Flags.adapterServiceProfilesUseOptional()) {
- pbapClientService = adapterService.getPbapClientService();
- } else {
- pbapClientService = Optional.ofNullable(PbapClientService.getPbapClientService());
- }
- pbapClientService.ifPresent(
- pC -> pC.handleHeadsetClientConnectionStateChanged(device, oldState, newState));
+ adapterService
+ .getPbapClientService()
+ .ifPresent(
+ pC ->
+ pC.handleHeadsetClientConnectionStateChanged(
+ device, oldState, newState));
adapterService.updateProfileConnectionAdapterProperties(
device, BluetoothProfile.HEADSET_CLIENT, newState, oldState);
}
diff --git a/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java b/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java
index 0fe27fc..dd7f190 100644
--- a/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java
+++ b/android/app/src/com/android/bluetooth/hfpclient/HfpClientDeviceBlock.java
@@ -27,7 +27,6 @@
import android.util.Log;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import java.util.HashMap;
import java.util.List;
@@ -326,14 +325,9 @@
private static Bundle getScoStateFromDevice(BluetoothDevice device) {
Bundle bundle = new Bundle();
- final Optional<HeadsetClientService> headsetClient;
- if (Flags.adapterServiceProfilesUseOptional()) {
- headsetClient =
- Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
- .flatMap(AdapterService::getHeadsetClientService);
- } else {
- headsetClient = Optional.ofNullable(HeadsetClientService.getHeadsetClientService());
- }
+ final var headsetClient =
+ Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+ .flatMap(AdapterService::getHeadsetClientService);
if (headsetClient.isEmpty()) {
return bundle;
}
diff --git a/android/app/src/com/android/bluetooth/hid/HidHostService.java b/android/app/src/com/android/bluetooth/hid/HidHostService.java
index 51392f2..78abfc4 100644
--- a/android/app/src/com/android/bluetooth/hid/HidHostService.java
+++ b/android/app/src/com/android/bluetooth/hid/HidHostService.java
@@ -98,9 +98,6 @@
}
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static HidHostService sHidHostService;
-
private final Map<BluetoothDevice, InputDevice> mInputDevices =
Collections.synchronizedMap(new HashMap<>());
@@ -136,7 +133,6 @@
mNativeInterface =
requireNonNullElseGet(nativeInterface, () -> new HidHostNativeInterface(this));
mNativeInterface.init();
- setHidHostService(this);
}
public static boolean isEnabled() {
@@ -162,8 +158,6 @@
}
mInputDevices.clear();
}
- // TODO(b/72948646): this should be moved to stop()
- setHidHostService(null);
}
private byte[] getByteAddress(BluetoothDevice device, int transport) {
@@ -256,25 +250,6 @@
return STATE_DISCONNECTED;
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized HidHostService getHidHostService() {
- if (sHidHostService == null) {
- Log.w(TAG, "getHidHostService(): service is null");
- return null;
- }
- if (!sHidHostService.isAvailable()) {
- Log.w(TAG, "getHidHostService(): service is not available ");
- return null;
- }
- return sHidHostService;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static synchronized void setHidHostService(HidHostService instance) {
- Log.d(TAG, "setHidHostService(): set to: " + instance);
- sHidHostService = instance;
- }
-
/**
* Requests the native stack to start HID connection
*
diff --git a/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java b/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java
index e723786..8602922 100644
--- a/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java
+++ b/android/app/src/com/android/bluetooth/le_audio/ContentControlIdKeeper.java
@@ -23,8 +23,6 @@
import android.util.Pair;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.flags.Flags;
import java.util.Collections;
import java.util.HashMap;
@@ -45,13 +43,10 @@
private static SortedSet<Integer> sAssignedCcidList = new TreeSet();
private static HashMap<ParcelUuid, Pair<Integer, Integer>> sUuidToCcidContextPair =
new HashMap<>();
- // TODO(b/422543753) Delete on flag cleanup
- private static ServiceFactory sServiceFactory = null;
- static synchronized void initForTesting(ServiceFactory instance) {
+ static synchronized void initForTesting() {
sAssignedCcidList = new TreeSet();
sUuidToCcidContextPair = new HashMap<>();
- sServiceFactory = instance;
}
/**
@@ -99,23 +94,12 @@
sUuidToCcidContextPair.put(userUuid, new Pair(ccid, contextType));
// Notify LeAudioService about new ccid
- if (Flags.adapterServiceProfilesUseOptional()) {
- final var ccidFinal = ccid;
- adapterService
- .getLeAudioService()
- .ifPresent(
- leAudio ->
- leAudio.setCcidInformation(
- userUuid, ccidFinal, contextType));
- } else {
- if (sServiceFactory == null) {
- sServiceFactory = new ServiceFactory();
- }
- LeAudioService service = sServiceFactory.getLeAudioService();
- if (service != null) {
- service.setCcidInformation(userUuid, ccid, contextType);
- }
- }
+ final var ccidFinal = ccid;
+ adapterService
+ .getLeAudioService()
+ .ifPresent(
+ leAudio ->
+ leAudio.setCcidInformation(userUuid, ccidFinal, contextType));
}
return ccid;
}
@@ -141,20 +125,10 @@
if (sAssignedCcidList.contains(value)) {
// Notify LeAudioService about new value
- if (Flags.adapterServiceProfilesUseOptional()) {
- final var uuidFinal = uuid;
- adapterService
- .getLeAudioService()
- .ifPresent(leAudio -> leAudio.setCcidInformation(uuidFinal, value, 0));
- } else {
- if (sServiceFactory == null) {
- sServiceFactory = new ServiceFactory();
- }
- LeAudioService service = sServiceFactory.getLeAudioService();
- if (service != null) {
- service.setCcidInformation(uuid, value, 0);
- }
- }
+ final var uuidFinal = uuid;
+ adapterService
+ .getLeAudioService()
+ .ifPresent(leAudio -> leAudio.setCcidInformation(uuidFinal, value, 0));
sAssignedCcidList.remove(value);
sUuidToCcidContextPair.remove(uuid);
diff --git a/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java b/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
index 9d10537..b89b2a4 100644
--- a/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
+++ b/android/app/src/com/android/bluetooth/le_audio/LeAudioService.java
@@ -84,22 +84,13 @@
import com.android.bluetooth.BluetoothEventLogger;
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
-import com.android.bluetooth.bass_client.BassClientService;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.Config;
import com.android.bluetooth.btservice.ConnectableProfile;
import com.android.bluetooth.btservice.MetricsLogger;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hap.HapClientService;
-import com.android.bluetooth.hearingaid.HearingAidService;
-import com.android.bluetooth.hfp.HeadsetService;
-import com.android.bluetooth.mcp.McpService;
import com.android.bluetooth.tbs.TbsGatt;
-import com.android.bluetooth.vc.VolumeControlService;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -129,7 +120,6 @@
/* 5 seconds timeout for Broadcast streaming state transition */
@VisibleForTesting static final int CREATE_BROADCAST_TIMEOUT_MS = 5000;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
private static LeAudioService sLeAudioService;
/** Indicates group audio support for none direction */
@@ -183,9 +173,6 @@
private BluetoothDevice mExposedActiveDevice;
private CreateBroadcastTimeoutEvent mCreateBroadcastTimeoutEvent;
- // TODO(b/422543753) Delete on flag cleanup
- @VisibleForTesting ServiceFactory mServiceFactory = new ServiceFactory();
-
boolean mLeAudioNativeIsInitialized = false;
boolean mLeAudioInbandRingtoneSupportedByPlatform = true;
boolean mBluetoothEnabled = false;
@@ -321,78 +308,6 @@
mAudioManager.registerAudioRecordingCallback(mAudioRecordingCallback, null);
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<A2dpService> getA2dpService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getA2dpService();
- } else {
- return Optional.ofNullable(mServiceFactory.getA2dpService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<BassClientService> getBassClientService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getBassClientService();
- } else {
- return Optional.ofNullable(mServiceFactory.getBassClientService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getCsipSetCoordinatorService();
- } else {
- return Optional.ofNullable(mServiceFactory.getCsipSetCoordinatorService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HapClientService> getHapClientService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHapClientService();
- } else {
- return Optional.ofNullable(mServiceFactory.getHapClientService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HeadsetService> getHeadsetService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHeadsetService();
- } else {
- return Optional.ofNullable(mServiceFactory.getHeadsetService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<HearingAidService> getHearingAidService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getHearingAidService();
- } else {
- return Optional.ofNullable(mServiceFactory.getHearingAidService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<McpService> getMcpService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getMcpService();
- } else {
- return Optional.ofNullable(mServiceFactory.getMcpService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<VolumeControlService> getVolumeControlService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getVolumeControlService();
- } else {
- return Optional.ofNullable(mServiceFactory.getVolumeControlService());
- }
- }
-
@VisibleForTesting
int getTmapRoleMask() {
return mTmapRoleMask;
@@ -864,8 +779,8 @@
mAudioManager.unregisterAudioDeviceCallback(mAudioManagerAudioDeviceCallback);
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized LeAudioService getLeAudioService() {
+ @VisibleForTesting
+ static synchronized LeAudioService getLeAudioService() {
if (sLeAudioService == null) {
Log.w(TAG, "getLeAudioService(): service is NULL");
return null;
@@ -877,10 +792,8 @@
return sLeAudioService;
}
- // TODO(b/422543753) Hide on flag cleanup
@VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized void setLeAudioService(LeAudioService instance) {
+ static synchronized void setLeAudioService(LeAudioService instance) {
Log.d(TAG, "setLeAudioService(): set to: " + instance);
sLeAudioService = instance;
}
@@ -889,7 +802,8 @@
int getAudioDeviceGroupVolume(int groupId) {
if (Flags.vcpOnMainLooper()) {
int defaultValue = IBluetoothVolumeControl.VOLUME_CONTROL_UNKNOWN_VOLUME;
- return getVolumeControlService()
+ return mAdapterService
+ .getVolumeControlService()
.map(
vcs ->
vcs.syncPost(
@@ -897,7 +811,7 @@
defaultValue))
.orElse(defaultValue);
}
- final var volumeControl = getVolumeControlService();
+ final var volumeControl = mAdapterService.getVolumeControlService();
if (volumeControl.isEmpty()) {
return IBluetoothVolumeControl.VOLUME_CONTROL_UNKNOWN_VOLUME;
}
@@ -1338,7 +1252,7 @@
int[] preferredQualityArray =
settingsList.stream().mapToInt(s -> s.getPreferredQuality()).toArray();
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isEmpty()) {
return preferredQualityArray;
}
@@ -1494,7 +1408,7 @@
// log group size before stop
LeAudioBroadcastSessionStats sessionStats = mBroadcastSessionStats.get(broadcastId);
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isPresent() && sessionStats != null) {
sessionStats.updateGroupSize(bassClient.get().getSyncedBroadcastSinks().size());
}
@@ -1637,7 +1551,7 @@
/** Active Broadcast Assistant notification handler */
public void activeBroadcastAssistantNotification(boolean active) {
- if (getBassClientService().isEmpty()) {
+ if (mAdapterService.getBassClientService().isEmpty()) {
Log.w(TAG, "Ignore active Broadcast Assistant notification");
return;
}
@@ -1679,7 +1593,7 @@
return Collections.emptySet();
}
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isEmpty()) {
Log.e(TAG, "getLocalBroadcastReceivers: Bass service not available");
return Collections.emptySet();
@@ -2002,7 +1916,7 @@
}
private void notifyVolumeControlServiceAboutActiveGroup(BluetoothDevice device) {
- final var vcs = getVolumeControlService();
+ final var vcs = mAdapterService.getVolumeControlService();
if (vcs.isEmpty()) {
return;
}
@@ -2861,9 +2775,9 @@
"Disabling LE Audio for group: "
+ groupId
+ " and falling back to legacy profiles");
- final var a2dp = getA2dpService();
- final var headset = getHeadsetService();
- final var hearingAid = getHearingAidService();
+ final var a2dp = mAdapterService.getA2dpService();
+ final var headset = mAdapterService.getHeadsetService();
+ final var hearingAid = mAdapterService.getHearingAidService();
boolean isDualMode = Utils.isDualModeAudioEnabled();
List<BluetoothDevice> leAudioActiveGroupDevices = getGroupDevices(groupId);
@@ -3086,7 +3000,7 @@
}
private void handleSourceStreamStatusChange(int status) {
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isEmpty()) {
Log.e(TAG, "handleSourceStreamStatusChange: BASS Client service is not available");
@@ -3108,7 +3022,7 @@
}
private boolean isGroupReceivingBroadcast(int groupId) {
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isEmpty()) {
return false;
}
@@ -3177,7 +3091,7 @@
Log.d(TAG, "There is no HFP handover");
return;
}
- final var headset = getHeadsetService();
+ final var headset = mAdapterService.getHeadsetService();
if (headset.isEmpty()) {
Log.d(TAG, "There is no HFP service available");
return;
@@ -4013,7 +3927,8 @@
() ->
notifyOnBroadcastStopped(
broadcastId, BluetoothStatusCodes.REASON_LOCAL_APP_REQUEST));
- getBassClientService()
+ mAdapterService
+ .getBassClientService()
.ifPresent(
bassClient ->
bassClient.stopReceiversSourceSynchronization(broadcastId));
@@ -4043,7 +3958,7 @@
previousState = descriptor.mState;
descriptor.mState = state;
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
switch (descriptor.mState) {
case LeAudioStackEvent.BROADCAST_STATE_STOPPED -> {
Log.d(TAG, "Broadcast broadcastId: " + broadcastId + " stopped.");
@@ -4639,7 +4554,7 @@
+ connectionPolicy);
final ParcelUuid[] featureUuids = mAdapterService.getRemoteUuids(device);
- final var vcs = getVolumeControlService();
+ final var vcs = mAdapterService.getVolumeControlService();
if (vcs.isPresent() && Utils.arrayContains(featureUuids, BluetoothUuid.VOLUME_CONTROL)) {
if (Flags.vcpOnMainLooper()) {
vcs.get().syncPost(v -> v.setConnectionPolicy(device, connectionPolicy));
@@ -4648,7 +4563,7 @@
}
}
- final var hapClient = getHapClientService();
+ final var hapClient = mAdapterService.getHapClientService();
if (hapClient.isPresent() && Utils.arrayContains(featureUuids, BluetoothUuid.HAS)) {
if (Flags.hapOnMainLooper()) {
hapClient.get().post(h -> h.setConnectionPolicy(device, connectionPolicy));
@@ -4657,14 +4572,14 @@
}
}
- final var csipSetCoordinator = getCsipSetCoordinatorService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
// Disallow setting CSIP to forbidden until characteristic reads are complete
if (csipSetCoordinator.isPresent()
&& Utils.arrayContains(featureUuids, BluetoothUuid.COORDINATED_SET)) {
csipSetCoordinator.get().setConnectionPolicy(device, connectionPolicy);
}
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isPresent()
&& bassClient.get().isEnabled()
&& Utils.arrayContains(featureUuids, BluetoothUuid.BASS)) {
@@ -4849,7 +4764,7 @@
List<BluetoothDevice> activeBroadcastSinks = new ArrayList<>();
if (currentlyActiveGroupId == LE_AUDIO_GROUP_ID_INVALID) {
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isPresent()) {
activeBroadcastSinks = bassClient.get().getSyncedBroadcastSinks();
}
@@ -4860,7 +4775,7 @@
}
}
- final var vcs = getVolumeControlService();
+ final var vcs = mAdapterService.getVolumeControlService();
if (vcs.isEmpty()) {
return;
}
@@ -4911,7 +4826,9 @@
}
private void setAuthorizationForRelatedProfiles(BluetoothDevice device, boolean authorize) {
- getMcpService().ifPresent(mcp -> mcp.setDeviceAuthorized(device, authorize));
+ mAdapterService
+ .getMcpService()
+ .ifPresent(mcp -> mcp.setDeviceAuthorized(device, authorize));
mAdapterService
.getTbsService()
@@ -4919,7 +4836,7 @@
}
private void removeAuthorizationInfoForRelatedProfiles(BluetoothDevice device) {
- getMcpService().ifPresent(mcp -> mcp.removeDeviceAuthorizationInfo(device));
+ mAdapterService.getMcpService().ifPresent(mcp -> mcp.removeDeviceAuthorizationInfo(device));
mAdapterService
.getTbsService()
@@ -5075,7 +4992,9 @@
}
private void notifyGroupNodeAdded(BluetoothDevice device, int groupId) {
- getVolumeControlService().ifPresent(vcs -> vcs.handleGroupNodeAdded(groupId, device));
+ mAdapterService
+ .getVolumeControlService()
+ .ifPresent(vcs -> vcs.handleGroupNodeAdded(groupId, device));
synchronized (mLeAudioCallbacks) {
int n = mLeAudioCallbacks.beginBroadcast();
diff --git a/android/app/src/com/android/bluetooth/map/BluetoothMapService.java b/android/app/src/com/android/bluetooth/map/BluetoothMapService.java
index c57ffc6..dfde211 100644
--- a/android/app/src/com/android/bluetooth/map/BluetoothMapService.java
+++ b/android/app/src/com/android/bluetooth/map/BluetoothMapService.java
@@ -138,9 +138,6 @@
private boolean mSdpSearchInitiated = false;
private SdpMnsRecord mMnsRecord = null;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static BluetoothMapService sBluetoothMapService;
-
private static final ParcelUuid[] MAP_UUIDS = {
BluetoothUuid.MAP, BluetoothUuid.MNS,
};
@@ -190,7 +187,6 @@
createMasInstances(); // Uses mEnabledAccounts
sendStartListenerMessage(-1);
- setBluetoothMapService(this);
}
private synchronized void closeService() {
@@ -662,38 +658,6 @@
}
/**
- * @return current instance of {@link BluetoothMapService}
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized BluetoothMapService getBluetoothMapService() {
- if (sBluetoothMapService == null) {
- Log.w(TAG, "getBluetoothMapService(): service is null");
- ContentProfileErrorReportUtils.report(
- BluetoothProfile.MAP,
- BluetoothProtoEnums.BLUETOOTH_MAP_SERVICE,
- BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
- 8);
- return null;
- }
- if (!sBluetoothMapService.isAvailable()) {
- Log.w(TAG, "getBluetoothMapService(): service is not available");
- ContentProfileErrorReportUtils.report(
- BluetoothProfile.MAP,
- BluetoothProtoEnums.BLUETOOTH_MAP_SERVICE,
- BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
- 9);
- return null;
- }
- return sBluetoothMapService;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static synchronized void setBluetoothMapService(BluetoothMapService instance) {
- Log.d(TAG, "setBluetoothMapService(): set to: " + instance);
- sBluetoothMapService = instance;
- }
-
- /**
* Call this to trigger an update of the MAS instance list. No changes will be applied unless in
* disconnected state
*/
@@ -827,7 +791,6 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- setBluetoothMapService(null);
unregisterReceiver(mMapReceiver);
mAppObserver.shutdown();
sendShutdownMessage();
diff --git a/android/app/src/com/android/bluetooth/mcp/McpService.java b/android/app/src/com/android/bluetooth/mcp/McpService.java
index a8c6dfc..62c46bf 100644
--- a/android/app/src/com/android/bluetooth/mcp/McpService.java
+++ b/android/app/src/com/android/bluetooth/mcp/McpService.java
@@ -30,22 +30,16 @@
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
import com.android.internal.annotations.VisibleForTesting;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
/** Provides Media Control Profile, as a service in the Bluetooth application. */
public class McpService extends ProfileService {
private static final String TAG = Utils.BT_PREFIX + McpService.class.getSimpleName();
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static McpService sMcpService;
-
private final MediaControlProfile mGmcs;
private final Map<BluetoothDevice, Integer> mDeviceAuthorizations = new HashMap<>();
@@ -58,8 +52,6 @@
super(BluetoothProfile.MCP_SERVER, requireNonNull(adapterService));
mGmcs = requireNonNull(mediaControlProfile);
- setMcpService(this); // Mark service as started
-
mGmcs.init(this);
}
@@ -67,26 +59,6 @@
return BluetoothProperties.isProfileMcpServerEnabled().orElse(false);
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static synchronized void setMcpService(McpService instance) {
- Log.d(TAG, "setMcpService(): set to: " + instance);
- sMcpService = instance;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized McpService getMcpService() {
- if (sMcpService == null) {
- Log.w(TAG, "getMcpService(): service is NULL");
- return null;
- }
-
- if (!sMcpService.isAvailable()) {
- Log.w(TAG, "getMcpService(): service is not available");
- return null;
- }
- return sMcpService;
- }
-
@Override
protected IProfileServiceBinder initBinder() {
return null;
@@ -96,15 +68,7 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- if (sMcpService == null) {
- Log.w(TAG, "cleanup() called before initialization");
- return;
- }
-
mGmcs.cleanup();
-
- // Mark service as stopped
- setMcpService(null);
}
@Override
@@ -175,12 +139,7 @@
return authorization;
}
- final Optional<LeAudioService> leAudio;
- if (Flags.adapterServiceProfilesUseOptional()) {
- leAudio = mAdapterService.getLeAudioService();
- } else {
- leAudio = Optional.ofNullable(LeAudioService.getLeAudioService());
- }
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.e(TAG, "MCS access not permitted. LeAudioService not available");
return BluetoothDevice.ACCESS_UNKNOWN;
diff --git a/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java b/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java
index dd4d1f1..03bad02 100644
--- a/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java
+++ b/android/app/src/com/android/bluetooth/mcp/MediaControlGattService.java
@@ -49,10 +49,7 @@
import com.android.bluetooth.BluetoothEventLogger;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.a2dp.A2dpService;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.hearingaid.HearingAidService;
import com.android.bluetooth.le_audio.LeAudioService;
import com.android.internal.annotations.VisibleForTesting;
@@ -65,7 +62,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.UUID;
/**
@@ -1197,15 +1193,6 @@
mEventLogger = new BluetoothEventLogger(200, TAG + " instance (CCID=" + ccid + "): ");
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(LeAudioService.getLeAudioService());
- }
- }
-
protected boolean init(UUID scvUuid) {
mFeatures = mCallbacks.onGetFeatureFlags();
@@ -1314,24 +1301,16 @@
// TODO: Activate/deactivate devices with ActiveDeviceManager
if (!isBroadcastActive() && req.opcode() == Request.Opcodes.PLAY) {
if (mAdapterService.getActiveDevices(BluetoothProfile.A2DP).size() > 0) {
- if (Flags.adapterServiceProfilesUseOptional()) {
- mAdapterService
- .getA2dpService()
- .ifPresent(a2dp -> a2dp.removeActiveDevice(false));
- } else {
- A2dpService.getA2dpService().removeActiveDevice(false);
- }
+ mAdapterService.getA2dpService().ifPresent(a2dp -> a2dp.removeActiveDevice(false));
}
if (mAdapterService.getActiveDevices(BluetoothProfile.HEARING_AID).size() > 0) {
- if (Flags.adapterServiceProfilesUseOptional()) {
- mAdapterService
- .getHearingAidService()
- .ifPresent(hearingAid -> hearingAid.removeActiveDevice(false));
- } else {
- HearingAidService.getHearingAidService().removeActiveDevice(false);
- }
+ mAdapterService
+ .getHearingAidService()
+ .ifPresent(hearingAid -> hearingAid.removeActiveDevice(false));
}
- getLeAudioService().ifPresent(leAudio -> leAudio.setActiveDevice(device));
+ mAdapterService
+ .getLeAudioService()
+ .ifPresent(leAudio -> leAudio.setActiveDevice(device));
}
mCallbacks.onMediaControlRequest(req);
@@ -2097,7 +2076,10 @@
* @return {@code true} if is broadcasting audio, {@code false} otherwise
*/
private boolean isBroadcastActive() {
- return getLeAudioService().map(LeAudioService::isBroadcastActive).orElse(false);
+ return mAdapterService
+ .getLeAudioService()
+ .map(LeAudioService::isBroadcastActive)
+ .orElse(false);
}
@VisibleForTesting
diff --git a/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java b/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java
index 8ad5106..12fc920 100644
--- a/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java
+++ b/android/app/src/com/android/bluetooth/opp/BluetoothOppService.java
@@ -201,9 +201,6 @@
+ WHERE_CONFIRM_PENDING_INBOUND
+ ")";
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static BluetoothOppService sBluetoothOppService;
-
/*
* TODO No support for queue incoming from multiple devices.
* Make an array list of server session to support receiving queue from
@@ -244,7 +241,6 @@
mNotifier = new BluetoothOppNotification(mAdapterService);
mNotifier.cancelOppNotifications();
updateFromProvider();
- setBluetoothOppService(this);
}
public static boolean isEnabled() {
@@ -259,16 +255,6 @@
@Override
public void cleanup() {
Log.i(TAG, "cleanup()");
-
- if (sBluetoothOppService == null) {
- Log.w(TAG, "cleanup() called before initialization");
- ContentProfileErrorReportUtils.report(
- mProfileId,
- BluetoothProtoEnums.BLUETOOTH_OPP_SERVICE,
- BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
- 1);
- }
- setBluetoothOppService(null);
stopInternal();
setComponentAvailable(OPP_PROVIDER, false);
@@ -314,41 +300,6 @@
}
}
- /**
- * Get the current instance of {@link BluetoothOppService}
- *
- * @return current instance of {@link BluetoothOppService}
- */
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized BluetoothOppService getBluetoothOppService() {
- if (sBluetoothOppService == null) {
- Log.w(TAG, "getBluetoothOppService(): service is null");
- ContentProfileErrorReportUtils.report(
- BluetoothProfile.OPP,
- BluetoothProtoEnums.BLUETOOTH_OPP_SERVICE,
- BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
- 2);
- return null;
- }
- if (!sBluetoothOppService.isAvailable()) {
- Log.w(TAG, "getBluetoothOppService(): service is not available");
- ContentProfileErrorReportUtils.report(
- BluetoothProfile.OPP,
- BluetoothProtoEnums.BLUETOOTH_OPP_SERVICE,
- BluetoothStatsLog.BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED__TYPE__LOG_WARN,
- 3);
- return null;
- }
- return sBluetoothOppService;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static synchronized void setBluetoothOppService(BluetoothOppService instance) {
- Log.d(TAG, "setBluetoothOppService(): set to: " + instance);
- sBluetoothOppService = instance;
- }
-
private static final int START_LISTENER = 1;
private static final int MEDIA_SCANNED = 2;
diff --git a/android/app/src/com/android/bluetooth/pan/PanService.java b/android/app/src/com/android/bluetooth/pan/PanService.java
index 2cc7f49..99982d6 100644
--- a/android/app/src/com/android/bluetooth/pan/PanService.java
+++ b/android/app/src/com/android/bluetooth/pan/PanService.java
@@ -62,9 +62,6 @@
public class PanService extends ConnectableProfile {
private static final String TAG = PanService.class.getSimpleName();
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static PanService sPanService;
-
private static final int BLUETOOTH_MAX_PAN_CONNECTIONS = 5;
private static final int MESSAGE_CONNECT = 1;
@@ -131,7 +128,6 @@
mTetheringManager.registerTetheringEventCallback(
new HandlerExecutor(new Handler(Looper.getMainLooper())), mTetheringCallback);
- setPanService(this);
}
public static boolean isEnabled() {
@@ -144,25 +140,6 @@
return new PanServiceBinder(this);
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized PanService getPanService() {
- if (sPanService == null) {
- Log.w(TAG, "getPanService(): service is null");
- return null;
- }
- if (!sPanService.isAvailable()) {
- Log.w(TAG, "getPanService(): service is not available ");
- return null;
- }
- return sPanService;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static synchronized void setPanService(PanService instance) {
- Log.d(TAG, "setPanService(): set to: " + instance);
- sPanService = instance;
- }
-
@Override
public void cleanup() {
Log.i(TAG, "cleanup()");
@@ -176,8 +153,6 @@
mNativeInterface.cleanup();
mHandler.removeCallbacksAndMessages(null);
- setPanService(null);
-
int[] desiredStates = {STATE_CONNECTING, STATE_CONNECTED, STATE_DISCONNECTING};
List<BluetoothDevice> devList = getDevicesMatchingConnectionStates(desiredStates);
for (BluetoothDevice device : devList) {
diff --git a/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java b/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java
index f643d63..4e4d5fd 100644
--- a/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java
+++ b/android/app/src/com/android/bluetooth/pbap/BluetoothPbapService.java
@@ -26,7 +26,6 @@
import static com.android.bluetooth.Utils.joinUninterruptibly;
import static java.util.Objects.requireNonNull;
-import static java.util.Objects.requireNonNullElseGet;
import android.app.Activity;
import android.app.Notification;
@@ -167,11 +166,6 @@
private Thread mThreadUpdateSecVersionCounter;
- // TODO(b/422543753) Delete on flag cleanup
- public BluetoothPbapService(AdapterService adapterService) {
- this(requireNonNull(adapterService), null, null);
- }
-
public BluetoothPbapService(
AdapterService adapterService, NotificationManager notificationManager) {
this(requireNonNull(adapterService), notificationManager, null);
@@ -181,14 +175,7 @@
BluetoothPbapService(
AdapterService adapterService, NotificationManager notificationManager, Looper looper) {
super(BluetoothProfile.PBAP, requireNonNull(adapterService));
- if (Flags.adapterServiceProfilesUseOptional()) {
- mNotificationManager = requireNonNull(notificationManager);
- } else {
- mNotificationManager =
- requireNonNullElseGet(
- notificationManager,
- () -> obtainSystemService(NotificationManager.class));
- }
+ mNotificationManager = requireNonNull(notificationManager);
IntentFilter userFilter = new IntentFilter();
userFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
diff --git a/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java b/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java
index e02bd35..77318e4 100644
--- a/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java
+++ b/android/app/src/com/android/bluetooth/pbapclient/PbapClientService.java
@@ -61,8 +61,6 @@
// MAXIMUM_DEVICES set to 10 to prevent an excessive number of simultaneous devices.
private static final int MAXIMUM_DEVICES = 10;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static PbapClientService sPbapClientService;
private final PbapClientContactsStorage mPbapClientContactsStorage;
private final Map<BluetoothDevice, PbapClientStateMachine> mPbapClientStateMachineMap;
private final Handler mHandler;
@@ -106,7 +104,6 @@
setComponentAvailable(AUTHENTICATOR_SERVICE, true);
registerSdpRecord();
- setPbapClientService(this);
}
@VisibleForTesting
@@ -129,7 +126,6 @@
mPbapClientContactsStorage.start();
registerSdpRecord();
- setPbapClientService(this);
}
public static boolean isEnabled() {
@@ -145,7 +141,6 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- setPbapClientService(null);
cleanUpSdpRecord();
// Unregister SDP event handler and stop all queued messages.
@@ -382,32 +377,6 @@
// * API methods
// *********************************************************************************************
- /** Get the singleton instance of PbapClientService, if one exists */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized PbapClientService getPbapClientService() {
- if (sPbapClientService == null) {
- Log.w(TAG, "getPbapClientService(): service is null");
- return null;
- }
- if (!sPbapClientService.isAvailable()) {
- Log.w(TAG, "getPbapClientService(): service is not available");
- return null;
- }
- return sPbapClientService;
- }
-
- /**
- * Set the singleton instance of PbapClientService
- *
- * <p>This function is meant to be used by tests only.
- */
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- static synchronized void setPbapClientService(PbapClientService instance) {
- Log.v(TAG, "setPbapClientService(): set to: " + instance);
- sPbapClientService = instance;
- }
-
/**
* Requests a connection to the given device's PBAP Server
*
diff --git a/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java b/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java
index eac3192..d1b2732 100644
--- a/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java
+++ b/android/app/src/com/android/bluetooth/tbs/TbsGeneric.java
@@ -37,11 +37,8 @@
import android.util.Log;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_audio.ContentControlIdKeeper;
-import com.android.bluetooth.le_audio.LeAudioService;
-import com.android.internal.annotations.VisibleForTesting;
import java.util.ArrayList;
import java.util.Arrays;
@@ -50,7 +47,6 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.TreeMap;
import java.util.UUID;
@@ -129,8 +125,6 @@
private final List<Bearer> mBearerList = new ArrayList<>();
private final Map<Integer, TbsCall> mCurrentCallsList = new TreeMap<>();
private final Receiver mReceiver = new Receiver();
- // TODO(b/422543753) Delete on flag cleanup
- @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
private final AdapterService mAdapterService;
private final TbsGatt mTbsGatt;
@@ -217,15 +211,6 @@
mIsInitialized = true;
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(mFactory.getLeAudioService());
- }
- }
-
public synchronized void cleanup() {
Log.d(TAG, "cleanup");
@@ -764,7 +749,7 @@
@Override
public boolean isInbandRingtoneEnabled(BluetoothDevice device) {
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.i(TAG, "LeAudio service not available");
return false;
@@ -1070,7 +1055,8 @@
private synchronized void notifyCclc() {
Log.d(TAG, "notifyCclc");
- getLeAudioService()
+ mAdapterService
+ .getLeAudioService()
.ifPresent(
leAudio -> {
if (mCurrentCallsList.size() > 0) {
@@ -1111,7 +1097,8 @@
return;
}
- getLeAudioService()
+ mAdapterService
+ .getLeAudioService()
.ifPresentOrElse(
leAudio -> {
leAudio.setActiveDevice(device);
@@ -1150,7 +1137,7 @@
return false;
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.w(TAG, "shouldBlockTbsForBroadcastReceiver: LeAudioService is not available");
return false;
diff --git a/android/app/src/com/android/bluetooth/tbs/TbsService.java b/android/app/src/com/android/bluetooth/tbs/TbsService.java
index 2f5e3a1..1a7dcb5 100644
--- a/android/app/src/com/android/bluetooth/tbs/TbsService.java
+++ b/android/app/src/com/android/bluetooth/tbs/TbsService.java
@@ -30,14 +30,11 @@
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.gatt.GattService;
-import com.android.bluetooth.le_audio.LeAudioService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.UUID;
public class TbsService extends ProfileService {
@@ -60,10 +57,6 @@
void onJoinCalls(int requestId, List<UUID> uuids);
}
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static TbsService sTbsService;
-
- // TODO(b/422543753) Available only on `Flags.adapterServiceProfilesUseOptional()`
private final GattService unusedGattService;
private final Map<BluetoothDevice, Integer> mDeviceAuthorizations = new HashMap<>();
private final TbsGeneric mTbsGeneric;
@@ -74,14 +67,7 @@
public TbsService(AdapterService adapterService, GattService gattService) {
super(BluetoothProfile.LE_CALL_CONTROL, requireNonNull(adapterService));
- if (Flags.adapterServiceProfilesUseOptional()) {
- unusedGattService = requireNonNull(gattService);
- } else {
- unusedGattService = null;
- }
-
- // Mark service as started
- setTbsService(this);
+ unusedGattService = requireNonNull(gattService);
mTbsGeneric = new TbsGeneric(adapterService, new TbsGatt(adapterService, this));
}
@@ -99,46 +85,10 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- if (sTbsService == null) {
- Log.w(TAG, "cleanup() called before initialization");
- return;
- }
-
- // Mark service as stopped
- setTbsService(null);
-
mTbsGeneric.cleanup();
-
mDeviceAuthorizations.clear();
}
- /**
- * Get the TbsService instance
- *
- * @return TbsService instance
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized TbsService getTbsService() {
- if (sTbsService == null) {
- Log.w(TAG, "getTbsService: service is NULL");
- return null;
- }
-
- if (!sTbsService.isAvailable()) {
- Log.w(TAG, "getTbsService: service is not available");
- return null;
- }
-
- return sTbsService;
- }
-
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized void setTbsService(TbsService instance) {
- Log.d(TAG, "setTbsService: set to=" + instance);
-
- sTbsService = instance;
- }
-
public void onDeviceUnauthorized(BluetoothDevice device) {
if (Utils.isPtsTestMode()) {
Log.d(TAG, "PTS test: setDeviceAuthorized");
@@ -198,12 +148,7 @@
return authorization;
}
- final Optional<LeAudioService> leAudio;
- if (Flags.adapterServiceProfilesUseOptional()) {
- leAudio = mAdapterService.getLeAudioService();
- } else {
- leAudio = Optional.ofNullable(LeAudioService.getLeAudioService());
- }
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isEmpty()) {
Log.e(TAG, "TBS access not permitted. LeAudioService not available");
return BluetoothDevice.ACCESS_UNKNOWN;
diff --git a/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java b/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java
index 0a0e6c8..9d9581a 100644
--- a/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java
+++ b/android/app/src/com/android/bluetooth/telephony/BluetoothInCallService.java
@@ -375,14 +375,9 @@
mCallInfo = requireNonNullElseGet(callInfo, CallInfo::new);
}
- // TODO(b/422543753) Delete on flag cleanup
Optional<HeadsetService> getHeadsetService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
- .flatMap(AdapterService::getHeadsetService);
- } else {
- return Optional.ofNullable(HeadsetService.getHeadsetService());
- }
+ return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+ .flatMap(AdapterService::getHeadsetService);
}
public static BluetoothInCallService getInstance() {
@@ -1711,14 +1706,9 @@
private int mCcid = ContentControlIdKeeper.CCID_INVALID;
// BluetoothInCallService
- // TODO(b/422543753) Delete on flag cleanup
private static Optional<TbsService> getTbsService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
- .flatMap(AdapterService::getTbsService);
- } else {
- return Optional.ofNullable(TbsService.getTbsService());
- }
+ return Optional.ofNullable(AdapterService.deprecatedGetAdapterService())
+ .flatMap(AdapterService::getTbsService);
}
@Override
diff --git a/android/app/src/com/android/bluetooth/vaps/VapsServerService.java b/android/app/src/com/android/bluetooth/vaps/VapsServerService.java
index 3274483..7653d6c 100644
--- a/android/app/src/com/android/bluetooth/vaps/VapsServerService.java
+++ b/android/app/src/com/android/bluetooth/vaps/VapsServerService.java
@@ -53,7 +53,6 @@
import com.android.bluetooth.btservice.ActiveDeviceManager;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.flags.Flags;
import com.android.internal.annotations.GuardedBy;
diff --git a/android/app/src/com/android/bluetooth/vc/VolumeControlService.java b/android/app/src/com/android/bluetooth/vc/VolumeControlService.java
index e477c1d..2ba7779 100644
--- a/android/app/src/com/android/bluetooth/vc/VolumeControlService.java
+++ b/android/app/src/com/android/bluetooth/vc/VolumeControlService.java
@@ -53,14 +53,10 @@
import android.util.Log;
import com.android.bluetooth.Utils;
-import com.android.bluetooth.bass_client.BassClientService;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.ConnectableProfile;
import com.android.bluetooth.btservice.ProfileService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
-import com.android.bluetooth.le_audio.LeAudioService;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -91,9 +87,6 @@
private static final int GROUP_ID_INVALID = -1;
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- private static VolumeControlService sVolumeControlService;
-
@VisibleForTesting
@GuardedBy("mCallbacks")
final RemoteCallbackList<IBluetoothVolumeControlCallback> mCallbacks =
@@ -119,9 +112,6 @@
private Boolean mIgnoreSetVolumeFromAF = false;
- // TODO(b/422543753) Delete on flag cleanup
- @VisibleForTesting ServiceFactory mFactory = new ServiceFactory();
-
public VolumeControlService(AdapterService adapterService) {
this(adapterService, Flags.vcpOnMainLooper() ? Looper.getMainLooper() : null, null);
}
@@ -155,37 +145,9 @@
mStateMachinesLooper = looper;
}
}
- setVolumeControlService(this);
mNativeInterface.init();
}
- // TODO(b/422543753) Delete on flag cleanup
- Optional<BassClientService> getBassClientService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getBassClientService();
- } else {
- return Optional.ofNullable(mFactory.getBassClientService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<CsipSetCoordinatorService> getCsipSetCoordinatorService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getCsipSetCoordinatorService();
- } else {
- return Optional.ofNullable(mFactory.getCsipSetCoordinatorService());
- }
- }
-
- // TODO(b/422543753) Delete on flag cleanup
- Optional<LeAudioService> getLeAudioService() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- return mAdapterService.getLeAudioService();
- } else {
- return Optional.ofNullable(mFactory.getLeAudioService());
- }
- }
-
public void syncPost(Consumer<VolumeControlService> consumer) {
syncPost(
(s) -> {
@@ -255,9 +217,6 @@
public void cleanup() {
Log.i(TAG, "cleanup()");
- // Mark service as stopped
- setVolumeControlService(null);
-
// Destroy state machines and stop handler thread
synchronized (mStateMachines) {
for (VolumeControlStateMachine sm : mStateMachines.values()) {
@@ -297,30 +256,6 @@
return mAudioInputs;
}
- /**
- * @return VolumeControlService instance
- */
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- public static synchronized VolumeControlService getVolumeControlService() {
- if (sVolumeControlService == null) {
- Log.w(TAG, "getVolumeControlService(): service is NULL");
- return null;
- }
-
- if (!sVolumeControlService.isAvailable()) {
- Log.w(TAG, "getVolumeControlService(): service is not available");
- return null;
- }
- return sVolumeControlService;
- }
-
- @VisibleForTesting
- @Deprecated // TODO(b/422543753) Delete on flag cleanup
- static synchronized void setVolumeControlService(VolumeControlService instance) {
- Log.d(TAG, "setVolumeControlService(): set to: " + instance);
- sVolumeControlService = instance;
- }
-
@Override
public boolean connect(BluetoothDevice device) {
enforceMainLooperIsUsed();
@@ -386,7 +321,7 @@
return mGroupIds.getOrDefault(device, GROUP_ID_INVALID);
}
- final var csipSetCoordinator = getCsipSetCoordinatorService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
if (csipSetCoordinator.isPresent()) {
int groupId = csipSetCoordinator.get().getGroupId(device, BluetoothUuid.CAP);
if (groupId != CSIS_GROUP_ID_INVALID) {
@@ -396,7 +331,7 @@
Log.w(TAG, "CSIP not available");
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isPresent()) {
int groupId = leAudio.get().getGroupId(device);
if (groupId != LE_AUDIO_GROUP_ID_INVALID) {
@@ -425,7 +360,7 @@
return result;
}
- final var csipSetCoordinator = getCsipSetCoordinatorService();
+ final var csipSetCoordinator = mAdapterService.getCsipSetCoordinatorService();
if (csipSetCoordinator.isPresent()) {
result = csipSetCoordinator.get().getGroupDevicesOrdered(groupId);
if (!result.isEmpty()) {
@@ -435,7 +370,7 @@
Log.w(TAG, "CSIP not available");
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isPresent()) {
result = leAudio.get().getGroupDevices(groupId);
if (!result.isEmpty()) {
@@ -1012,11 +947,11 @@
}
}
- final var leAudio = getLeAudioService();
+ final var leAudio = mAdapterService.getLeAudioService();
if (leAudio.isPresent()) {
int currentlyActiveGroupId = leAudio.get().getActiveGroupId();
if (currentlyActiveGroupId == GROUP_ID_INVALID || groupId != currentlyActiveGroupId) {
- final var bassClient = getBassClientService();
+ final var bassClient = mAdapterService.getBassClientService();
if (bassClient.isEmpty()
|| bassClient.get().getSyncedBroadcastSinks().stream()
.map(dev -> getGroupId(dev))
diff --git a/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
index 06930a9..5f31d13 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/a2dp/A2dpServiceTest.java
@@ -180,11 +180,6 @@
}
@Test
- public void testGetA2dpService() {
- assertThat(A2dpService.getA2dpService()).isEqualTo(mA2dpService);
- }
-
- @Test
public void testStopA2dpService() {
// Prepare: connect and set active device
doReturn(true).when(mMockNativeInterface).setActiveDevice(any(BluetoothDevice.class));
diff --git a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java
index 05a0085..1b255f0 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkServiceTest.java
@@ -95,7 +95,6 @@
@After
public void tearDown() throws Exception {
mService.cleanup();
- assertThat(A2dpSinkService.getA2dpSinkService()).isNull();
}
private void syncHandler(int... what) {
@@ -130,7 +129,6 @@
/** Test that initialization of the service completes and that we can get a instance */
@Test
public void testInitialize() {
- assertThat(A2dpSinkService.getA2dpSinkService()).isEqualTo(mService);
assertThat(mLooper.nextMessage()).isNull();
}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java
index 45e2f06..9af43af 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/a2dpsink/A2dpSinkStreamHandlerTest.java
@@ -47,10 +47,8 @@
import com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.storage.DatabaseManager;
-import com.android.bluetooth.flags.Flags;
import com.android.tests.bluetooth.MockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -102,13 +100,9 @@
final var mAvrcpControllerNativeInterface = mock(AvrcpControllerNativeInterface.class);
final var avrcpControllerService =
new AvrcpControllerService(mAdapterService, mAvrcpControllerNativeInterface);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(avrcpControllerService))
- .when(mAdapterService)
- .getAvrcpControllerService();
- } else {
- AvrcpControllerService.setAvrcpControllerService(avrcpControllerService);
- }
+ doReturn(Optional.of(avrcpControllerService))
+ .when(mAdapterService)
+ .getAvrcpControllerService();
// Mock the looper
if (Looper.myLooper() == null) {
@@ -126,13 +120,6 @@
mStreamHandler = spy(new A2dpSinkStreamHandler(mAdapterService, mNativeInterface));
}
- @After
- public void tearDown() throws Exception {
- if (!Flags.adapterServiceProfilesUseOptional()) {
- AvrcpControllerService.setAvrcpControllerService(null);
- }
- }
-
@Test
public void testSrcStart() {
// Stream started without local play, expect no change in streaming.
diff --git a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java
index cc56655..39cd9b5 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerServiceTest.java
@@ -50,7 +50,6 @@
import com.android.bluetooth.avrcpcontroller.BluetoothMediaBrowserService.BrowseResult;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.storage.DatabaseManager;
-import com.android.bluetooth.flags.Flags;
import com.android.tests.bluetooth.MockitoRule;
import org.junit.After;
@@ -100,11 +99,7 @@
mockGetSystemService(mAdapterService, AudioManager.class);
mService = new AvrcpControllerService(mAdapterService, mNativeInterface);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
- } else {
- A2dpSinkService.setA2dpSinkService(mA2dpSinkService);
- }
+ doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
mService.mDeviceStateMap.put(mDevice1, mStateMachine);
final Intent bluetoothBrowserMediaServiceStartIntent =
@@ -120,16 +115,6 @@
@After
public void tearDown() throws Exception {
mService.cleanup();
- if (!Flags.adapterServiceProfilesUseOptional()) {
- A2dpSinkService.setA2dpSinkService(null);
- }
- mService = AvrcpControllerService.getAvrcpControllerService();
- assertThat(mService).isNull();
- }
-
- @Test
- public void initialize() {
- assertThat(AvrcpControllerService.getAvrcpControllerService()).isNotNull();
}
@Test
@@ -166,11 +151,7 @@
@Test
public void setActiveDevice_whenA2dpSinkServiceIsNotInitialized_returnsFalse() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.empty()).when(mAdapterService).getA2dpSinkService();
- } else {
- A2dpSinkService.setA2dpSinkService(null);
- }
+ doReturn(Optional.empty()).when(mAdapterService).getA2dpSinkService();
assertThat(mService.setActiveDevice(mDevice1)).isFalse();
assertThat(mService.getActiveDevice()).isNull();
}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java
index 7d4e3c6..a0eebe2 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java
@@ -64,7 +64,6 @@
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.a2dpsink.A2dpSinkService;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import com.android.tests.bluetooth.MockitoRule;
import org.junit.After;
@@ -134,12 +133,7 @@
Looper.prepare();
}
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
- } else {
- // Set a mock A2dpSinkService for audio focus calls
- A2dpSinkService.setA2dpSinkService(mA2dpSinkService);
- }
+ doReturn(Optional.of(mA2dpSinkService)).when(mAdapterService).getA2dpSinkService();
// Start the Bluetooth Media Browser Service
final Intent bluetoothBrowserMediaServiceStartIntent =
@@ -157,9 +151,6 @@
@After
public void tearDown() throws Exception {
destroyStateMachine(mAvrcpStateMachine);
- if (!Flags.adapterServiceProfilesUseOptional()) {
- A2dpSinkService.setA2dpSinkService(null);
- }
}
/** Create a state machine to test */
diff --git a/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java
index 6fc9d73..3362541 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/bas/BatteryServiceTest.java
@@ -78,12 +78,6 @@
@After
public void tearDown() {
mService.cleanup();
- assertThat(BatteryService.getBatteryService()).isNull();
- }
-
- @Test
- public void getBatteryService() {
- assertThat(BatteryService.getBatteryService()).isEqualTo(mService);
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
index 2792e15..aefd391 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/bass_client/BassClientServiceTest.java
@@ -91,7 +91,6 @@
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_audio.LeAudioService;
@@ -137,7 +136,6 @@
@Mock private PeriodicAdvertisingManager mPeriodicAdvertisingManager;
@Mock private AdapterService mAdapterService;
@Mock private BluetoothLeScannerWrapper mBluetoothLeScannerWrapper;
- @Mock private ServiceFactory mServiceFactory;
@Mock private ScanController mScanController;
@Mock private CsipSetCoordinatorService mCsipService;
@Mock private LeAudioService mLeAudioService;
@@ -327,16 +325,8 @@
mBassClientService = new BassClientService(mAdapterService);
mBassClientService.setAvailable(true);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mCsipService))
- .when(mAdapterService)
- .getCsipSetCoordinatorService();
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- mBassClientService.mServiceFactory = mServiceFactory;
- doReturn(mCsipService).when(mServiceFactory).getCsipSetCoordinatorService();
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
+ doReturn(Optional.of(mCsipService)).when(mAdapterService).getCsipSetCoordinatorService();
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
mBassScanCallbackCaptor = ArgumentCaptor.forClass(IScannerCallback.class);
doAnswer(
@@ -363,7 +353,6 @@
mBassClientService.unregisterCallback(mCallback);
mBassClientService.cleanup();
- assertThat(BassClientService.getBassClientService()).isNull();
mStateMachines.clear();
BassObjectsFactory.setInstanceForTesting(null);
}
@@ -371,7 +360,6 @@
/** Test to verify that BassClientService can be successfully started */
@Test
public void testGetBassClientService() {
- assertThat(mBassClientService).isEqualTo(BassClientService.getBassClientService());
// Verify default connection and audio states
assertThat(mBassClientService.getConnectionState(mCurrentDevice))
.isEqualTo(STATE_DISCONNECTED);
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java
index 57b6a1f..b8798ed 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/ActiveDeviceManagerTest.java
@@ -91,7 +91,6 @@
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock private AdapterService mAdapterService;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private A2dpService mA2dpService;
@Mock private HeadsetService mHeadsetService;
@Mock private HearingAidService mHearingAidService;
@@ -135,19 +134,12 @@
mockGetSystemService(mAdapterService, AudioManager.class, mAudioManager);
when(mAdapterService.getDatabaseManager()).thenReturn(mDatabaseManager);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
- doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
- doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- when(mServiceFactory.getA2dpService()).thenReturn(mA2dpService);
- when(mServiceFactory.getHeadsetService()).thenReturn(mHeadsetService);
- when(mServiceFactory.getHearingAidService()).thenReturn(mHearingAidService);
- when(mServiceFactory.getLeAudioService()).thenReturn(mLeAudioService);
- }
+ doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+ doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
+ doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- mActiveDeviceManager = new ActiveDeviceManager(mAdapterService, mServiceFactory);
+ mActiveDeviceManager = new ActiveDeviceManager(mAdapterService);
mActiveDeviceManager.start();
// Get devices for testing
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java
index 897db78..ac282b6 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/BondStateMachineTest.java
@@ -45,8 +45,6 @@
import android.os.Bundle;
import android.os.ParcelUuid;
import android.os.UserHandle;
-import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import androidx.test.filters.MediumTest;
@@ -586,8 +584,7 @@
}
@Test
- @EnableFlags(Flags.FLAG_ADAPTER_SERVICE_PROFILES_USE_OPTIONAL)
- public void clearProfilePriority_whenAdapterServiceProfilesUseOptionalFlagOn_callsOptional() {
+ public void clearProfilePriority() {
doReturn(Optional.of(mHidHostService)).when(mAdapterService).getHidHostService();
doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
// Random profile intentionally left out to test empty case
@@ -640,44 +637,6 @@
verify(mHapClientService, never()).setConnectionPolicy(any(), anyInt());
}
- @Test
- @DisableFlags(Flags.FLAG_ADAPTER_SERVICE_PROFILES_USE_OPTIONAL)
- public void clearProfilePriority_whenAdapterServiceProfilesUseOptionalFlagOff_callsStatic() {
- // The following random profiles intentionally left out to test empty case: HidHostService
- // A2dpService PbapClientService LeAudioService CsipSetCoordinatorService
- // VolumeControlService HapClientService
- // Additionally, their public static setters don't exist / are private.
- doReturn(true).when(mHeadsetService).isAvailable();
- doReturn(true).when(mHeadsetClientService).isAvailable();
- doReturn(true).when(mA2dpSinkService).isAvailable();
- HeadsetService.setHeadsetService(mHeadsetService);
- HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
- A2dpSinkService.setA2dpSinkService(mA2dpSinkService);
-
- mStateMachine.clearProfilePriority(mDevice);
-
- InOrder inOrder = inOrder(mHeadsetService, mHeadsetClientService, mA2dpSinkService);
-
- inOrder.verify(mHeadsetService)
- .setConnectionPolicy(eq(mDevice), eq(CONNECTION_POLICY_UNKNOWN));
- inOrder.verify(mHeadsetClientService)
- .setConnectionPolicy(eq(mDevice), eq(CONNECTION_POLICY_UNKNOWN));
- inOrder.verify(mA2dpSinkService)
- .setConnectionPolicy(eq(mDevice), eq(CONNECTION_POLICY_UNKNOWN));
-
- verify(mHidHostService, never()).setConnectionPolicy(any(), anyInt());
- verify(mA2dpService, never()).setConnectionPolicy(any(), anyInt());
- verify(mPbapClientService, never()).setConnectionPolicy(any(), anyInt());
- verify(mLeAudioService, never()).setConnectionPolicy(any(), anyInt());
- verify(mCsipSetCoordinatorService, never()).setConnectionPolicy(any(), anyInt());
- verify(mVolumeControlService, never()).setConnectionPolicy(any(), anyInt());
- verify(mHapClientService, never()).setConnectionPolicy(any(), anyInt());
-
- HeadsetService.setHeadsetService(null);
- HeadsetClientService.setHeadsetClientService(null);
- A2dpSinkService.setA2dpSinkService(null);
- }
-
private void testSendIntentCase(
int oldState,
int newState,
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java
index b61b45c..a1155a8 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/PhonePolicyTest.java
@@ -61,7 +61,6 @@
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.btservice.storage.MetadataDatabase;
import com.android.bluetooth.csip.CsipSetCoordinatorService;
-import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.hap.HapClientService;
import com.android.bluetooth.hearingaid.HearingAidService;
import com.android.bluetooth.hfp.HeadsetService;
@@ -92,7 +91,6 @@
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock private AdapterService mAdapterService;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private HeadsetService mHeadsetService;
@Mock private A2dpService mA2dpService;
@Mock private LeAudioService mLeAudioService;
@@ -126,26 +124,14 @@
doReturn(BluetoothAdapter.STATE_ON).when(mAdapterService).getState();
doReturn(MAX_CONNECTED_AUDIO_DEVICES).when(mAdapterService).getMaxConnectedAudioDevices();
doReturn(mDatabaseManager).when(mAdapterService).getDatabaseManager();
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
- doReturn(Optional.of(mCsipSetCoordinatorService))
- .when(mAdapterService)
- .getCsipSetCoordinatorService();
- doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
- doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
- doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- // Setup the mocked factory to return mocked services
- doReturn(mA2dpService).when(mServiceFactory).getA2dpService();
- doReturn(mCsipSetCoordinatorService)
- .when(mServiceFactory)
- .getCsipSetCoordinatorService();
- doReturn(mHeadsetService).when(mServiceFactory).getHeadsetService();
- doReturn(mHearingAidService).when(mServiceFactory).getHearingAidService();
- doReturn(mHapClientService).when(mServiceFactory).getHapClientService();
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
+ doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+ doReturn(Optional.of(mCsipSetCoordinatorService))
+ .when(mAdapterService)
+ .getCsipSetCoordinatorService();
+ doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
+ doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
+ doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
// Most common default
doReturn(CONNECTION_POLICY_UNKNOWN).when(mHeadsetService).getConnectionPolicy(any());
@@ -158,7 +144,7 @@
mockGetRemoteDevice(mAdapterService, mDevice1, mDevice2, mDevice3, mDevice4);
- mPhonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+ mPhonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
mOriginalDualModeState = Utils.isDualModeAudioEnabled();
}
@@ -906,8 +892,7 @@
.build();
DatabaseManager db = new DatabaseManager(mAdapterService);
doReturn(db).when(mAdapterService).getDatabaseManager();
- PhonePolicy phonePolicy =
- new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+ PhonePolicy phonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
db.start(mDatabase);
TestUtils.waitForLooperToFinishScheduledTask(db.getHandlerLooper());
@@ -937,8 +922,7 @@
.build();
DatabaseManager db = new DatabaseManager(mAdapterService);
doReturn(db).when(mAdapterService).getDatabaseManager();
- PhonePolicy phonePolicy =
- new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+ PhonePolicy phonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
db.start(mDatabase);
TestUtils.waitForLooperToFinishScheduledTask(db.getHandlerLooper());
@@ -973,8 +957,7 @@
.build();
DatabaseManager db = new DatabaseManager(mAdapterService);
doReturn(db).when(mAdapterService).getDatabaseManager();
- PhonePolicy phonePolicy =
- new PhonePolicy(mAdapterService, mLooper.getLooper(), mServiceFactory);
+ PhonePolicy phonePolicy = new PhonePolicy(mAdapterService, mLooper.getLooper());
db.start(mDatabase);
TestUtils.waitForLooperToFinishScheduledTask(db.getHandlerLooper());
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java
index 19990c2..81370cd 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/RemoteDevicesTest.java
@@ -254,9 +254,7 @@
// .BATTERY_LEVEL_UNKNOWN
mRemoteDevices.onHeadsetConnectionStateChanged(
mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService).getBatteryService();
- }
+ verify(mAdapterService).getBatteryService();
verifyBatteryLevelUpdate(BluetoothDevice.BATTERY_LEVEL_UNKNOWN);
// Verify that updating battery level triggers ACTION_BATTERY_LEVEL_CHANGED intent again
@@ -272,9 +270,7 @@
makeBatteryServiceAvailable(mDevice);
assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService).getBatteryService();
- }
+ verify(mAdapterService).getBatteryService();
// Verify that updating battery level triggers ACTION_BATTERY_LEVEL_CHANGED intent
mRemoteDevices.updateBatteryLevel(mDevice, batteryLevel, /* fromBas= */ false);
@@ -283,19 +279,13 @@
// Verify that battery level is not reset
mRemoteDevices.onHeadsetConnectionStateChanged(
mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService, times(2)).getBatteryService();
- }
+ verify(mAdapterService, times(2)).getBatteryService();
assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNotNull();
assertThat(mRemoteDevices.getDeviceProperties(mDevice).getBatteryLevel())
.isEqualTo(batteryLevel);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
- } else {
- BatteryService.setBatteryService(null);
- }
+ doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
verifyNoMoreInteractions(mAdapterService);
}
@@ -490,9 +480,7 @@
// .BATTERY_LEVEL_UNKNOWN
mRemoteDevices.onHeadsetClientConnectionStateChanged(
mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService).getBatteryService();
- }
+ verify(mAdapterService).getBatteryService();
verifyBatteryLevelUpdate(BluetoothDevice.BATTERY_LEVEL_UNKNOWN);
// Verify that updating battery level triggers ACTION_BATTERY_LEVEL_CHANGED intent again
@@ -508,9 +496,7 @@
makeBatteryServiceAvailable(mDevice);
assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService).getBatteryService();
- }
+ verify(mAdapterService).getBatteryService();
// Verify that device property is null initially
assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNull();
@@ -522,19 +508,13 @@
// Verify that battery level is not reset.
mRemoteDevices.onHeadsetClientConnectionStateChanged(
mDevice, STATE_DISCONNECTING, STATE_DISCONNECTED);
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService, times(2)).getBatteryService();
- }
+ verify(mAdapterService, times(2)).getBatteryService();
assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNotNull();
assertThat(mRemoteDevices.getDeviceProperties(mDevice).getBatteryLevel())
.isEqualTo(batteryLevel);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
- } else {
- BatteryService.setBatteryService(null);
- }
+ doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
verifyNoMoreInteractions(mAdapterService);
}
@@ -545,9 +525,7 @@
makeBatteryServiceAvailable(mDevice);
assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService).getBatteryService();
- }
+ verify(mAdapterService).getBatteryService();
// Verify that device property is null initially
assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNull();
@@ -564,11 +542,7 @@
mRemoteDevices.resetBatteryLevel(mDevice, /* fromBas= */ true);
verifyBatteryLevelUpdate(batteryLevel);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
- } else {
- BatteryService.setBatteryService(null);
- }
+ doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
verifyNoMoreInteractions(mAdapterService);
}
@@ -578,9 +552,7 @@
makeBatteryServiceAvailable(mDevice);
assertThat(mRemoteDevices.hasBatteryService(mDevice)).isTrue();
- if (Flags.adapterServiceProfilesUseOptional()) {
- verify(mAdapterService).getBatteryService();
- }
+ verify(mAdapterService).getBatteryService();
// Verify that device property is null initially
assertThat(mRemoteDevices.getDeviceProperties(mDevice)).isNull();
@@ -599,11 +571,7 @@
.isEqualTo(batteryLevel);
verifyNoMoreInteractions(mAdapterService);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
- } else {
- BatteryService.setBatteryService(null);
- }
+ doReturn(Optional.empty()).when(mAdapterService).getBatteryService();
verifyNoMoreInteractions(mAdapterService);
}
@@ -700,13 +668,7 @@
private void makeBatteryServiceAvailable(BluetoothDevice device) {
BatteryService batteryService = mock(BatteryService.class);
when(batteryService.getConnectionState(device)).thenReturn(STATE_CONNECTED);
-
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(batteryService)).when(mAdapterService).getBatteryService();
- } else {
- when(batteryService.isAvailable()).thenReturn(true);
- BatteryService.setBatteryService(batteryService);
- }
+ doReturn(Optional.of(batteryService)).when(mAdapterService).getBatteryService();
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java b/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java
index 1de2081..781121a 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/btservice/SilenceDeviceManagerTest.java
@@ -32,7 +32,6 @@
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
@@ -74,7 +73,6 @@
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock private AdapterService mAdapterService;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private A2dpService mA2dpService;
@Mock private HeadsetService mHeadsetService;
@@ -88,18 +86,13 @@
@Before
public void setUp() {
mInOrder = inOrder(mAdapterService);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
- doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
- } else {
- when(mServiceFactory.getA2dpService()).thenReturn(mA2dpService);
- when(mServiceFactory.getHeadsetService()).thenReturn(mHeadsetService);
- }
+ doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+ doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
mHandlerThread = new HandlerThread("SilenceManagerTestHandlerThread");
mHandlerThread.start();
mLooper = mHandlerThread.getLooper();
- mManager = new SilenceDeviceManager(mAdapterService, mServiceFactory, mLooper);
+ mManager = new SilenceDeviceManager(mAdapterService, mLooper);
}
@After
diff --git a/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java
index 66e3dd9..4d43e65 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/csip/CsipSetCoordinatorServiceTest.java
@@ -65,8 +65,6 @@
import com.android.bluetooth.TestLooper;
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_audio.LeAudioService;
import com.android.tests.bluetooth.MockitoRule;
@@ -79,7 +77,6 @@
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.mockito.Mock;
-import org.mockito.Spy;
import org.mockito.hamcrest.MockitoHamcrest;
import java.util.List;
@@ -93,8 +90,6 @@
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Rule public final MockitoRule mMockitoRule = new MockitoRule();
- // TODO(b/422543753) Delete on flag cleanup
- @Spy private ServiceFactory mServiceFactory = new ServiceFactory();
@Mock private AdapterService mAdapterService;
@Mock private LeAudioService mLeAudioService;
@Mock private CsipSetCoordinatorNativeInterface mNativeInterface;
@@ -125,18 +120,14 @@
.when(mAdapterService)
.getRemoteUuids(any());
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
mInOrder = inOrder(mAdapterService);
mLooper = new TestLooper();
mService =
new CsipSetCoordinatorService(
- mAdapterService, mLooper.getLooper(), mNativeInterface, mServiceFactory);
+ mAdapterService, mLooper.getLooper(), mNativeInterface);
mService.setAvailable(true);
mNativeCallback = new CsipSetCoordinatorNativeInterface(mAdapterService, mService);
@@ -146,12 +137,6 @@
@After
public void tearDown() throws Exception {
mService.cleanup();
- assertThat(CsipSetCoordinatorService.getCsipSetCoordinatorService()).isNull();
- }
-
- @Test
- public void getService() {
- assertThat(CsipSetCoordinatorService.getCsipSetCoordinatorService()).isEqualTo(mService);
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java
index e1d192b..c9df83b 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hap/HapClientServiceTest.java
@@ -71,7 +71,6 @@
import com.android.bluetooth.TestLooper;
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
import com.android.tests.bluetooth.FlagsWrapper;
@@ -103,7 +102,6 @@
@Mock private AdapterService mAdapterService;
@Mock private HapClientNativeInterface mNativeInterface;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private CsipSetCoordinatorService mCsipService;
@Mock private IBluetoothHapClientCallback mFrameworkCallback;
@Mock private Binder mBinder;
@@ -140,13 +138,7 @@
.when(mAdapterService)
.getProfileConnectionPolicy(any(), anyInt());
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mCsipService))
- .when(mAdapterService)
- .getCsipSetCoordinatorService();
- } else {
- doReturn(mCsipService).when(mServiceFactory).getCsipSetCoordinatorService();
- }
+ doReturn(Optional.of(mCsipService)).when(mAdapterService).getCsipSetCoordinatorService();
doReturn(mBinder).when(mFrameworkCallback).asBinder();
@@ -186,21 +178,12 @@
mService = new HapClientService(mAdapterService, mLooper.getLooper(), mNativeInterface);
mService.setAvailable(true);
- mService.mFactory = mServiceFactory;
synchronized (mService.mCallbacks) {
mService.mCallbacks.register(mFrameworkCallback);
}
}
@Test
- public void getHapService() {
- initTest();
- assertThat(HapClientService.getHapClientService()).isEqualTo(mService);
- mService.cleanup();
- assertThat(HapClientService.getHapClientService()).isNull();
- }
-
- @Test
public void getConnectionPolicy() {
initTest();
for (int policy :
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java
index b7a7b14..a3a11a5 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hearingaid/HearingAidServiceTest.java
@@ -128,7 +128,6 @@
@After
public void tearDown() {
mService.cleanup();
- assertThat(HearingAidService.getHearingAidService()).isNull();
}
@SafeVarargs
@@ -169,11 +168,6 @@
}
@Test
- public void getHearingAidService() {
- assertThat(HearingAidService.getHearingAidService()).isEqualTo(mService);
- }
-
- @Test
public void getConnectionPolicy() {
for (int policy :
List.of(
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java
index cf08e0d..0daf4fe 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceAndStateMachineTest.java
@@ -82,7 +82,6 @@
import com.android.bluetooth.btservice.ActiveDeviceManager;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.RemoteDevices;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.btservice.SilenceDeviceManager;
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.flags.Flags;
@@ -137,7 +136,6 @@
@Mock private HeadsetNativeInterface mNativeInterface;
@Mock private LeAudioService mLeAudioService;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private AdapterService mAdapterService;
@Mock private ActiveDeviceManager mActiveDeviceManager;
@Mock private SilenceDeviceManager mSilenceDeviceManager;
@@ -265,8 +263,6 @@
public void tearDown() {
mTestLooper.dispatchAll();
mHeadsetService.cleanup();
- mHeadsetService = HeadsetService.getHeadsetService();
- assertThat(mHeadsetService).isNull();
// Clear classes that is spied on and has static life time
HeadsetObjectsFactory.setInstanceForTesting(null);
mBondedDevices.clear();
@@ -275,7 +271,6 @@
/** Test to verify that HeadsetService can be successfully started */
@Test
public void testGetHeadsetService() {
- assertThat(HeadsetService.getHeadsetService()).isEqualTo(mHeadsetService);
// Verify default connection and audio states
BluetoothDevice device = getTestDevice(0);
assertThat(mHeadsetService.getConnectionState(device)).isEqualTo(STATE_DISCONNECTED);
@@ -1804,13 +1799,7 @@
public void testHfpOnlyHandoverToLeAudioAfterScoDisconnect() {
BluetoothDevice device = getTestDevice(0);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- assertThat(mHeadsetService.mFactory).isNotNull();
- mHeadsetService.mFactory = mServiceFactory;
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
doReturn(List.of(device)).when(mLeAudioService).getConnectedDevices();
List<BluetoothDevice> activeDeviceList = new ArrayList<>();
@@ -1896,13 +1885,7 @@
public void testStopVoiceRecognitionBeforeStop_returnsFalse() {
BluetoothDevice device = getTestDevice(0);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- assertThat(mHeadsetService.mFactory).isNotNull();
- mHeadsetService.mFactory = mServiceFactory;
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
doReturn(List.of(device)).when(mLeAudioService).getConnectedDevices();
List<BluetoothDevice> activeDeviceList = new ArrayList<>();
@@ -1931,13 +1914,7 @@
BluetoothDevice device = getTestDevice(0);
doReturn(false).when(mNativeInterface).isVoiceRecognitionSupported(device);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- assertThat(mHeadsetService.mFactory).isNotNull();
- mHeadsetService.mFactory = mServiceFactory;
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
doReturn(List.of(device)).when(mLeAudioService).getConnectedDevices();
List<BluetoothDevice> activeDeviceList = new ArrayList<>();
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java
index 759c94b..f5214db 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfp/HeadsetServiceTest.java
@@ -198,8 +198,6 @@
@After
public void tearDown() throws Exception {
mHeadsetService.cleanup();
- mHeadsetService = HeadsetService.getHeadsetService();
- assertThat(mHeadsetService).isNull();
mStateMachines.clear();
mCurrentDevice = null;
HeadsetObjectsFactory.setInstanceForTesting(null);
@@ -208,7 +206,6 @@
/** Test to verify that HeadsetService can be successfully started */
@Test
public void testGetHeadsetService() {
- assertThat(HeadsetService.getHeadsetService()).isEqualTo(mHeadsetService);
// Verify default connection and audio states
mCurrentDevice = getTestDevice(0);
assertThat(mHeadsetService.getConnectionState(mCurrentDevice))
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java
index 03709d9..6ae1530 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/HeadsetClientServiceTest.java
@@ -48,7 +48,6 @@
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.tests.bluetooth.MockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
@@ -74,7 +73,6 @@
@Mock private RemoteDevices mRemoteDevices;
private HeadsetClientService mService;
- private boolean mIsHeadsetClientServiceStarted;
private static final int STANDARD_WAIT_MILLIS = 1000;
private static final int SERVICE_START_WAIT_MILLIS = 100;
@@ -89,15 +87,9 @@
doReturn(mRemoteDevices).when(mAdapterService).getRemoteDevices();
}
- @After
- public void tearDown() throws Exception {
- stopServiceIfStarted();
- }
-
@Test
public void testInitialize() throws Exception {
startService();
- assertThat(HeadsetClientService.getHeadsetClientService()).isNotNull();
}
@Ignore("b/260202548")
@@ -250,13 +242,5 @@
private void startService() throws Exception {
mService = new HeadsetClientService(mAdapterService, mNativeInterface);
mService.setAvailable(true);
- mIsHeadsetClientServiceStarted = true;
- }
-
- private void stopServiceIfStarted() throws Exception {
- if (mIsHeadsetClientServiceStarted) {
- mService.cleanup();
- assertThat(HeadsetClientService.getHeadsetClientService()).isNull();
- }
}
}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java
index 4abe67a..f3b60b1 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HeadsetClientServiceInterfaceTest.java
@@ -21,7 +21,6 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothDevice;
import android.os.Bundle;
@@ -29,11 +28,9 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.tests.bluetooth.StaticMockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -80,27 +77,12 @@
mServiceInterface = new HeadsetClientServiceInterface();
}
- @After
- public void tearDown() {
- if (!Flags.adapterServiceProfilesUseOptional()) {
- HeadsetClientService.setHeadsetClientService(null);
- assertThat(HeadsetClientService.getHeadsetClientService()).isNull();
- }
- }
-
private void makeHeadsetClientServiceAvailable() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- ExtendedMockito.doReturn(mAdapterService)
- .when(() -> AdapterService.deprecatedGetAdapterService());
- doReturn(Optional.of(mHeadsetClientService))
- .when(mAdapterService)
- .getHeadsetClientService();
- } else {
- when(mHeadsetClientService.isAvailable()).thenReturn(true);
- HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
- assertThat(HeadsetClientService.getHeadsetClientService())
- .isEqualTo(mHeadsetClientService);
- }
+ ExtendedMockito.doReturn(mAdapterService)
+ .when(() -> AdapterService.deprecatedGetAdapterService());
+ doReturn(Optional.of(mHeadsetClientService))
+ .when(mAdapterService)
+ .getHeadsetClientService();
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java
index b80ecc6f..68ea500 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientConnectionServiceTest.java
@@ -52,12 +52,10 @@
import com.android.bluetooth.R;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.RemoteDevices;
-import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.pbapclient.PbapClientService;
import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.tests.bluetooth.StaticMockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -97,17 +95,12 @@
.when(mAdapterService)
.getRemoteDevice(anyString());
doReturn(mRemoteDevices).when(mAdapterService).getRemoteDevices();
- if (Flags.adapterServiceProfilesUseOptional()) {
- ExtendedMockito.doReturn(mAdapterService)
- .when(() -> AdapterService.deprecatedGetAdapterService());
- doReturn(Optional.of(mHeadsetClientService))
- .when(mAdapterService)
- .getHeadsetClientService();
- doReturn(Optional.of(mPbapClientService)).when(mAdapterService).getPbapClientService();
- } else {
- when(mHeadsetClientService.isAvailable()).thenReturn(true);
- HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
- }
+ ExtendedMockito.doReturn(mAdapterService)
+ .when(() -> AdapterService.deprecatedGetAdapterService());
+ doReturn(Optional.of(mHeadsetClientService))
+ .when(mAdapterService)
+ .getHeadsetClientService();
+ doReturn(Optional.of(mPbapClientService)).when(mAdapterService).getPbapClientService();
// Spy the connection service under test so we can mock some of the system services and keep
// them from impacting the actual system. Note: Another way to do this would be to extend
@@ -132,13 +125,6 @@
mockGetBluetoothManager(mHfpClientConnectionService);
}
- @After
- public void tearDown() throws Exception {
- if (!Flags.adapterServiceProfilesUseOptional()) {
- HeadsetClientService.setHeadsetClientService(null);
- }
- }
-
private void createService() {
mHfpClientConnectionService.onCreate();
}
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java
index 1a57380..df26ec0 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hfpclient/connserv/HfpClientDeviceBlockTest.java
@@ -38,11 +38,9 @@
import androidx.test.filters.MediumTest;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.tests.bluetooth.StaticMockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -88,24 +86,11 @@
mockGetSystemService(mConnServ, TelecomManager.class);
- if (Flags.adapterServiceProfilesUseOptional()) {
- ExtendedMockito.doReturn(mAdapterService)
- .when(() -> AdapterService.deprecatedGetAdapterService());
- doReturn(Optional.of(mHeadsetClientService))
- .when(mAdapterService)
- .getHeadsetClientService();
- } else {
- when(mHeadsetClientService.isAvailable()).thenReturn(true);
- HeadsetClientService.setHeadsetClientService(mHeadsetClientService);
- }
- }
-
- @After
- public void tearDown() {
- if (!Flags.adapterServiceProfilesUseOptional()) {
- HeadsetClientService.setHeadsetClientService(null);
- assertThat(HeadsetClientService.getHeadsetClientService()).isNull();
- }
+ ExtendedMockito.doReturn(mAdapterService)
+ .when(() -> AdapterService.deprecatedGetAdapterService());
+ doReturn(Optional.of(mHeadsetClientService))
+ .when(mAdapterService)
+ .getHeadsetClientService();
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java
index c969100..c0ac4d6 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/hid/HidHostServiceTest.java
@@ -76,13 +76,6 @@
@After
public void tearDown() throws Exception {
mService.cleanup();
- mService = HidHostService.getHidHostService();
- assertThat(mService).isNull();
- }
-
- @Test
- public void testInitialize() {
- assertThat(HidHostService.getHidHostService()).isNotNull();
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java
index 5e33760..bf39f1a 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_audio/ContentControlIdKeeperTest.java
@@ -33,11 +33,8 @@
import androidx.test.filters.MediumTest;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
-import com.android.bluetooth.flags.Flags;
import com.android.tests.bluetooth.MockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -56,22 +53,12 @@
@Rule public final MockitoRule mMockitoRule = new MockitoRule();
@Mock private AdapterService mAdapterService;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private LeAudioService mLeAudioService;
@Before
public void setUp() throws Exception {
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
- ContentControlIdKeeper.initForTesting(mServiceFactory);
- }
-
- @After
- public void tearDown() throws Exception {
- ContentControlIdKeeper.initForTesting(null);
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
+ ContentControlIdKeeper.initForTesting();
}
public int testCcidAcquire(ParcelUuid uuid, int context, int expectedListSize) {
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java
index 02cd4cc..c603664 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioBroadcastServiceTest.java
@@ -87,7 +87,6 @@
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.Config;
import com.android.bluetooth.btservice.MetricsLogger;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.tbs.TbsService;
@@ -135,8 +134,6 @@
@Mock private IBinder mBinder;
@Spy private LeAudioObjectsFactory mObjectsFactory = LeAudioObjectsFactory.getInstance();
- // TODO(b/422543753) Delete on flag cleanup
- @Spy private ServiceFactory mServiceFactory = new ServiceFactory();
private static final String TEST_MAC_ADDRESS = "00:11:22:33:44:55";
private static final int TEST_BROADCAST_ID = 42;
@@ -224,15 +221,10 @@
mLeAudioBroadcasterNativeInterface);
mService.setAvailable(true);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
- doReturn(Optional.of(mVolumeControlService))
- .when(mAdapterService)
- .getVolumeControlService();
- } else {
- mService.mServiceFactory = mServiceFactory;
- when(mServiceFactory.getBassClientService()).thenReturn(mBassClientService);
- }
+ doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
+ doReturn(Optional.of(mVolumeControlService))
+ .when(mAdapterService)
+ .getVolumeControlService();
// Set up the State Changed receiver
when(mAdapterService.getDeviceFromByte(Utils.getBytesFromAddress("FF:FF:FF:FF:FF:FF")))
diff --git a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java
index 209b071..73940a2 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/le_audio/LeAudioServiceTest.java
@@ -89,7 +89,6 @@
import com.android.bluetooth.btservice.ActiveDeviceManager;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.Config;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.btservice.storage.DatabaseManager;
import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
@@ -155,8 +154,6 @@
@Mock private VolumeControlService mVolumeControlService;
@Spy private LeAudioObjectsFactory mObjectsFactory = LeAudioObjectsFactory.getInstance();
- // TODO(b/422543753) Delete on flag cleanup
- @Spy private ServiceFactory mServiceFactory = new ServiceFactory();
private static final int MAX_LE_AUDIO_CONNECTIONS = 5;
private static final int LE_AUDIO_GROUP_ID_INVALID = -1;
@@ -320,31 +317,18 @@
.when(mAdapterService)
.getDeviceFromByte(Utils.getBytesFromAddress("FF:FF:FF:FF:FF:FF"));
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
- doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
- doReturn(Optional.of(mCsipSetCoordinatorService))
- .when(mAdapterService)
- .getCsipSetCoordinatorService();
- doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
- doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
- doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
- doReturn(Optional.of(mMcpService)).when(mAdapterService).getMcpService();
- doReturn(Optional.of(mVolumeControlService))
- .when(mAdapterService)
- .getVolumeControlService();
- } else {
- doReturn(mA2dpService).when(mServiceFactory).getA2dpService();
- doReturn(mBassClientService).when(mServiceFactory).getBassClientService();
- doReturn(mCsipSetCoordinatorService)
- .when(mServiceFactory)
- .getCsipSetCoordinatorService();
- doReturn(mHapClientService).when(mServiceFactory).getHapClientService();
- doReturn(mHeadsetService).when(mServiceFactory).getHeadsetService();
- doReturn(mHearingAidService).when(mServiceFactory).getHearingAidService();
- doReturn(mMcpService).when(mServiceFactory).getMcpService();
- doReturn(mVolumeControlService).when(mServiceFactory).getVolumeControlService();
- }
+ doReturn(Optional.of(mA2dpService)).when(mAdapterService).getA2dpService();
+ doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
+ doReturn(Optional.of(mCsipSetCoordinatorService))
+ .when(mAdapterService)
+ .getCsipSetCoordinatorService();
+ doReturn(Optional.of(mHapClientService)).when(mAdapterService).getHapClientService();
+ doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
+ doReturn(Optional.of(mHearingAidService)).when(mAdapterService).getHearingAidService();
+ doReturn(Optional.of(mMcpService)).when(mAdapterService).getMcpService();
+ doReturn(Optional.of(mVolumeControlService))
+ .when(mAdapterService)
+ .getVolumeControlService();
doCallRealMethod().when(mVolumeControlService).syncPost(any());
doAnswer(
inv -> {
@@ -363,7 +347,6 @@
mNativeInterface,
mLeAudioBroadcasterNativeInterface);
mService.setAvailable(true);
- mService.mServiceFactory = mServiceFactory;
LeAudioStackEvent stackEvent =
new LeAudioStackEvent(LeAudioStackEvent.EVENT_TYPE_NATIVE_INITIALIZED);
@@ -2453,11 +2436,7 @@
@Test
public void testGetAudioDeviceGroupVolume_whenVolumeControlServiceIsNull() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.empty()).when(mAdapterService).getVolumeControlService();
- } else {
- doReturn(null).when(mServiceFactory).getVolumeControlService();
- }
+ doReturn(Optional.empty()).when(mAdapterService).getVolumeControlService();
assertThat(mService.getAudioDeviceGroupVolume(TEST_GROUP_ID))
.isEqualTo(VOLUME_CONTROL_UNKNOWN_VOLUME);
@@ -2515,11 +2494,7 @@
public void testHandleGroupIdleDuringCall() {
BluetoothDevice headsetDevice = getTestDevice(5);
HeadsetService headsetService = Mockito.mock(HeadsetService.class);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(headsetService)).when(mAdapterService).getHeadsetService();
- } else {
- when(mServiceFactory.getHeadsetService()).thenReturn(headsetService);
- }
+ doReturn(Optional.of(headsetService)).when(mAdapterService).getHeadsetService();
mService.mHfpHandoverDevice = null;
mService.handleGroupIdleDuringCall();
diff --git a/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java
index 7644760..a7e9359 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/map/BluetoothMapServiceTest.java
@@ -76,12 +76,6 @@
@After
public void tearDown() {
mService.cleanup();
- assertThat(BluetoothMapService.getBluetoothMapService()).isNull();
- }
-
- @Test
- public void initialize() {
- assertThat(BluetoothMapService.getBluetoothMapService()).isNotNull();
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java
index de241da..eee93bb 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/mcp/McpServiceTest.java
@@ -32,7 +32,6 @@
import androidx.test.filters.MediumTest;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_audio.LeAudioService;
import com.android.tests.bluetooth.MockitoRule;
@@ -60,9 +59,7 @@
@Before
public void setUp() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- }
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
mMcpService = new McpService(mAdapterService, mMediaControlProfile);
mMcpService.setAvailable(true);
}
@@ -70,14 +67,6 @@
@After
public void tearDown() {
mMcpService.cleanup();
- assertThat(McpService.getMcpService()).isNull();
- }
-
- @Test
- public void testGetService() {
- McpService mMcpServiceDuplicate = McpService.getMcpService();
- assertThat(mMcpServiceDuplicate).isNotNull();
- assertThat(mMcpServiceDuplicate).isSameInstanceAs(mMcpService);
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java
index 442c11b..20961ad 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/mcp/MediaControlGattServiceTest.java
@@ -41,11 +41,9 @@
import androidx.test.filters.MediumTest;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_audio.LeAudioService;
import com.android.tests.bluetooth.MockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -96,25 +94,13 @@
doReturn(new BluetoothDevice[0]).when(mAdapterService).getBondedDevices();
doReturn(BluetoothDevice.ACCESS_ALLOWED).when(mMcpService).getDeviceAuthorization(any());
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- when(mLeAudioService.isAvailable()).thenReturn(true);
- LeAudioService.setLeAudioService(mLeAudioService);
- }
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
mMediaControlGattService =
new MediaControlGattService(mAdapterService, mMcpService, mCallback, TEST_CCID);
mMediaControlGattService.setBluetoothGattServerForTesting(mGattServer);
}
- @After
- public void tearDown() throws Exception {
- if (!Flags.adapterServiceProfilesUseOptional()) {
- LeAudioService.setLeAudioService(null);
- }
- }
-
private void prepareConnectedDevice() {
if (mCurrentDevice == null) {
mCurrentDevice = getTestDevice(0);
diff --git a/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java
index 5503278..c0a71ac 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/opp/BluetoothOppServiceTest.java
@@ -147,11 +147,6 @@
}
@Test
- public void testInitialize() {
- assertThat(BluetoothOppService.getBluetoothOppService()).isNotNull();
- }
-
- @Test
public void deleteShare_deleteShareAndCorrespondingBatch() {
int infoTimestamp = 123456789;
int infoTimestamp2 = 123489;
diff --git a/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java
index a16ebb9..b5902de 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/pan/PanServiceTest.java
@@ -93,12 +93,6 @@
@After
public void tearDown() {
mService.cleanup();
- assertThat(PanService.getPanService()).isNull();
- }
-
- @Test
- public void initialize() {
- assertThat(PanService.getPanService()).isNotNull();
}
@Test
diff --git a/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java
index c7dce6e..9513dcd 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/pbapclient/PbapClientServiceTest.java
@@ -141,23 +141,6 @@
@After
public void tearDown() {
mService.cleanup();
- assertThat(PbapClientService.getPbapClientService()).isNull();
- }
-
- // *********************************************************************************************
- // * Initialize Service
- // *********************************************************************************************
-
- @Test
- public void testInitialize() {
- assertThat(PbapClientService.getPbapClientService()).isNotNull();
- }
-
- @Test
- public void testSetPbapClientService_withNull() {
- PbapClientService.setPbapClientService(null);
-
- assertThat(PbapClientService.getPbapClientService()).isNull();
}
// *********************************************************************************************
@@ -305,19 +288,6 @@
// * API Methods
// *********************************************************************************************
- // getPbapClientService (available) -> this
- @Test
- public void testGetService_serviceAvailable_returnsThis() {
- assertThat(PbapClientService.getPbapClientService()).isEqualTo(mService);
- }
-
- // getPbapClientService (unavailable) -> null
- @Test
- public void testGetService_serviceUnavailable_returnsNull() {
- mService.setAvailable(false);
- assertThat(PbapClientService.getPbapClientService()).isNull();
- }
-
// connect (policy allowed) -> connect/true
@Test
public void testConnect_onAllowedAndUnconnectedDevice_deviceCreatedAndIsConnecting() {
diff --git a/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java b/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java
index 945c20d..6a352aa 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/tbs/TbsGenericTest.java
@@ -45,7 +45,6 @@
import androidx.test.filters.MediumTest;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_audio.LeAudioService;
import com.android.tests.bluetooth.MockitoRule;
@@ -74,7 +73,6 @@
@Rule public final MockitoRule mMockitoRule = new MockitoRule();
@Mock private AdapterService mAdapterService;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private LeAudioService mLeAudioService;
@Mock private TbsGatt mTbsGatt;
@Mock private TbsService.Callback mCallback;
@@ -125,15 +123,9 @@
doReturn(true).when(mTbsGatt).clearFriendlyName();
mockGetSystemService(mAdapterService, AudioManager.class, mAudioManager);
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- } else {
- // Setup the mocked factory to return mocked services
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- }
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
mTbsGeneric = new TbsGeneric(mAdapterService, mTbsGatt);
- mTbsGeneric.mFactory = mServiceFactory;
}
private Integer prepareTestBearer() {
diff --git a/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java
index 9c3feea..c585157 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/telephony/BluetoothInCallServiceTest.java
@@ -72,7 +72,6 @@
import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.tests.bluetooth.StaticMockitoRule;
-import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -128,17 +127,10 @@
@Before
public void setUp() {
- if (Flags.adapterServiceProfilesUseOptional()) {
- ExtendedMockito.doReturn(mAdapterService)
- .when(() -> AdapterService.deprecatedGetAdapterService());
- doReturn(Optional.of(mTbsService)).when(mAdapterService).getTbsService();
- doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
- } else {
- doReturn(true).when(mTbsService).isAvailable();
- TbsService.setTbsService(mTbsService);
- doReturn(true).when(mHeadsetService).isAvailable();
- HeadsetService.setHeadsetService(mHeadsetService);
- }
+ ExtendedMockito.doReturn(mAdapterService)
+ .when(() -> AdapterService.deprecatedGetAdapterService());
+ doReturn(Optional.of(mTbsService)).when(mAdapterService).getTbsService();
+ doReturn(Optional.of(mHeadsetService)).when(mAdapterService).getHeadsetService();
doReturn(true).when(mCallInfo).isNullCall(null);
doReturn(false).when(mCallInfo).isNullCall(notNull());
@@ -149,18 +141,9 @@
mBluetoothInCallService.onCreate();
}
- @After
- public void tearDown() {
- if (!Flags.adapterServiceProfilesUseOptional()) {
- TbsService.setTbsService(null);
- HeadsetService.setHeadsetService(null);
- }
- }
-
@Test
public void onCreate_registerBearer_whenTbsServiceIsNull_doesNothing() {
clearInvocations(mTbsService);
- TbsService.setTbsService(null);
Context spiedContext = spy(new ContextWrapper(mContext));
mockGetSystemService(spiedContext, TelephonyManager.class, mTelephonyManager);
@@ -181,7 +164,6 @@
@Test
public void onCreate_registerBearer_whenTbsServiceIsPresent_callsRegisterBearer() {
clearInvocations(mTbsService);
- TbsService.setTbsService(mTbsService);
PhoneAccount fakePhoneAccount = makeQuickAccount("id0", TEST_ACCOUNT_INDEX);
doReturn(fakePhoneAccount).when(mCallInfo).getBestPhoneAccount();
diff --git a/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java b/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java
index e9c417b..baebf61 100644
--- a/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java
+++ b/android/app/tests/unit/src/com/android/bluetooth/vc/VolumeControlServiceTest.java
@@ -65,7 +65,6 @@
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.bass_client.BassClientService;
import com.android.bluetooth.btservice.AdapterService;
-import com.android.bluetooth.btservice.ServiceFactory;
import com.android.bluetooth.csip.CsipSetCoordinatorService;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_audio.LeAudioService;
@@ -108,7 +107,6 @@
@Mock private LeAudioService mLeAudioService;
@Mock private VolumeControlNativeInterface mNativeInterface;
@Mock private AudioManager mAudioManager;
- @Mock private ServiceFactory mServiceFactory; // TODO(b/422543753) Delete on flag cleanup
@Mock private CsipSetCoordinatorService mCsipService;
private static final int BT_LE_AUDIO_MAX_VOL = 255;
@@ -150,17 +148,9 @@
.when(mAdapterService)
.getRemoteUuids(any(BluetoothDevice.class));
- if (Flags.adapterServiceProfilesUseOptional()) {
- doReturn(Optional.of(mCsipService))
- .when(mAdapterService)
- .getCsipSetCoordinatorService();
- doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
- doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
- } else {
- doReturn(mCsipService).when(mServiceFactory).getCsipSetCoordinatorService();
- doReturn(mLeAudioService).when(mServiceFactory).getLeAudioService();
- doReturn(mBassClientService).when(mServiceFactory).getBassClientService();
- }
+ doReturn(Optional.of(mCsipService)).when(mAdapterService).getCsipSetCoordinatorService();
+ doReturn(Optional.of(mLeAudioService)).when(mAdapterService).getLeAudioService();
+ doReturn(Optional.of(mBassClientService)).when(mAdapterService).getBassClientService();
doReturn(MEDIA_MIN_VOL)
.when(mAudioManager)
@@ -181,8 +171,6 @@
mService = new VolumeControlService(mAdapterService, mLooper.getLooper(), mNativeInterface);
mService.setAvailable(true);
-
- mService.mFactory = mServiceFactory;
}
@After
@@ -190,12 +178,6 @@
assertThat(mLooper.nextMessage()).isNull();
mService.cleanup();
mLooper.dispatchAll();
- assertThat(VolumeControlService.getVolumeControlService()).isNull();
- }
-
- @Test
- public void getVolumeControlService() {
- assertThat(VolumeControlService.getVolumeControlService()).isEqualTo(mService);
}
@Test
diff --git a/flags/adapter.aconfig b/flags/adapter.aconfig
index 59ce3d1..05fee00 100644
--- a/flags/adapter.aconfig
+++ b/flags/adapter.aconfig
@@ -104,13 +104,6 @@
}
flag {
- name: "adapter_service_profiles_use_optional"
- namespace: "bluetooth"
- description: "Add optional getters for all profiles in [Bluetooth]AdapterService"
- bug: "422543753"
-}
-
-flag {
name: "ignore_multiple_connect_request_in_bt_services"
namespace: "bluetooth"
description: "Ignore multiple connect request in BT Services"