From 865cad2665dc1a015adcf4095de1c87098a5ec84 Mon Sep 17 00:00:00 2001 From: Etienne Ruffieux Date: Wed, 26 Jan 2022 12:08:24 +0000 Subject: [PATCH 1/3] Removed mocked BluetoothAdapter Bluetooth adapter can not be mocked anymore, using config resource instead. Tag: #feature Bug: 216422716 Test: robotest Change-Id: I92e503cbceb8412031c7f3b08a3e1016d38da18c --- ...ectedAudioDevicesPreferenceController.java | 18 +++++++++---- ...dAudioDevicesPreferenceControllerTest.java | 25 +++++++++---------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceController.java b/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceController.java index fb756955d25..bd8169a80fe 100644 --- a/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceController.java +++ b/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceController.java @@ -16,8 +16,9 @@ package com.android.settings.development; -import android.bluetooth.BluetoothManager; import android.content.Context; +import android.content.pm.PackageManager; +import android.content.res.Resources; import android.os.SystemProperties; import androidx.annotation.VisibleForTesting; @@ -39,13 +40,20 @@ public class BluetoothMaxConnectedAudioDevicesPreferenceController extends static final String MAX_CONNECTED_AUDIO_DEVICES_PROPERTY = "persist.bluetooth.maxconnectedaudiodevices"; - private final int mDefaultMaxConnectedAudioDevices; + private int mDefaultMaxConnectedAudioDevices = 0; public BluetoothMaxConnectedAudioDevicesPreferenceController(Context context) { super(context); - BluetoothManager mBluetoothManager = context.getSystemService(BluetoothManager.class); - mDefaultMaxConnectedAudioDevices = mBluetoothManager.getAdapter() - .getMaxConnectedAudioDevices(); + + try { + Resources res = context.getPackageManager().getResourcesForApplication( + "com.android.bluetooth"); + mDefaultMaxConnectedAudioDevices = res.getInteger(res.getIdentifier( + "config_bluetooth_max_connected_audio_devices", + "integer", "com.android.bluetooth")); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } } @Override diff --git a/tests/robotests/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceControllerTest.java index e5fbd655304..72477b94585 100644 --- a/tests/robotests/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/BluetoothMaxConnectedAudioDevicesPreferenceControllerTest.java @@ -24,9 +24,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.when; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothManager; import android.content.Context; +import android.content.pm.PackageManager; +import android.content.res.Resources; + import android.os.SystemProperties; import androidx.preference.ListPreference; @@ -46,17 +47,12 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class BluetoothMaxConnectedAudioDevicesPreferenceControllerTest { - private static final int TEST_MAX_CONNECTED_AUDIO_DEVICES = 3; + private static int TEST_MAX_CONNECTED_AUDIO_DEVICES = 5; @Mock private PreferenceScreen mPreferenceScreen; @Spy private Context mSpyContext = RuntimeEnvironment.application; - @Spy - private BluetoothManager mBluetoothManager = - mSpyContext.getSystemService(BluetoothManager.class); - @Spy - private BluetoothAdapter mBluetoothAdapter = mBluetoothManager.getAdapter(); private ListPreference mPreference; private BluetoothMaxConnectedAudioDevicesPreferenceController mController; @@ -67,16 +63,19 @@ public class BluetoothMaxConnectedAudioDevicesPreferenceControllerTest { @Before public void setup() { MockitoAnnotations.initMocks(this); - doReturn(mBluetoothManager).when(mSpyContext).getSystemService(BluetoothManager.class); - doReturn(mBluetoothAdapter).when(mBluetoothManager).getAdapter(); // Get XML values without mock // Setup test list preference using XML values mPreference = new ListPreference(mSpyContext); mPreference.setEntries(R.array.bluetooth_max_connected_audio_devices); mPreference.setEntryValues(R.array.bluetooth_max_connected_audio_devices_values); - // Stub default max connected audio devices to a test controlled value - doReturn(TEST_MAX_CONNECTED_AUDIO_DEVICES).when(mBluetoothAdapter) - .getMaxConnectedAudioDevices(); + // Retrieve default max connected audio devices to a test controlled value + try { + Resources res = mSpyContext.getPackageManager().getResourcesForApplication("com.android.bluetooth"); + TEST_MAX_CONNECTED_AUDIO_DEVICES = res.getInteger(res.getIdentifier("config_bluetooth_max_connected_audio_devices", "integer", "com.android.bluetooth")); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + // Init the actual controller mController = new BluetoothMaxConnectedAudioDevicesPreferenceController(mSpyContext); // Construct preference in the controller via a mocked preference screen object From 0dd1b46fcf11add27c6bce9ad7bf8ccd575f2ef5 Mon Sep 17 00:00:00 2001 From: Remi NGUYEN VAN Date: Thu, 3 Feb 2022 18:01:19 +0900 Subject: [PATCH 2/3] Remove dependencies on hidden network stats APIs Replace usage with equivalent stable APIs. Bug: 197717846 Test: atest SettingsRoboTests Change-Id: I4151b831fc83dee9b36292cd7991f9b294ed4ff2 --- .../android/settings/datausage/AppDataUsageTest.java | 3 +-- .../settings/datausage/lib/DataUsageLibTest.java | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java index 68a8a86b552..09c57340d60 100644 --- a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java +++ b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java @@ -439,7 +439,6 @@ public class AppDataUsageTest { assertThat(mFragment.mTemplate.getMatchRule()) .isEqualTo(NetworkTemplate.MATCH_WIFI); assertTrue(mFragment.mTemplate.getSubscriberIds().isEmpty()); - assertThat(mFragment.mTemplate.getNetworkId()) - .isEqualTo(NetworkTemplate.WIFI_NETWORKID_ALL); + assertTrue(mFragment.mTemplate.getWifiNetworkKeys().isEmpty()); } } diff --git a/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java b/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java index 8d994d0550e..70a1a38fa0e 100644 --- a/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java +++ b/tests/robotests/src/com/android/settings/datausage/lib/DataUsageLibTest.java @@ -81,8 +81,8 @@ public class DataUsageLibTest { when(mSubscriptionManager.isActiveSubscriptionId(SUB_ID)).thenReturn(false); final NetworkTemplate networkTemplate = DataUsageLib.getMobileTemplate(mContext, SUB_ID); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue(); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID_2)).isFalse(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID_2)).isFalse(); } @Test @@ -94,8 +94,8 @@ public class DataUsageLibTest { .thenReturn(new String[] {SUBSCRIBER_ID}); final NetworkTemplate networkTemplate = DataUsageLib.getMobileTemplate(mContext, SUB_ID); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue(); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID_2)).isFalse(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID_2)).isFalse(); } @Test @@ -107,7 +107,7 @@ public class DataUsageLibTest { .thenReturn(new String[] {SUBSCRIBER_ID, SUBSCRIBER_ID_2}); final NetworkTemplate networkTemplate = DataUsageLib.getMobileTemplate(mContext, SUB_ID); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue(); - assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID_2)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID)).isTrue(); + assertThat(networkTemplate.getSubscriberIds().contains(SUBSCRIBER_ID_2)).isTrue(); } } From 457715b00d1d97f339cf970020b5347f04f8e236 Mon Sep 17 00:00:00 2001 From: Dmitri Plotnikov Date: Thu, 3 Feb 2022 17:31:51 -0800 Subject: [PATCH 3/3] Remove uses of deprecated class, BatteryStatsHelper Bug: 217618527 Test: rebuild settings. DebugEstimatesLoader is actually unused. Change-Id: Ic6ebda0d83bf7c8809f0f7cb40903a969c4b469a --- .../android/settings/fuelgauge/DebugEstimatesLoader.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java index e7c93dc0c7c..62f27801e7c 100644 --- a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java +++ b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java @@ -18,13 +18,11 @@ package com.android.settings.fuelgauge; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.os.BatteryStats; import android.os.BatteryStatsManager; import android.os.BatteryUsageStats; import android.os.SystemClock; import android.util.Log; -import com.android.internal.os.BatteryStatsHelper; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.fuelgauge.EstimateKt; @@ -37,11 +35,8 @@ import java.util.List; public class DebugEstimatesLoader extends AsyncLoaderCompat> { private static final String TAG = "DebugEstimatesLoader"; - private BatteryStatsHelper mStatsHelper; - - public DebugEstimatesLoader(Context context, BatteryStatsHelper statsHelper) { + public DebugEstimatesLoader(Context context) { super(context); - mStatsHelper = statsHelper; } @Override @@ -60,7 +55,6 @@ public class DebugEstimatesLoader extends AsyncLoaderCompat> { SystemClock.elapsedRealtime()); Intent batteryBroadcast = getContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - BatteryStats stats = mStatsHelper.getStats(); BatteryUsageStats batteryUsageStats; try { batteryUsageStats = context.getSystemService(BatteryStatsManager.class)