Merge "Fixes null-ref when trying to start Guest session." into pi-dev
am: 8491304cf6
Change-Id: I71133790a4b5be41c05cede67c2122e6681199fe
This commit is contained in:
@@ -354,20 +354,15 @@ public final class UserManagerHelper {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userInfo.isGuest()) {
|
|
||||||
switchToGuest(userInfo.name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switchToUserId(userInfo.id);
|
switchToUserId(userInfo.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a guest session and switches into the guest session.
|
* Creates a new guest session and switches into the guest session.
|
||||||
*
|
*
|
||||||
* @param guestName Username for the guest user.
|
* @param guestName Username for the guest user.
|
||||||
*/
|
*/
|
||||||
public void switchToGuest(String guestName) {
|
public void startNewGuestSession(String guestName) {
|
||||||
UserInfo guest = mUserManager.createGuest(mContext, guestName);
|
UserInfo guest = mUserManager.createGuest(mContext, guestName);
|
||||||
if (guest == null) {
|
if (guest == null) {
|
||||||
// Couldn't create user, most likely because there are too many, but we haven't
|
// Couldn't create user, most likely because there are too many, but we haven't
|
||||||
@@ -375,6 +370,7 @@ public final class UserManagerHelper {
|
|||||||
Log.w(TAG, "can't create user.");
|
Log.w(TAG, "can't create user.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
assignDefaultIcon(guest);
|
||||||
switchToUserId(guest.id);
|
switchToUserId(guest.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,6 +413,27 @@ public final class UserManagerHelper {
|
|||||||
mUserManager.setUserName(user.id, name);
|
mUserManager.setUserName(user.id, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a bitmap representing the user's default avatar.
|
||||||
|
*
|
||||||
|
* @param userInfo User whose avatar should be returned.
|
||||||
|
* @return Default user icon
|
||||||
|
*/
|
||||||
|
public Bitmap getUserDefaultIcon(UserInfo userInfo) {
|
||||||
|
return UserIcons.convertToBitmap(
|
||||||
|
UserIcons.getDefaultUserIcon(mContext.getResources(), userInfo.id, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a bitmap representing the default icon for a Guest user.
|
||||||
|
*
|
||||||
|
* @return Degault guest icon
|
||||||
|
*/
|
||||||
|
public Bitmap getGuestDefaultIcon() {
|
||||||
|
return UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(
|
||||||
|
mContext.getResources(), UserHandle.USER_NULL, false));
|
||||||
|
}
|
||||||
|
|
||||||
private void registerReceiver() {
|
private void registerReceiver() {
|
||||||
IntentFilter filter = new IntentFilter();
|
IntentFilter filter = new IntentFilter();
|
||||||
filter.addAction(Intent.ACTION_USER_REMOVED);
|
filter.addAction(Intent.ACTION_USER_REMOVED);
|
||||||
@@ -435,8 +452,7 @@ public final class UserManagerHelper {
|
|||||||
* @return Bitmap that has been assigned to the user.
|
* @return Bitmap that has been assigned to the user.
|
||||||
*/
|
*/
|
||||||
private Bitmap assignDefaultIcon(UserInfo userInfo) {
|
private Bitmap assignDefaultIcon(UserInfo userInfo) {
|
||||||
Bitmap bitmap = UserIcons.convertToBitmap(
|
Bitmap bitmap = userInfo.isGuest() ? getGuestDefaultIcon() : getUserDefaultIcon(userInfo);
|
||||||
UserIcons.getDefaultUserIcon(mContext.getResources(), userInfo.id, false));
|
|
||||||
mUserManager.setUserIcon(userInfo.id, bitmap);
|
mUserManager.setUserIcon(userInfo.id, bitmap);
|
||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -247,13 +247,13 @@ public class UserManagerHelperTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void switchToGuest() {
|
public void startNewGuestSession() {
|
||||||
mHelper.switchToGuest("Test Guest");
|
mHelper.startNewGuestSession("Test Guest");
|
||||||
verify(mUserManager).createGuest(mContext, "Test Guest");
|
verify(mUserManager).createGuest(mContext, "Test Guest");
|
||||||
|
|
||||||
UserInfo guestInfo = new UserInfo(21, "Test Guest", UserInfo.FLAG_GUEST);
|
UserInfo guestInfo = new UserInfo(21, "Test Guest", UserInfo.FLAG_GUEST);
|
||||||
when(mUserManager.createGuest(mContext, "Test Guest")).thenReturn(guestInfo);
|
when(mUserManager.createGuest(mContext, "Test Guest")).thenReturn(guestInfo);
|
||||||
mHelper.switchToGuest("Test Guest");
|
mHelper.startNewGuestSession("Test Guest");
|
||||||
verify(mActivityManager).switchUser(21);
|
verify(mActivityManager).switchUser(21);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -185,12 +185,7 @@ public class UserManagerHelperRoboTest {
|
|||||||
mHelper.switchToUser(createUserInfoForId(20));
|
mHelper.switchToUser(createUserInfoForId(20));
|
||||||
assertThat(ShadowActivityManager.getShadow().getSwitchUserCalled()).isFalse();
|
assertThat(ShadowActivityManager.getShadow().getSwitchUserCalled()).isFalse();
|
||||||
|
|
||||||
// Switching to Guest calls createGuest.
|
// Switching to non-foreground user, simply calls switchUser.
|
||||||
UserInfo guestInfo = new UserInfo(21, "Test Guest", UserInfo.FLAG_GUEST);
|
|
||||||
mHelper.switchToUser(guestInfo);
|
|
||||||
verify(mUserManager).createGuest(mContext, "Test Guest");
|
|
||||||
|
|
||||||
// Switching to non-current, non-guest user, simply calls switchUser.
|
|
||||||
UserInfo userToSwitchTo = new UserInfo(22, "Test User", 0);
|
UserInfo userToSwitchTo = new UserInfo(22, "Test User", 0);
|
||||||
mHelper.switchToUser(userToSwitchTo);
|
mHelper.switchToUser(userToSwitchTo);
|
||||||
assertThat(ShadowActivityManager.getShadow().getSwitchUserCalled()).isTrue();
|
assertThat(ShadowActivityManager.getShadow().getSwitchUserCalled()).isTrue();
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ public class UserGridRecyclerView extends PagedListView implements
|
|||||||
|
|
||||||
// If the user selects Guest, start the guest session.
|
// If the user selects Guest, start the guest session.
|
||||||
if (userRecord.mIsStartGuestSession) {
|
if (userRecord.mIsStartGuestSession) {
|
||||||
mUserManagerHelper.switchToGuest(mGuestName);
|
mUserManagerHelper.startNewGuestSession(mGuestName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,8 +241,7 @@ public class UserGridRecyclerView extends PagedListView implements
|
|||||||
|
|
||||||
private Bitmap getUserRecordIcon(UserRecord userRecord) {
|
private Bitmap getUserRecordIcon(UserRecord userRecord) {
|
||||||
if (userRecord.mIsStartGuestSession) {
|
if (userRecord.mIsStartGuestSession) {
|
||||||
return UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(
|
return mUserManagerHelper.getGuestDefaultIcon();
|
||||||
mContext.getResources(), UserHandle.USER_NULL, false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userRecord.mIsAddUser) {
|
if (userRecord.mIsAddUser) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.graphics.Bitmap;
|
|||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
@@ -59,11 +60,14 @@ final class CarUserSwitchingDialog extends UserSwitchingDialog {
|
|||||||
View view = LayoutInflater.from(getContext()).inflate(R.layout.car_user_switching_dialog,
|
View view = LayoutInflater.from(getContext()).inflate(R.layout.car_user_switching_dialog,
|
||||||
null);
|
null);
|
||||||
|
|
||||||
FileDescriptor fileDescriptor = UserManagerService.getInstance()
|
UserManager userManager =
|
||||||
.getUserIcon(mNewUser.id).getFileDescriptor();
|
(UserManager) getContext().getSystemService(Context.USER_SERVICE);
|
||||||
Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor);
|
Bitmap bitmap = userManager.getUserIcon(mNewUser.id);
|
||||||
((ImageView) view.findViewById(R.id.user_loading_avatar))
|
if (bitmap != null) {
|
||||||
.setImageBitmap(bitmap);
|
((ImageView) view.findViewById(R.id.user_loading_avatar))
|
||||||
|
.setImageBitmap(bitmap);
|
||||||
|
}
|
||||||
|
|
||||||
((TextView) view.findViewById(R.id.user_loading))
|
((TextView) view.findViewById(R.id.user_loading))
|
||||||
.setText(res.getString(R.string.car_loading_profile));
|
.setText(res.getString(R.string.car_loading_profile));
|
||||||
setView(view);
|
setView(view);
|
||||||
|
|||||||
Reference in New Issue
Block a user