Merge "[GPU Service] Query Game driver blacklists from DeviceConfig." into qt-dev

am: a779e69600

Change-Id: Ib8359ee49dd17803887bf21417a8ec7ff5a481b5
This commit is contained in:
Peiyong Lin
2019-04-09 19:16:32 -07:00
committed by android-build-merger

View File

@@ -36,6 +36,7 @@ import android.os.Build;
import android.os.Handler;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.util.Base64;
import android.util.Slog;
@@ -69,9 +70,11 @@ public class GpuService extends SystemService {
private final String mDriverPackageName;
private final PackageManager mPackageManager;
private final Object mLock = new Object();
private final Object mDeviceConfigLock = new Object();
private ContentResolver mContentResolver;
private long mGameDriverVersionCode;
private SettingsObserver mSettingsObserver;
private DeviceConfigListener mDeviceConfigListener;
@GuardedBy("mLock")
private Blacklists mBlacklists;
@@ -101,10 +104,11 @@ public class GpuService extends SystemService {
public void onBootPhase(int phase) {
if (phase == PHASE_BOOT_COMPLETED) {
mContentResolver = mContext.getContentResolver();
mSettingsObserver = new SettingsObserver();
if (mDriverPackageName == null || mDriverPackageName.isEmpty()) {
return;
}
mSettingsObserver = new SettingsObserver();
mDeviceConfigListener = new DeviceConfigListener();
fetchGameDriverPackageProperties();
processBlacklists();
setBlacklist();
@@ -134,6 +138,24 @@ public class GpuService extends SystemService {
}
}
private final class DeviceConfigListener implements DeviceConfig.OnPropertyChangedListener {
DeviceConfigListener() {
super();
DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_GAME_DRIVER,
mContext.getMainExecutor(), this);
}
@Override
public void onPropertyChanged(String namespace, String name, String value) {
synchronized (mDeviceConfigLock) {
if (Settings.Global.GAME_DRIVER_BLACKLISTS.equals(name)) {
parseBlacklists(value != null ? value : "");
setBlacklist();
}
}
}
}
private final class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(@NonNull final Context context, @NonNull final Intent intent) {
@@ -229,13 +251,17 @@ public class GpuService extends SystemService {
}
private void processBlacklists() {
// TODO(b/121350991) Switch to DeviceConfig with property listener.
String base64String =
Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS);
if (base64String == null || base64String.isEmpty()) {
return;
String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER,
Settings.Global.GAME_DRIVER_BLACKLISTS);
if (base64String == null) {
base64String =
Settings.Global.getString(mContentResolver,
Settings.Global.GAME_DRIVER_BLACKLISTS);
}
parseBlacklists(base64String != null ? base64String : "");
}
private void parseBlacklists(String base64String) {
synchronized (mLock) {
// Reset all blacklists
mBlacklists = null;