From b91d08f1a82165563f080999ef2bb4c2780830d4 Mon Sep 17 00:00:00 2001 From: arangelov Date: Thu, 5 Mar 2020 21:50:14 +0000 Subject: [PATCH] Autolaunch if one app in active profile and empty state in the inactive. Fixes: 150883045 Test: manual Change-Id: I2fbc862cc73c5763de9aaff436c01de8dbc83efb --- .../app/AbstractMultiProfilePagerAdapter.java | 2 ++ .../com/android/internal/app/ResolverActivity.java | 11 +++++++---- .../android/internal/app/ResolverListAdapter.java | 14 +++++++++----- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index 18d77386d063b..38ec4cbf3c668 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -389,6 +389,8 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { Button button = emptyStateView.findViewById(R.id.resolver_empty_state_button); button.setVisibility(buttonOnClick != null ? View.VISIBLE : View.GONE); button.setOnClickListener(buttonOnClick); + + activeListAdapter.markTabLoaded(); } private void showSpinner(View emptyStateView) { diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index bd7b47d853d29..c0ee8985b45ff 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1337,9 +1337,12 @@ public class ResolverActivity extends Activity implements + "cannot be null."); } // We partially rebuild the inactive adapter to determine if we should auto launch - boolean rebuildCompleted = mMultiProfilePagerAdapter.rebuildActiveTab(true); + // isTabLoaded will be true here if the empty state screen is shown instead of the list. + boolean rebuildCompleted = mMultiProfilePagerAdapter.rebuildActiveTab(true) + || mMultiProfilePagerAdapter.getActiveListAdapter().isTabLoaded(); if (shouldShowTabs()) { - boolean rebuildInactiveCompleted = mMultiProfilePagerAdapter.rebuildInactiveTab(false); + boolean rebuildInactiveCompleted = mMultiProfilePagerAdapter.rebuildInactiveTab(false) + || mMultiProfilePagerAdapter.getInactiveListAdapter().isTabLoaded(); rebuildCompleted = rebuildCompleted && rebuildInactiveCompleted; } @@ -1399,8 +1402,8 @@ public class ResolverActivity extends Activity implements if (numberOfProfiles == 1 && maybeAutolaunchIfSingleTarget()) { return true; } else if (numberOfProfiles == 2 - && mMultiProfilePagerAdapter.getActiveListAdapter().isListLoaded() - && mMultiProfilePagerAdapter.getInactiveListAdapter().isListLoaded() + && mMultiProfilePagerAdapter.getActiveListAdapter().isTabLoaded() + && mMultiProfilePagerAdapter.getInactiveListAdapter().isTabLoaded() && (maybeAutolaunchIfNoAppsOnInactiveTab() || maybeAutolaunchIfCrossProfileSupported())) { return true; diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java index 54453d0d0f465..61a404e3bc5fe 100644 --- a/core/java/com/android/internal/app/ResolverListAdapter.java +++ b/core/java/com/android/internal/app/ResolverListAdapter.java @@ -87,7 +87,7 @@ public class ResolverListAdapter extends BaseAdapter { private final ResolverListCommunicator mResolverListCommunicator; private Runnable mPostListReadyRunnable; private final boolean mIsAudioCaptureDevice; - private boolean mIsListLoaded; + private boolean mIsTabLoaded; public ResolverListAdapter(Context context, List payloadIntents, Intent[] initialIntents, List rList, @@ -192,7 +192,7 @@ public class ResolverListAdapter extends BaseAdapter { mLastChosenPosition = -1; mAllTargetsAreBrowsers = false; mDisplayList.clear(); - mIsListLoaded = false; + mIsTabLoaded = false; if (mBaseResolveList != null) { currentResolveList = mUnfilteredResolveList = new ArrayList<>(); @@ -354,7 +354,7 @@ public class ResolverListAdapter extends BaseAdapter { mResolverListCommunicator.sendVoiceChoicesIfNeeded(); postListReadyRunnable(doPostProcessing); - mIsListLoaded = true; + mIsTabLoaded = true; } /** @@ -614,8 +614,12 @@ public class ResolverListAdapter extends BaseAdapter { return mIntents; } - protected boolean isListLoaded() { - return mIsListLoaded; + protected boolean isTabLoaded() { + return mIsTabLoaded; + } + + protected void markTabLoaded() { + mIsTabLoaded = true; } /**