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

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

Issue 960913003: [Android] Measure AppMenu animation jankiness by frame times UMA. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cancel animation on dismiss Created 5 years, 10 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java
index 9b879403b31840af88dcfb636a33c22c222f17ed..bc1bcf10a04073ed219c65bc22125fc508323d5d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java
@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.appmenu;
import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorSet;
import android.content.Context;
import android.content.res.Resources;
@@ -27,6 +28,7 @@ import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.PopupWindow.OnDismissListener;
+import org.chromium.base.AnimationFrameTimeHistogram;
import org.chromium.base.SysUtils;
import org.chromium.chrome.R;
@@ -53,6 +55,9 @@ public class AppMenu implements OnItemClickListener, OnKeyListener {
private AppMenuHandler mHandler;
private int mCurrentScreenRotation = -1;
private boolean mIsByHardwareButton;
+ private AnimatorSet mMenuItemEnterAnimator;
+ private AnimatorListener mAnimationHistogramRecorder = AnimationFrameTimeHistogram
+ .getAnimatorRecorder("WrenchMenu.OpeningAnimationFrameTimes");
/**
* Creates and sets up the App Menu.
@@ -140,6 +145,10 @@ public class AppMenu implements OnItemClickListener, OnKeyListener {
if (mPopup.getAnchorView() instanceof ImageButton) {
((ImageButton) mPopup.getAnchorView()).setSelected(false);
}
+
+ if (mMenuItemEnterAnimator != null) mMenuItemEnterAnimator.cancel();
+
+ mHandler.appMenuDismissed();
mHandler.onMenuVisibilityChanged(false);
}
});
@@ -299,7 +308,6 @@ public class AppMenu implements OnItemClickListener, OnKeyListener {
* Dismisses the app menu and cancels the drag-to-scroll if it is taking place.
*/
void dismiss() {
- mHandler.appMenuDismissed();
if (isShowing()) {
mPopup.dismiss();
}
@@ -361,7 +369,7 @@ public class AppMenu implements OnItemClickListener, OnKeyListener {
}
private void runMenuItemEnterAnimations() {
- AnimatorSet animation = new AnimatorSet();
+ mMenuItemEnterAnimator = new AnimatorSet();
AnimatorSet.Builder builder = null;
ViewGroup list = mPopup.getListView();
@@ -370,13 +378,14 @@ public class AppMenu implements OnItemClickListener, OnKeyListener {
Object animatorObject = view.getTag(R.id.menu_item_enter_anim_id);
if (animatorObject != null) {
if (builder == null) {
- builder = animation.play((Animator) animatorObject);
+ builder = mMenuItemEnterAnimator.play((Animator) animatorObject);
} else {
builder.with((Animator) animatorObject);
}
}
}
- animation.start();
+ mMenuItemEnterAnimator.addListener(mAnimationHistogramRecorder);
+ mMenuItemEnterAnimator.start();
}
}
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698