From 9e758e1409a5437749567fe7427995a89048e6e9 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Thu, 31 Jan 2019 18:25:00 -0800 Subject: [PATCH] Game Driver: Fix EnableForAllApps switch and test Bug: 123707483 Bug: 119221883 Test: Build, flash, boot and make RunSettingsRoboTests Change-Id: Iffbe3355b37763d4fa71b96271c1ba448fb6cdc5 Merged-In: Iffbe3355b37763d4fa71b96271c1ba448fb6cdc5 --- ...erEnableForAllAppsPreferenceController.java | 15 ++++++++++++++- .../GameDriverGlobalSwitchBarController.java | 18 ++++++++++-------- ...ableForAllAppsPreferenceControllerTest.java | 7 +++++-- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java b/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java index 1afe5d6f4d6..7f9b74b80b0 100644 --- a/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java +++ b/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceController.java @@ -74,6 +74,7 @@ public class GameDriverEnableForAllAppsPreferenceController extends BasePreferen public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = (SwitchPreference) screen.findPreference(getPreferenceKey()); + mPreference.setOnPreferenceChangeListener(this); } @Override @@ -98,8 +99,20 @@ public class GameDriverEnableForAllAppsPreferenceController extends BasePreferen @Override public boolean onPreferenceChange(Preference preference, Object newValue) { + final boolean isChecked = (boolean) newValue; + final int gameDriver = Settings.Global.getInt( + mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT); + + if (isChecked && gameDriver == GAME_DRIVER_ALL_APPS) { + return true; + } + + if (!isChecked && (gameDriver == GAME_DRIVER_DEFAULT || gameDriver == GAME_DRIVER_OFF)) { + return true; + } + Settings.Global.putInt(mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, - (boolean) newValue ? GAME_DRIVER_ALL_APPS : GAME_DRIVER_DEFAULT); + 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 125d95b4cf6..d84c28f3f5b 100644 --- a/src/com/android/settings/development/gamedriver/GameDriverGlobalSwitchBarController.java +++ b/src/com/android/settings/development/gamedriver/GameDriverGlobalSwitchBarController.java @@ -79,19 +79,21 @@ public class GameDriverGlobalSwitchBarController @Override public boolean onSwitchToggled(boolean isChecked) { - if (!isChecked) { - Settings.Global.putInt( - mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_OFF); + final int gameDriver = Settings.Global.getInt( + mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT); + + if (isChecked + && (gameDriver == GAME_DRIVER_DEFAULT || gameDriver == GAME_DRIVER_ALL_APPS)) { return true; } - if (Settings.Global.getInt( - mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT) - != GAME_DRIVER_ALL_APPS) { - Settings.Global.putInt( - mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT); + if (!isChecked && gameDriver == GAME_DRIVER_OFF) { + return true; } + Settings.Global.putInt(mContentResolver, Settings.Global.GAME_DRIVER_ALL_APPS, + isChecked ? GAME_DRIVER_DEFAULT : GAME_DRIVER_OFF); + 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 4ee702c5ff0..8f4c88ab7ce 100644 --- a/tests/robotests/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/gamedriver/GameDriverEnableForAllAppsPreferenceControllerTest.java @@ -58,11 +58,14 @@ public class GameDriverEnableForAllAppsPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mResolver = mContext.getContentResolver(); + + Settings.Global.putInt(mResolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); + Settings.Global.putInt( + mResolver, Settings.Global.GAME_DRIVER_ALL_APPS, GAME_DRIVER_DEFAULT); + mController = new GameDriverEnableForAllAppsPreferenceController(mContext, "testKey"); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); mController.displayPreference(mScreen); - - Settings.Global.putInt(mResolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); } @Test