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
This commit is contained in:
@@ -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>
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user