Merge "[GPU Service] Query Game driver blacklists from DeviceConfig." into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a779e69600
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user