From 6bf04986ac5a776c74f3d11e65d76b0d8d8c3f3f Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Tue, 26 Sep 2023 11:36:47 +0800 Subject: [PATCH] Fix NullPointerException when showEmptyChart Bug: 301880705 Fix: 301880705 Test: presubmit Change-Id: I22a1df6b791396b398038c6bdb8e6b3ca37dc9e1 --- .../BatteryChartPreferenceController.java | 4 ++++ .../BatteryChartPreferenceControllerTest.java | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java index 1ae3bef5159..bb6593c9149 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java @@ -327,6 +327,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll // Show empty hourly chart view only if there is no valid battery usage data. void showEmptyChart() { + if (mDailyChartView == null || mHourlyChartView == null) { + // Chart views are not initialized. + return; + } setChartSummaryVisible(true); mDailyChartView.setVisibility(View.GONE); mHourlyChartView.setVisibility(View.VISIBLE); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java index cd4e599546d..275ab34d82e 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java @@ -334,6 +334,29 @@ public final class BatteryChartPreferenceControllerTest { verify(mHourlyChartView).setVisibility(View.VISIBLE); } + @Test + public void showEmptyChart_dailyChartViewIsNull_ignoreShowEmptyChart() { + mBatteryChartPreferenceController.mDailyChartView = null; + doReturn(View.GONE).when(mHourlyChartView).getVisibility(); + + mBatteryChartPreferenceController.showEmptyChart(); + + verify(mChartSummaryTextView, never()).setVisibility(View.VISIBLE); + verify(mDailyChartView, never()).setVisibility(View.GONE); + verify(mHourlyChartView, never()).setVisibility(View.VISIBLE); + } + + @Test + public void showEmptyChart_hourlyChartViewIsNull_ignoreShowEmptyChart() { + mBatteryChartPreferenceController.mHourlyChartView = null; + + mBatteryChartPreferenceController.showEmptyChart(); + + verify(mChartSummaryTextView, never()).setVisibility(View.VISIBLE); + verify(mDailyChartView, never()).setVisibility(View.GONE); + verify(mHourlyChartView, never()).setVisibility(View.VISIBLE); + } + @Test public void refreshUi_dailyChartViewIsNull_ignoreRefresh() { mBatteryChartPreferenceController.mDailyChartView = null;