summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aconfig/FeatureFlags.aconfig11
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java9
-rw-r--r--java/src/com/android/intentresolver/ProfileAvailability.kt2
3 files changed, 21 insertions, 1 deletions
diff --git a/aconfig/FeatureFlags.aconfig b/aconfig/FeatureFlags.aconfig
index b7d9ea0d..cdf9eb29 100644
--- a/aconfig/FeatureFlags.aconfig
+++ b/aconfig/FeatureFlags.aconfig
@@ -52,9 +52,20 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
flag {
name: "fix_empty_state_padding"
namespace: "intentresolver"
description: "Always apply systemBar window insets regardless of profiles present"
bug: "338447666"
}
+
+flag {
+ name: "fix_private_space_locked_on_restart"
+ namespace: "intentresolver"
+ description: "Dismiss Share sheet on restart if private space became locked while stopped"
+ bug: "338125945"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 1922c05c..f01fd77c 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -416,6 +416,15 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
@Override
protected final void onRestart() {
super.onRestart();
+ if (mFeatureFlags.fixPrivateSpaceLockedOnRestart()) {
+ if (mChooserMultiProfilePagerAdapter.hasPageForProfile(Profile.Type.PRIVATE.ordinal())
+ && !mProfileAvailability.isAvailable(mProfiles.getPrivateProfile())) {
+ Log.d(TAG, "Exiting due to unavailable profile");
+ finish();
+ return;
+ }
+ }
+
if (!mRegistered) {
mPersonalPackageMonitor.register(
this,
diff --git a/java/src/com/android/intentresolver/ProfileAvailability.kt b/java/src/com/android/intentresolver/ProfileAvailability.kt
index c8e78552..43982727 100644
--- a/java/src/com/android/intentresolver/ProfileAvailability.kt
+++ b/java/src/com/android/intentresolver/ProfileAvailability.kt
@@ -47,7 +47,7 @@ class ProfileAvailability(
/** Query current profile availability. An unavailable profile is one which is not active. */
@MainThread
- fun isAvailable(profile: Profile): Boolean {
+ fun isAvailable(profile: Profile?): Boolean {
return runBlocking(background) {
userInteractor.availability.map { it[profile] == true }.first()
}