Loading res/xml/storage_dashboard_fragment.xml +3 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,9 @@ android:key="pref_system" android:title="@string/storage_detail_system"> </com.android.settings.deviceinfo.storage.StorageItemPreferenceAlternate> <PreferenceCategory android:key="pref_secondary_users" android:title="@string/storage_other_users" /> <Preference android:key="manage_storage" android:title="@string/storage_menu_manage" Loading src/com/android/settings/Utils.java +17 −5 Original line number Diff line number Diff line Loading @@ -16,6 +16,11 @@ package com.android.settings; import static android.content.Intent.EXTRA_USER; import static android.content.Intent.EXTRA_USER_ID; import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; import static android.text.format.DateUtils.FORMAT_SHOW_DATE; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.AlertDialog; Loading Loading @@ -104,11 +109,6 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import static android.content.Intent.EXTRA_USER; import static android.content.Intent.EXTRA_USER_ID; import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; import static android.text.format.DateUtils.FORMAT_SHOW_DATE; public final class Utils extends com.android.settingslib.Utils { private static final String TAG = "Settings"; Loading Loading @@ -1246,4 +1246,16 @@ public final class Utils extends com.android.settingslib.Utils { && (Settings.Secure.getInt(context.getContentResolver(), carrierDemoModeSetting, 0) == 1); } /** * Returns if a given user is a profile of another user. * @param user The user whose profiles will be checked. * @param profile The (potential) profile. * @return if the profile is actually a profile */ public static boolean isProfileOf(UserInfo user, UserInfo profile) { return user.id == profile.id || (user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID && user.profileGroupId == profile.profileGroupId); } } src/com/android/settings/applications/UserManagerWrapper.java 0 → 100644 +31 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.pm.UserInfo; import java.util.List; /** * This interface replicates a subset of the android.os.UserManager. The interface * exists so that we can use a thin wrapper around the UserManager in production code and a mock in * tests. We cannot directly mock or shadow the UserManager, because some of the methods we rely on * are newer than the API version supported by Robolectric or are hidden. */ public interface UserManagerWrapper { UserInfo getPrimaryUser(); List<UserInfo> getUsers(); } src/com/android/settings/applications/UserManagerWrapperImpl.java 0 → 100644 +40 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.pm.UserInfo; import android.os.UserManager; import java.util.List; public class UserManagerWrapperImpl implements UserManagerWrapper { private UserManager mUserManager; public UserManagerWrapperImpl(UserManager userManager) { mUserManager = userManager; } @Override public UserInfo getPrimaryUser() { return mUserManager.getPrimaryUser(); } @Override public List<UserInfo> getUsers() { return mUserManager.getUsers(); } } src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +2 −8 Original line number Diff line number Diff line Loading @@ -228,7 +228,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { // Add current user and its profiles first for (int userIndex = 0; userIndex < userCount; ++userIndex) { final UserInfo userInfo = allUsers.get(userIndex); if (isProfileOf(mCurrentUser, userInfo)) { if (Utils.isProfileOf(mCurrentUser, userInfo)) { final PreferenceGroup details = showHeaders ? addCategory(screen, userInfo.name) : screen; addDetailItems(details, showShared, userInfo.id); Loading @@ -242,7 +242,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { getText(R.string.storage_other_users)); for (int userIndex = 0; userIndex < userCount; ++userIndex) { final UserInfo userInfo = allUsers.get(userIndex); if (!isProfileOf(mCurrentUser, userInfo)) { if (!Utils.isProfileOf(mCurrentUser, userInfo)) { addItem(otherUsers, /* titleRes */ 0, userInfo.name, userInfo.id); } } Loading Loading @@ -649,12 +649,6 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { pref.setStorageSize(size, mTotalSize); } private boolean isProfileOf(UserInfo user, UserInfo profile) { return user.id == profile.id || (user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID && user.profileGroupId == profile.profileGroupId); } private static long totalValues(MeasurementDetails details, int userId, String... keys) { long total = 0; HashMap<String, Long> map = details.mediaSize.get(userId); Loading Loading
res/xml/storage_dashboard_fragment.xml +3 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,9 @@ android:key="pref_system" android:title="@string/storage_detail_system"> </com.android.settings.deviceinfo.storage.StorageItemPreferenceAlternate> <PreferenceCategory android:key="pref_secondary_users" android:title="@string/storage_other_users" /> <Preference android:key="manage_storage" android:title="@string/storage_menu_manage" Loading
src/com/android/settings/Utils.java +17 −5 Original line number Diff line number Diff line Loading @@ -16,6 +16,11 @@ package com.android.settings; import static android.content.Intent.EXTRA_USER; import static android.content.Intent.EXTRA_USER_ID; import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; import static android.text.format.DateUtils.FORMAT_SHOW_DATE; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.AlertDialog; Loading Loading @@ -104,11 +109,6 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import static android.content.Intent.EXTRA_USER; import static android.content.Intent.EXTRA_USER_ID; import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; import static android.text.format.DateUtils.FORMAT_SHOW_DATE; public final class Utils extends com.android.settingslib.Utils { private static final String TAG = "Settings"; Loading Loading @@ -1246,4 +1246,16 @@ public final class Utils extends com.android.settingslib.Utils { && (Settings.Secure.getInt(context.getContentResolver(), carrierDemoModeSetting, 0) == 1); } /** * Returns if a given user is a profile of another user. * @param user The user whose profiles will be checked. * @param profile The (potential) profile. * @return if the profile is actually a profile */ public static boolean isProfileOf(UserInfo user, UserInfo profile) { return user.id == profile.id || (user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID && user.profileGroupId == profile.profileGroupId); } }
src/com/android/settings/applications/UserManagerWrapper.java 0 → 100644 +31 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.pm.UserInfo; import java.util.List; /** * This interface replicates a subset of the android.os.UserManager. The interface * exists so that we can use a thin wrapper around the UserManager in production code and a mock in * tests. We cannot directly mock or shadow the UserManager, because some of the methods we rely on * are newer than the API version supported by Robolectric or are hidden. */ public interface UserManagerWrapper { UserInfo getPrimaryUser(); List<UserInfo> getUsers(); }
src/com/android/settings/applications/UserManagerWrapperImpl.java 0 → 100644 +40 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.pm.UserInfo; import android.os.UserManager; import java.util.List; public class UserManagerWrapperImpl implements UserManagerWrapper { private UserManager mUserManager; public UserManagerWrapperImpl(UserManager userManager) { mUserManager = userManager; } @Override public UserInfo getPrimaryUser() { return mUserManager.getPrimaryUser(); } @Override public List<UserInfo> getUsers() { return mUserManager.getUsers(); } }
src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +2 −8 Original line number Diff line number Diff line Loading @@ -228,7 +228,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { // Add current user and its profiles first for (int userIndex = 0; userIndex < userCount; ++userIndex) { final UserInfo userInfo = allUsers.get(userIndex); if (isProfileOf(mCurrentUser, userInfo)) { if (Utils.isProfileOf(mCurrentUser, userInfo)) { final PreferenceGroup details = showHeaders ? addCategory(screen, userInfo.name) : screen; addDetailItems(details, showShared, userInfo.id); Loading @@ -242,7 +242,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { getText(R.string.storage_other_users)); for (int userIndex = 0; userIndex < userCount; ++userIndex) { final UserInfo userInfo = allUsers.get(userIndex); if (!isProfileOf(mCurrentUser, userInfo)) { if (!Utils.isProfileOf(mCurrentUser, userInfo)) { addItem(otherUsers, /* titleRes */ 0, userInfo.name, userInfo.id); } } Loading Loading @@ -649,12 +649,6 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { pref.setStorageSize(size, mTotalSize); } private boolean isProfileOf(UserInfo user, UserInfo profile) { return user.id == profile.id || (user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID && user.profileGroupId == profile.profileGroupId); } private static long totalValues(MeasurementDetails details, int userId, String... keys) { long total = 0; HashMap<String, Long> map = details.mediaSize.get(userId); Loading