Merge "Revert "Add flag to narrow the meaning of JANK_PERCEPTIBLE."" into main
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 69d3e8d..33ba058 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1189,18 +1189,6 @@
         return procState == PROCESS_STATE_FOREGROUND_SERVICE;
     }
 
-    /** @hide Should this process state be considered jank perceptible? */
-    public static final boolean isProcStateJankPerceptible(int procState) {
-        if (Flags.jankPerceptibleNarrow()) {
-            return procState == PROCESS_STATE_PERSISTENT_UI
-                || procState == PROCESS_STATE_TOP
-                || procState == PROCESS_STATE_IMPORTANT_FOREGROUND
-                || procState == PROCESS_STATE_TOP_SLEEPING;
-        } else {
-            return !isProcStateCached(procState);
-        }
-    }
-
     /** @hide requestType for assist context: only basic information. */
     public static final int ASSIST_CONTEXT_BASIC = 0;
 
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 3cc5ff0..27661ce 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -3918,7 +3918,12 @@
             if (mLastProcessState == processState) {
                 return;
             }
-            updateVmProcessState(mLastProcessState, processState);
+            // Do not issue a transitional GC if we are transitioning between 2 cached states.
+            // Only update if the state flips between cached and uncached or vice versa
+            if (ActivityManager.isProcStateCached(mLastProcessState)
+                    != ActivityManager.isProcStateCached(processState)) {
+                updateVmProcessState(processState);
+            }
             mLastProcessState = processState;
             if (localLOGV) {
                 Slog.i(TAG, "******************* PROCESS STATE CHANGED TO: " + processState
@@ -3927,21 +3932,18 @@
         }
     }
 
-    /** Converts a process state to a VM process state. */
-    private static int toVmProcessState(int processState) {
-        final int state = ActivityManager.isProcStateJankPerceptible(processState)
-                ? VM_PROCESS_STATE_JANK_PERCEPTIBLE
-                : VM_PROCESS_STATE_JANK_IMPERCEPTIBLE;
-        return state;
-    }
-
     /** Update VM state based on ActivityManager.PROCESS_STATE_* constants. */
-    private void updateVmProcessState(int lastProcessState, int newProcessState) {
-        final int state = toVmProcessState(newProcessState);
-        if (lastProcessState == PROCESS_STATE_UNKNOWN
-                || state != toVmProcessState(lastProcessState)) {
-            VMRuntime.getRuntime().updateProcessState(state);
-        }
+    // Currently ART VM only uses state updates for Transitional GC, and thus
+    // this function initiates a Transitional GC for transitions into Cached apps states.
+    private void updateVmProcessState(int processState) {
+        // Only a transition into Cached state should result in a Transitional GC request
+        // to the ART runtime. Update VM state to JANK_IMPERCEPTIBLE in that case.
+        // Note that there are 4 possible cached states currently, all of which are
+        // JANK_IMPERCEPTIBLE from GC point of view.
+        final int state = ActivityManager.isProcStateCached(processState)
+                ? VM_PROCESS_STATE_JANK_IMPERCEPTIBLE
+                : VM_PROCESS_STATE_JANK_PERCEPTIBLE;
+        VMRuntime.getRuntime().updateProcessState(state);
     }
 
     @Override
diff --git a/core/java/android/app/activity_manager.aconfig b/core/java/android/app/activity_manager.aconfig
index 21ec585..44940ae 100644
--- a/core/java/android/app/activity_manager.aconfig
+++ b/core/java/android/app/activity_manager.aconfig
@@ -166,10 +166,3 @@
      bug: "362537357"
      is_exported: true
 }
-
-flag {
-    name: "jank_perceptible_narrow"
-    namespace: "system_performance"
-    description: "Narrow the scope of Jank Perceptible"
-    bug: "304837972"
-}