summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2022-11-15 13:57:38 -0800
committer Andrey Epin <ayepin@google.com> 2022-11-28 08:57:15 -0800
commit71342b3d9f6f64c3c2c5b7a2b4ebb244ad983964 (patch)
tree87d935f6c7e30446854a5b4e0c7c00a2ae5db938 /java
parent0919a83ee94b469eba0a72ee6e79fddb1e7dc7f7 (diff)
Fix work profile record initialization.
Change the work pforifle field into a lazy initialization delegate; use it as a single source for the work profile user handle value to avoid getWorkProfileUserHandle/fetchWorkProfileUserHandle confusion. Test: manual test Test: atest IntentResolverUnitTests Change-Id: I66e8b22dc7e7f355d964593f383d6a7c5d5827c3
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/intentresolver/ResolverActivity.java27
1 files changed, 18 insertions, 9 deletions
diff --git a/java/src/com/android/intentresolver/ResolverActivity.java b/java/src/com/android/intentresolver/ResolverActivity.java
index fece8d3d..91d3cc7f 100644
--- a/java/src/com/android/intentresolver/ResolverActivity.java
+++ b/java/src/com/android/intentresolver/ResolverActivity.java
@@ -107,7 +107,6 @@ import com.android.intentresolver.AbstractMultiProfilePagerAdapter.OnSwitchOnWor
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.Profile;
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.QuietModeManager;
import com.android.intentresolver.NoCrossProfileEmptyStateProvider.DevicePolicyBlockerEmptyState;
-import com.android.intentresolver.chooser.ChooserTargetInfo;
import com.android.intentresolver.chooser.DisplayResolveInfo;
import com.android.intentresolver.chooser.TargetInfo;
import com.android.intentresolver.widget.ResolverDrawerLayout;
@@ -123,6 +122,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
+import java.util.function.Supplier;
/**
* This activity is displayed when the system attempts to start an Intent for
@@ -223,7 +223,11 @@ public class ResolverActivity extends FragmentActivity implements
private BroadcastReceiver mWorkProfileStateReceiver;
private UserHandle mHeaderCreatorUser;
- private UserHandle mWorkProfileUserHandle;
+ private Supplier<UserHandle> mLazyWorkProfileUserHandle = () -> {
+ final UserHandle result = fetchWorkProfileUserProfile();
+ mLazyWorkProfileUserHandle = () -> result;
+ return result;
+ };
@Nullable
private OnSwitchOnWorkSelectedListener mOnSwitchOnWorkSelectedListener;
@@ -408,7 +412,6 @@ public class ResolverActivity extends FragmentActivity implements
mDefaultTitleResId = defaultTitleRes;
mSupportsAlwaysUseOption = supportsAlwaysUseOption;
- mWorkProfileUserHandle = fetchWorkProfileUserProfile();
// The last argument of createResolverListAdapter is whether to do special handling
// of the last used choice to highlight it in the list. We need to always
@@ -699,19 +702,25 @@ public class ResolverActivity extends FragmentActivity implements
protected UserHandle getPersonalProfileUserHandle() {
return UserHandle.of(ActivityManager.getCurrentUser());
}
- protected @Nullable UserHandle getWorkProfileUserHandle() {
- return mWorkProfileUserHandle;
+
+ @Nullable
+ protected UserHandle getWorkProfileUserHandle() {
+ return mLazyWorkProfileUserHandle.get();
}
- protected @Nullable UserHandle fetchWorkProfileUserProfile() {
- mWorkProfileUserHandle = null;
+ @Nullable
+ private UserHandle fetchWorkProfileUserProfile() {
UserManager userManager = getSystemService(UserManager.class);
+ if (userManager == null) {
+ return null;
+ }
+ UserHandle result = null;
for (final UserInfo userInfo : userManager.getProfiles(ActivityManager.getCurrentUser())) {
if (userInfo.isManagedProfile()) {
- mWorkProfileUserHandle = userInfo.getUserHandle();
+ result = userInfo.getUserHandle();
}
}
- return mWorkProfileUserHandle;
+ return result;
}
private boolean hasWorkProfile() {