From ab51e8ff3809b6d13a6d930187620d27b67c43a8 Mon Sep 17 00:00:00 2001 From: Biswarup Pal Date: Sun, 15 Nov 2020 13:49:29 +0000 Subject: [PATCH] Change control semantics in transcode settings Change global transcode enable toggle preference to global disable toggle preference. Change app slection for skipping transcode to app selection for enabling transcode, by default transcoding would be disabled for all apps. Test: Manual, Roboelectric unit tests Change-Id: I44f4d1b24fac70a4560e8b3a12d505bd2da26f20 --- res/xml/transcode_settings.xml | 2 +- ...=> TranscodeAppsPreferenceController.java} | 28 ++++++++--------- ...scodeGlobalTogglePreferenceController.java | 6 ++-- ...ranscodeAppsPreferenceControllerTest.java} | 30 +++++++++---------- ...eGlobalTogglePreferenceControllerTest.java | 16 +++++----- 5 files changed, 41 insertions(+), 41 deletions(-) rename src/com/android/settings/development/transcode/{TranscodeSkipAppsPreferenceController.java => TranscodeAppsPreferenceController.java} (74%) rename tests/robotests/src/com/android/settings/development/transcode/{TranscodeSkipAppsPreferenceControllerTest.java => TranscodeAppsPreferenceControllerTest.java} (82%) diff --git a/res/xml/transcode_settings.xml b/res/xml/transcode_settings.xml index 9fff3fd4fa0..c6fbdfd1dab 100644 --- a/res/xml/transcode_settings.xml +++ b/res/xml/transcode_settings.xml @@ -29,5 +29,5 @@ + settings:controller="com.android.settings.development.transcode.TranscodeAppsPreferenceController" /> diff --git a/src/com/android/settings/development/transcode/TranscodeSkipAppsPreferenceController.java b/src/com/android/settings/development/transcode/TranscodeAppsPreferenceController.java similarity index 74% rename from src/com/android/settings/development/transcode/TranscodeSkipAppsPreferenceController.java rename to src/com/android/settings/development/transcode/TranscodeAppsPreferenceController.java index defe821e907..5593d7ab9a1 100644 --- a/src/com/android/settings/development/transcode/TranscodeSkipAppsPreferenceController.java +++ b/src/com/android/settings/development/transcode/TranscodeAppsPreferenceController.java @@ -33,19 +33,19 @@ import java.util.Arrays; import java.util.List; /** - * The controller for the "Skip transcoding for apps" section on the transcode settings + * The controller for the "Enable transcoding for apps" section on the transcode settings * screen. */ -public class TranscodeSkipAppsPreferenceController extends BasePreferenceController implements +public class TranscodeAppsPreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener { - private static final String SKIP_SELECTED_APPS_PROP_KEY = - "persist.sys.fuse.transcode_skip_uids"; + private static final String TRANSCODE_SELECTED_APPS_PROP_KEY = + "persist.sys.fuse.transcode_uids"; private final PackageManager mPackageManager; - private final List mUidsToSkip = new ArrayList<>(); + private final List mUids = new ArrayList<>(); - public TranscodeSkipAppsPreferenceController(Context context, + public TranscodeAppsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mPackageManager = context.getPackageManager(); @@ -60,8 +60,8 @@ public class TranscodeSkipAppsPreferenceController extends BasePreferenceControl public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); final Context context = screen.getContext(); - mUidsToSkip.addAll(Arrays.asList( - SystemProperties.get(SKIP_SELECTED_APPS_PROP_KEY).split(","))); + mUids.addAll(Arrays.asList( + SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY).split(","))); Intent launcherIntent = new Intent(Intent.ACTION_MAIN); launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER); List apps = mPackageManager.queryIntentActivities(launcherIntent, 0); @@ -71,7 +71,7 @@ public class TranscodeSkipAppsPreferenceController extends BasePreferenceControl preference.setTitle(app.loadLabel(mPackageManager)); preference.setIcon(app.loadIcon(mPackageManager)); preference.setKey(uid); - preference.setChecked(isSkippedForTranscoding(uid)); + preference.setChecked(isSelectedForTranscoding(uid)); preference.setOnPreferenceChangeListener(this); screen.addPreference(preference); @@ -83,15 +83,15 @@ public class TranscodeSkipAppsPreferenceController extends BasePreferenceControl boolean value = (Boolean) o; String uidStr = preference.getKey(); if (value) { - mUidsToSkip.add(uidStr); + mUids.add(uidStr); } else { - mUidsToSkip.remove(uidStr); + mUids.remove(uidStr); } - SystemProperties.set(SKIP_SELECTED_APPS_PROP_KEY, String.join(",", mUidsToSkip)); + SystemProperties.set(TRANSCODE_SELECTED_APPS_PROP_KEY, String.join(",", mUids)); return true; } - private boolean isSkippedForTranscoding(String uid) { - return mUidsToSkip.contains(uid); + private boolean isSelectedForTranscoding(String uid) { + return mUids.contains(uid); } } diff --git a/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java b/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java index b11bb580d9f..643adfcc957 100644 --- a/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java +++ b/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java @@ -22,7 +22,7 @@ import android.os.SystemProperties; import com.android.settings.core.TogglePreferenceController; /** - * The controller for the "Enable transcode for all apps" switch on the transcode settings + * The controller for the "Disable transcoding for all apps" switch on the transcode settings * screen. */ public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceController { @@ -41,12 +41,12 @@ public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceC @Override public boolean isChecked() { - return SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false); + return !SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false); } @Override public boolean setChecked(boolean isChecked) { - SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(isChecked)); + SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(!isChecked)); return true; } } diff --git a/tests/robotests/src/com/android/settings/development/transcode/TranscodeSkipAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/transcode/TranscodeAppsPreferenceControllerTest.java similarity index 82% rename from tests/robotests/src/com/android/settings/development/transcode/TranscodeSkipAppsPreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/development/transcode/TranscodeAppsPreferenceControllerTest.java index f1fce9f8241..b31f7276ebb 100644 --- a/tests/robotests/src/com/android/settings/development/transcode/TranscodeSkipAppsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/transcode/TranscodeAppsPreferenceControllerTest.java @@ -51,24 +51,24 @@ import org.robolectric.shadows.ShadowPackageManager; import java.util.Collections; @RunWith(RobolectricTestRunner.class) -public class TranscodeSkipAppsPreferenceControllerTest { +public class TranscodeAppsPreferenceControllerTest { private static final int APPLICATION_UID = 1234; - private static final String SKIP_SELECTED_APPS_PROP_KEY = - "persist.sys.fuse.transcode_skip_uids"; + private static final String TRANSCODE_SELECTED_APPS_PROP_KEY = + "persist.sys.fuse.transcode_uids"; @Mock private PreferenceScreen mScreen; private Context mContext; private ShadowPackageManager mShadowPackageManager; - private TranscodeSkipAppsPreferenceController mController; + private TranscodeAppsPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = ApplicationProvider.getApplicationContext(); mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager()); - mController = new TranscodeSkipAppsPreferenceController(mContext, "test_key"); + mController = new TranscodeAppsPreferenceController(mContext, "test_key"); Preference preference = new Preference(mContext); when(mScreen.getContext()).thenReturn(mContext); @@ -99,28 +99,28 @@ public class TranscodeSkipAppsPreferenceControllerTest { } @Test - public void preferenceChecked_shouldSkipApp() { - // First ensure that the app is not in skip list. - SystemProperties.set(SKIP_SELECTED_APPS_PROP_KEY, String.valueOf(-1)); + public void preferenceChecked_shouldSelectApp() { + // First ensure that the app is not selected. + SystemProperties.set(TRANSCODE_SELECTED_APPS_PROP_KEY, String.valueOf(-1)); SwitchPreference switchPreference = createPreference(/* defaultCheckedState = */ false); switchPreference.performClick(); - // Verify that the app is added to skip list. - assertThat(SystemProperties.get(SKIP_SELECTED_APPS_PROP_KEY)).contains( + // Verify that the app is selected. + assertThat(SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY)).contains( String.valueOf(APPLICATION_UID)); } @Test - public void preferenceUnchecked_shouldNotSkipApp() { - // First ensure that the app is in skip list. - SystemProperties.set(SKIP_SELECTED_APPS_PROP_KEY, String.valueOf(APPLICATION_UID)); + public void preferenceUnchecked_shouldUnSelectApp() { + // First ensure that the app is selected. + SystemProperties.set(TRANSCODE_SELECTED_APPS_PROP_KEY, String.valueOf(APPLICATION_UID)); SwitchPreference switchPreference = createPreference(/* defaultCheckedState = */ true); switchPreference.performClick(); - // Verify that the app is removed from skip list. - assertThat(SystemProperties.get(SKIP_SELECTED_APPS_PROP_KEY)).doesNotContain( + // Verify that the app is not selected. + assertThat(SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY)).doesNotContain( String.valueOf(APPLICATION_UID)); } diff --git a/tests/robotests/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java index f4e3e71fcb5..b22bf9dff71 100644 --- a/tests/robotests/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceControllerTest.java @@ -47,14 +47,14 @@ public class TranscodeGlobalTogglePreferenceControllerTest { } @Test - public void isChecked_whenEnabled_shouldReturnTrue() { - SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "true"); + public void isChecked_whenDisabled_shouldReturnTrue() { + SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "false"); assertThat(mController.isChecked()).isTrue(); } @Test - public void isChecked_whenDisabled_shouldReturnTrue() { - SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "false"); + public void isChecked_whenEnabled_shouldReturnFalse() { + SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "true"); assertThat(mController.isChecked()).isFalse(); } @@ -63,8 +63,8 @@ public class TranscodeGlobalTogglePreferenceControllerTest { // Simulate the UI being clicked. mController.setChecked(true); - // Verify the system property was updated with the UI value. - assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false)).isTrue(); + // Verify the system property was updated. + assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, true)).isFalse(); } @Test @@ -72,7 +72,7 @@ public class TranscodeGlobalTogglePreferenceControllerTest { // Simulate the UI being clicked. mController.setChecked(false); - // Verify the system property was updated with the UI value. - assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, true)).isFalse(); + // Verify the system property was updated. + assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false)).isTrue(); } }