diff --git a/res/values/config.xml b/res/values/config.xml index 9a6e4863b20..d34c481e6f7 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -473,4 +473,10 @@ + + + + + + diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java index 0243b8a4545..9c00e4be129 100644 --- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java @@ -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; + } + } + } + } } diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml index b1d4be9ea1c..af02d4523dc 100644 --- a/tests/robotests/res/values-mcc999/config.xml +++ b/tests/robotests/res/values-mcc999/config.xml @@ -100,4 +100,14 @@ content://com.android.settings.slices/test + + + + com.android.settings + + + + + 100 + diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java index 36bc376a4d0..a0024c04895 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java @@ -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); + } }