From fb1818969bcdc457e8efea0d4e8da44efe6f8f3a Mon Sep 17 00:00:00 2001 From: Hugh Chen Date: Thu, 10 Mar 2022 07:55:58 +0000 Subject: [PATCH 1/6] Remove the extra line below context button Bug: 223502042 Test: build pass Change-Id: Ibb9e238b8069aa5dc9570fb9a4b3cb8f2a2523b1 --- res/xml/bluetooth_device_details_fragment.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/res/xml/bluetooth_device_details_fragment.xml b/res/xml/bluetooth_device_details_fragment.xml index b21d5c931e5..ef5a9909cf9 100644 --- a/res/xml/bluetooth_device_details_fragment.xml +++ b/res/xml/bluetooth_device_details_fragment.xml @@ -38,11 +38,6 @@ android:key="action_buttons" settings:allowDividerBelow="true"/> - - - Date: Thu, 3 Mar 2022 12:46:31 +0100 Subject: [PATCH 2/6] Add ingress rate limit to developer settings Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.development.IngressRateLimitPreferenceControllerTest" Bug: 157552970 Bug: 122993151 Change-Id: I0d0aa40610016c1f9e94596cfe3ed6c9a0614d89 Merged-In: I0d0aa40610016c1f9e94596cfe3ed6c9a0614d89 (cherry picked from commit b0e5e84d49567e5a7e4c9fa7ca9695f0b6e52bf9) --- res/values/arrays.xml | 20 ++++ res/values/strings.xml | 9 ++ res/xml/development_settings.xml | 8 ++ .../DevelopmentSettingsDashboardFragment.java | 1 + .../IngressRateLimitPreferenceController.java | 82 ++++++++++++++ ...ressRateLimitPreferenceControllerTest.java | 107 ++++++++++++++++++ 6 files changed, 227 insertions(+) create mode 100644 src/com/android/settings/development/IngressRateLimitPreferenceController.java create mode 100644 tests/robotests/src/com/android/settings/development/IngressRateLimitPreferenceControllerTest.java diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 469f20198e6..867fecb2e90 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -1626,4 +1626,24 @@ 300000 + + + @string/ingress_rate_limit_no_limit_entry + 128kbps + 256kbps + 1Mbps + 5Mbps + 15Mbps + + + + + -1 + 16000 + 32000 + 125000 + 625000 + 1875000 + + diff --git a/res/values/strings.xml b/res/values/strings.xml index c1a6dfeaca9..d83640b9887 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -14035,4 +14035,13 @@ Make audio more realistic Shift positioning of audio so it sounds more natural. + + + Network download rate limit + + Configure the network bandwidth ingress rate limit which is applied to all networks that provide internet connectivity. + + Configure network download rate limit + + No limit diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml index ed1b4d2e569..4e4d393b8d9 100644 --- a/res/xml/development_settings.xml +++ b/res/xml/development_settings.xml @@ -297,6 +297,14 @@ android:title="@string/tethering_hardware_offload" android:summary="@string/tethering_hardware_offload_summary" /> + + Date: Fri, 11 Mar 2022 07:35:46 +0800 Subject: [PATCH 3/6] Add LE audio hardware offload development option Bug: 197296692 Bug: 215492586 Test: make RunSettingsRoboTests ROBOTEST_FILTER=BluetoothLeAudioHwOffloadPreferenceControllerTest Test: make RunSettingsRoboTests ROBOTEST_FILTER=BluetoothA2dpHwOffloadPreferenceControllerTest Change-Id: If1203c50d1d94ac9ed377293b5cb389b7b6f54a1 --- res/values/strings.xml | 18 +-- res/xml/development_settings.xml | 4 + ...oothA2dpHwOffloadPreferenceController.java | 27 +++- ...va => BluetoothHwOffloadRebootDialog.java} | 47 ++++--- ...hLeAudioHwOffloadPreferenceController.java | 127 ++++++++++++++++++ .../DevelopmentSettingsDashboardFragment.java | 36 ++++- .../DisableDevSettingsDialogFragment.java | 10 +- ...A2dpHwOffloadPreferenceControllerTest.java | 34 ++++- ...udioHwOffloadPreferenceControllerTest.java | 94 +++++++++++++ ...elopmentSettingsDashboardFragmentTest.java | 4 +- 10 files changed, 357 insertions(+), 44 deletions(-) rename src/com/android/settings/development/{BluetoothA2dpHwOffloadRebootDialog.java => BluetoothHwOffloadRebootDialog.java} (60%) create mode 100644 src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceController.java create mode 100644 tests/robotests/src/com/android/settings/development/BluetoothLeAudioHwOffloadPreferenceControllerTest.java diff --git a/res/values/strings.xml b/res/values/strings.xml index c1a6dfeaca9..56792a75a45 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -329,14 +329,16 @@ Disable Bluetooth A2DP hardware offload - - Restart Device? - - You need to restart your device to change this setting. - - Restart - - Cancel + + Disable Bluetooth LE AUDIO hardware offload + + Restart Device? + + You need to restart your device to change this setting. + + Restart + + Cancel Media devices diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml index ed1b4d2e569..fabb5659309 100644 --- a/res/xml/development_settings.xml +++ b/res/xml/development_settings.xml @@ -321,6 +321,10 @@ android:key="bluetooth_disable_a2dp_hw_offload" android:title="@string/bluetooth_disable_a2dp_hw_offload" /> + + Date: Mon, 7 Mar 2022 21:24:29 +0000 Subject: [PATCH 4/6] Remove developer option for bluetooth Gabeldorche Bug:220175020 Test: Manually verified Change-Id: I3c37228f7142892f2eb45552f2aced51360651af --- res/xml/development_settings.xml | 5 - ...toothGabeldorschePreferenceController.java | 73 ----------- .../DevelopmentSettingsDashboardFragment.java | 1 - ...hGabeldorschePreferenceControllerTest.java | 118 ------------------ 4 files changed, 197 deletions(-) delete mode 100644 src/com/android/settings/development/BluetoothGabeldorschePreferenceController.java delete mode 100644 tests/robotests/src/com/android/settings/development/BluetoothGabeldorschePreferenceControllerTest.java diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml index 831c190a5f6..cd37f4cbb96 100644 --- a/res/xml/development_settings.xml +++ b/res/xml/development_settings.xml @@ -308,11 +308,6 @@ android:title="@string/bluetooth_disable_absolute_volume" android:summary="@string/bluetooth_disable_absolute_volume_summary" /> - - diff --git a/src/com/android/settings/development/BluetoothGabeldorschePreferenceController.java b/src/com/android/settings/development/BluetoothGabeldorschePreferenceController.java deleted file mode 100644 index f5c30f5811c..00000000000 --- a/src/com/android/settings/development/BluetoothGabeldorschePreferenceController.java +++ /dev/null @@ -1,73 +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.settings.development; - -import android.content.Context; -import android.provider.DeviceConfig; - -import androidx.annotation.VisibleForTesting; -import androidx.preference.Preference; -import androidx.preference.SwitchPreference; - -import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.development.DeveloperOptionsPreferenceController; - -/** - * Preference controller for Bluetooth Gabeldorche feature - */ -public class BluetoothGabeldorschePreferenceController extends - DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, - PreferenceControllerMixin { - - private static final String BLUETOOTH_GABELDORSCHE_KEY = - "bluetooth_gabeldorsche_enable"; - - @VisibleForTesting - static final String CURRENT_GD_FLAG = "INIT_gd_scanning"; - - public BluetoothGabeldorschePreferenceController(Context context) { - super(context); - } - - @Override - public String getPreferenceKey() { - return BLUETOOTH_GABELDORSCHE_KEY; - } - - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - final boolean isEnabled = (Boolean) newValue; - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_BLUETOOTH, - CURRENT_GD_FLAG, isEnabled ? "true" : "false", false /* makeDefault */); - return true; - } - - @Override - public void updateState(Preference preference) { - final boolean isEnabled = DeviceConfig.getBoolean( - DeviceConfig.NAMESPACE_BLUETOOTH, CURRENT_GD_FLAG, false /* default */); - ((SwitchPreference) mPreference).setChecked(isEnabled); - } - - @Override - protected void onDeveloperOptionsSwitchDisabled() { - super.onDeveloperOptionsSwitchDisabled(); - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_BLUETOOTH, - CURRENT_GD_FLAG, null, false /* makeDefault */); - ((SwitchPreference) mPreference).setChecked(false); - } -} diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java index 94b67aa76bb..7556d23f25a 100644 --- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java @@ -510,7 +510,6 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra controllers.add(new TetheringHardwareAccelPreferenceController(context)); controllers.add(new BluetoothDeviceNoNamePreferenceController(context)); controllers.add(new BluetoothAbsoluteVolumePreferenceController(context)); - controllers.add(new BluetoothGabeldorschePreferenceController(context)); controllers.add(new BluetoothAvrcpVersionPreferenceController(context)); controllers.add(new BluetoothMapVersionPreferenceController(context)); controllers.add(new BluetoothA2dpHwOffloadPreferenceController(context, fragment)); diff --git a/tests/robotests/src/com/android/settings/development/BluetoothGabeldorschePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BluetoothGabeldorschePreferenceControllerTest.java deleted file mode 100644 index 1916bf22af9..00000000000 --- a/tests/robotests/src/com/android/settings/development/BluetoothGabeldorschePreferenceControllerTest.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2021 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.settings.development; - -import static com.android.settings.development.BluetoothGabeldorschePreferenceController - .CURRENT_GD_FLAG; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.provider.DeviceConfig; - -import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreference; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -@RunWith(RobolectricTestRunner.class) -public class BluetoothGabeldorschePreferenceControllerTest { - - @Mock - private SwitchPreference mPreference; - @Mock - private PreferenceScreen mPreferenceScreen; - - private BluetoothGabeldorschePreferenceController mController; - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - Context context = RuntimeEnvironment.application; - mController = new BluetoothGabeldorschePreferenceController(context); - when(mPreferenceScreen.findPreference(mController.getPreferenceKey())) - .thenReturn(mPreference); - mController.displayPreference(mPreferenceScreen); - } - - @Test - @Ignore - public void onPreferenceChanged_settingEnabled_shouldTurnOnBluetoothGabeldorsche() { - mController.onPreferenceChange(mPreference, true /* new value */); - - boolean enabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_BLUETOOTH, - CURRENT_GD_FLAG, false /* defaultValue */); - - assertThat(enabled).isTrue(); - } - - @Test - @Ignore - public void onPreferenceChanged_settingDisabled_shouldTurnOffBluetoothGabeldorsche() { - mController.onPreferenceChange(mPreference, false /* new value */); - - boolean enabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_BLUETOOTH, - CURRENT_GD_FLAG, false /* defaultValue */); - - assertThat(enabled).isFalse(); - } - - @Test - @Ignore - public void updateState_settingEnabled_preferenceShouldBeChecked() { - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_BLUETOOTH, - CURRENT_GD_FLAG, "true", false /* makeDefault */); - - mController.updateState(mPreference); - - verify(mPreference).setChecked(true); - } - - @Test - @Ignore - public void updateState_settingDisabled_preferenceShouldNotBeChecked() { - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_BLUETOOTH, - CURRENT_GD_FLAG, "false", false /* makeDefault */); - - mController.updateState(mPreference); - - verify(mPreference).setChecked(false); - } - - @Test - @Ignore - public void onDeveloperOptionsDisabled_shouldDisablePreference() { - mController.onDeveloperOptionsDisabled(); - - String configStr = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_BLUETOOTH, - CURRENT_GD_FLAG); - - assertThat(configStr).isNull(); - verify(mPreference).setEnabled(false); - verify(mPreference).setChecked(false); - } -} From ffba705f8d38ec1bd68f7821a51de91da67bc6ea Mon Sep 17 00:00:00 2001 From: ykhung Date: Mon, 14 Mar 2022 11:57:15 +0800 Subject: [PATCH 5/6] Provide getBatteryLast24HrUsageData() method for application info Bug: 178197718 Test: make SettingsRoboTests Change-Id: Iaa5f0c1bdead1a5380129f63987bbae3b4461633 --- .../AppBatteryPreferenceController.java | 36 ++++--------------- .../BatteryChartPreferenceController.java | 25 ++++++++++++- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java index 8d293010238..3cb22e07b61 100644 --- a/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java @@ -43,7 +43,6 @@ import com.android.settings.fuelgauge.BatteryDiffEntry; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.BatteryUsageStatsLoader; import com.android.settings.fuelgauge.BatteryUtils; -import com.android.settings.fuelgauge.ConvertUtils; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -118,11 +117,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController } if (mBatteryDiffEntry != null) { - Log.i(TAG, "BatteryDiffEntry not null, launch : " - + mBatteryDiffEntry.getPackageName() - + " | uid : " - + mBatteryDiffEntry.mBatteryHistEntry.mUid - + " with DiffEntry data"); + Log.i(TAG, "handlePreferenceTreeClick():\n" + mBatteryDiffEntry); AdvancedPowerUsageDetail.startBatteryDetailPage( mParent.getActivity(), mParent, @@ -176,30 +171,11 @@ public class AppBatteryPreferenceController extends BasePreferenceController if (mPackageName == null) { return null; } - final List batteryDiffEntries = - BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext); - if (batteryDiffEntries == null) { - return null; - } - // Filter entry with consumer type to avoid system app, - // then use user id to divide normal app and work profile app, - // return target application from filter list by package name. - return batteryDiffEntries.stream() - .filter(entry -> entry.mBatteryHistEntry.mConsumerType - == ConvertUtils.CONSUMER_TYPE_UID_BATTERY) - .filter(entry -> entry.mBatteryHistEntry.mUserId == mUserId) - .filter(entry -> { - if (mPackageName.equals(entry.getPackageName())) { - Log.i(TAG, "Return target application: " - + entry.mBatteryHistEntry.mPackageName - + " | uid: " + entry.mBatteryHistEntry.mUid - + " | userId: " + entry.mBatteryHistEntry.mUserId); - return true; - } - return false; - }) - .findFirst() - .orElse(/* other */null); + final BatteryDiffEntry entry = + BatteryChartPreferenceController.getBatteryLast24HrUsageData( + mContext, mPackageName, mUserId); + Log.d(TAG, "loadBatteryDiffEntries():\n" + entry); + return entry; } @Override diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java index 90a86f165c4..21bde69363f 100644 --- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java @@ -617,7 +617,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return true; } - public static List getBatteryLast24HrUsageData(Context context) { + /** Used for {@link AppBatteryPreferenceController}. */ + static List getBatteryLast24HrUsageData(Context context) { final long start = System.currentTimeMillis(); final Map> batteryHistoryMap = FeatureFactory.getFactory(context) @@ -638,6 +639,28 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return batteryIndexedMap.get(BatteryChartView.SELECTED_INDEX_ALL); } + /** Used for {@link AppBatteryPreferenceController}. */ + public static BatteryDiffEntry getBatteryLast24HrUsageData( + Context context, String packageName, int userId) { + if (packageName == null) { + return null; + } + final List entries = getBatteryLast24HrUsageData(context); + if (entries == null) { + return null; + } + for (BatteryDiffEntry entry : entries) { + final BatteryHistEntry batteryHistEntry = entry.mBatteryHistEntry; + if (batteryHistEntry != null + && batteryHistEntry.mConsumerType == ConvertUtils.CONSUMER_TYPE_UID_BATTERY + && batteryHistEntry.mUserId == userId + && packageName.equals(entry.getPackageName())) { + return entry; + } + } + return null; + } + private static long[] getBatteryHistoryKeys( final Map> batteryHistoryMap) { final List batteryHistoryKeyList = From 93a4ef67c4be3c8134d84e4258ec12435a5e168f Mon Sep 17 00:00:00 2001 From: ykhung Date: Mon, 14 Mar 2022 17:34:50 +0800 Subject: [PATCH 6/6] Export battery usage data for EBS essential list filter mechanism Bug: 207471193 Test: make RunSettingsRoboTests Change-Id: I0003bbfce7428e92a2a0e144903d72fc51804dbb --- .../settings/fuelgauge/BatteryChartPreferenceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java index 21bde69363f..249ee492e67 100644 --- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java @@ -618,7 +618,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll } /** Used for {@link AppBatteryPreferenceController}. */ - static List getBatteryLast24HrUsageData(Context context) { + public static List getBatteryLast24HrUsageData(Context context) { final long start = System.currentTimeMillis(); final Map> batteryHistoryMap = FeatureFactory.getFactory(context)