Override homepage tile positions for silky home

Create configs to record the packages and orders of homepage tiles and
then according to these data to override homepage tile positions.

Bug: 168166015
Test: visual with turning on/off silky home
Change-Id: I3fcb54ac531a124101084bb40064b5a7227bf311
This commit is contained in:
Yanting Yang
2021-01-12 13:41:04 +08:00
parent bfcb1dc2c4
commit b3381de206
4 changed files with 54 additions and 0 deletions

View File

@@ -473,4 +473,10 @@
<!-- Authority of advanced device battery prediction -->
<string name="config_battery_prediction_authority" translatable="false"></string>
<!-- Packages for overriding tile positions on the homepage -->
<string-array name="config_homepage_tile_packages" translatable="false"/>
<!-- Orders for overriding tile positions on the homepage -->
<integer-array name="config_homepage_tile_orders"/>
</resources>

View File

@@ -184,6 +184,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
pref.setOrder(order + baseOrder);
}
}
overrideTilePosition(tile, pref);
return outObservers.isEmpty() ? null : outObservers;
}
@@ -457,4 +460,25 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
}
return eligibleUsers;
}
private void overrideTilePosition(Tile tile, Preference pref) {
if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)
&& TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) {
final String[] homepageTilePackages = mContext.getResources().getStringArray(
R.array.config_homepage_tile_packages);
final int[] homepageTileOrders = mContext.getResources().getIntArray(
R.array.config_homepage_tile_orders);
if (homepageTilePackages.length == 0
|| homepageTilePackages.length != homepageTileOrders.length) {
return;
}
for (int i = 0; i < homepageTilePackages.length; i++) {
if (TextUtils.equals(tile.getPackageName(), homepageTilePackages[i])) {
pref.setOrder(homepageTileOrders[i]);
return;
}
}
}
}
}

View File

@@ -100,4 +100,14 @@
<!-- Uri to query non-public Slice Uris. -->
<string name="config_non_public_slice_query_uri" translatable="false">content://com.android.settings.slices/test</string>
<!-- Packages for overriding tile positions on the homepage -->
<string-array name="config_homepage_tile_packages" translatable="false">
<item>com.android.settings</item>
</string-array>
<!-- Orders for overriding tile positions on the homepage -->
<integer-array name="config_homepage_tile_orders">
<item>100</item>
</integer-array>
</resources>

View File

@@ -707,4 +707,18 @@ public class DashboardFeatureProviderImplTest {
assertThat(preference.getSummary()).isEqualTo(
mContext.getText(R.string.about_settings_summary));
}
@Test
@Config(qualifiers = "mcc999")
public void bindPreference_specificHomepageTile_shouldOverridePosition() {
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
final Preference preference = new Preference(RuntimeEnvironment.application);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mImpl.bindPreferenceToTileAndGetObservers(mActivity, mForceRoundedIcon,
MetricsEvent.VIEW_UNKNOWN, preference, tile, null /*key */,
Preference.DEFAULT_ORDER);
assertThat(preference.getOrder()).isEqualTo(100);
}
}