Fix NullPointerException in KernelCpuThreadReaders.
If KernelCpuThreadReader init failed, then the null instance was passed
to KernelCpuThreadReaderDiff, which then failed when invoked.
Test: Build only (bug is difficult to reproduce).
Bug: 150988957
Change-Id: Id46d466b931d816dda85c4f068a4bec53c6f3032
(cherry picked from commit 478c873fe44d78c818dcf7bb58f4a0a69d19a1fe)
(cherry picked from commit 1f9fef655ff2d83e719ea4c4a73a2e831e1a5756)
diff --git a/core/java/com/android/internal/os/KernelCpuThreadReaderDiff.java b/core/java/com/android/internal/os/KernelCpuThreadReaderDiff.java
index ffdc33c..c11b939 100644
--- a/core/java/com/android/internal/os/KernelCpuThreadReaderDiff.java
+++ b/core/java/com/android/internal/os/KernelCpuThreadReaderDiff.java
@@ -16,6 +16,8 @@
package com.android.internal.os;
+import static com.android.internal.util.Preconditions.checkNotNull;
+
import android.annotation.Nullable;
import android.util.ArrayMap;
import android.util.Slog;
@@ -99,7 +101,7 @@
@VisibleForTesting
public KernelCpuThreadReaderDiff(KernelCpuThreadReader reader, int minimumTotalCpuUsageMillis) {
- mReader = reader;
+ mReader = checkNotNull(reader);
mMinimumTotalCpuUsageMillis = minimumTotalCpuUsageMillis;
mPreviousCpuUsage = null;
}
diff --git a/core/java/com/android/internal/os/KernelCpuThreadReaderSettingsObserver.java b/core/java/com/android/internal/os/KernelCpuThreadReaderSettingsObserver.java
index fdcc8a8..c908b8c 100644
--- a/core/java/com/android/internal/os/KernelCpuThreadReaderSettingsObserver.java
+++ b/core/java/com/android/internal/os/KernelCpuThreadReaderSettingsObserver.java
@@ -95,8 +95,10 @@
KernelCpuThreadReader.create(
NUM_BUCKETS_DEFAULT, UidPredicate.fromString(COLLECTED_UIDS_DEFAULT));
mKernelCpuThreadReaderDiff =
- new KernelCpuThreadReaderDiff(
- mKernelCpuThreadReader, MINIMUM_TOTAL_CPU_USAGE_MILLIS_DEFAULT);
+ mKernelCpuThreadReader == null
+ ? null
+ : new KernelCpuThreadReaderDiff(
+ mKernelCpuThreadReader, MINIMUM_TOTAL_CPU_USAGE_MILLIS_DEFAULT);
}
@Override