From e4b3b969db3acbd2d357ec934a277da5c8cf44ff Mon Sep 17 00:00:00 2001 From: Yanting Yang Date: Wed, 17 Mar 2021 01:14:00 +0800 Subject: [PATCH] Fix NPE of AppVersionPreferenceController Add null check for the package info before getting the version name. Fixes: 168333280 Test: robotests & manual Change-Id: If2e3d220c520d30e932478836ee2ea89f936d55c --- .../appinfo/AppVersionPreferenceController.java | 9 ++++++++- .../appinfo/AppVersionPreferenceControllerTest.java | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java b/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java index 205b6d275ee..23dd9602f77 100644 --- a/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.applications.appinfo; import android.content.Context; +import android.content.pm.PackageInfo; import android.text.BidiFormatter; import com.android.settings.R; @@ -29,7 +30,13 @@ public class AppVersionPreferenceController extends AppInfoPreferenceControllerB @Override public CharSequence getSummary() { + // TODO(b/168333280): Review the null case in detail since this is just a quick + // workaround to fix NPE. + final PackageInfo packageInfo = mParent.getPackageInfo(); + if (packageInfo == null) { + return null; + } return mContext.getString(R.string.version_text, - BidiFormatter.getInstance().unicodeWrap(mParent.getPackageInfo().versionName)); + BidiFormatter.getInstance().unicodeWrap(packageInfo.versionName)); } } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java index 1f513a36b41..d5e5080ac70 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java @@ -16,6 +16,8 @@ package com.android.settings.applications.appinfo; +import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -62,4 +64,13 @@ public class AppVersionPreferenceControllerTest { verify(mPreference).setSummary("version test1234"); } + + @Test + public void updateState_packageInfoNull_shouldNotCrash() { + when(mFragment.getPackageInfo()).thenReturn(null); + + mController.updateState(mPreference); + + assertThat(mController.getSummary()).isNull(); + } }