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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/Utils.java

Issue 1276523003: Don't trigger HW acceleration from Toasts on low-end devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check Toast acceleration only on LOLLIPOP+ Created 5 years, 4 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/javatests/src/org/chromium/chrome/browser/hardware_acceleration/Utils.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/Utils.java b/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/Utils.java
index a0ef8a2ceafe96a2ad930225b55dee9caf427484..0fccdc1ff5e196d78941856c99cfa851c38e7fb2 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/Utils.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/hardware_acceleration/Utils.java
@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.hardware_acceleration;
import android.app.Dialog;
+import android.os.Build;
import android.view.View;
import android.view.ViewTreeObserver.OnPreDrawListener;
@@ -14,6 +15,7 @@ import org.chromium.base.SysUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.content.browser.test.util.CallbackHelper;
+import org.chromium.ui.widget.Toast;
import java.util.HashSet;
import java.util.Set;
@@ -31,6 +33,11 @@ public class Utils {
public static void assertHardwareAcceleration(ChromeActivity activity) throws Exception {
assertActivityAcceleration(activity);
assertChildWindowAcceleration(activity);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ // Toasts are only HW accelerated on LOLLIPOP+
+ assertToastAcceleration(activity);
+ }
}
/**
@@ -63,12 +70,33 @@ public class Utils {
});
listenerCalled.waitForCallback(0);
+ assertAcceleration(accelerated);
+ }
- if (SysUtils.isLowEndDevice()) {
- Assert.assertFalse(accelerated.get());
- } else {
- Assert.assertTrue(accelerated.get());
- }
+ private static void assertToastAcceleration(final ChromeActivity activity)
+ throws Exception {
+ final AtomicBoolean accelerated = new AtomicBoolean();
+ final CallbackHelper listenerCalled = new CallbackHelper();
+
+ ThreadUtils.postOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ // We are using Toast.makeText(context, ...) instead of new Toast(context)
+ // because that Toast constructor is unused and is deleted by proguard.
+ Toast toast = Toast.makeText(activity, "", Toast.LENGTH_SHORT);
+ toast.setView(new View(activity) {
+ @Override
+ public void onAttachedToWindow() {
+ accelerated.set(isHardwareAccelerated());
+ listenerCalled.notifyCalled();
+ }
+ });
+ toast.show();
+ }
+ });
+
+ listenerCalled.waitForCallback(0);
+ assertAcceleration(accelerated);
}
private static void assertChildWindowAcceleration(final ChromeActivity activity)
@@ -93,7 +121,10 @@ public class Utils {
});
listenerCalled.waitForCallback(0);
+ assertAcceleration(accelerated);
+ }
+ private static void assertAcceleration(AtomicBoolean accelerated) {
if (SysUtils.isLowEndDevice()) {
Assert.assertFalse(accelerated.get());
} else {

Powered by Google App Engine
This is Rietveld 408576698