Update summary when toggle background activity
In previous code, it didn't update summary when preference is changed. This cl adds it and also updates the title for Battery Optimization. Bug: 37163617 Test: RunSettingsRoboTests Change-Id: I276d9a267379104794998a605a8e258660dcf350
This commit is contained in:
@@ -56,7 +56,7 @@
|
|||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="battery_optimization"
|
android:key="battery_optimization"
|
||||||
android:title="@string/battery_detail_background"
|
android:title="@string/high_power_apps"
|
||||||
android:summary="@string/high_power_off"
|
android:summary="@string/high_power_off"
|
||||||
android:selectable="true"/>
|
android:selectable="true"/>
|
||||||
|
|
||||||
|
@@ -55,16 +55,14 @@ public class BackgroundActivityPreferenceController extends PreferenceController
|
|||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
final int mode = mAppOpsManager
|
final int mode = mAppOpsManager
|
||||||
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage);
|
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage);
|
||||||
|
|
||||||
if (mode == AppOpsManager.MODE_ERRORED) {
|
if (mode == AppOpsManager.MODE_ERRORED) {
|
||||||
preference.setEnabled(false);
|
preference.setEnabled(false);
|
||||||
preference.setSummary(R.string.background_activity_summary_disabled);
|
|
||||||
} else {
|
} else {
|
||||||
final boolean checked = mode != AppOpsManager.MODE_IGNORED;
|
final boolean checked = mode != AppOpsManager.MODE_IGNORED;
|
||||||
((SwitchPreference) preference).setChecked(checked);
|
((SwitchPreference) preference).setChecked(checked);
|
||||||
preference.setSummary(checked ? R.string.background_activity_summary_on
|
|
||||||
: R.string.background_activity_summary_off);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateSummary(preference);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -92,6 +90,8 @@ public class BackgroundActivityPreferenceController extends PreferenceController
|
|||||||
boolean switchOn = (Boolean) newValue;
|
boolean switchOn = (Boolean) newValue;
|
||||||
mAppOpsManager.setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage,
|
mAppOpsManager.setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage,
|
||||||
switchOn ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
|
switchOn ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
|
||||||
|
|
||||||
|
updateSummary(preference);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,4 +113,18 @@ public class BackgroundActivityPreferenceController extends PreferenceController
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void updateSummary(Preference preference) {
|
||||||
|
final int mode = mAppOpsManager
|
||||||
|
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage);
|
||||||
|
|
||||||
|
if (mode == AppOpsManager.MODE_ERRORED) {
|
||||||
|
preference.setSummary(R.string.background_activity_summary_disabled);
|
||||||
|
} else {
|
||||||
|
final boolean checked = mode != AppOpsManager.MODE_IGNORED;
|
||||||
|
preference.setSummary(checked ? R.string.background_activity_summary_on
|
||||||
|
: R.string.background_activity_summary_off);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,7 +23,9 @@ import android.content.pm.PackageManager;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.support.v14.preference.SwitchPreference;
|
import android.support.v14.preference.SwitchPreference;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -31,9 +33,12 @@ import org.mockito.Answers;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -54,17 +59,18 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private AppOpsManager mAppOpsManager;
|
private AppOpsManager mAppOpsManager;
|
||||||
@Mock
|
@Mock
|
||||||
private SwitchPreference mPreference;
|
|
||||||
@Mock
|
|
||||||
private ApplicationInfo mHighApplicationInfo;
|
private ApplicationInfo mHighApplicationInfo;
|
||||||
@Mock
|
@Mock
|
||||||
private ApplicationInfo mLowApplicationInfo;
|
private ApplicationInfo mLowApplicationInfo;
|
||||||
private BackgroundActivityPreferenceController mController;
|
private BackgroundActivityPreferenceController mController;
|
||||||
|
private SwitchPreference mPreference;
|
||||||
|
private Context mShadowContext;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
|
mShadowContext = RuntimeEnvironment.application;
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
|
when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
|
||||||
when(mPackageManager.getPackagesForUid(UID_NORMAL)).thenReturn(PACKAGES_NORMAL);
|
when(mPackageManager.getPackagesForUid(UID_NORMAL)).thenReturn(PACKAGES_NORMAL);
|
||||||
@@ -77,7 +83,8 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
mHighApplicationInfo.targetSdkVersion = Build.VERSION_CODES.O;
|
mHighApplicationInfo.targetSdkVersion = Build.VERSION_CODES.O;
|
||||||
mLowApplicationInfo.targetSdkVersion = Build.VERSION_CODES.L;
|
mLowApplicationInfo.targetSdkVersion = Build.VERSION_CODES.L;
|
||||||
|
|
||||||
mController = new BackgroundActivityPreferenceController(mContext, UID_NORMAL);
|
mPreference = new SwitchPreference(mShadowContext);
|
||||||
|
mController = spy(new BackgroundActivityPreferenceController(mContext, UID_NORMAL));
|
||||||
mController.isAvailable();
|
mController.isAvailable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,14 +94,16 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
|
|
||||||
verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL,
|
verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL,
|
||||||
mController.getTargetPackage(), AppOpsManager.MODE_ALLOWED);
|
mController.getTargetPackage(), AppOpsManager.MODE_ALLOWED);
|
||||||
|
verify(mController).updateSummary(mPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnPreferenceChange_TurnOffCheck_MethodInvoked() {
|
public void testOnPreferenceChange_TurnOffCheck_MethodInvoked() {
|
||||||
mController.onPreferenceChange(null, false);
|
mController.onPreferenceChange(mPreference, false);
|
||||||
|
|
||||||
verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL,
|
verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL,
|
||||||
mController.getTargetPackage(), AppOpsManager.MODE_IGNORED);
|
mController.getTargetPackage(), AppOpsManager.MODE_IGNORED);
|
||||||
|
verify(mController).updateSummary(mPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -105,7 +114,8 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
verify(mPreference).setChecked(true);
|
assertThat(mPreference.isChecked()).isTrue();
|
||||||
|
verify(mController).updateSummary(mPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -116,7 +126,46 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
verify(mPreference).setChecked(false);
|
assertThat(mPreference.isChecked()).isFalse();
|
||||||
|
verify(mController).updateSummary(mPreference);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSummary_modeError_showSummaryDisabled() {
|
||||||
|
when(mAppOpsManager
|
||||||
|
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL, LOW_SDK_PACKAGE))
|
||||||
|
.thenReturn(AppOpsManager.MODE_ERRORED);
|
||||||
|
final CharSequence expectedSummary = mShadowContext.getText(
|
||||||
|
R.string.background_activity_summary_disabled);
|
||||||
|
mController.updateSummary(mPreference);
|
||||||
|
|
||||||
|
assertThat(mPreference.getSummary()).isEqualTo(expectedSummary);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSummary_modeDefault_showSummaryOn() {
|
||||||
|
when(mAppOpsManager
|
||||||
|
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL, LOW_SDK_PACKAGE))
|
||||||
|
.thenReturn(AppOpsManager.MODE_DEFAULT);
|
||||||
|
final CharSequence expectedSummary = mShadowContext.getText(
|
||||||
|
R.string.background_activity_summary_on);
|
||||||
|
|
||||||
|
mController.updateSummary(mPreference);
|
||||||
|
|
||||||
|
assertThat(mPreference.getSummary()).isEqualTo(expectedSummary);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSummary_modeIgnored_showSummaryOff() {
|
||||||
|
when(mAppOpsManager
|
||||||
|
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL, LOW_SDK_PACKAGE))
|
||||||
|
.thenReturn(AppOpsManager.MODE_IGNORED);
|
||||||
|
final CharSequence expectedSummary = mShadowContext.getText(
|
||||||
|
R.string.background_activity_summary_off);
|
||||||
|
|
||||||
|
mController.updateSummary(mPreference);
|
||||||
|
|
||||||
|
assertThat(mPreference.getSummary()).isEqualTo(expectedSummary);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -144,6 +193,6 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
|
|
||||||
assertThat(available).isTrue();
|
assertThat(available).isTrue();
|
||||||
// Should get status from LOW_SDK_PACKAGE
|
// Should get status from LOW_SDK_PACKAGE
|
||||||
verify(mPreference).setChecked(true);
|
assertThat(mPreference.isChecked()).isTrue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user