From 71342b3d9f6f64c3c2c5b7a2b4ebb244ad983964 Mon Sep 17 00:00:00 2001 From: Andrey Epin Date: Tue, 15 Nov 2022 13:57:38 -0800 Subject: 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 --- .../android/intentresolver/ResolverActivity.java | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'java/src') 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 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() { -- cgit v1.2.3-59-g8ed1b