From 5824b897630b58453ee1098b70f08be2c2809a66 Mon Sep 17 00:00:00 2001 From: Paul Hobbs Date: Sat, 19 Jun 2021 17:10:48 +0000 Subject: [PATCH] Revert "Revert "Temporarily exclude Launcher from sandboxing; to be reverted once"" This reverts commit 202e35b7cf7fc94e5e2ab0cc6f2b5b921f205889. Reason for revert: Breaks Launcher tests (b/191395224, http://go/forrest-run/L01400000924167319) Bug: 191395224 Bug: 191492708 Bug: 191488971 Change-Id: I325a024daed9cf643f7cd2cb9a536637c13262fa --- core/java/android/view/Display.java | 42 ++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index 66048d1772280..9cb0d1ff2c3f4 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -25,9 +25,11 @@ import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.TestApi; +import android.app.ActivityThread; import android.app.KeyguardManager; import android.app.WindowConfiguration; import android.compat.annotation.UnsupportedAppUsage; +import android.content.ComponentName; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.content.res.Resources; @@ -48,11 +50,14 @@ import android.util.ArraySet; import android.util.DisplayMetrics; import android.util.Log; +import com.android.internal.R; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Optional; /** * Provides information about the size and density of a logical display. @@ -116,6 +121,12 @@ public final class Display { */ private boolean mMayAdjustByFixedRotation; + /** + * Cache if the application is the recents component. + * TODO(b/179308296) Remove once Launcher addresses issue + */ + private Optional mIsRecentsComponent = Optional.empty(); + /** * The default Display id, which is the id of the primary display assuming there is one. */ @@ -1452,7 +1463,36 @@ public final class Display { return false; } final Configuration config = mResources.getConfiguration(); - return config != null && !config.windowConfiguration.getMaxBounds().isEmpty(); + // TODO(b/179308296) Temporarily exclude Launcher from being given max bounds, by checking + // if the caller is the recents component. + return config != null && !config.windowConfiguration.getMaxBounds().isEmpty() + && !isRecentsComponent(); + } + + /** + * Returns {@code true} when the calling package is the recents component. + * TODO(b/179308296) Remove once Launcher addresses issue + */ + boolean isRecentsComponent() { + if (mIsRecentsComponent.isPresent()) { + return mIsRecentsComponent.get(); + } + if (mResources == null) { + return false; + } + try { + String recentsComponent = mResources.getString(R.string.config_recentsComponentName); + if (recentsComponent == null) { + return false; + } + String recentsPackage = ComponentName.unflattenFromString(recentsComponent) + .getPackageName(); + mIsRecentsComponent = Optional.of(recentsPackage != null + && recentsPackage.equals(ActivityThread.currentPackageName())); + return mIsRecentsComponent.get(); + } catch (Resources.NotFoundException e) { + return false; + } } /**