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

Commit ff872257 authored by Chris Wren's avatar Chris Wren Committed by Android (Google) Code Review
Browse files

Merge "catch exceptional cases on factory-fresh devices." into jb-mr1-lockscreen-dev

parents 698e144f 28c5ee9e
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1047,13 +1047,14 @@ public class KeyguardHostView extends KeyguardViewBase {
    private void enableUserSelectorIfNecessary() {
        // if there are multiple users, we need to add the multi-user switcher widget to the
        // keyguard.
        KeyguardMultiUserSelectorView multiUser =
                (KeyguardMultiUserSelectorView) findViewById(R.id.keyguard_user_selector);
        UserManager mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
        List<UserInfo> users = mUm.getUsers(true);

        if (users.size() > 1) {
            KeyguardMultiUserSelectorView multiUser =
                    (KeyguardMultiUserSelectorView) findViewById(R.id.keyguard_user_selector);
            multiUser.setVisibility(View.VISIBLE);
            multiUser.addUsers(mUm.getUsers(true));
            UserSwitcherCallback callback = new UserSwitcherCallback() {
                @Override
                public void hideSecurityView(int duration) {
+16 −3
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@ import android.widget.TextView;
import com.android.internal.R;

class KeyguardMultiUserAvatar extends FrameLayout {
    private static final String TAG = KeyguardMultiUserAvatar.class.getSimpleName();
    private static final boolean DEBUG = KeyguardHostView.DEBUG;

    private ImageView mUserImage;
    private TextView mUserName;
@@ -122,9 +124,20 @@ class KeyguardMultiUserAvatar extends FrameLayout {
        mUserImage = (ImageView) findViewById(R.id.keyguard_user_avatar);
        mUserName = (TextView) findViewById(R.id.keyguard_user_name);

        mFramed = new KeyguardCircleFramedDrawable(
                BitmapFactory.decodeFile(rewriteIconPath(user.iconPath)), (int) mIconSize,
                mFrameColor, mStroke, mFrameShadowColor, mShadowRadius, mHighlightColor);
        Bitmap icon = null; 
        try {
            icon = BitmapFactory.decodeFile(rewriteIconPath(user.iconPath));
        } catch (Exception e) {
            if (DEBUG) Log.d(TAG, "failed to open profile icon " + user.iconPath, e);
        }

        if (icon == null) {
            icon = BitmapFactory.decodeResource(mContext.getResources(),
                    com.android.internal.R.drawable.ic_contact_picture);
        }

        mFramed = new KeyguardCircleFramedDrawable(icon, (int) mIconSize, mFrameColor, mStroke,
                mFrameShadowColor, mShadowRadius, mHighlightColor);
        mUserImage.setImageDrawable(mFramed);
        mUserName.setText(mUserInfo.name);
        setOnClickListener(mUserSelector);
+8 −9
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.widget.FrameLayout;
import com.android.internal.R;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

@@ -55,19 +56,18 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O
    }

    protected void onFinishInflate () {
        init();
        mUsersGrid = (ViewGroup) findViewById(R.id.keyguard_users_grid);
        mUsersGrid.removeAllViews();
        setClipChildren(false);
        setClipToPadding(false);

    }

    public void setCallback(KeyguardHostView.UserSwitcherCallback callback) {
        mCallback = callback;
    }

    public void init() {
        mUsersGrid = (ViewGroup) findViewById(R.id.keyguard_users_grid);
        mUsersGrid.removeAllViews();
        setClipChildren(false);
        setClipToPadding(false);

    public void addUsers(Collection<UserInfo> userList) {
        UserInfo activeUser;
        try {
            activeUser = ActivityManagerNative.getDefault().getCurrentUser();
@@ -75,8 +75,7 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O
            activeUser = null;
        }

        UserManager mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
        ArrayList<UserInfo> users = new ArrayList<UserInfo>(mUm.getUsers(true));
        ArrayList<UserInfo> users = new ArrayList<UserInfo>(userList);
        Collections.sort(users, mOrderAddedComparator);

        for (UserInfo user: users) {