Fix StrictMode violation
Work around bug b/120099466 in Android < Q in which faild reflection
causes disk reads.
BUG=948308
Change-Id: I38ab4c55a9e11f2bb2a5153740894f9f4f6c88d7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1574940
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Commit-Queue: Paul Miller <paulmiller@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652627}
diff --git a/ui/android/java/src/org/chromium/ui/touchless/TouchlessEventHandler.java b/ui/android/java/src/org/chromium/ui/touchless/TouchlessEventHandler.java
index 5720dad1..83e7a82c 100644
--- a/ui/android/java/src/org/chromium/ui/touchless/TouchlessEventHandler.java
+++ b/ui/android/java/src/org/chromium/ui/touchless/TouchlessEventHandler.java
@@ -4,6 +4,10 @@
package org.chromium.ui.touchless;
+import android.os.StrictMode;
+
+import org.chromium.base.BuildInfo;
+
/**
* org.chromium.ui.touchless.TouchlessEventHandler
*/
@@ -21,11 +25,16 @@
private static TouchlessEventHandler sInstance;
static {
+ // Work around Android bug b/120099466 in which failed reflection causes disk reads.
+ StrictMode.ThreadPolicy oldPolicy = null;
+ if (!BuildInfo.isAtLeastQ()) oldPolicy = StrictMode.allowThreadDiskReads();
try {
sInstance = (TouchlessEventHandler) Class.forName(EVENT_HANDLER_INTERNAL).newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| IllegalArgumentException e) {
sInstance = null;
+ } finally {
+ if (oldPolicy != null) StrictMode.setThreadPolicy(oldPolicy);
}
}
@@ -102,4 +111,4 @@
boolean left, boolean right, boolean up, boolean down) {}
protected void fallbackCursorModeSetCursorVisibilityInternal(boolean visible) {}
-}
\ No newline at end of file
+}