Merge "Change control semantics in transcode settings"
This commit is contained in:
@@ -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>
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user