From e5b369c48f055145ff711a7919e910a00f579744 Mon Sep 17 00:00:00 2001 From: arangelov Date: Thu, 12 Mar 2020 17:36:05 +0000 Subject: Start quiet mode from a background thread. The method is blocking, so we shouldn't call it from the UI thread. This CL also fixes comparison of UserHandle objects, as they should use Object#equals() instead of "==". Test: manual Fixes: 151072826 Change-Id: I1a107fb9e20ed7eaad470057942870cc427b00b5 --- .../internal/app/AbstractMultiProfilePagerAdapter.java | 11 +++++++---- core/java/com/android/internal/app/ChooserActivity.java | 6 +++--- .../android/internal/app/ChooserMultiProfilePagerAdapter.java | 4 ++-- core/java/com/android/internal/app/ResolverActivity.java | 11 ++++++----- .../internal/app/ResolverMultiProfilePagerAdapter.java | 4 ++-- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index fa567f235c94..ec2653fe67b2 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -26,6 +26,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.IPackageManager; import android.content.pm.ResolveInfo; +import android.os.AsyncTask; import android.os.UserHandle; import android.os.UserManager; import android.stats.devicepolicy.DevicePolicyEnums; @@ -90,7 +91,9 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { @Override public void requestQuietModeEnabled(boolean enabled, UserHandle workProfileUserHandle) { - userManager.requestQuietModeEnabled(enabled, workProfileUserHandle); + AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> { + userManager.requestQuietModeEnabled(enabled, workProfileUserHandle); + }); mIsWaitingToEnableWorkProfile = true; } }; @@ -284,7 +287,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { } private int userHandleToPageIndex(UserHandle userHandle) { - if (userHandle == getPersonalListAdapter().mResolverListController.getUserHandle()) { + if (userHandle.equals(getPersonalListAdapter().mResolverListController.getUserHandle())) { return PROFILE_PERSONAL; } else { return PROFILE_WORK; @@ -293,7 +296,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { private boolean rebuildTab(ResolverListAdapter activeListAdapter, boolean doPostProcessing) { UserHandle listUserHandle = activeListAdapter.getUserHandle(); - if (listUserHandle == mWorkProfileUserHandle + if (listUserHandle.equals(mWorkProfileUserHandle) && mInjector.isQuietModeEnabled(mWorkProfileUserHandle)) { DevicePolicyEventLogger .createEvent(DevicePolicyEnums.RESOLVER_EMPTY_STATE_WORK_APPS_DISABLED) @@ -311,7 +314,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { if (UserHandle.myUserId() != listUserHandle.getIdentifier()) { if (!mInjector.hasCrossProfileIntents(activeListAdapter.getIntents(), UserHandle.myUserId(), listUserHandle.getIdentifier())) { - if (listUserHandle == mPersonalProfileUserHandle) { + if (listUserHandle.equals(mPersonalProfileUserHandle)) { DevicePolicyEventLogger.createEvent( DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_PERSONAL) .setStrings(getMetricsCategory()) diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 5620bff5142b..e673a29d095c 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -2129,7 +2129,7 @@ public class ChooserActivity extends ResolverActivity implements return null; } - if (getPersonalProfileUserHandle() == userHandle) { + if (getPersonalProfileUserHandle().equals(userHandle)) { if (mPersonalAppPredictor != null) { return mPersonalAppPredictor; } @@ -2155,7 +2155,7 @@ public class ChooserActivity extends ResolverActivity implements .getSystemService(AppPredictionManager.class); AppPredictor appPredictionSession = appPredictionManager.createAppPredictionSession( appPredictionContext); - if (getPersonalProfileUserHandle() == userHandle) { + if (getPersonalProfileUserHandle().equals(userHandle)) { mPersonalAppPredictor = appPredictionSession; } else { mWorkAppPredictor = appPredictionSession; @@ -2555,7 +2555,7 @@ public class ChooserActivity extends ResolverActivity implements ChooserListAdapter chooserListAdapter = (ChooserListAdapter) listAdapter; if (chooserListAdapter.getUserHandle() - == mChooserMultiProfilePagerAdapter.getCurrentUserHandle()) { + .equals(mChooserMultiProfilePagerAdapter.getCurrentUserHandle())) { mChooserMultiProfilePagerAdapter.getActiveAdapterView() .setAdapter(mChooserMultiProfilePagerAdapter.getCurrentRootAdapter()); mChooserMultiProfilePagerAdapter diff --git a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java index 2167b1ebd473..c6a00f3e46b4 100644 --- a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java @@ -93,10 +93,10 @@ public class ChooserMultiProfilePagerAdapter extends AbstractMultiProfilePagerAd @Override @Nullable ChooserListAdapter getListAdapterForUserHandle(UserHandle userHandle) { - if (getActiveListAdapter().getUserHandle() == userHandle) { + if (getActiveListAdapter().getUserHandle().equals(userHandle)) { return getActiveListAdapter(); } else if (getInactiveListAdapter() != null - && getInactiveListAdapter().getUserHandle() == userHandle) { + && getInactiveListAdapter().getUserHandle().equals(userHandle)) { return getInactiveListAdapter(); } return null; diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index ec371d9a7311..086a718ad337 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1242,12 +1242,12 @@ public class ResolverActivity extends Activity implements } private void maybeLogCrossProfileTargetLaunch(TargetInfo cti, UserHandle currentUserHandle) { - if (!hasWorkProfile() || currentUserHandle == getUser()) { + if (!hasWorkProfile() || currentUserHandle.equals(getUser())) { return; } DevicePolicyEventLogger .createEvent(DevicePolicyEnums.RESOLVER_CROSS_PROFILE_TARGET_OPENED) - .setBoolean(currentUserHandle == getPersonalProfileUserHandle()) + .setBoolean(currentUserHandle.equals(getPersonalProfileUserHandle())) .setStrings(getMetricsCategory(), cti instanceof ChooserTargetInfo ? "direct_share" : "other_target") .write(); @@ -1486,7 +1486,8 @@ public class ResolverActivity extends Activity implements DevicePolicyEventLogger .createEvent(DevicePolicyEnums.RESOLVER_AUTOLAUNCH_CROSS_PROFILE_TARGET) - .setBoolean(activeListAdapter.getUserHandle() == getPersonalProfileUserHandle()) + .setBoolean(activeListAdapter.getUserHandle() + .equals(getPersonalProfileUserHandle())) .setStrings(getMetricsCategory()) .write(); safelyStartActivity(activeProfileTarget); @@ -1778,7 +1779,7 @@ public class ResolverActivity extends Activity implements @Override // ResolverListCommunicator public void onHandlePackagesChanged(ResolverListAdapter listAdapter) { if (listAdapter == mMultiProfilePagerAdapter.getActiveListAdapter()) { - if (listAdapter.getUserHandle() == getWorkProfileUserHandle() + if (listAdapter.getUserHandle().equals(getWorkProfileUserHandle()) && mMultiProfilePagerAdapter.isWaitingToEnableWorkProfile()) { // We have just turned on the work profile and entered the pass code to start it, // now we are waiting to receive the ACTION_USER_UNLOCKED broadcast. There is no @@ -1819,7 +1820,7 @@ public class ResolverActivity extends Activity implements mMultiProfilePagerAdapter.markWorkProfileEnabledBroadcastReceived(); } if (mMultiProfilePagerAdapter.getCurrentUserHandle() - == getWorkProfileUserHandle()) { + .equals(getWorkProfileUserHandle())) { mMultiProfilePagerAdapter.rebuildActiveTab(true); } else { mMultiProfilePagerAdapter.clearInactiveProfileCache(); diff --git a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java index 0440f5e92ce4..578f6ae63ff1 100644 --- a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java @@ -103,10 +103,10 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA @Override @Nullable ResolverListAdapter getListAdapterForUserHandle(UserHandle userHandle) { - if (getActiveListAdapter().getUserHandle() == userHandle) { + if (getActiveListAdapter().getUserHandle().equals(userHandle)) { return getActiveListAdapter(); } else if (getInactiveListAdapter() != null - && getInactiveListAdapter().getUserHandle() == userHandle) { + && getInactiveListAdapter().getUserHandle().equals(userHandle)) { return getInactiveListAdapter(); } return null; -- cgit v1.2.3-59-g8ed1b