Register / Unregister UI listener in onResume / onPause.
This can cause the UI listener to be called when the UI is not meant to
be interacted with otherwise.
Bug: 226099985
Test: atest CtsSafetyCenterTestCases
Change-Id: I51ba547c140fc9eb28aacdd7e7dcffc2cbde0eab
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
index 172a7c4..7179884 100644
--- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/SafetyCenterDashboardFragment.java
@@ -18,6 +18,7 @@
import static java.util.Objects.requireNonNull;
+import android.content.Context;
import android.os.Bundle;
import android.safetycenter.SafetyCenterData;
import android.safetycenter.SafetyCenterEntryOrGroup;
@@ -51,7 +52,6 @@
private PreferenceGroup mIssuesGroup;
private PreferenceGroup mEntriesGroup;
private PreferenceGroup mStaticEntriesGroup;
-
private SafetyCenterViewModel mViewModel;
@Override
@@ -81,28 +81,34 @@
private void renderSafetyCenterData(@Nullable SafetyCenterData data) {
if (data == null) return;
- Log.i(TAG, String.format("renderSafetyCenterData called with: %s", data.toString()));
+ Log.i(TAG, String.format("renderSafetyCenterData called with: %s", data));
+
+ Context context = getContext();
+ if (context == null) {
+ return;
+ }
mSafetyStatusPreference.setSafetyStatus(data.getStatus());
// TODO(b/208212820): Only update entries that have changed since last
// update, rather than deleting and re-adding all.
- updateIssues(data.getIssues());
- updateSafetyEntries(data.getEntriesOrGroups());
- updateStaticSafetyEntries(data.getStaticEntryGroups());
+ updateIssues(context, data.getIssues());
+ updateSafetyEntries(context, data.getEntriesOrGroups());
+ updateStaticSafetyEntries(context, data.getStaticEntryGroups());
}
- private void updateIssues(List<SafetyCenterIssue> issues) {
+ private void updateIssues(Context context, List<SafetyCenterIssue> issues) {
mIssuesGroup.removeAll();
issues.stream()
- .map(issue -> new IssueCardPreference(getContext(), issue))
+ .map(issue -> new IssueCardPreference(context, issue))
.forEachOrdered(mIssuesGroup::addPreference);
}
// TODO(b/208212820): Add groups and move to separate controller
- private void updateSafetyEntries(List<SafetyCenterEntryOrGroup> entriesOrGroups) {
+ private void updateSafetyEntries(Context context,
+ List<SafetyCenterEntryOrGroup> entriesOrGroups) {
mEntriesGroup.removeAll();
entriesOrGroups.stream()
@@ -110,16 +116,17 @@
entryOrGroup.getEntry() != null
? Stream.of(entryOrGroup.getEntry())
: entryOrGroup.getEntryGroup().getEntries().stream())
- .map(entry -> new SafetyEntryPreference(getContext(), entry))
+ .map(entry -> new SafetyEntryPreference(context, entry))
.forEachOrdered(mEntriesGroup::addPreference);
}
- private void updateStaticSafetyEntries(List<SafetyCenterStaticEntryGroup> staticEntryGroups) {
+ private void updateStaticSafetyEntries(Context context,
+ List<SafetyCenterStaticEntryGroup> staticEntryGroups) {
mStaticEntriesGroup.removeAll();
staticEntryGroups.stream()
.flatMap(group -> group.getStaticEntries().stream())
- .map(entry -> new StaticSafetyEntryPreference(getContext(), entry))
+ .map(entry -> new StaticSafetyEntryPreference(context, entry))
.forEachOrdered(mStaticEntriesGroup::addPreference);
}