From 50f641be29464cb5f33e7b81d00be9f1f9c28cea Mon Sep 17 00:00:00 2001 From: Beverly Date: Tue, 10 Apr 2018 16:29:40 -0400 Subject: [PATCH] Update mSortOrder when changed to frequent Update mSortOrder so when the activity is resumed, the apps are sorted how the user wants Test: make ROBOTEST_FILTER=ManageApplicationsTest RunSettingsRoboTests Change-Id: I422846aada29ee254996b2e94da27af7ed935a0b Fixes: 77691626 --- .../ManageApplications.java | 8 +++++--- .../ManageApplicationsTest.java | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index ab8cc714550..301e71bfe4b 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -176,7 +176,8 @@ public class ManageApplications extends InstrumentedFragment private static final int NO_USER_SPECIFIED = -1; // sort order - private int mSortOrder = R.id.sort_order_alpha; + @VisibleForTesting + int mSortOrder = R.id.sort_order_alpha; // whether showing system apps. private boolean mShowSystem; @@ -649,9 +650,8 @@ public class ManageApplications extends InstrumentedFragment switch (item.getItemId()) { case R.id.sort_order_alpha: case R.id.sort_order_size: - mSortOrder = menuId; if (mApplications != null) { - mApplications.rebuild(mSortOrder); + mApplications.rebuild(menuId); } break; case R.id.show_system: @@ -712,6 +712,7 @@ public class ManageApplications extends InstrumentedFragment public void onItemSelected(AdapterView parent, View view, int position, long id) { mFilter = mFilterAdapter.getFilter(position); mApplications.setFilter(mFilter); + if (DEBUG) Log.d(TAG, "Selecting filter " + mFilter); } @@ -986,6 +987,7 @@ public class ManageApplications extends InstrumentedFragment if (sort == mLastSortMode) { return; } + mManageApplications.mSortOrder = sort; mLastSortMode = sort; rebuild(); } diff --git a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java index c75146283ef..66fa212023b 100644 --- a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java +++ b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java @@ -23,6 +23,8 @@ import static com.android.settings.applications.manageapplications.ManageApplica import static com.android.settings.applications.manageapplications.ManageApplications.LIST_TYPE_NOTIFICATION; import static com.google.common.truth.Truth.assertThat; +import static junit.framework.Assert.assertEquals; + import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; @@ -303,6 +305,23 @@ public class ManageApplicationsTest { verify(holder, never()).updateSwitch(any(), anyBoolean(), anyBoolean()); } + @Test + public void sortOrderSavedOnRebuild() { + ManageApplications manageApplications = mock(ManageApplications.class); + manageApplications.mListType = LIST_TYPE_NOTIFICATION; + manageApplications.mSortOrder = -1; + ManageApplications.ApplicationsAdapter adapter = + new ManageApplications.ApplicationsAdapter(mState, + manageApplications, mock(AppFilterItem.class), + mock(Bundle.class)); + + adapter.rebuild(mSortRecent.getItemId()); + assertThat(manageApplications.mSortOrder).isEqualTo(mSortRecent.getItemId()); + + adapter.rebuild(mSortFrequent.getItemId()); + assertThat(manageApplications.mSortOrder).isEqualTo(mSortFrequent.getItemId()); + } + private void setUpOptionMenus() { when(mMenu.findItem(anyInt())).thenAnswer(invocation -> { final Object[] args = invocation.getArguments();