Load preference title from uri if available

For injected tiles, allow clients to provide dynamic title from
contentproviders similar to dynamic summary.

Fixes: 131837802
Test: robotests
Change-Id: Iacc80db5d003473cf59ede67d88441947a834888
This commit is contained in:
Fan Zhang
2019-06-18 13:56:56 -07:00
parent d71835125a
commit 823c4daece
4 changed files with 40 additions and 45 deletions

View File

@@ -262,6 +262,20 @@ public class DashboardFeatureProviderImplTest {
assertThat(preference.getSummary()).isEqualTo(ShadowTileUtils.MOCK_SUMMARY);
}
@Test
@Config(shadows = {ShadowTileUtils.class})
public void bindPreference_hasTitleUri_shouldLoadFromContentProvider() {
final Preference preference = new Preference(RuntimeEnvironment.application);
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_TITLE_URI,
"content://com.android.settings/tile_title");
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
preference, tile, null /*key */, Preference.DEFAULT_ORDER);
assertThat(preference.getTitle()).isEqualTo(ShadowTileUtils.MOCK_SUMMARY);
}
@Test
public void bindPreference_withNullKeyTileKey_shouldUseTileKey() {
final Preference preference = new Preference(RuntimeEnvironment.application);

View File

@@ -16,21 +16,16 @@
package com.android.settings.dashboard;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;
import org.junit.Before;
@@ -89,26 +84,4 @@ public class SummaryLoaderTest {
assertThat(mCallbackInvoked).isTrue();
}
@Test
public void testUpdateSummaryToCache_hasCache_shouldUpdate() {
final String testSummary = "test_summary";
final DashboardCategory category = new DashboardCategory(CategoryKey.CATEGORY_HOMEPAGE);
final ActivityInfo activityInfo = new ActivityInfo();
activityInfo.packageName = "pkg";
activityInfo.name = "cls";
activityInfo.metaData = new Bundle();
activityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "123");
final Tile tile = new Tile(activityInfo, category.key);
category.addTile(tile);
when(mFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(tile))
.thenReturn(tile.getKey(RuntimeEnvironment.application));
mSummaryLoader.updateSummaryIfNeeded(mContext, tile, testSummary);
tile.overrideSummary(null);
mSummaryLoader.updateSummaryToCache(category);
assertThat(tile.getSummary(mContext)).isEqualTo(testSummary);
}
}