Merge "[GPU Service] Query Game driver blacklists from DeviceConfig." into qt-dev
am: a779e69600
Change-Id: Ib8359ee49dd17803887bf21417a8ec7ff5a481b5
This commit is contained in:
@@ -36,6 +36,7 @@ import android.os.Build;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
|
import android.provider.DeviceConfig;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
@@ -69,9 +70,11 @@ public class GpuService extends SystemService {
|
|||||||
private final String mDriverPackageName;
|
private final String mDriverPackageName;
|
||||||
private final PackageManager mPackageManager;
|
private final PackageManager mPackageManager;
|
||||||
private final Object mLock = new Object();
|
private final Object mLock = new Object();
|
||||||
|
private final Object mDeviceConfigLock = new Object();
|
||||||
private ContentResolver mContentResolver;
|
private ContentResolver mContentResolver;
|
||||||
private long mGameDriverVersionCode;
|
private long mGameDriverVersionCode;
|
||||||
private SettingsObserver mSettingsObserver;
|
private SettingsObserver mSettingsObserver;
|
||||||
|
private DeviceConfigListener mDeviceConfigListener;
|
||||||
@GuardedBy("mLock")
|
@GuardedBy("mLock")
|
||||||
private Blacklists mBlacklists;
|
private Blacklists mBlacklists;
|
||||||
|
|
||||||
@@ -101,10 +104,11 @@ public class GpuService extends SystemService {
|
|||||||
public void onBootPhase(int phase) {
|
public void onBootPhase(int phase) {
|
||||||
if (phase == PHASE_BOOT_COMPLETED) {
|
if (phase == PHASE_BOOT_COMPLETED) {
|
||||||
mContentResolver = mContext.getContentResolver();
|
mContentResolver = mContext.getContentResolver();
|
||||||
mSettingsObserver = new SettingsObserver();
|
|
||||||
if (mDriverPackageName == null || mDriverPackageName.isEmpty()) {
|
if (mDriverPackageName == null || mDriverPackageName.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
mSettingsObserver = new SettingsObserver();
|
||||||
|
mDeviceConfigListener = new DeviceConfigListener();
|
||||||
fetchGameDriverPackageProperties();
|
fetchGameDriverPackageProperties();
|
||||||
processBlacklists();
|
processBlacklists();
|
||||||
setBlacklist();
|
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 {
|
private final class PackageReceiver extends BroadcastReceiver {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(@NonNull final Context context, @NonNull final Intent intent) {
|
public void onReceive(@NonNull final Context context, @NonNull final Intent intent) {
|
||||||
@@ -229,13 +251,17 @@ public class GpuService extends SystemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void processBlacklists() {
|
private void processBlacklists() {
|
||||||
// TODO(b/121350991) Switch to DeviceConfig with property listener.
|
String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER,
|
||||||
String base64String =
|
Settings.Global.GAME_DRIVER_BLACKLISTS);
|
||||||
Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS);
|
if (base64String == null) {
|
||||||
if (base64String == null || base64String.isEmpty()) {
|
base64String =
|
||||||
return;
|
Settings.Global.getString(mContentResolver,
|
||||||
|
Settings.Global.GAME_DRIVER_BLACKLISTS);
|
||||||
|
}
|
||||||
|
parseBlacklists(base64String != null ? base64String : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void parseBlacklists(String base64String) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
// Reset all blacklists
|
// Reset all blacklists
|
||||||
mBlacklists = null;
|
mBlacklists = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user