From 253cb874d8a9fb8ec403801d25bc88be406576ab Mon Sep 17 00:00:00 2001 From: tomhsu Date: Fri, 6 Dec 2024 10:37:34 +0000 Subject: [PATCH] Add a method to get controllers with same parent class type. Flag: EXEMPT bug fix Fix: b/382635197 Test: Manual test. Change-Id: I0a48628d032d7ce1f47cbca20e63b20149b5daa0 --- .../android/settings/dashboard/DashboardFragment.java | 7 +++++++ .../network/telephony/MobileNetworkSettings.java | 10 ++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index df1e71ecd44..c79cc65bbfa 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -348,6 +348,13 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment return null; } + /** Returns grouped controllers of input type T. */ + protected List useGroup( + Class clazz) { + return mPreferenceControllers.values().stream().flatMap(Collection::stream).filter( + controller -> clazz.isInstance(controller)).toList(); + } + /** Returns all controllers of type T. */ protected List useAll(Class clazz) { return (List) mPreferenceControllers.getOrDefault(clazz, Collections.emptyList()); diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index 1c4b2622716..0efd539cf8c 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -338,12 +338,10 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme convertToEsimPreferenceController.init(mSubId, mSubscriptionInfoEntity); } - List subscriptionPreferenceControllers = - useAll(AbstractSubscriptionPreferenceController.class); - for (AbstractSubscriptionPreferenceController controller : - subscriptionPreferenceControllers) { - controller.init(mSubId); - } + List subscriptionPreferenceControllers = + useGroup(AbstractSubscriptionPreferenceController.class); + subscriptionPreferenceControllers.forEach( + controller -> ((AbstractSubscriptionPreferenceController) controller).init(mSubId)); } @Override