Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6bba3e9 authored by Biswarup Pal's avatar Biswarup Pal Committed by Android (Google) Code Review
Browse files

Merge "Change control semantics in transcode settings"

parents 3181efb8 ab51e8ff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -29,5 +29,5 @@
    <PreferenceCategory
        android:key="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>
+14 −14
Original line number Diff line number Diff line
@@ -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<String> mUidsToSkip = new ArrayList<>();
    private final List<String> 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<ResolveInfo> 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);
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -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;
    }
}
+15 −15
Original line number Diff line number Diff line
@@ -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));
    }

+8 −8
Original line number Diff line number Diff line
@@ -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();
    }
}