From eb627be0b4cceddcd43d8e1509f393827f32affa Mon Sep 17 00:00:00 2001 From: Shen Lin Date: Thu, 15 Sep 2022 10:05:19 +0800 Subject: [PATCH] Mark DataUsageState as nullable to avoid potential NPE risk mDataUsageState is nullable in UnrestrictedDataAccessPreference.java, so we'd better add a annotation to getDataUsageState(), and add a null-check before calling it. Bug: 246828843 Test: manual and Robotest. Change-Id: If7fea53ec7efd004391a09becdba5709ae686f40 --- .../settings/datausage/UnrestrictedDataAccessPreference.java | 2 ++ .../datausage/UnrestrictedDataAccessPreferenceController.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java index 08e523c8333..1fea84c7bf1 100644 --- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java +++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java @@ -20,6 +20,7 @@ import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.view.View; +import androidx.annotation.Nullable; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; @@ -152,6 +153,7 @@ public class UnrestrictedDataAccessPreference extends AppSwitchPreference implem } } + @Nullable public AppStateDataUsageBridge.DataUsageState getDataUsageState() { return mDataUsageState; } diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java index 06cf8eda6d2..438ed0dc80f 100644 --- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java +++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java @@ -194,7 +194,9 @@ public class UnrestrictedDataAccessPreferenceController extends BasePreferenceCo logSpecialPermissionChange(allowlisted, accessPreference.getEntry().info.packageName); mDataSaverBackend.setIsAllowlisted(accessPreference.getEntry().info.uid, accessPreference.getEntry().info.packageName, allowlisted); - accessPreference.getDataUsageState().isDataSaverAllowlisted = allowlisted; + if (accessPreference.getDataUsageState() != null) { + accessPreference.getDataUsageState().isDataSaverAllowlisted = allowlisted; + } return true; } return false;