OSDN Git Service

Merge "Fix work profile storage bugs." into oc-mr1-dev
authorDaniel Nishi <dhnishi@google.com>
Fri, 15 Sep 2017 00:58:59 +0000 (00:58 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Fri, 15 Sep 2017 00:58:59 +0000 (00:58 +0000)
src/com/android/settings/applications/ManageApplications.java
src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java

index 11eb0cc..deda92a 100644 (file)
@@ -117,6 +117,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
     public static final String EXTRA_VOLUME_NAME = "volumeName";
     public static final String EXTRA_STORAGE_TYPE = "storageType";
     public static final String EXTRA_WORK_ONLY = "workProfileOnly";
+    public static final String EXTRA_WORK_ID = "workId";
 
     private static final String EXTRA_SORT_ORDER = "sortOrder";
     private static final String EXTRA_SHOW_SYSTEM = "showSystem";
@@ -222,6 +223,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
     public static final int STORAGE_TYPE_LEGACY = 2; // Show apps even if they can be categorized.
     public static final int STORAGE_TYPE_PHOTOS_VIDEOS = 3;
 
+    private static final int NO_USER_SPECIFIED = -1;
+
     // sort order
     private int mSortOrder = R.id.sort_order_alpha;
 
@@ -282,6 +285,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
     private String mVolumeUuid;
     private int mStorageType;
     private boolean mIsWorkOnly;
+    private int mWorkUserId;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -338,6 +342,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
         }
         mFilter = getDefaultFilter();
         mIsWorkOnly = args != null ? args.getBoolean(EXTRA_WORK_ONLY) : false;
+        mWorkUserId = args != null ? args.getInt(EXTRA_WORK_ID) : NO_USER_SPECIFIED;
 
         if (savedInstanceState != null) {
             mSortOrder = savedInstanceState.getInt(EXTRA_SORT_ORDER, mSortOrder);
@@ -378,13 +383,15 @@ public class ManageApplications extends InstrumentedPreferenceFragment
                 mApplications.mHasReceivedBridgeCallback =
                         savedInstanceState.getBoolean(EXTRA_HAS_BRIDGE, false);
             }
+            int userId = mIsWorkOnly ? mWorkUserId : UserHandle.getUserId(mCurrentUid);
             if (mStorageType == STORAGE_TYPE_MUSIC) {
                 Context context = getContext();
-                mApplications.setExtraViewController(new MusicViewHolderController(
-                        context,
-                        new StorageStatsSource(context),
-                        mVolumeUuid,
-                        UserHandle.of(UserHandle.getUserId(mCurrentUid))));
+                mApplications.setExtraViewController(
+                        new MusicViewHolderController(
+                                context,
+                                new StorageStatsSource(context),
+                                mVolumeUuid,
+                                UserHandle.of(userId)));
             } else if (mStorageType == STORAGE_TYPE_PHOTOS_VIDEOS) {
                 Context context = getContext();
                 mApplications.setExtraViewController(
@@ -392,7 +399,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
                                 context,
                                 new StorageStatsSource(context),
                                 mVolumeUuid,
-                                UserHandle.of(UserHandle.getUserId(mCurrentUid))));
+                                UserHandle.of(userId)));
             }
             mListView.setAdapter(mApplications);
             mListView.setRecyclerListener(mApplications);
index 163f5b9..7f2cc33 100644 (file)
@@ -20,7 +20,6 @@ import android.app.Fragment;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.net.TrafficStats;
@@ -314,7 +313,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle
     }
 
     private Intent getPhotosIntent() {
-        Bundle args = new Bundle(2);
+        Bundle args = getWorkAnnotatedBundle(2);
         args.putString(
                 ManageApplications.EXTRA_CLASSNAME, Settings.PhotosStorageActivity.class.getName());
         args.putInt(
@@ -336,8 +335,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle
             return null;
         }
 
-        Bundle args = new Bundle();
-        args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
+        Bundle args = getWorkAnnotatedBundle(4);
         args.putString(ManageApplications.EXTRA_CLASSNAME,
                 Settings.StorageUseActivity.class.getName());
         args.putString(ManageApplications.EXTRA_VOLUME_UUID, mVolume.getFsUuid());
@@ -353,8 +351,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle
             return null;
         }
 
-        Bundle args = new Bundle();
-        args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
+        Bundle args = getWorkAnnotatedBundle(3);
         args.putString(ManageApplications.EXTRA_CLASSNAME,
                 Settings.StorageUseActivity.class.getName());
         args.putString(ManageApplications.EXTRA_VOLUME_UUID, mVolume.getFsUuid());
@@ -365,8 +362,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle
     }
 
     private Intent getGamesIntent() {
-        Bundle args = new Bundle(1);
-        args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
+        Bundle args = getWorkAnnotatedBundle(1);
         args.putString(ManageApplications.EXTRA_CLASSNAME,
                 Settings.GamesStorageActivity.class.getName());
         return Utils.onBuildStartFragmentIntent(mContext,
@@ -375,8 +371,7 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle
     }
 
     private Intent getMoviesIntent() {
-        Bundle args = new Bundle(1);
-        args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
+        Bundle args = getWorkAnnotatedBundle(1);
         args.putString(ManageApplications.EXTRA_CLASSNAME,
                 Settings.MoviesStorageActivity.class.getName());
         return Utils.onBuildStartFragmentIntent(mContext,
@@ -384,6 +379,13 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle
                 null, false, mMetricsFeatureProvider.getMetricsCategory(mFragment));
     }
 
+    private Bundle getWorkAnnotatedBundle(int additionalCapacity) {
+        Bundle args = new Bundle(2 + additionalCapacity);
+        args.putBoolean(ManageApplications.EXTRA_WORK_ONLY, mIsWorkProfile);
+        args.putInt(ManageApplications.EXTRA_WORK_ID, mUserId);
+        return args;
+    }
+
     private Intent getFilesIntent() {
         return mSvp.findEmulatedForPrivate(mVolume).buildBrowseIntent();
     }
index 9d69349..9bef560 100644 (file)
@@ -16,6 +16,7 @@
 package com.android.settings.deviceinfo.storage;
 
 
+import static com.android.settings.applications.ManageApplications.EXTRA_WORK_ID;
 import static com.android.settings.applications.ManageApplications.EXTRA_WORK_ONLY;
 import static com.android.settings.utils.FileSizeFormatter.MEGABYTE_IN_BYTES;
 
@@ -195,6 +196,10 @@ public class StorageItemPreferenceControllerTest {
                         intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
                                 .getBoolean(EXTRA_WORK_ONLY))
                 .isTrue();
+        assertThat(
+                        intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
+                                .getInt(EXTRA_WORK_ID))
+                .isEqualTo(0);
     }
 
     @Test