Add NPE check for method assignDefaultPhoto in Utils.java
When user press back button while adding user, app may crash because of null context. In this cl, I add NPE check for context in method assignDefaultPhoto and change this method to return boolean value. If the return value is false, then stop the following steps(e.g. creating a dialog after pressing button may also cause crash.) Bug: 33829308 Test: make -j40 RunSettingsRoboTests Change-Id: I811b92c268fb20f8c43ab3b0a9ceebe76f5d83be
This commit is contained in:
@@ -368,10 +368,21 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
} catch (IOException ioe) { }
|
||||
}
|
||||
|
||||
public static void assignDefaultPhoto(Context context, int userId) {
|
||||
/**
|
||||
* Assign the default photo to user with {@paramref userId}
|
||||
* @param context used to get the {@link UserManager}
|
||||
* @param userId used to get the icon bitmap
|
||||
* @return true if assign photo successfully, false if failed
|
||||
*/
|
||||
public static boolean assignDefaultPhoto(Context context, int userId) {
|
||||
if (context == null) {
|
||||
return false;
|
||||
}
|
||||
UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||
Bitmap bitmap = getDefaultUserIconAsBitmap(userId);
|
||||
um.setUserIcon(userId, bitmap);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static String getMeProfileName(Context context, boolean full) {
|
||||
|
@@ -415,14 +415,16 @@ public class UserSettings extends SettingsPreferenceFragment
|
||||
|
||||
private UserInfo createRestrictedProfile() {
|
||||
UserInfo newUserInfo = mUserManager.createRestrictedProfile(mAddingUserName);
|
||||
Utils.assignDefaultPhoto(getActivity(), newUserInfo.id);
|
||||
if (newUserInfo != null && !Utils.assignDefaultPhoto(getActivity(), newUserInfo.id)) {
|
||||
return null;
|
||||
}
|
||||
return newUserInfo;
|
||||
}
|
||||
|
||||
private UserInfo createTrustedUser() {
|
||||
UserInfo newUserInfo = mUserManager.createUser(mAddingUserName, 0);
|
||||
if (newUserInfo != null) {
|
||||
Utils.assignDefaultPhoto(getActivity(), newUserInfo.id);
|
||||
if (newUserInfo != null && !Utils.assignDefaultPhoto(getActivity(), newUserInfo.id)) {
|
||||
return null;
|
||||
}
|
||||
return newUserInfo;
|
||||
}
|
||||
|
@@ -65,4 +65,10 @@ public class UtilsTest {
|
||||
|
||||
assertThat(Utils.getWifiIpAddresses(mContext)).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignDefaultPhoto_ContextNull_ReturnFalseAndNotCrash() {
|
||||
// Should not crash here
|
||||
assertThat(Utils.assignDefaultPhoto(null, 0)).isFalse();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user