diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml index a0f019d3ff3..be45cd09f51 100644 --- a/res/xml/development_settings.xml +++ b/res/xml/development_settings.xml @@ -424,9 +424,6 @@ android:summary="%s" android:title="@string/simulate_color_space" /> - - diff --git a/src/com/android/settings/development/AngleEnabledAppPreferenceController.java b/src/com/android/settings/development/AngleEnabledAppPreferenceController.java deleted file mode 100644 index 3a7f6bf3a0f..00000000000 --- a/src/com/android/settings/development/AngleEnabledAppPreferenceController.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2018 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; - -import static com.android.settings.development.DevelopmentOptionsActivityRequestCodes - .REQUEST_CODE_ANGLE_ENABLED_APP; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.provider.Settings; -import androidx.annotation.VisibleForTesting; -import androidx.preference.Preference; - -import com.android.settings.R; -import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.development.DeveloperOptionsPreferenceController; - -public class AngleEnabledAppPreferenceController extends DeveloperOptionsPreferenceController - implements PreferenceControllerMixin, OnActivityResultListener { - - private static final String ANGLE_ENABLED_APP_KEY = "angle_enabled_app"; - - private final DevelopmentSettingsDashboardFragment mFragment; - private final PackageManager mPackageManager; - - public AngleEnabledAppPreferenceController(Context context, - DevelopmentSettingsDashboardFragment fragment) { - super(context); - mFragment = fragment; - mPackageManager = mContext.getPackageManager(); - } - - @Override - public String getPreferenceKey() { - return ANGLE_ENABLED_APP_KEY; - } - - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - if (ANGLE_ENABLED_APP_KEY.equals(preference.getKey())) { - // pass it on to settings - final Intent intent = getActivityStartIntent(); - mFragment.startActivityForResult(intent, REQUEST_CODE_ANGLE_ENABLED_APP); - return true; - } - return false; - } - - @Override - public void updateState(Preference preference) { - updatePreferenceSummary(); - } - - @Override - public boolean onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode != REQUEST_CODE_ANGLE_ENABLED_APP || resultCode != Activity.RESULT_OK) { - return false; - } - Settings.Global.putString(mContext.getContentResolver(), Settings.Global.ANGLE_ENABLED_APP, - data.getAction()); - updatePreferenceSummary(); - return true; - } - - @Override - protected void onDeveloperOptionsSwitchDisabled() { - super.onDeveloperOptionsSwitchDisabled(); - mPreference.setSummary(mContext.getResources().getString( - R.string.angle_enabled_app_not_set)); - } - - @VisibleForTesting - Intent getActivityStartIntent() { - Intent intent = new Intent(mContext, AppPicker.class); - intent.putExtra(AppPicker.EXTRA_NON_SYSTEM, true /* value */); - return intent; - } - - private void updatePreferenceSummary() { - final String angleEnabledApp = Settings.Global.getString( - mContext.getContentResolver(), Settings.Global.ANGLE_ENABLED_APP); - if (angleEnabledApp != null && angleEnabledApp.length() > 0) { - mPreference.setSummary(mContext.getResources().getString( - R.string.angle_enabled_app_set, - getAppLabel(angleEnabledApp))); - } else { - mPreference.setSummary(mContext.getResources().getString( - R.string.angle_enabled_app_not_set)); - } - } - - private String getAppLabel(String angleEnabledApp) { - try { - final ApplicationInfo ai = mPackageManager.getApplicationInfo(angleEnabledApp, - PackageManager.GET_DISABLED_COMPONENTS); - final CharSequence lab = mPackageManager.getApplicationLabel(ai); - return lab != null ? lab.toString() : angleEnabledApp; - } catch (PackageManager.NameNotFoundException e) { - return angleEnabledApp; - } - } -} diff --git a/src/com/android/settings/development/DevelopmentOptionsActivityRequestCodes.java b/src/com/android/settings/development/DevelopmentOptionsActivityRequestCodes.java index 3532a155c5f..e65d2ad69cf 100644 --- a/src/com/android/settings/development/DevelopmentOptionsActivityRequestCodes.java +++ b/src/com/android/settings/development/DevelopmentOptionsActivityRequestCodes.java @@ -26,7 +26,11 @@ public interface DevelopmentOptionsActivityRequestCodes { int REQUEST_MOCK_LOCATION_APP = 2; - int REQUEST_CODE_ANGLE_ENABLED_APP = 3; + int REQUEST_CODE_ANGLE_ALL_USE_ANGLE = 3; - int REQUEST_CODE_UPDATED_GFX_DRIVER_DEV_OPT_IN_APP = 4; + int REQUEST_CODE_ANGLE_DRIVER_PKGS = 4; + + int REQUEST_CODE_ANGLE_DRIVER_VALUES = 5; + + int REQUEST_CODE_UPDATED_GFX_DRIVER_DEV_OPT_IN_APP = 6; } diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java index 4ddcc364c6d..aa9918ce436 100644 --- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java @@ -423,7 +423,6 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra controllers.add(new SelectDebugAppPreferenceController(context, fragment)); controllers.add(new WaitForDebuggerPreferenceController(context)); controllers.add(new EnableGpuDebugLayersPreferenceController(context)); - controllers.add(new AngleEnabledAppPreferenceController(context, fragment)); controllers.add(new UpdatedGfxDriverDevOptInPreferenceController(context, fragment)); controllers.add(new VerifyAppsOverUsbPreferenceController(context)); controllers.add(new LogdSizePreferenceController(context)); diff --git a/tests/robotests/src/com/android/settings/development/AngleEnabledAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/AngleEnabledAppPreferenceControllerTest.java deleted file mode 100644 index 03837c2c143..00000000000 --- a/tests/robotests/src/com/android/settings/development/AngleEnabledAppPreferenceControllerTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2018 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; - -import static com.android.settings.development.DevelopmentOptionsActivityRequestCodes.REQUEST_CODE_ANGLE_ENABLED_APP; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.app.Activity; -import android.content.ContentResolver; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.provider.Settings; - -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; - -import com.android.settings.R; -import com.android.settings.testutils.SettingsRobolectricTestRunner; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.util.ReflectionHelpers; - -@RunWith(SettingsRobolectricTestRunner.class) -public class AngleEnabledAppPreferenceControllerTest { - - @Mock - private Preference mPreference; - @Mock - private PreferenceScreen mPreferenceScreen; - @Mock - private DevelopmentSettingsDashboardFragment mFragment; - @Mock - private PackageManager mPackageManager; - - private Context mContext; - private AngleEnabledAppPreferenceController mController; - - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; - mController = spy(new AngleEnabledAppPreferenceController(mContext, mFragment)); - ReflectionHelpers - .setField(mController, "mPackageManager" /* field name */, mPackageManager); - when(mPreferenceScreen.findPreference(mController.getPreferenceKey())) - .thenReturn(mPreference); - mController.displayPreference(mPreferenceScreen); - } - - @Test - public void handlePreferenceTreeClick_preferenceClicked_launchActivity() { - final Intent activityStartIntent = new Intent(mContext, AppPicker.class); - final String preferenceKey = mController.getPreferenceKey(); - doReturn(activityStartIntent).when(mController).getActivityStartIntent(); - when(mPreference.getKey()).thenReturn(preferenceKey); - mController.handlePreferenceTreeClick(mPreference); - - verify(mFragment).startActivityForResult(activityStartIntent, - REQUEST_CODE_ANGLE_ENABLED_APP); - } - - @Test - public void updateState_foobarAppSelected_shouldUpdateSummaryWithAngleEnabledAppLabel() { - final String angleEnabledApp = "foobar"; - final ContentResolver contentResolver = mContext.getContentResolver(); - Settings.Global.putString(contentResolver, Settings.Global.ANGLE_ENABLED_APP, - angleEnabledApp); - mController.updateState(mPreference); - - verify(mPreference).setSummary( - mContext.getString(R.string.angle_enabled_app_set, angleEnabledApp)); - } - - @Test - public void updateState_noAppSelected_shouldUpdateSummaryWithNoAppSelected() { - final String angleEnabledApp = null; - final ContentResolver contentResolver = mContext.getContentResolver(); - Settings.Global.putString(contentResolver, Settings.Global.ANGLE_ENABLED_APP, - angleEnabledApp); - mController.updateState(mPreference); - - verify(mPreference).setSummary( - mContext.getString(R.string.angle_enabled_app_not_set)); - } - - @Test - public void onActivityResult_foobarAppSelected_shouldUpdateSummaryWithAngleEnabledLabel() { - Intent activityResultIntent = new Intent(mContext, AppPicker.class); - final String appLabel = "foobar"; - activityResultIntent.setAction(appLabel); - final boolean result = mController - .onActivityResult(REQUEST_CODE_ANGLE_ENABLED_APP, Activity.RESULT_OK, - activityResultIntent); - - assertThat(result).isTrue(); - verify(mPreference).setSummary( - mContext.getString(R.string.angle_enabled_app_set, appLabel)); - } - - @Test - public void onActivityResult_badRequestCode_shouldReturnFalse() { - assertThat(mController.onActivityResult( - -1 /* requestCode */, -1 /* resultCode */, null /* intent */)).isFalse(); - } - - @Test - public void onDeveloperOptionsSwitchDisabled_shouldDisablePreference() { - mController.onDeveloperOptionsSwitchDisabled(); - - assertThat(mPreference.isEnabled()).isFalse(); - verify(mPreference).setSummary( - mContext.getString(R.string.angle_enabled_app_not_set)); - } -}