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

Commit b0801642 authored by Ajay Nadathur's avatar Ajay Nadathur
Browse files

Fix jank issue in Settings caused by fetching tile info

bug: 62713030
Test: Manually tested
Change-Id: I24c78d35c66cc2de7c3e43b1a7f7c0bda22545a6
parent 563cd2d3
Loading
Loading
Loading
Loading
+25 −13
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserHandle;
@@ -546,18 +547,27 @@ public class TileUtils {
        }
        }
    }
    }


    public static void updateTileUsingSummaryUri(Context context, Tile tile) {
    public static void updateTileUsingSummaryUri(Context context, final Tile tile) {
        if (tile == null || tile.metaData == null ||
        if (tile == null || tile.metaData == null ||
                !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
                !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
            return;
            return;
        }
        }


        final Map<String, IContentProvider> providerMap = new HashMap<>();
        new AsyncTask<Void, Void, Bundle>() {
            @Override
            protected Bundle doInBackground(Void... params) {
                return getBundleFromUri(context,
                        tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI), new HashMap<>());
            }


        final String uriString = tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI);
            @Override
        final Bundle bundle = getBundleFromUri(context, uriString, providerMap);
            protected void onPostExecute(Bundle bundle) {
                if (bundle == null) {
                    return;
                }
                final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
                final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
                final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);
                final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);

                if (overrideSummary != null) {
                if (overrideSummary != null) {
                    tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary);
                    tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary);
                }
                }
@@ -565,6 +575,8 @@ public class TileUtils {
                    tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle);
                    tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle);
                }
                }
            }
            }
        }.execute();
    }


    private static String getString(Bundle bundle, String key) {
    private static String getString(Bundle bundle, String key) {
        return bundle == null ? null : bundle.getString(key);
        return bundle == null ? null : bundle.getString(key);
+3 −0
Original line number Original line Diff line number Diff line
@@ -66,6 +66,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Collections;
@@ -438,6 +439,8 @@ public class TileUtilsTest {
        tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, URI_GET_SUMMARY);
        tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, URI_GET_SUMMARY);
        tile.remoteViews = mock(RemoteViews.class);
        tile.remoteViews = mock(RemoteViews.class);
        TileUtils.updateTileUsingSummaryUri(mContext, tile);
        TileUtils.updateTileUsingSummaryUri(mContext, tile);
        ShadowApplication.runBackgroundTasks();

        verify(tile.remoteViews, times(1)).setTextViewText(anyInt(), eq(expectedSummary));
        verify(tile.remoteViews, times(1)).setTextViewText(anyInt(), eq(expectedSummary));
    }
    }