diff --git a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java index 49a01793d94..89f03b3533f 100644 --- a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java +++ b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java @@ -98,6 +98,8 @@ public class AppButtonsPreferenceController extends PreferenceController impleme @VisibleForTesting Button mUninstallButton; @VisibleForTesting + String mPackageName; + @VisibleForTesting boolean mDisableAfterUninstall = false; private final int mRequestUninstall; @@ -113,7 +115,6 @@ public class AppButtonsPreferenceController extends PreferenceController impleme private MetricsFeatureProvider mMetricsFeatureProvider; private LayoutPreference mButtonsPref; - private String mPackageName; private int mUserId; private boolean mUpdatedSysApp = false; private boolean mListeningToPackageRemove = false; @@ -134,7 +135,6 @@ public class AppButtonsPreferenceController extends PreferenceController impleme mMetricsFeatureProvider = FeatureFactory.getFactory(activity).getMetricsFeatureProvider(); mState = state; - mSession = mState.newSession(this); mDpm = dpm; mUserManager = userManager; mPm = packageManager; @@ -145,10 +145,10 @@ public class AppButtonsPreferenceController extends PreferenceController impleme mRequestUninstall = requestUninstall; mRequestRemoveDeviceAdmin = requestRemoveDeviceAdmin; - lifecycle.addObserver(this); - if (packageName != null) { mAppEntry = mState.getEntry(packageName, mUserId); + mSession = mState.newSession(this); + lifecycle.addObserver(this); } else { mFinishing = true; } @@ -620,7 +620,11 @@ public class AppButtonsPreferenceController extends PreferenceController impleme return false; } - private boolean refreshUi() { + @VisibleForTesting + boolean refreshUi() { + if (mPackageName == null) { + return false; + } retrieveAppEntry(); if (mAppEntry == null || mPackageInfo == null) { return false; diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java index a341d8361d7..b40cb9e6858 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AppButtonsPreferenceControllerTest.java @@ -344,6 +344,14 @@ public class AppButtonsPreferenceControllerTest { assertThat(controllable).isTrue(); } + @Test + public void testRefreshUi_packageNull_shouldNotCrash() { + mController.mPackageName = null; + + // Should not crash in this method + assertThat(mController.refreshUi()).isFalse(); + } + /** * The test fragment which implements * {@link ButtonActionDialogFragment.AppButtonsDialogListener}