Merge "Remove transcoding for apps from Settings."
diff --git a/res/xml/transcode_settings.xml b/res/xml/transcode_settings.xml
index 65f6cd8..b142d31 100644
--- a/res/xml/transcode_settings.xml
+++ b/res/xml/transcode_settings.xml
@@ -35,9 +35,4 @@
android:key="transcode_default"
android:title="@string/transcode_default"
settings:controller="com.android.settings.development.transcode.TranscodeDefaultOptionPreferenceController" />
-
- <PreferenceCategory
- android:key="transcode_skip_apps"
- android:title="@string/transcode_skip_apps"
- settings:controller="com.android.settings.development.transcode.TranscodeAppsPreferenceController" />
</PreferenceScreen>
diff --git a/src/com/android/settings/development/transcode/TranscodeAppsPreferenceController.java b/src/com/android/settings/development/transcode/TranscodeAppsPreferenceController.java
deleted file mode 100644
index 5593d7a..0000000
--- a/src/com/android/settings/development/transcode/TranscodeAppsPreferenceController.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.development.transcode;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.SystemProperties;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
-
-import com.android.settings.core.BasePreferenceController;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * The controller for the "Enable transcoding for apps" section on the transcode settings
- * screen.
- */
-public class TranscodeAppsPreferenceController extends BasePreferenceController implements
- Preference.OnPreferenceChangeListener {
-
- private static final String TRANSCODE_SELECTED_APPS_PROP_KEY =
- "persist.sys.fuse.transcode_uids";
-
- private final PackageManager mPackageManager;
- private final List<String> mUids = new ArrayList<>();
-
- public TranscodeAppsPreferenceController(Context context,
- String preferenceKey) {
- super(context, preferenceKey);
- mPackageManager = context.getPackageManager();
- }
-
- @Override
- public int getAvailabilityStatus() {
- return AVAILABLE;
- }
-
- @Override
- public void displayPreference(PreferenceScreen screen) {
- super.displayPreference(screen);
- final Context context = screen.getContext();
- 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);
- for (ResolveInfo app : apps) {
- String uid = String.valueOf(app.activityInfo.applicationInfo.uid);
- SwitchPreference preference = new SwitchPreference(context);
- preference.setTitle(app.loadLabel(mPackageManager));
- preference.setIcon(app.loadIcon(mPackageManager));
- preference.setKey(uid);
- preference.setChecked(isSelectedForTranscoding(uid));
- preference.setOnPreferenceChangeListener(this);
-
- screen.addPreference(preference);
- }
- }
-
- @Override
- public boolean onPreferenceChange(Preference preference, Object o) {
- boolean value = (Boolean) o;
- String uidStr = preference.getKey();
- if (value) {
- mUids.add(uidStr);
- } else {
- mUids.remove(uidStr);
- }
- SystemProperties.set(TRANSCODE_SELECTED_APPS_PROP_KEY, String.join(",", mUids));
- return true;
- }
-
- private boolean isSelectedForTranscoding(String uid) {
- return mUids.contains(uid);
- }
-}
diff --git a/tests/robotests/src/com/android/settings/development/transcode/TranscodeAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/transcode/TranscodeAppsPreferenceControllerTest.java
deleted file mode 100644
index b31f727..0000000
--- a/tests/robotests/src/com/android/settings/development/transcode/TranscodeAppsPreferenceControllerTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.development.transcode;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
-import android.os.SystemProperties;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.Shadows;
-import org.robolectric.shadows.ShadowPackageManager;
-
-import java.util.Collections;
-
-@RunWith(RobolectricTestRunner.class)
-public class TranscodeAppsPreferenceControllerTest {
-
- private static final int APPLICATION_UID = 1234;
- 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 TranscodeAppsPreferenceController mController;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- mContext = ApplicationProvider.getApplicationContext();
- mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
- mController = new TranscodeAppsPreferenceController(mContext, "test_key");
- Preference preference = new Preference(mContext);
-
- when(mScreen.getContext()).thenReturn(mContext);
- when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(preference);
- }
-
- @Test
- public void isAlwaysAvailable() {
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void display_hasLaunchAbleApps_shouldDisplay() {
- Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
- launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);
- final ResolveInfo resolveInfo = new FakeResolveInfo(mContext);
- ApplicationInfo applicationInfo = new ApplicationInfo();
- applicationInfo.uid = APPLICATION_UID;
- ActivityInfo activityInfo = new ActivityInfo();
- activityInfo.applicationInfo = applicationInfo;
- resolveInfo.activityInfo = activityInfo;
- mShadowPackageManager.setResolveInfosForIntent(launcherIntent,
- Collections.singletonList(resolveInfo));
-
- mController.displayPreference(mScreen);
-
- verify(mScreen, atLeastOnce()).addPreference(any(Preference.class));
- }
-
- @Test
- 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 selected.
- assertThat(SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY)).contains(
- String.valueOf(APPLICATION_UID));
- }
-
- @Test
- 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 not selected.
- assertThat(SystemProperties.get(TRANSCODE_SELECTED_APPS_PROP_KEY)).doesNotContain(
- String.valueOf(APPLICATION_UID));
- }
-
- private SwitchPreference createPreference(boolean defaultCheckedState) {
- SwitchPreference preference = new SwitchPreference(mContext);
- preference.setTitle("Test Pref");
- preference.setIcon(R.drawable.ic_settings_24dp);
- preference.setKey(String.valueOf(APPLICATION_UID));
- preference.setChecked(defaultCheckedState);
- preference.setOnPreferenceChangeListener(mController);
- return preference;
- }
-
- private static class FakeResolveInfo extends ResolveInfo {
-
- private final Context mContext;
-
- FakeResolveInfo(Context context) {
- this.mContext = context;
- }
-
- @Override
- public CharSequence loadLabel(PackageManager pm) {
- return "TestName";
- }
-
- @Override
- public Drawable loadIcon(PackageManager pm) {
- return mContext.getDrawable(R.drawable.ic_settings_24dp);
- }
- }
-}