Merge "Change control semantics in transcode settings"

This commit is contained in:
Biswarup Pal
2020-11-17 17:44:01 +00:00
committed by Android (Google) Code Review
5 changed files with 41 additions and 41 deletions

View File

@@ -29,5 +29,5 @@
<PreferenceCategory <PreferenceCategory
android:key="transcode_skip_apps" android:key="transcode_skip_apps"
android:title="@string/transcode_skip_apps" android:title="@string/transcode_skip_apps"
settings:controller="com.android.settings.development.transcode.TranscodeSkipAppsPreferenceController" /> settings:controller="com.android.settings.development.transcode.TranscodeAppsPreferenceController" />
</PreferenceScreen> </PreferenceScreen>

View File

@@ -33,19 +33,19 @@ import java.util.Arrays;
import java.util.List; 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. * screen.
*/ */
public class TranscodeSkipAppsPreferenceController extends BasePreferenceController implements public class TranscodeAppsPreferenceController extends BasePreferenceController implements
Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener {
private static final String SKIP_SELECTED_APPS_PROP_KEY = private static final String TRANSCODE_SELECTED_APPS_PROP_KEY =
"persist.sys.fuse.transcode_skip_uids"; "persist.sys.fuse.transcode_uids";
private final PackageManager mPackageManager; private final PackageManager mPackageManager;
private final List<String> mUidsToSkip = new ArrayList<>(); private final List<String> mUids = new ArrayList<>();
public TranscodeSkipAppsPreferenceController(Context context, public TranscodeAppsPreferenceController(Context context,
String preferenceKey) { String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mPackageManager = context.getPackageManager(); mPackageManager = context.getPackageManager();
@@ -60,8 +60,8 @@ public class TranscodeSkipAppsPreferenceController extends BasePreferenceControl
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
final Context context = screen.getContext(); final Context context = screen.getContext();
mUidsToSkip.addAll(Arrays.asList( mUids.addAll(Arrays.asList(
SystemProperties.get(SKIP_SELECTED_APPS_PROP_KEY).split(","))); SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY).split(",")));
Intent launcherIntent = new Intent(Intent.ACTION_MAIN); Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER); launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> apps = mPackageManager.queryIntentActivities(launcherIntent, 0); List<ResolveInfo> apps = mPackageManager.queryIntentActivities(launcherIntent, 0);
@@ -71,7 +71,7 @@ public class TranscodeSkipAppsPreferenceController extends BasePreferenceControl
preference.setTitle(app.loadLabel(mPackageManager)); preference.setTitle(app.loadLabel(mPackageManager));
preference.setIcon(app.loadIcon(mPackageManager)); preference.setIcon(app.loadIcon(mPackageManager));
preference.setKey(uid); preference.setKey(uid);
preference.setChecked(isSkippedForTranscoding(uid)); preference.setChecked(isSelectedForTranscoding(uid));
preference.setOnPreferenceChangeListener(this); preference.setOnPreferenceChangeListener(this);
screen.addPreference(preference); screen.addPreference(preference);
@@ -83,15 +83,15 @@ public class TranscodeSkipAppsPreferenceController extends BasePreferenceControl
boolean value = (Boolean) o; boolean value = (Boolean) o;
String uidStr = preference.getKey(); String uidStr = preference.getKey();
if (value) { if (value) {
mUidsToSkip.add(uidStr); mUids.add(uidStr);
} else { } 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; return true;
} }
private boolean isSkippedForTranscoding(String uid) { private boolean isSelectedForTranscoding(String uid) {
return mUidsToSkip.contains(uid); return mUids.contains(uid);
} }
} }

View File

@@ -22,7 +22,7 @@ import android.os.SystemProperties;
import com.android.settings.core.TogglePreferenceController; 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. * screen.
*/ */
public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceController { public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceController {
@@ -41,12 +41,12 @@ public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceC
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false); return !SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false);
} }
@Override @Override
public boolean setChecked(boolean isChecked) { 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; return true;
} }
} }

View File

