Add NPE check for battery header update.

Battery header uses AsyncTask to update the label. So if user
press back button before the update completes, the "getContext()"
in AsyncTask callback will return null, which causes the crash.

It seems there is no good way to fix it expect adding a NPE check.

Bug: 35650224
Test: RunSettingsRoboTests
Change-Id: I7bd9fd87caa13614fe1896cf72557a09744691c1
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index c44a373..1eb1903 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -532,6 +532,10 @@
 
     @VisibleForTesting
     void updateHeaderPreference(BatteryInfo info) {
+        final Context context = getContext();
+        if (context == null) {
+            return;
+        }
         final BatteryMeterView batteryView = (BatteryMeterView) mBatteryLayoutPref
                 .findViewById(R.id.battery_header_icon);
         final TextView timeText = (TextView) mBatteryLayoutPref.findViewById(R.id.time);
@@ -542,8 +546,7 @@
                 R.string.estimated_time_left : R.string.estimated_charging_time_left;
 
         if (info.remainingTimeUs != 0) {
-            timeText.setText(Utils.formatElapsedTime(getContext(),
-                    info.remainingTimeUs / 1000, false));
+            timeText.setText(Utils.formatElapsedTime(context, info.remainingTimeUs / 1000, false));
         } else {
             timeText.setText(info.statusLabel);
         }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index dab39e4..796f564 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -358,6 +358,14 @@
         verify(mSummary1).setText(R.string.estimated_time_left);
     }
 
+    @Test
+    public void testUpdateHeaderPreference_AsyncUpdate_ShouldNotCrash() {
+        when(mPowerUsageSummary.getContext()).thenReturn(null);
+        mBatteryInfo.remainingTimeUs = REMAINING_TIME_US;
+
+        //Should not crash
+        mPowerUsageSummary.updateHeaderPreference(mBatteryInfo);
+    }
 
     private void testToggleAllApps(final boolean isShowApps) {
         mFragment.mShowAllApps = isShowApps;