diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 6cad16c7db40707296d7a5a770d78796dde41b99..5d4fc4411bd00145bdafda4511f4222f04882186 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3508,10 +3508,13 @@ class Task extends TaskFragment { top.mLetterboxUiController.getLetterboxPositionForVerticalReachability(); } } - // User Aspect Ratio Settings is enabled if the app is not in SCM + // User Aspect Ratio Settings button is enabled if the app is not in SCM and has + // launchable activities info.topActivityEligibleForUserAspectRatioButton = top != null && !info.topActivityInSizeCompat - && top.mLetterboxUiController.shouldEnableUserAspectRatioSettings(); + && top.mLetterboxUiController.shouldEnableUserAspectRatioSettings() + && mAtmService.mContext.getPackageManager() + .getLaunchIntentForPackage(getBasePackageName()) != null; info.topActivityBoundsLetterboxed = top != null && top.areBoundsLetterboxed(); } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index 435a8357dabb481a833661614bf58cb1d236308c..0639deb2fdcab1af4c79767990bc9a826cb0cbb8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -73,6 +73,7 @@ import android.content.ComponentName; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Point; import android.graphics.Rect; @@ -570,12 +571,15 @@ public class TaskTests extends WindowTestsBase { .setWindowingMode(WINDOWING_MODE_FULLSCREEN).setDisplay(display).build(); final Task task = rootTask.getBottomMostTask(); final ActivityRecord root = task.getTopNonFinishingActivity(); + final PackageManager pm = mContext.getPackageManager(); + spyOn(pm); spyOn(mWm.mLetterboxConfiguration); spyOn(root); spyOn(root.mLetterboxUiController); doReturn(true).when(root.mLetterboxUiController) .shouldEnableUserAspectRatioSettings(); + doReturn(new Intent()).when(pm).getLaunchIntentForPackage(anyString()); doReturn(false).when(root).inSizeCompatMode(); doReturn(task).when(root).getOrganizedTask(); @@ -593,6 +597,10 @@ public class TaskTests extends WindowTestsBase { doReturn(true).when(root).inSizeCompatMode(); assertFalse(task.getTaskInfo().topActivityEligibleForUserAspectRatioButton); doReturn(false).when(root).inSizeCompatMode(); + + // When app doesn't have any launchable activities the button is not enabled + doReturn(null).when(pm).getLaunchIntentForPackage(anyString()); + assertFalse(task.getTaskInfo().topActivityEligibleForUserAspectRatioButton); } /**