Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3633c243 authored by Daniel Nishi's avatar Daniel Nishi Committed by Android (Google) Code Review
Browse files

Merge changes from topic 'secondary-users'

* changes:
  Update the loading of info for the secondary users.
  Add support for visualizing secondary users.
parents 0113b657 422e7c35
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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"
+17 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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";
@@ -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);
    }
}
+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();
}
+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();
    }
}
+2 −8
Original line number Diff line number Diff line
@@ -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);
@@ -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);
                }
            }
@@ -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