diff options
author | 2020-01-06 10:54:00 +0800 | |
---|---|---|
committer | 2020-01-14 16:37:18 +0800 | |
commit | 2f1f223e4073c0b8f23f82e34ce1828a993431e8 (patch) | |
tree | b82b77c41b57325207b5fb4fb8df9202daf56aae | |
parent | c01a5880f680c64d247e047681ca743f44c0173b (diff) |
Update Storage's rootInfo when open the drawer
Test: atest DocumentsUIGoogleTests
Test: manual
Fix: 137054714
Fix: 69722064
Fix: 143925280
Fix: 144067522
Change-Id: I70134ed54e9f342f38cd0475baa21eb4ecbdd944
-rw-r--r-- | src/com/android/documentsui/DrawerController.java | 4 | ||||
-rw-r--r-- | src/com/android/documentsui/sidebar/RootsFragment.java | 19 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/com/android/documentsui/DrawerController.java b/src/com/android/documentsui/DrawerController.java index 4c3a9f473..682242244 100644 --- a/src/com/android/documentsui/DrawerController.java +++ b/src/com/android/documentsui/DrawerController.java @@ -29,6 +29,7 @@ import androidx.drawerlayout.widget.DrawerLayout.DrawerListener; import androidx.legacy.app.ActionBarDrawerToggle; import com.android.documentsui.base.Display; +import com.android.documentsui.base.Providers; /** * A facade over the various pieces comprising "roots fragment in a Drawer". @@ -201,6 +202,9 @@ public abstract class DrawerController implements DrawerListener { @Override public void onDrawerOpened(View drawerView) { mToggle.onDrawerOpened(drawerView); + // Update the information for Storage's root + DocumentsApplication.getProvidersCache(drawerView.getContext()).updateAuthorityAsync( + Providers.AUTHORITY_STORAGE); } @Override diff --git a/src/com/android/documentsui/sidebar/RootsFragment.java b/src/com/android/documentsui/sidebar/RootsFragment.java index 4db65f37d..498f957b2 100644 --- a/src/com/android/documentsui/sidebar/RootsFragment.java +++ b/src/com/android/documentsui/sidebar/RootsFragment.java @@ -66,6 +66,7 @@ import com.android.documentsui.base.BooleanConsumer; import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.DocumentStack; import com.android.documentsui.base.Events; +import com.android.documentsui.base.Providers; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.Shared; import com.android.documentsui.base.State; @@ -246,9 +247,21 @@ public class RootsFragment extends Fragment { final String excludePackage = excludeSelf ? activity.getCallingPackage() : null; List<Item> sortedItems = sortLoadResult(roots, excludePackage, handlerAppIntent, DocumentsApplication.getProvidersCache(getContext())); + + // Get the first visible position and offset + final int firstPosition = mList.getFirstVisiblePosition(); + View firstChild = mList.getChildAt(0); + final int offset = + firstChild != null ? firstChild.getTop() - mList.getPaddingTop() : 0; + final int oriItemCount = mAdapter != null ? mAdapter.getCount() : 0; mAdapter = new RootsAdapter(activity, sortedItems, mDragListener); mList.setAdapter(mAdapter); + // recover the position. + if (oriItemCount == mAdapter.getCount()) { + mList.setSelectionFromTop(firstPosition, offset); + } + mInjector.shortcutsUpdater.accept(roots); mInjector.appsRowManager.updateList(mApplicationItemList); mInjector.appsRowManager.updateView(activity); @@ -421,6 +434,12 @@ public class RootsFragment extends Fragment { @Override public void onResume() { super.onResume(); + final Context context = getActivity(); + // Update the information for Storage's root + if (context != null) { + DocumentsApplication.getProvidersCache(context).updateAuthorityAsync( + Providers.AUTHORITY_STORAGE); + } onDisplayStateChanged(); } |