Merge "Fix jank issue in Settings caused by fetching tile info" into oc-mr1-dev

This commit is contained in:
TreeHugger Robot
2017-09-13 03:12:57 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 13 deletions

View File

@@ -26,6 +26,7 @@ import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -546,24 +547,35 @@ 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 ||
!tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
!tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
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);
final Bundle bundle = getBundleFromUri(context, uriString, providerMap);
final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);
if (overrideSummary != null) {
tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary);
}
if (overrideTitle != null) {
tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle);
}
@Override
protected void onPostExecute(Bundle bundle) {
if (bundle == null) {
return;
}
final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);
if (overrideSummary != null) {
tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary);
}
if (overrideTitle != null) {
tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle);
}
}
}.execute();
}
private static String getString(Bundle bundle, String key) {

View File

@@ -66,6 +66,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList;
import java.util.Collections;
@@ -438,6 +439,8 @@ public class TileUtilsTest {
tile.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, URI_GET_SUMMARY);
tile.remoteViews = mock(RemoteViews.class);
TileUtils.updateTileUsingSummaryUri(mContext, tile);
ShadowApplication.runBackgroundTasks();
verify(tile.remoteViews, times(1)).setTextViewText(anyInt(), eq(expectedSummary));
}