diff options
| author | 2021-03-01 18:38:47 +0000 | |
|---|---|---|
| committer | 2021-03-09 22:49:52 +0000 | |
| commit | 6574e37f7c40aada1a4d823b51fa4772ba368114 (patch) | |
| tree | 785fb2f832d8793bb5c2bf8732c530a56d610b7b | |
| parent | 93281edad3583226c981152aa97195a398709e51 (diff) | |
Temporarily exclude Launcher from sandboxing; to be reverted once
bug is addressed.
Bug: 181219241
Test: Manual
Change-Id: I468104a853908c5649359084fa9d683e7f1ce532
| -rw-r--r-- | core/java/android/view/Display.java | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index 229e74b262b8..b98ef1410ebf 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -24,9 +24,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; @@ -45,11 +47,14 @@ import android.os.SystemClock; 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. @@ -113,6 +118,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<Boolean> mIsRecentsComponent = Optional.empty(); + + /** * The default Display id, which is the id of the primary display assuming there is one. */ public static final int DEFAULT_DISPLAY = 0; @@ -1383,7 +1394,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; + } } /** |