From 7db71f91bf7f784debeb023a484200991d42b7a6 Mon Sep 17 00:00:00 2001 From: Lei Yu Date: Wed, 15 May 2019 11:14:14 -0700 Subject: [PATCH] Add empty check for path in UsageGraph If path is empty, skip method since there is nothing to draw. Bug: 132728523 Test: RunSettingsRoboTests Change-Id: I6fdb7c2f69d3d658c47b58c7304cfeb7d4010a46 --- src/com/android/settings/widget/UsageGraph.java | 6 +++++- .../com/android/settings/widget/UsageGraphTest.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/widget/UsageGraph.java b/src/com/android/settings/widget/UsageGraph.java index 7cef66f79d2..505dc58b2cb 100644 --- a/src/com/android/settings/widget/UsageGraph.java +++ b/src/com/android/settings/widget/UsageGraph.java @@ -288,7 +288,11 @@ public class UsageGraph extends View { canvas.drawPath(mPath, paint); } - private void drawFilledPath(Canvas canvas, SparseIntArray localPaths, Paint paint) { + @VisibleForTesting + void drawFilledPath(Canvas canvas, SparseIntArray localPaths, Paint paint) { + if (localPaths.size() == 0) { + return; + } mPath.reset(); float lastStartX = localPaths.keyAt(0); mPath.moveTo(localPaths.keyAt(0), localPaths.valueAt(0)); diff --git a/tests/robotests/src/com/android/settings/widget/UsageGraphTest.java b/tests/robotests/src/com/android/settings/widget/UsageGraphTest.java index 7f09c3b88fb..ebb496c319a 100644 --- a/tests/robotests/src/com/android/settings/widget/UsageGraphTest.java +++ b/tests/robotests/src/com/android/settings/widget/UsageGraphTest.java @@ -24,6 +24,8 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; +import android.graphics.Canvas; +import android.graphics.Paint; import android.util.SparseIntArray; import com.android.settingslib.R; @@ -177,4 +179,14 @@ public class UsageGraphTest { assertThat(localPaths.keyAt(5)).isEqualTo(1001); assertThat(localPaths.valueAt(5)).isEqualTo(-1); } + + @Test + public void drawFilledPath_emptyPath_shouldNotCrash() { + final Canvas canvas = new Canvas(); + final SparseIntArray localPaths = new SparseIntArray(); + final Paint paint = new Paint(); + + // Should not crash + mGraph.drawFilledPath(canvas, localPaths, paint); + } }