summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ajay Nadathur <ajayns@google.com> 2017-09-14 02:27:06 +0000
committer android-build-merger <android-build-merger@google.com> 2017-09-14 02:27:06 +0000
commitdaf30767d1d8c5b69deecf5df6894f97fbfaafa3 (patch)
tree55de1ddca5a0afdd5268b2dbd306bbceeca20d4a
parentb3289a385e57ff4e398b950f9131e466136193aa (diff)
parent9ebf5a82204d86b526f9ce9bc17d8e3e1f19162a (diff)
Merge "Fix jank issue in Settings caused by fetching tile info" into oc-mr1-dev am: 4562ecebc6
am: 9ebf5a8220 Change-Id: Ia34424f3b5f3f1882721d4d1aed85207113f000f
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java38
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java3
2 files changed, 28 insertions, 13 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
index 713e9675cccd..9b75c00aeb3a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java
@@ -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;
@@ -534,24 +535,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) {
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
index 88035e4fc600..76f6a20959fb 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java
@@ -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));
}