Make ZenIconLoader injectable (in SystemUI)

In settings, reduce calls to getInstance(), and pass it to preferences and their controllers instead.

Bug: 360399800
Test: atest ZenModesListItemPreferenceTest ZenModesListPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I318320575e3bd32b5d13a385fa644f8032484e1c
This commit is contained in:
Matías Hernández
2024-08-26 15:42:58 +02:00
parent 23513bf7fe
commit 227548d927
10 changed files with 59 additions and 30 deletions

View File

@@ -43,15 +43,18 @@ import java.util.function.Function;
abstract class AbstractZenModeHeaderController extends AbstractZenModePreferenceController {
private final DashboardFragment mFragment;
private final ZenIconLoader mIconLoader;
private EntityHeaderController mHeaderController;
@Nullable private ZenIcon.Key mCurrentIconKey;
AbstractZenModeHeaderController(
@NonNull Context context,
@NonNull ZenIconLoader iconLoader,
@NonNull String key,
@NonNull DashboardFragment fragment) {
super(context, key);
mFragment = fragment;
mIconLoader = iconLoader;
}
@Override
@@ -90,7 +93,7 @@ abstract class AbstractZenModeHeaderController extends AbstractZenModePreference
if (!Objects.equal(mCurrentIconKey, zenMode.getIconKey())) {
mCurrentIconKey = zenMode.getIconKey();
FutureUtil.whenDone(
ZenIconLoader.getInstance().getIcon(mContext, zenMode),
mIconLoader.getIcon(mContext, zenMode),
icon -> {
checkNotNull(mHeaderController)
.setIcon(iconStylist.apply(icon.drawable()))