Merge "Add flag for APIs that use expected presentation time" into main
diff --git a/core/api/current.txt b/core/api/current.txt
index 43c8214..f340e16 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -54456,8 +54456,8 @@
public class AnimationUtils {
ctor public AnimationUtils();
method public static long currentAnimationTimeMillis();
- method public static long getExpectedPresentationTimeMillis();
- method public static long getExpectedPresentationTimeNanos();
+ method @FlaggedApi("android.view.flags.expected_presentation_time_api") public static long getExpectedPresentationTimeMillis();
+ method @FlaggedApi("android.view.flags.expected_presentation_time_api") public static long getExpectedPresentationTimeNanos();
method public static android.view.animation.Animation loadAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
method public static android.view.animation.Interpolator loadInterpolator(android.content.Context, @AnimRes @InterpolatorRes int) throws android.content.res.Resources.NotFoundException;
method public static android.view.animation.LayoutAnimationController loadLayoutAnimation(android.content.Context, @AnimRes int) throws android.content.res.Resources.NotFoundException;
diff --git a/core/java/android/view/animation/AnimationUtils.java b/core/java/android/view/animation/AnimationUtils.java
index 8ba8b8c..a07b62f 100644
--- a/core/java/android/view/animation/AnimationUtils.java
+++ b/core/java/android/view/animation/AnimationUtils.java
@@ -16,7 +16,11 @@
package android.view.animation;
+import static android.view.flags.Flags.FLAG_EXPECTED_PRESENTATION_TIME_API;
+import static android.view.flags.Flags.expectedPresentationTimeApi;
+
import android.annotation.AnimRes;
+import android.annotation.FlaggedApi;
import android.annotation.InterpolatorRes;
import android.annotation.TestApi;
import android.compat.annotation.ChangeId;
@@ -151,7 +155,12 @@
* @return the expected presentation time of a frame in the
* {@link System#nanoTime()} time base.
*/
+ @FlaggedApi(FLAG_EXPECTED_PRESENTATION_TIME_API)
public static long getExpectedPresentationTimeNanos() {
+ if (!expectedPresentationTimeApi()) {
+ return SystemClock.uptimeMillis();
+ }
+
AnimationState state = sAnimationState.get();
return state.mExpectedPresentationTimeNanos;
}
@@ -164,6 +173,7 @@
* @return the expected presentation time of a frame in the
* {@link SystemClock#uptimeMillis()} time base.
*/
+ @FlaggedApi(FLAG_EXPECTED_PRESENTATION_TIME_API)
public static long getExpectedPresentationTimeMillis() {
return getExpectedPresentationTimeNanos() / TimeUtils.NANOS_PER_MS;
}
diff --git a/core/java/android/view/flags/variable_refresh_rate_flags.aconfig b/core/java/android/view/flags/variable_refresh_rate_flags.aconfig
index e3972ad..13a6f8d 100644
--- a/core/java/android/view/flags/variable_refresh_rate_flags.aconfig
+++ b/core/java/android/view/flags/variable_refresh_rate_flags.aconfig
@@ -12,4 +12,11 @@
namespace: "toolkit"
description: "Feature flag for toolkit to set frame rate"
bug: "293512962"
+}
+
+flag {
+ name: "expected_presentation_time_api"
+ namespace: "toolkit"
+ description: "Feature flag for using expected presentation time of the Choreographer"
+ bug: "278730197"
}
\ No newline at end of file