Merge "Add NPE check for refreshUi" into oc-dev
diff --git a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java
index 49a0179..89f03b3 100644
--- a/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/AppButtonsPreferenceController.java
@@ -98,6 +98,8 @@
     @VisibleForTesting
     Button mUninstallButton;
     @VisibleForTesting
+    String mPackageName;
+    @VisibleForTesting
     boolean mDisableAfterUninstall = false;
 
     private final int mRequestUninstall;
@@ -113,7 +115,6 @@
     private MetricsFeatureProvider mMetricsFeatureProvider;
 
     private LayoutPreference mButtonsPref;
-    private String mPackageName;
     private int mUserId;
     private boolean mUpdatedSysApp = false;
     private boolean mListeningToPackageRemove = false;
@@ -134,7 +135,6 @@
         mMetricsFeatureProvider = FeatureFactory.getFactory(activity).getMetricsFeatureProvider();
 
         mState = state;
-        mSession = mState.newSession(this);
         mDpm = dpm;
         mUserManager = userManager;
         mPm = packageManager;
@@ -145,10 +145,10 @@
         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 @@
         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 a341d83..b40cb9e 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 @@
         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}