diff --git a/res/xml/transcode_settings.xml b/res/xml/transcode_settings.xml index 65f6cd824b4..b142d318392 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" /> - - 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 5593d7ab9a1..00000000000 --- 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 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 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 b31f7276ebb..00000000000 --- 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); - } - } -}