Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 814b4dd0 authored by Andrey Epin's avatar Andrey Epin
Browse files

Fix labels loading regression

DisplayResolveInfo#getDisplayLabel() internally loads the display label
if it is missing and a ResolveInfoPresentationGetter is set for the
instance.
Current view binding logic unconditionally calls getDisplayLabel method
which could trigger label resolution on the main thread and a
consequently scheduled label loading asynchronous task a no-op.

Test: manual functionality testing
Test: introduce artificial into LoadLabelTask, observe labels lading
asynchronously and does not reload when scrolling through a long list
of options.
Test: atest FrameworksCoreTests:ResolverActivityTest
Bug: 245934835

Change-Id: I392d6c8424617820bde58887d92ae99bc39c5b7b
parent a04b35b6
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -647,15 +647,16 @@ public class ResolverListAdapter extends BaseAdapter {

        if (info instanceof DisplayResolveInfo) {
            DisplayResolveInfo dri = (DisplayResolveInfo) info;
            boolean hasLabel = dri.hasDisplayLabel();
            if (dri.hasDisplayLabel()) {
                holder.bindLabel(
                        dri.getDisplayLabel(),
                        dri.getExtendedInfo(),
                    hasLabel && alwaysShowSubLabel());
            holder.bindIcon(info);
            if (!hasLabel) {
                        alwaysShowSubLabel());
            } else {
                holder.bindLabel("", "", false);
                loadLabel(dri);
            }
            holder.bindIcon(info);
            if (!dri.hasDisplayIcon()) {
                loadIcon(dri);
            }