Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7275)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java

Issue 1223263009: Disable hardware acceleration for ChromeActivities on low-end devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()));
+ }
+ }
+ }
}
« chrome/android/java/AndroidManifest.xml ('K') | « chrome/android/java/AndroidManifest.xml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698