summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ivan Chiang <chiangi@google.com> 2020-01-06 10:54:00 +0800
committer Ivan Chiang <chiangi@google.com> 2020-01-14 16:37:18 +0800
commit2f1f223e4073c0b8f23f82e34ce1828a993431e8 (patch)
treeb82b77c41b57325207b5fb4fb8df9202daf56aae
parentc01a5880f680c64d247e047681ca743f44c0173b (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.java4
-rw-r--r--src/com/android/documentsui/sidebar/RootsFragment.java19
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();
}