Add prerelease driver to graphics driver preference dashboard.
To facilitate better development, add prerelease driver choice to graphics driver preferences dashboard. This patch also makes sure that when game driver or developer driver is not shipped, the choice doesn't show up. Minor: Add tests. Bug: b/148626177 Test: make RunSettingsRoboTests ROBOTEST_FILTER=GraphicsDriver Change-Id: Iad398cd663300086d3f4802ffab34531e11dfb17
This commit is contained in:
@@ -26,7 +26,9 @@ import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.SystemProperties;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.ListPreference;
|
||||
@@ -58,15 +60,19 @@ public class GraphicsDriverAppPreferenceController extends BasePreferenceControl
|
||||
GraphicsDriverContentObserver.OnGraphicsDriverContentChangedListener, LifecycleObserver,
|
||||
OnStart, OnStop {
|
||||
|
||||
private static final String PROPERTY_GFX_DRIVER_GAME = "ro.gfx.driver.0";
|
||||
private static final String PROPERTY_GFX_DRIVER_PRERELEASE = "ro.gfx.driver.1";
|
||||
|
||||
private final Context mContext;
|
||||
private final ContentResolver mContentResolver;
|
||||
private final CharSequence[] mEntryList;
|
||||
private final String mPreferenceTitle;
|
||||
private final String mPreferenceDefault;
|
||||
private final String mPreferenceGameDriver;
|
||||
private final String mPreferencePrereleaseDriver;
|
||||
private final String mPreferenceSystem;
|
||||
@VisibleForTesting
|
||||
CharSequence[] mEntryList;
|
||||
@VisibleForTesting
|
||||
GraphicsDriverContentObserver mGraphicsDriverContentObserver;
|
||||
|
||||
private final List<AppInfo> mAppInfos;
|
||||
@@ -85,7 +91,6 @@ public class GraphicsDriverAppPreferenceController extends BasePreferenceControl
|
||||
new GraphicsDriverContentObserver(new Handler(Looper.getMainLooper()), this);
|
||||
|
||||
final Resources resources = context.getResources();
|
||||
mEntryList = resources.getStringArray(R.array.graphics_driver_app_preference_values);
|
||||
mPreferenceTitle = resources.getString(R.string.graphics_driver_app_preference_title);
|
||||
mPreferenceDefault = resources.getString(R.string.graphics_driver_app_preference_default);
|
||||
mPreferenceGameDriver =
|
||||
@@ -93,6 +98,7 @@ public class GraphicsDriverAppPreferenceController extends BasePreferenceControl
|
||||
mPreferencePrereleaseDriver =
|
||||
resources.getString(R.string.graphics_driver_app_preference_prerelease_driver);
|
||||
mPreferenceSystem = resources.getString(R.string.graphics_driver_app_preference_system);
|
||||
mEntryList = constructEntryList();
|
||||
|
||||
// TODO: Move this task to background if there's potential ANR/Jank.
|
||||
// Update the UI when all the app infos are ready.
|
||||
@@ -189,6 +195,28 @@ public class GraphicsDriverAppPreferenceController extends BasePreferenceControl
|
||||
updateState(mPreferenceGroup);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs and returns a list of graphics driver choices.
|
||||
*/
|
||||
public CharSequence[] constructEntryList() {
|
||||
final String prereleaseDriverPackageName =
|
||||
SystemProperties.get(PROPERTY_GFX_DRIVER_PRERELEASE);
|
||||
final String gameDriverPackageName = SystemProperties.get(PROPERTY_GFX_DRIVER_GAME);
|
||||
|
||||
List<CharSequence> entryList = new ArrayList<>();
|
||||
entryList.add(mPreferenceDefault);
|
||||
if (!TextUtils.isEmpty(prereleaseDriverPackageName)) {
|
||||
entryList.add(mPreferencePrereleaseDriver);
|
||||
}
|
||||
if (!TextUtils.isEmpty(gameDriverPackageName)) {
|
||||
entryList.add(mPreferenceGameDriver);
|
||||
}
|
||||
entryList.add(mPreferenceSystem);
|
||||
CharSequence[] filteredEntryList = new CharSequence[entryList.size()];
|
||||
filteredEntryList = entryList.toArray(filteredEntryList);
|
||||
return filteredEntryList;
|
||||
}
|
||||
|
||||
// AppInfo class to achieve loading the application label only once
|
||||
class AppInfo {
|
||||
AppInfo(PackageManager packageManager, ApplicationInfo applicationInfo) {
|
||||
|
Reference in New Issue
Block a user