diff --git a/core/api/current.txt b/core/api/current.txt
index b662ed08dbdae..9a2c75fe490a2 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -12165,7 +12165,6 @@ package android.content.pm {
field public static final String FEATURE_RAM_NORMAL = "android.hardware.ram.normal";
field public static final String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
field public static final String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
- field public static final String FEATURE_SEAMLESS_REFRESH_RATE_SWITCHING = "android.software.seamless_refresh_rate_switching";
field public static final String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users";
field public static final String FEATURE_SECURE_LOCK_SCREEN = "android.software.secure_lock_screen";
field public static final String FEATURE_SECURITY_MODEL_COMPATIBLE = "android.hardware.security.model.compatible";
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index c46d94d222e9c..ec490d10d45ea 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2978,14 +2978,6 @@ public abstract class PackageManager {
public static final String FEATURE_VIRTUALIZATION_FRAMEWORK =
"android.software.virtualization_framework";
- /**
- * Feature for {@link #getSystemAvailableFeatures()} and {@link #hasSystemFeature(String)}.
- * This feature indicates whether device supports seamless refresh rate switching.
- */
- @SdkConstant(SdkConstantType.FEATURE)
- public static final String FEATURE_SEAMLESS_REFRESH_RATE_SWITCHING
- = "android.software.seamless_refresh_rate_switching";
-
/**
* Feature for {@link #getSystemAvailableFeatures} and
* {@link #hasSystemFeature(String, int)}: If this feature is supported, the Vulkan
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 23d108fbe36a0..916afd6072f39 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -50,6 +50,8 @@ import android.util.SparseArray;
import android.view.Display;
import android.view.Surface;
+import com.android.internal.R;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -1309,6 +1311,22 @@ public final class DisplayManager {
return mGlobal.shouldAlwaysRespectAppRequestedMode();
}
+ /**
+ * Returns whether device supports seamless refresh rate switching.
+ *
+ * Match content frame rate setting has three options: seamless, non-seamless and never.
+ * The seamless option does nothing if the device does not support seamless refresh rate
+ * switching. This API is used in such a case to hide the seamless option.
+ *
+ * @see DisplayManager#setRefreshRateSwitchingType
+ * @see DisplayManager#getMatchContentFrameRateUserPreference
+ * @hide
+ */
+ public boolean supportsSeamlessRefreshRateSwitching() {
+ return mContext.getResources().getBoolean(
+ R.bool.config_supportsSeamlessRefreshRateSwitching);
+ }
+
/**
* Sets the refresh rate switching type.
* This matches {@link android.provider.Settings.Secure.MATCH_CONTENT_FRAME_RATE}
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 1d18d4195edfd..4ca83db27185c 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -4411,6 +4411,9 @@
true
+
+ true
+
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 54be56805b01e..19c708e56d964 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3879,6 +3879,7 @@
+