summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-06-13 23:44:36 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-06-13 23:44:36 +0000
commit4af74dd86d799adccde212261ae4fe1cb2d1dc39 (patch)
tree6f8ec36ecfdfe7f8f985c4ac4aa03ab73082e66f
parent7af299c604f3a4a03360e92b1d7177b76f1b64b5 (diff)
parent687906f2f9445ccd8b54941da418bd0e915199ab (diff)
downloadpackages_apps_Settings-4af74dd86d799adccde212261ae4fe1cb2d1dc39.tar.gz
packages_apps_Settings-4af74dd86d799adccde212261ae4fe1cb2d1dc39.tar.bz2
packages_apps_Settings-4af74dd86d799adccde212261ae4fe1cb2d1dc39.zip
Merge "Game Driver: Allow user to apply prerelease driver for all apps" into qt-dev
-rw-r--r--res/values/strings.xml6
-rw-r--r--res/xml/game_driver_settings.xml7
-rw-r--r--src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java64
-rw-r--r--src/com/android/settings/development/gamedriver/GameDriverGlobalSwitchBarController.java4
-rw-r--r--tests/robotests/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceControllerTest.java72
5 files changed, 115 insertions, 38 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ec15bdf5fb..6e92a3d661 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10652,6 +10652,12 @@
<string name="game_driver_app_preference_prerelease_driver">Prerelease Driver</string>
<!-- The system value for Game Driver app preference [CHAR LIMIT=50] -->
<string name="game_driver_app_preference_system">System Graphics Driver</string>
+ <!-- All the values for Game Driver all apps preference [CHAR LIMIT=50] -->
+ <string-array name="game_driver_all_apps_preference_values">
+ <item>@string/game_driver_app_preference_default</item>
+ <item>@string/game_driver_app_preference_game_driver</item>
+ <item>@string/game_driver_app_preference_prerelease_driver</item>
+ </string-array>
<!-- All the values for Game Driver app preference [CHAR LIMIT=50] -->
<string-array name="game_driver_app_preference_values">
<item>@string/game_driver_app_preference_default</item>
diff --git a/res/xml/game_driver_settings.xml b/res/xml/game_driver_settings.xml
index a04724a786..6daeefb032 100644
--- a/res/xml/game_driver_settings.xml
+++ b/res/xml/game_driver_settings.xml
@@ -21,11 +21,14 @@
android:key="game_driver_settings"
android:title="@string/game_driver_dashboard_title">
- <SwitchPreference
+ <ListPreference
android:key="game_driver_all_apps_preference"
android:title="@string/game_driver_all_apps_preference_title"
+ android:dialogTitle="@string/game_driver_all_apps_preference_title"
+ android:entries="@array/game_driver_all_apps_preference_values"
+ android:entryValues="@array/game_driver_all_apps_preference_values"
settings:controller="com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController">
- </SwitchPreference>
+ </ListPreference>
<PreferenceCategory
android:key="game_driver_category"
diff --git a/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java b/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java
index dd48f6946f..290e4b2a1d 100644
--- a/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java
+++ b/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java
@@ -18,15 +18,17 @@ package com.android.settings.development.gamedriver;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.res.Resources;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
import androidx.annotation.VisibleForTesting;
+import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
+import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -43,19 +45,30 @@ public class GameDriverEnableForAllAppsPreferenceController extends BasePreferen
public static final int GAME_DRIVER_DEFAULT = 0;
public static final int GAME_DRIVER_ALL_APPS = 1;
- public static final int GAME_DRIVER_OFF = 2;
+ public static final int GAME_DRIVER_PRERELEASE_ALL_APPS = 2;
+ public static final int GAME_DRIVER_OFF = 3;
private final Context mContext;
private final ContentResolver mContentResolver;
+ private final String mPreferenceDefault;
+ private final String mPreferenceGameDriver;
+ private final String mPreferencePrereleaseDriver;
@VisibleForTesting
GameDriverContentObserver mGameDriverContentObserver;
- private SwitchPreference mPreference;
+ private ListPreference mPreference;
public GameDriverEnableForAllAppsPreferenceController(Context context, String key) {
super(context, key);
mContext = context;
mContentResolver = context.getContentResolver();
+
+ final Resources resources = context.getResources();
+ mPreferenceDefault = resources.getString(R.string.game_driver_app_preference_default);
+ mPreferenceGameDriver =
+ resources.getString(R.string.game_driver_app_preference_game_driver);
+ mPreferencePrereleaseDriver =
+ resources.getString(R.string.game_driver_app_preference_prerelease_driver);
mGameDriverContentObserver =
new GameDriverContentObserver(new Handler(Looper.getMainLooper()), this);
}
@@ -89,31 +102,44 @@ public class GameDriverEnableForAllAppsPreferenceController extends BasePreferen
@Override
public void updateState(Preference preference) {
- final SwitchPreference switchPreference = (SwitchPreference) preference;
- switchPreference.setVisible(isAvailable());
- switchPreference.setChecked(
- Settings.Global.getInt(
- mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT)
- == GAME_DRIVER_ALL_APPS);
+ final ListPreference listPref = (ListPreference) preference;
+ listPref.setVisible(isAvailable());
+ final int currentChoice = Settings.Global.getInt(
+ mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
+ if (currentChoice == GAME_DRIVER_ALL_APPS) {
+ listPref.setValue(mPreferenceGameDriver);
+ listPref.setSummary(mPreferenceGameDriver);
+ } else if (currentChoice == GAME_DRIVER_PRERELEASE_ALL_APPS) {
+ listPref.setValue(mPreferencePrereleaseDriver);
+ listPref.setSummary(mPreferencePrereleaseDriver);
+ } else {
+ listPref.setValue(mPreferenceDefault);
+ listPref.setSummary(mPreferenceDefault);
+ }
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- final boolean isChecked = (boolean) newValue;
- final int gameDriver = Settings.Global.getInt(
+ final ListPreference listPref = (ListPreference) preference;
+ final String value = newValue.toString();
+ final int currentChoice = Settings.Global.getInt(
mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
-
- if (isChecked && gameDriver == GAME_DRIVER_ALL_APPS) {
- return true;
+ final int userChoice;
+ if (value.equals(mPreferenceGameDriver)) {
+ userChoice = GAME_DRIVER_ALL_APPS;
+ } else if (value.equals(mPreferencePrereleaseDriver)) {
+ userChoice = GAME_DRIVER_PRERELEASE_ALL_APPS;
+ } else {
+ userChoice = GAME_DRIVER_DEFAULT;
}
+ listPref.setValue(value);
+ listPref.setSummary(value);
- if (!isChecked && (gameDriver == GAME_DRIVER_DEFAULT || gameDriver == GAME_DRIVER_OFF)) {
- return true;
+ if (userChoice != currentChoice) {
+ Settings.Global.putInt(
+ mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, userChoice);
}
- Settings.Global.putInt(mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS,
- isChecked ? GAME_DRIVER_ALL_APPS : GAME_DRIVER_DEFAULT);
-
return true;
}
diff --git a/src/com/android/settings/development/gamedriver/GameDriverGlobalSwitchBarController.java b/src/com/android/settings/development/gamedriver/GameDriverGlobalSwitchBarController.java
index d84c28f3f5..15f71e0375 100644
--- a/src/com/android/settings/development/gamedriver/GameDriverGlobalSwitchBarController.java
+++ b/src/com/android/settings/development/gamedriver/GameDriverGlobalSwitchBarController.java
@@ -19,6 +19,7 @@ package com.android.settings.development.gamedriver;
import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_ALL_APPS;
import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_DEFAULT;
import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_OFF;
+import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_PRERELEASE_ALL_APPS;
import android.content.ContentResolver;
import android.content.Context;
@@ -83,7 +84,8 @@ public class GameDriverGlobalSwitchBarController
mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
if (isChecked
- && (gameDriver == GAME_DRIVER_DEFAULT || gameDriver == GAME_DRIVER_ALL_APPS)) {
+ && (gameDriver == GAME_DRIVER_DEFAULT || gameDriver == GAME_DRIVER_ALL_APPS
+ || gameDriver == GAME_DRIVER_PRERELEASE_ALL_APPS)) {
return true;
}
diff --git a/tests/robotests/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceControllerTest.java
index 3d418d9da9..df599713b6 100644
--- a/tests/robotests/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceControllerTest.java
@@ -21,6 +21,7 @@ import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_U
import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_ALL_APPS;
import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_DEFAULT;
import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_OFF;
+import static com.android.settings.development.gamedriver.GameDriverEnableForAllAppsPreferenceController.GAME_DRIVER_PRERELEASE_ALL_APPS;
import static com.google.common.truth.Truth.assertThat;
@@ -30,10 +31,13 @@ import static org.mockito.Mockito.when;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.res.Resources;
import android.provider.Settings;
+import androidx.preference.ListPreference;
import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
+
+import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
@@ -49,13 +53,16 @@ public class GameDriverEnableForAllAppsPreferenceControllerTest {
@Mock
private PreferenceScreen mScreen;
@Mock
- private SwitchPreference mPreference;
+ private ListPreference mPreference;
@Mock
private GameDriverContentObserver mGameDriverContentObserver;
private Context mContext;
private ContentResolver mResolver;
private GameDriverEnableForAllAppsPreferenceController mController;
+ private String mPreferenceDefault;
+ private String mPreferenceGameDriver;
+ private String mPreferencePrereleaseDriver;
@Before
public void setUp() {
@@ -63,6 +70,13 @@ public class GameDriverEnableForAllAppsPreferenceControllerTest {
mContext = RuntimeEnvironment.application;
mResolver = mContext.getContentResolver();
+ final Resources resources = mContext.getResources();
+ mPreferenceDefault = resources.getString(R.string.game_driver_app_preference_default);
+ mPreferenceGameDriver =
+ resources.getString(R.string.game_driver_app_preference_game_driver);
+ mPreferencePrereleaseDriver =
+ resources.getString(R.string.game_driver_app_preference_prerelease_driver);
+
Settings.Global.putInt(mResolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
Settings.Global.putInt(
mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
@@ -95,12 +109,13 @@ public class GameDriverEnableForAllAppsPreferenceControllerTest {
}
@Test
- public void displayPreference_shouldAddSwitchPreference() {
+ public void displayPreference_shouldAddListPreference() {
Settings.Global.putInt(
mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
mController.updateState(mPreference);
- verify(mPreference).setChecked(false);
+ verify(mPreference).setValue(mPreferenceDefault);
+ verify(mPreference).setSummary(mPreferenceDefault);
}
@Test
@@ -120,39 +135,64 @@ public class GameDriverEnableForAllAppsPreferenceControllerTest {
}
@Test
- public void updateState_availableAndGameDriverDefault_visibleAndUncheck() {
+ public void updateState_availableAndDefault_visibleAndDefault() {
Settings.Global.putInt(
mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
mController.updateState(mPreference);
verify(mPreference, atLeastOnce()).setVisible(true);
- verify(mPreference).setChecked(false);
+ verify(mPreference).setValue(mPreferenceDefault);
+ verify(mPreference).setSummary(mPreferenceDefault);
}
@Test
- public void updateState_availableAndGameDriverAllApps_visibleAndCheck() {
+ public void updateState_availableAndGameDriver_visibleAndGameDriver() {
Settings.Global.putInt(
mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_ALL_APPS);
mController.updateState(mPreference);
verify(mPreference, atLeastOnce()).setVisible(true);
- verify(mPreference).setChecked(true);
+ verify(mPreference).setValue(mPreferenceGameDriver);
+ verify(mPreference).setSummary(mPreferenceGameDriver);
}
@Test
- public void updateState_gameDriverOff_notVisibleAndUncheck() {
+ public void updateState_availableAndPrereleaseDriver_visibleAndPrereleaseDriver() {
+ Settings.Global.putInt(
+ mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_PRERELEASE_ALL_APPS);
+ mController.updateState(mPreference);
+
+ verify(mPreference, atLeastOnce()).setVisible(true);
+ verify(mPreference).setValue(mPreferencePrereleaseDriver);
+ verify(mPreference).setSummary(mPreferencePrereleaseDriver);
+ }
+
+ @Test
+ public void updateState_gameDriverOff_notVisibleAndSystemDriver() {
Settings.Global.putInt(mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_OFF);
mController.updateState(mPreference);
verify(mPreference).setVisible(false);
- verify(mPreference).setChecked(false);
+ verify(mPreference).setValue(mPreferenceDefault);
+ verify(mPreference).setSummary(mPreferenceDefault);
}
@Test
- public void onPreferenceChange_check_shouldUpdateSettingsGlobal() {
+ public void onPreferenceChange_default_shouldUpdateSettingsGlobal() {
+ Settings.Global.putInt(
+ mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_ALL_APPS);
+ mController.onPreferenceChange(mPreference, mPreferenceDefault);
+
+ assertThat(Settings.Global.getInt(
+ mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT))
+ .isEqualTo(GAME_DRIVER_DEFAULT);
+ }
+
+ @Test
+ public void onPreferenceChange_gameDriver_shouldUpdateSettingsGlobal() {
Settings.Global.putInt(
mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
- mController.onPreferenceChange(mPreference, true);
+ mController.onPreferenceChange(mPreference, mPreferenceGameDriver);
assertThat(Settings.Global.getInt(
mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT))
@@ -160,13 +200,13 @@ public class GameDriverEnableForAllAppsPreferenceControllerTest {
}
@Test
- public void onPreferenceChange_uncheck_shouldUpdateSettingsGlobal() {
+ public void onPreferenceChange_prereleaseDriver_shouldUpdateSettingsGlobal() {
Settings.Global.putInt(
- mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_ALL_APPS);
- mController.onPreferenceChange(mPreference, false);
+ mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT);
+ mController.onPreferenceChange(mPreference, mPreferencePrereleaseDriver);
assertThat(Settings.Global.getInt(
mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT))
- .isEqualTo(GAME_DRIVER_DEFAULT);
+ .isEqualTo(GAME_DRIVER_PRERELEASE_ALL_APPS);
}
}