summaryrefslogtreecommitdiff
path: root/core/java/android/os/GraphicsEnvironment.java
diff options
context:
space:
mode:
authorPeiyong Lin <lpy@google.com>2019-02-13 19:58:53 +0000
committerPeiyong Lin <lpy@google.com>2019-02-13 19:59:18 +0000
commit67773e8b878c9c789c56f96f7efd23ef9e710249 (patch)
treebb92a20177f28594dd986c11391fb429c354ec0a /core/java/android/os/GraphicsEnvironment.java
parent50350c15b8f439a42cf9d359d3c98a91fdd7966e (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.java41
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...");
+ }
+ }
}
}