Snap for 7898627 from 6f6149c7ba to sc-v2-release
Change-Id: I83a6dcedf278f5b49fdcfe42a6352af6e047f082
This commit is contained in:
@@ -19,12 +19,15 @@ import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.SettingsUIDeviceConfig;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.password.PasswordUtils;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.slices.SlicePreferenceController;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
@@ -33,6 +36,9 @@ import com.android.settingslib.search.SearchIndexable;
|
||||
public class ConnectedDeviceDashboardFragment extends DashboardFragment {
|
||||
|
||||
private static final String TAG = "ConnectedDeviceFrag";
|
||||
private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
|
||||
private static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
|
||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||
|
||||
@VisibleForTesting
|
||||
static final String KEY_CONNECTED_DEVICES = "connected_device_list";
|
||||
@@ -64,12 +70,20 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
|
||||
super.onAttach(context);
|
||||
final boolean nearbyEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
|
||||
SettingsUIDeviceConfig.BT_NEAR_BY_SUGGESTION_ENABLED, true);
|
||||
String callingAppPackageName = PasswordUtils.getCallingAppPackageName(
|
||||
getActivity().getActivityToken());
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName);
|
||||
}
|
||||
use(AvailableMediaDeviceGroupController.class).init(this);
|
||||
use(ConnectedDeviceGroupController.class).init(this);
|
||||
use(PreviouslyConnectedDevicePreferenceController.class).init(this);
|
||||
use(SlicePreferenceController.class).setSliceUri(nearbyEnabled
|
||||
? Uri.parse(getString(R.string.config_nearby_devices_slice_uri))
|
||||
: null);
|
||||
use(DiscoverableFooterPreferenceController.class).setAlwaysDiscoverable(
|
||||
TextUtils.equals(SETTINGS_PACKAGE_NAME, callingAppPackageName)
|
||||
|| TextUtils.equals(SYSTEMUI_PACKAGE_NAME, callingAppPackageName));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -52,6 +52,7 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
|
||||
private BluetoothAdapter mBluetoothAdapter;
|
||||
private AlwaysDiscoverable mAlwaysDiscoverable;
|
||||
private FooterPreference mPreference;
|
||||
private boolean mIsAlwaysDiscoverable;
|
||||
|
||||
public DiscoverableFooterPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
@@ -84,7 +85,9 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
|
||||
}
|
||||
mContext.registerReceiver(mBluetoothChangedReceiver,
|
||||
new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
|
||||
mAlwaysDiscoverable.start();
|
||||
if (mIsAlwaysDiscoverable) {
|
||||
mAlwaysDiscoverable.start();
|
||||
}
|
||||
updateFooterPreferenceTitle(mBluetoothAdapter.getState());
|
||||
}
|
||||
|
||||
@@ -94,7 +97,19 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
|
||||
return;
|
||||
}
|
||||
mContext.unregisterReceiver(mBluetoothChangedReceiver);
|
||||
mAlwaysDiscoverable.stop();
|
||||
if (mIsAlwaysDiscoverable) {
|
||||
mAlwaysDiscoverable.stop();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether the device can be discovered. By default the value will be {@code false}.
|
||||
*
|
||||
* @param isAlwaysDiscoverable {@code true} if the device can be discovered,
|
||||
* otherwise {@code false}
|
||||
*/
|
||||
public void setAlwaysDiscoverable(boolean isAlwaysDiscoverable) {
|
||||
mIsAlwaysDiscoverable = isAlwaysDiscoverable;
|
||||
}
|
||||
|
||||
private void updateFooterPreferenceTitle(int bluetoothState) {
|
||||
|
||||
@@ -29,7 +29,6 @@ import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.util.Pair;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -184,35 +183,18 @@ public class BatterySaverScheduleSettings extends RadioButtonPickerFragment {
|
||||
}
|
||||
|
||||
private void logPowerSaver() {
|
||||
int currentSaverPercentage = getSaverPercentage();
|
||||
String currentSaverScheduleKey = mRadioButtonController.getDefaultKey();
|
||||
final int currentSaverPercentage = getSaverPercentage();
|
||||
final String currentSaverScheduleKey = mRadioButtonController.getDefaultKey();
|
||||
if (mSaverScheduleKey.equals(currentSaverScheduleKey)
|
||||
&& mSaverPercentage == currentSaverPercentage) {
|
||||
return;
|
||||
}
|
||||
int scheduleType = -1;
|
||||
int schedulePercentage = -1;
|
||||
switch (currentSaverScheduleKey) {
|
||||
case BatterySaverScheduleRadioButtonsController.KEY_NO_SCHEDULE:
|
||||
scheduleType = SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_NO_SCHEDULE;
|
||||
break;
|
||||
case BatterySaverScheduleRadioButtonsController.KEY_ROUTINE:
|
||||
scheduleType = SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_ROUTINE;
|
||||
break;
|
||||
case BatterySaverScheduleRadioButtonsController.KEY_PERCENTAGE:
|
||||
scheduleType = SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_PERCENTAGE;
|
||||
schedulePercentage = currentSaverPercentage;
|
||||
break;
|
||||
// Unknown schedule type.
|
||||
default:
|
||||
return;
|
||||
}
|
||||
FeatureFactory.getFactory(mContext).getMetricsFeatureProvider()
|
||||
.action(mContext, SettingsEnums.FUELGAUGE_BATTERY_SAVER,
|
||||
Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE,
|
||||
scheduleType),
|
||||
Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
|
||||
schedulePercentage));
|
||||
.action(SettingsEnums.FUELGAUGE_BATTERY_SAVER,
|
||||
SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE,
|
||||
SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
|
||||
currentSaverScheduleKey,
|
||||
currentSaverPercentage);
|
||||
}
|
||||
|
||||
private int getSaverPercentage() {
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.settings.connecteddevice;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -104,7 +105,8 @@ public class DiscoverableFooterPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStart_shouldRegisterBluetoothChanged() {
|
||||
public void onStart_setAlwaysDiscoverableAsTrue_shouldRegisterBluetoothChanged() {
|
||||
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
|
||||
mDiscoverableFooterPreferenceController.onStart();
|
||||
|
||||
assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
|
||||
@@ -112,7 +114,8 @@ public class DiscoverableFooterPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStop_shouldUnregisterBluetoothChanged() {
|
||||
public void onStop_setAlwaysDiscoverableAsTrue_shouldUnregisterBluetoothChanged() {
|
||||
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
|
||||
mDiscoverableFooterPreferenceController.onStart();
|
||||
mDiscoverableFooterPreferenceController.onStop();
|
||||
|
||||
@@ -120,6 +123,25 @@ public class DiscoverableFooterPreferenceControllerTest {
|
||||
verify(mAlwaysDiscoverable).stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStart_setAlwaysDiscoverableAsFalse_shouldNotRegisterBluetoothChanged() {
|
||||
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
|
||||
mDiscoverableFooterPreferenceController.onStart();
|
||||
|
||||
assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
|
||||
verify(mAlwaysDiscoverable, never()).start();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStop_setAlwaysDiscoverableAsFalse_shouldNotUnregisterBluetoothChanged() {
|
||||
mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
|
||||
mDiscoverableFooterPreferenceController.onStart();
|
||||
mDiscoverableFooterPreferenceController.onStop();
|
||||
|
||||
assertThat(getRegisteredBroadcastReceivers()).doesNotContain(mBluetoothChangedReceiver);
|
||||
verify(mAlwaysDiscoverable, never()).stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBluetoothStateChanged_bluetoothOn_updateTitle() {
|
||||
BluetoothAdapter.getDefaultAdapter().setName(DEVICE_NAME);
|
||||
|
||||
@@ -43,22 +43,22 @@ public final class BatterySaverScheduleSettingsTest {
|
||||
|
||||
@Test
|
||||
public void onPause_withNoScheduleType_logExpectedData() {
|
||||
setSchedule(PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE, 0);
|
||||
int expectedPercentage = 0;
|
||||
setSchedule(PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE, expectedPercentage);
|
||||
|
||||
mBatterySaverScheduleSettings.onPause();
|
||||
|
||||
verifySchedule(SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_NO_SCHEDULE,
|
||||
/* schedulePercentage= */ -1);
|
||||
verifySchedule("key_battery_saver_no_schedule", expectedPercentage);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPause_withRoutineScheduleType_logExpectedData() {
|
||||
setSchedule(PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC, 0);
|
||||
int expectedPercentage = 0;
|
||||
setSchedule(PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC, expectedPercentage);
|
||||
|
||||
mBatterySaverScheduleSettings.onPause();
|
||||
|
||||
verifySchedule(SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_ROUTINE,
|
||||
/* schedulePercentage= */ -1);
|
||||
verifySchedule("key_battery_saver_routine", expectedPercentage);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -68,8 +68,7 @@ public final class BatterySaverScheduleSettingsTest {
|
||||
|
||||
mBatterySaverScheduleSettings.onPause();
|
||||
|
||||
verifySchedule(SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_PERCENTAGE,
|
||||
expectedPercentage);
|
||||
verifySchedule("key_battery_saver_percentage", expectedPercentage);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -90,8 +89,7 @@ public final class BatterySaverScheduleSettingsTest {
|
||||
|
||||
mBatterySaverScheduleSettings.onPause();
|
||||
|
||||
verifySchedule(SettingsEnums.BATTERY_SAVER_SCHEDULE_TYPE_BASED_ON_PERCENTAGE,
|
||||
expectedPercentage);
|
||||
verifySchedule("key_battery_saver_percentage", expectedPercentage);
|
||||
}
|
||||
|
||||
private void setSchedule(int scheduleType, int schedulePercentage) {
|
||||
@@ -101,13 +99,12 @@ public final class BatterySaverScheduleSettingsTest {
|
||||
Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, schedulePercentage);
|
||||
}
|
||||
|
||||
private void verifySchedule(int scheduleType, int schedulePercentage) {
|
||||
private void verifySchedule(String scheduleTypeKey, int schedulePercentage) {
|
||||
waitAWhile();
|
||||
verify(mMetricsFeatureProvider).action(mContext, SettingsEnums.FUELGAUGE_BATTERY_SAVER,
|
||||
Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE,
|
||||
scheduleType),
|
||||
Pair.create(SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
|
||||
schedulePercentage));
|
||||
verify(mMetricsFeatureProvider).action(SettingsEnums.FUELGAUGE_BATTERY_SAVER,
|
||||
SettingsEnums.FIELD_BATTERY_SAVER_SCHEDULE_TYPE,
|
||||
SettingsEnums.FIELD_BATTERY_SAVER_PERCENTAGE_VALUE,
|
||||
scheduleTypeKey, schedulePercentage);
|
||||
}
|
||||
|
||||
private void waitAWhile() {
|
||||
|
||||
Reference in New Issue
Block a user