Merge "Fix jank issue in Settings caused by fetching tile info" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4562ecebc6
@@ -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,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 ||
|
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) {
|
||||||
final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
|
if (bundle == null) {
|
||||||
final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);
|
return;
|
||||||
if (overrideSummary != null) {
|
}
|
||||||
tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary);
|
final String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY);
|
||||||
}
|
final String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE);
|
||||||
if (overrideTitle != null) {
|
|
||||||
tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle);
|
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) {
|
private static String getString(Bundle bundle, String key) {
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user