Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
index c3b87f4b165bdb65fcbe83316d117df63db20af2..cc1112ac970f542c91cd4abf6250e30160d9a544 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
@@ -20,6 +20,7 @@ import android.graphics.drawable.Drawable; |
import android.net.Uri; |
import android.os.Build; |
import android.os.Bundle; |
+import android.os.StrictMode; |
import android.os.SystemClock; |
import android.support.v7.app.AlertDialog; |
import android.util.DisplayMetrics; |
@@ -341,7 +342,16 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
WarmupManager.getInstance().transferViewHierarchyTo(contentParent); |
contentParent.removeView(placeHolderView); |
} else { |
- setContentView(R.layout.main); |
+ // Allow disk access for the setContentView call. |
+ // On certain android configurations setContentView results in disk writes outside of |
+ // our control. So, we have to disable StrictMode to work. See crbug.com/639352. |
+ StrictMode.ThreadPolicy oldPolicy = StrictMode.getThreadPolicy(); |
+ StrictMode.allowThreadDiskWrites(); |
+ try { |
+ setContentView(R.layout.main); |
+ } finally { |
+ StrictMode.setThreadPolicy(oldPolicy); |
+ } |
if (controlContainerLayoutId != NO_CONTROL_CONTAINER) { |
ViewStub toolbarContainerStub = |
((ViewStub) findViewById(R.id.control_container_stub)); |