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

Unified Diff: base/android/java/src/org/chromium/base/AnimationFrameTimeHistogram.java

Issue 1647803004: Move base to DEPS (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 11 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: base/android/java/src/org/chromium/base/AnimationFrameTimeHistogram.java
diff --git a/base/android/java/src/org/chromium/base/AnimationFrameTimeHistogram.java b/base/android/java/src/org/chromium/base/AnimationFrameTimeHistogram.java
deleted file mode 100644
index ad5cdd815bfcf81fe85952085f4f1656b04f185a..0000000000000000000000000000000000000000
--- a/base/android/java/src/org/chromium/base/AnimationFrameTimeHistogram.java
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.base;
-
-import android.animation.Animator;
-import android.animation.Animator.AnimatorListener;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.TimeAnimator;
-import android.animation.TimeAnimator.TimeListener;
-import android.util.Log;
-
-/**
- * Record Android animation frame rate and save it to UMA histogram. This is mainly for monitoring
- * any jankiness of short Chrome Android animations. It is limited to few seconds of recording.
- */
-public class AnimationFrameTimeHistogram {
- private static final String TAG = "AnimationFrameTimeHistogram";
- private static final int MAX_FRAME_TIME_NUM = 600; // 10 sec on 60 fps.
-
- private final Recorder mRecorder = new Recorder();
- private final String mHistogramName;
-
- /**
- * @param histogramName The histogram name that the recorded frame times will be saved.
- * This must be also defined in histograms.xml
- * @return An AnimatorListener instance that records frame time histogram on start and end
- * automatically.
- */
- public static AnimatorListener getAnimatorRecorder(final String histogramName) {
- return new AnimatorListenerAdapter() {
- private final AnimationFrameTimeHistogram mAnimationFrameTimeHistogram =
- new AnimationFrameTimeHistogram(histogramName);
-
- @Override
- public void onAnimationStart(Animator animation) {
- mAnimationFrameTimeHistogram.startRecording();
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- mAnimationFrameTimeHistogram.endRecording();
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
- mAnimationFrameTimeHistogram.endRecording();
- }
- };
- }
-
- /**
- * @param histogramName The histogram name that the recorded frame times will be saved.
- * This must be also defined in histograms.xml
- */
- public AnimationFrameTimeHistogram(String histogramName) {
- mHistogramName = histogramName;
- }
-
- /**
- * Start recording frame times. The recording can fail if it exceeds a few seconds.
- */
- public void startRecording() {
- mRecorder.startRecording();
- }
-
- /**
- * End recording and save it to histogram. It won't save histogram if the recording wasn't
- * successful.
- */
- public void endRecording() {
- if (mRecorder.endRecording()) {
- nativeSaveHistogram(mHistogramName,
- mRecorder.getFrameTimesMs(), mRecorder.getFrameTimesCount());
- }
- mRecorder.cleanUp();
- }
-
- /**
- * Record Android animation frame rate and return the result.
- */
- private static class Recorder implements TimeListener {
- // TODO(kkimlabs): If we can use in the future, migrate to Choreographer for minimal
- // workload.
- private final TimeAnimator mAnimator = new TimeAnimator();
- private long[] mFrameTimesMs;
- private int mFrameTimesCount;
-
- private Recorder() {
- mAnimator.setTimeListener(this);
- }
-
- private void startRecording() {
- assert !mAnimator.isRunning();
- mFrameTimesCount = 0;
- mFrameTimesMs = new long[MAX_FRAME_TIME_NUM];
- mAnimator.start();
- }
-
- /**
- * @return Whether the recording was successful. If successful, the result is available via
- * getFrameTimesNs and getFrameTimesCount.
- */
- private boolean endRecording() {
- boolean succeeded = mAnimator.isStarted();
- mAnimator.end();
- return succeeded;
- }
-
- private long[] getFrameTimesMs() {
- return mFrameTimesMs;
- }
-
- private int getFrameTimesCount() {
- return mFrameTimesCount;
- }
-
- /**
- * Deallocates the temporary buffer to record frame times. Must be called after ending
- * the recording and getting the result.
- */
- private void cleanUp() {
- mFrameTimesMs = null;
- }
-
- @Override
- public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
- if (mFrameTimesCount == mFrameTimesMs.length) {
- mAnimator.end();
- cleanUp();
- Log.w(TAG, "Animation frame time recording reached the maximum number. It's either"
- + "the animation took too long or recording end is not called.");
- return;
- }
-
- // deltaTime is 0 for the first frame.
- if (deltaTime > 0) {
- mFrameTimesMs[mFrameTimesCount++] = deltaTime;
- }
- }
- }
-
- private native void nativeSaveHistogram(String histogramName, long[] frameTimesMs, int count);
-}

Powered by Google App Engine
This is Rietveld 408576698