From b47b99ed38c0e3705c70f350f10d4828824ff533 Mon Sep 17 00:00:00 2001 From: Lei Yu Date: Wed, 8 May 2019 11:12:55 -0700 Subject: [PATCH] Add null check when restart batteryinfo loader Even though we unregister contentObserver in onPause and register in onResume, callback still be called while fragment is detached. Anyhow add a null check in settings to stop crash Fixes: 131905853 Test: RunSettingsRoboTests Change-Id: I8c0c2c04c3b8d942e0c97cf71a7d3e735a24b467 --- .../settings/fuelgauge/PowerUsageSummary.java | 3 +++ .../settings/fuelgauge/PowerUsageSummaryTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 85a08793b42..880255b212c 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -378,6 +378,9 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList @VisibleForTesting void restartBatteryInfoLoader() { + if (getContext() == null) { + return; + } getLoaderManager().restartLoader(BATTERY_INFO_LOADER, Bundle.EMPTY, mBatteryInfoLoaderCallbacks); if (mPowerFeatureProvider.isEstimateDebugEnabled()) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java index 2dd0d9be71e..4d77bddc45f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java @@ -15,6 +15,7 @@ */ package com.android.settings.fuelgauge; +import static com.android.settings.fuelgauge.PowerUsageSummary.BATTERY_INFO_LOADER; import static com.android.settings.fuelgauge.PowerUsageSummary.MENU_ADVANCED_BATTERY; import static com.google.common.truth.Truth.assertThat; @@ -373,6 +374,17 @@ public class PowerUsageSummaryTest { mFragment.mSettingsObserver); } + @Test + public void restartBatteryInfoLoader_contextNull_doNothing() { + when(mFragment.getContext()).thenReturn(null); + when(mFragment.getLoaderManager()).thenReturn(mLoaderManager); + + mFragment.restartBatteryInfoLoader(); + + verify(mLoaderManager, never()).restartLoader(BATTERY_INFO_LOADER, Bundle.EMPTY, + mFragment.mBatteryInfoLoaderCallbacks); + } + public static class TestFragment extends PowerUsageSummary { private Context mContext;