@@ -51,24 +51,24 @@ import org.robolectric.shadows.ShadowPackageManager;
import java.util.Collections; import java.util.Collections;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class TranscodeSkipAppsPreferenceControllerTest { public class TranscodeAppsPreferenceControllerTest {
private static final int APPLICATION_UID = 1234; private static final int APPLICATION_UID = 1234;
private static final String SKIP_SELECTED_APPS_PROP_KEY = private static final String TRANSCODE_SELECTED_APPS_PROP_KEY =
"persist.sys.fuse.transcode_skip_uids"; "persist.sys.fuse.transcode_uids";
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
private Context mContext; private Context mContext;
private ShadowPackageManager mShadowPackageManager; private ShadowPackageManager mShadowPackageManager;
private TranscodeSkipAppsPreferenceController mController; private TranscodeAppsPreferenceController mController;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = ApplicationProvider.getApplicationContext(); mContext = ApplicationProvider.getApplicationContext();
mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager()); mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
mController = new TranscodeSkipAppsPreferenceController(mContext, "test_key"); mController = new TranscodeAppsPreferenceController(mContext, "test_key");
Preference preference = new Preference(mContext); Preference preference = new Preference(mContext);
when(mScreen.getContext()).thenReturn(mContext); when(mScreen.getContext()).thenReturn(mContext);
@@ -99,28 +99,28 @@ public class TranscodeSkipAppsPreferenceControllerTest {
} }
@Test @Test
public void preferenceChecked_shouldSkipApp() { public void preferenceChecked_shouldSelectApp() {
// First ensure that the app is not in skip list. // First ensure that the app is not selected.
SystemProperties.set(SKIP_SELECTED_APPS_PROP_KEY, String.valueOf(-1)); SystemProperties.set(TRANSCODE_SELECTED_APPS_PROP_KEY, String.valueOf(-1));
SwitchPreference switchPreference = createPreference(/* defaultCheckedState = */ false); SwitchPreference switchPreference = createPreference(/* defaultCheckedState = */ false);
switchPreference.performClick(); switchPreference.performClick();
// Verify that the app is added to skip list. // Verify that the app is selected.
assertThat(SystemProperties.get(SKIP_SELECTED_APPS_PROP_KEY)).contains( assertThat(SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY)).contains(
String.valueOf(APPLICATION_UID)); String.valueOf(APPLICATION_UID));
} }
@Test @Test
public void preferenceUnchecked_shouldNotSkipApp() { public void preferenceUnchecked_shouldUnSelectApp() {
// First ensure that the app is in skip list. // First ensure that the app is selected.
SystemProperties.set(SKIP_SELECTED_APPS_PROP_KEY, String.valueOf(APPLICATION_UID)); SystemProperties.set(TRANSCODE_SELECTED_APPS_PROP_KEY, String.valueOf(APPLICATION_UID));
SwitchPreference switchPreference = createPreference(/* defaultCheckedState = */ true); SwitchPreference switchPreference = createPreference(/* defaultCheckedState = */ true);
switchPreference.performClick(); switchPreference.performClick();
// Verify that the app is removed from skip list. // Verify that the app is not selected.
assertThat(SystemProperties.get(SKIP_SELECTED_APPS_PROP_KEY)).doesNotContain( assertThat(SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY)).doesNotContain(
String.valueOf(APPLICATION_UID)); String.valueOf(APPLICATION_UID));
} }

View File

@@ -47,14 +47,14 @@ public class TranscodeGlobalTogglePreferenceControllerTest {
} }
@Test @Test
public void isChecked_whenEnabled_shouldReturnTrue() { public void isChecked_whenDisabled_shouldReturnTrue() {
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "true"); SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "false");
assertThat(mController.isChecked()).isTrue(); assertThat(mController.isChecked()).isTrue();
} }
@Test @Test
public void isChecked_whenDisabled_shouldReturnTrue() { public void isChecked_whenEnabled_shouldReturnFalse() {
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "false"); SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, "true");
assertThat(mController.isChecked()).isFalse(); assertThat(mController.isChecked()).isFalse();
} }
@@ -63,8 +63,8 @@ public class TranscodeGlobalTogglePreferenceControllerTest {
// Simulate the UI being clicked. // Simulate the UI being clicked.
mController.setChecked(true); mController.setChecked(true);
// Verify the system property was updated with the UI value. // Verify the system property was updated.
assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false)).isTrue(); assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, true)).isFalse();
} }
@Test @Test
@@ -72,7 +72,7 @@ public class TranscodeGlobalTogglePreferenceControllerTest {
// Simulate the UI being clicked. // Simulate the UI being clicked.
mController.setChecked(false); mController.setChecked(false);
// Verify the system property was updated with the UI value. // Verify the system property was updated.
assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, true)).isFalse(); assertThat(SystemProperties.getBoolean(TRANSCODE_ENABLED_PROP_KEY, false)).isTrue();
} }
} }