diff options
| author | Peiyong Lin <lpy@google.com> | 2019-02-13 19:58:53 +0000 |
|---|---|---|
| committer | Peiyong Lin <lpy@google.com> | 2019-02-13 19:59:18 +0000 |
| commit | 67773e8b878c9c789c56f96f7efd23ef9e710249 (patch) | |
| tree | bb92a20177f28594dd986c11391fb429c354ec0a /core/java/android/os/GraphicsEnvironment.java | |
| parent | 50350c15b8f439a42cf9d359d3c98a91fdd7966e (diff) | |
Revert "[GPU Service] Move blacklists process to GPU service."
This reverts commit 50350c15b8f439a42cf9d359d3c98a91fdd7966e.
Reason for revert: Break build.
BUG: 120869311
Test: N/A
Change-Id: Ida39fa1e0a3e75001af19adb5cf330d1be26af64
Diffstat (limited to 'core/java/android/os/GraphicsEnvironment.java')
| -rw-r--r-- | core/java/android/os/GraphicsEnvironment.java | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java index 4719555d7121..269c781397ad 100644 --- a/core/java/android/os/GraphicsEnvironment.java +++ b/core/java/android/os/GraphicsEnvironment.java @@ -24,10 +24,15 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; +import android.gamedriver.GameDriverProto.Blacklist; +import android.gamedriver.GameDriverProto.Blacklists; import android.opengl.EGL14; import android.provider.Settings; +import android.util.Base64; import android.util.Log; +import com.android.framework.protobuf.InvalidProtocolBufferException; + import dalvik.system.VMRuntime; import java.io.File; @@ -62,6 +67,8 @@ public class GraphicsEnvironment { private static final String ANGLE_RULES_FILE = "a4a_rules.json"; private static final String ANGLE_TEMP_RULES = "debug.angle.rules"; private static final String ACTION_ANGLE_FOR_ANDROID = "android.app.action.ANGLE_FOR_ANDROID"; + private static final String GAME_DRIVER_BLACKLIST_FLAG = "blacklist"; + private static final int BASE64_FLAGS = Base64.NO_PADDING | Base64.NO_WRAP; private ClassLoader mClassLoader; private String mLayerPath; @@ -553,12 +560,34 @@ public class GraphicsEnvironment { return false; } - // If the application is not opted-in and check whether it's on the blacklist, - // terminate early if it's on the blacklist and fallback to system driver. - if (!isOptIn - && getGlobalSettingsString(coreSettings, Settings.Global.GAME_DRIVER_BLACKLIST) - .contains(ai.packageName)) { - return false; + if (!isOptIn) { + // At this point, the application is on the whitelist only, check whether it's + // on the blacklist, terminate early when it's on the blacklist. + try { + // TODO(b/121350991) Switch to DeviceConfig with property listener. + final String base64String = + coreSettings.getString(Settings.Global.GAME_DRIVER_BLACKLIST); + if (base64String != null && !base64String.isEmpty()) { + final Blacklists blacklistsProto = + Blacklists.parseFrom(Base64.decode(base64String, BASE64_FLAGS)); + final List<Blacklist> blacklists = blacklistsProto.getBlacklistsList(); + final long driverVersionCode = driverAppInfo.longVersionCode; + for (Blacklist blacklist : blacklists) { + if (blacklist.getVersionCode() == driverVersionCode) { + for (String pkgName : blacklist.getPackageNamesList()) { + if (pkgName == packageName) { + return false; + } + } + break; + } + } + } + } catch (InvalidProtocolBufferException e) { + if (DEBUG) { + Log.w(TAG, "Can't parse blacklist, skip and continue..."); + } + } } } |
