Chromium Code Reviews| 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 38f3cb475f0200764e46b93ee6a5591eb43721ad..831aa022ba1be3c9637bf27aef7991f701c103e8 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
| @@ -10,6 +10,7 @@ import android.app.SearchManager; |
| import android.content.Context; |
| import android.content.Intent; |
| import android.content.SharedPreferences; |
| +import android.content.pm.ApplicationInfo; |
| import android.content.res.Configuration; |
| import android.graphics.Bitmap; |
| import android.graphics.Color; |
| @@ -33,6 +34,7 @@ import android.view.ViewStub; |
| import android.view.ViewTreeObserver; |
| import android.view.ViewTreeObserver.OnPreDrawListener; |
| import android.view.Window; |
| +import android.view.WindowManager; |
| import android.view.accessibility.AccessibilityManager; |
| import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener; |
| import android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener; |
| @@ -42,6 +44,7 @@ import org.chromium.base.BaseSwitches; |
| import org.chromium.base.BuildInfo; |
| import org.chromium.base.CommandLine; |
| import org.chromium.base.Log; |
| +import org.chromium.base.SysUtils; |
| import org.chromium.base.ThreadUtils; |
| import org.chromium.base.TraceEvent; |
| import org.chromium.base.VisibleForTesting; |
| @@ -268,6 +271,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
| .removeOnPreDrawListener(mFirstDrawListener); |
| mFirstDrawListener = null; |
| onFirstDrawComplete(); |
| + checkHardwareAcceleration(); |
| return true; |
| } |
| }; |
| @@ -310,6 +314,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
| mCompositorViewHolder = (CompositorViewHolder) findViewById(R.id.compositor_view_holder); |
| mCompositorViewHolder.setRootView(getWindow().getDecorView().getRootView()); |
| + |
| + enableHardwareAcceleration(); |
| } |
| /** |
| @@ -1392,4 +1398,29 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
| @Override |
| public void onSceneChange(Layout layout) { } |
| + |
| + private void enableHardwareAcceleration() { |
| + // HW acceleration is disabled in the manifest. Enable it only on high-end devices. |
| + if (!SysUtils.isLowEndDevice()) { |
| + getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); |
| + } |
| + } |
| + |
| + private void checkHardwareAcceleration() { |
|
aelias_OOO_until_Jul13
2015/07/17 02:48:25
We generally don't add code that intentionally cra
DmitrySkiba
2015/07/17 16:55:14
This is rough DCHECK alternative for the Java - I
|
| + // Check that HW acceleration is disabled only on low-end devices. |
| + if ((getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) { |
| + if (SysUtils.isLowEndDevice() |
| + && getWindow().getDecorView().isHardwareAccelerated()) { |
| + throw new AssertionError(String.format( |
| + "%s uses hardware acceleration on the low-end device!", |
| + getClass().getSimpleName())); |
| + } |
| + if (!SysUtils.isLowEndDevice() |
| + && !getWindow().getDecorView().isHardwareAccelerated()) { |
| + throw new AssertionError(String.format( |
| + "%s doesn't use hardware acceleration on the high-end device!", |
| + getClass().getSimpleName())); |
| + } |
| + } |
| + } |
| } |