Merge "Refactor Settings for injection v2 inline toggle"
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index 4ab1117..57697a6 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -111,7 +111,7 @@
         filter.addDataScheme(DATA_SCHEME_PKG);
         registerReceiver(mPackageReceiver, filter);
 
-        new CategoriesUpdateTask().execute();
+        updateCategories();
     }
 
     @Override
@@ -154,7 +154,6 @@
         }
     }
 
-
     private boolean isLockTaskModePinned() {
         final ActivityManager activityManager =
                 getApplicationContext().getSystemService(ActivityManager.class);
@@ -226,7 +225,7 @@
     private class PackageReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
-            new CategoriesUpdateTask().execute();
+            updateCategories();
         }
     }
 }
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index e9b7f33..2cfcbe6 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -32,6 +32,7 @@
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.provider.Settings;
@@ -118,10 +119,10 @@
         bindTitle(pref, tile);
         bindSummary(pref, tile);
         bindIcon(pref, tile, forceRoundedIcon);
+
         final Bundle metadata = tile.getMetaData();
         String clsName = null;
         String action = null;
-
         if (metadata != null) {
             clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
             action = metadata.getString(META_DATA_KEY_INTENT_ACTION);
@@ -140,10 +141,9 @@
                 return true;
             });
         }
-        final String skipOffsetPackageName = activity.getPackageName();
-
 
         if (tile.hasOrder()) {
+            final String skipOffsetPackageName = activity.getPackageName();
             final int order = tile.getOrder();
             boolean shouldSkipBaseOrderOffset = TextUtils.equals(
                     skipOffsetPackageName, tile.getIntent().getComponent().getPackageName());
@@ -182,16 +182,20 @@
             // to avoid preference height change.
             preference.setTitle(R.string.summary_placeholder);
 
-            ThreadUtils.postOnBackgroundThread(() -> {
-                final Map<String, IContentProvider> providerMap = new ArrayMap<>();
-                final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_TITLE_URI);
-                final String titleFromUri = TileUtils.getTextFromUri(
-                        mContext, uri, providerMap, META_DATA_PREFERENCE_TITLE);
-                ThreadUtils.postOnMainThread(() -> preference.setTitle(titleFromUri));
-            });
+            final Uri uri = TileUtils.getCompleteUri(tile, META_DATA_PREFERENCE_TITLE_URI);
+            refreshTitle(uri, preference);
         }
     }
 
+    private void refreshTitle(Uri uri, Preference preference) {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            final Map<String, IContentProvider> providerMap = new ArrayMap<>();
+            final String titleFromUri = TileUtils.getTextFromUri(
+                    mContext, uri, providerMap, META_DATA_PREFERENCE_TITLE);
+            ThreadUtils.postOnMainThread(() -> preference.setTitle(titleFromUri));
+        });
+    }
+
     private void bindSummary(Preference preference, Tile tile) {
         final CharSequence summary = tile.getSummary(mContext);
         if (summary != null) {
@@ -202,22 +206,26 @@
             // to avoid preference height change.
             preference.setSummary(R.string.summary_placeholder);
 
-            ThreadUtils.postOnBackgroundThread(() -> {
-                final Map<String, IContentProvider> providerMap = new ArrayMap<>();
-                final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_SUMMARY_URI);
-                final String summaryFromUri = TileUtils.getTextFromUri(
-                        mContext, uri, providerMap, META_DATA_PREFERENCE_SUMMARY);
-                ThreadUtils.postOnMainThread(() -> preference.setSummary(summaryFromUri));
-            });
+            final Uri uri = TileUtils.getCompleteUri(tile, META_DATA_PREFERENCE_SUMMARY_URI);
+            refreshSummary(uri, preference);
         } else {
             preference.setSummary(R.string.summary_placeholder);
         }
     }
 
+    private void refreshSummary(Uri uri, Preference preference) {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            final Map<String, IContentProvider> providerMap = new ArrayMap<>();
+            final String summaryFromUri = TileUtils.getTextFromUri(
+                    mContext, uri, providerMap, META_DATA_PREFERENCE_SUMMARY);
+            ThreadUtils.postOnMainThread(() -> preference.setSummary(summaryFromUri));
+        });
+    }
+
     @VisibleForTesting
     void bindIcon(Preference preference, Tile tile, boolean forceRoundedIcon) {
         // Use preference context instead here when get icon from Tile, as we are using the context
-        // to get the style to tint the icon.  Using mContext here won't get the correct style.
+        // to get the style to tint the icon. Using mContext here won't get the correct style.
         final Icon tileIcon = tile.getIcon(preference.getContext());
         if (tileIcon != null) {
             Drawable iconDrawable = tileIcon.loadDrawable(preference.getContext());
@@ -238,7 +246,7 @@
                     packageName = intent.getComponent().getPackageName();
                 }
                 final Map<String, IContentProvider> providerMap = new ArrayMap<>();
-                final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_ICON_URI);
+                final Uri uri = TileUtils.getCompleteUri(tile, META_DATA_PREFERENCE_ICON_URI);
                 final Pair<String, Integer> iconInfo = TileUtils.getIconFromUri(
                         mContext, packageName, uri, providerMap);
                 if (iconInfo == null) {
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 01a2b14..3575b72 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -98,11 +98,11 @@
 
         // And wire up with lifecycle.
         final Lifecycle lifecycle = getSettingsLifecycle();
-        uniqueControllerFromXml
-                .stream()
-                .filter(controller -> controller instanceof LifecycleObserver)
-                .forEach(
-                        controller -> lifecycle.addObserver((LifecycleObserver) controller));
+        uniqueControllerFromXml.forEach(controller -> {
+            if (controller instanceof LifecycleObserver) {
+                lifecycle.addObserver((LifecycleObserver) controller);
+            }
+        });
 
         mPlaceholderPreferenceController =
                 new DashboardTilePlaceholderPreferenceController(context);
@@ -115,15 +115,13 @@
     @VisibleForTesting
     void checkUiBlocker(List<AbstractPreferenceController> controllers) {
         final List<String> keys = new ArrayList<>();
-        controllers
-                .stream()
-                .filter(controller -> controller instanceof BasePreferenceController.UiBlocker)
-                .forEach(controller -> {
-                    if (controller.isAvailable()) {
-                        ((BasePreferenceController) controller).setUiBlockListener(this);
-                        keys.add(controller.getPreferenceKey());
-                    }
-                });
+        controllers.forEach(controller -> {
+            if (controller instanceof BasePreferenceController.UiBlocker
+                    && controller.isAvailable()) {
+                ((BasePreferenceController) controller).setUiBlockListener(this);
+                keys.add(controller.getPreferenceKey());
+            }
+        });
 
         if (!keys.isEmpty()) {
             mBlockerController = new UiBlockerController(keys);
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java
index dffa968..03c5de3 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java
@@ -47,6 +47,7 @@
 import com.android.settings.dashboard.DashboardFeatureProviderImpl;
 import com.android.settings.testutils.shadow.ShadowAccountManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
+import com.android.settingslib.drawer.ActivityTile;
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.Tile;
 
@@ -105,7 +106,7 @@
 
     @Test
     public void refreshDashboardTiles_HasAccountType_shouldDisplay() {
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
         mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
         mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");
 
@@ -114,7 +115,7 @@
 
     @Test
     public void refreshDashboardTiles_NoAccountType_shouldNotDisplay() {
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
         mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
 
         assertThat(mFragment.displayTile(tile)).isFalse();
@@ -122,7 +123,7 @@
 
     @Test
     public void refreshDashboardTiles_OtherAccountType_shouldNotDisplay() {
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
         mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
         mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.other");
 
@@ -138,7 +139,7 @@
         when(packageManager.resolveActivity(any(Intent.class), anyInt()))
                 .thenReturn(mock(ResolveInfo.class));
 
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
         mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
         mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT);
         mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");
@@ -166,7 +167,7 @@
     public void displayTile_shouldAddUserHandleToTileIntent() {
         mFragment.mUserHandle = new UserHandle(1);
 
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
         mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT);
         mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java b/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
index 0de212d..1efaed9 100644
--- a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
@@ -27,6 +27,7 @@
 import android.os.Bundle;
 import android.util.Pair;
 
+import com.android.settingslib.drawer.ActivityTile;
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
@@ -68,8 +69,8 @@
 
     @Test
     public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForNewKeys() {
-        final Tile tile1 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
-        final Tile tile2 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
+        final Tile tile1 = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
+        final Tile tile2 = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
         final DashboardCategory category = new DashboardCategory(CategoryKey.CATEGORY_ACCOUNT);
         category.addTile(tile1);
         category.addTile(tile2);
@@ -85,9 +86,9 @@
 
     @Test
     public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForMixedKeys() {
-        final Tile tile1 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
+        final Tile tile1 = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
         final String oldCategory = "com.android.settings.category.wireless";
-        final Tile tile2 = new Tile(mActivityInfo, oldCategory);
+        final Tile tile2 = new ActivityTile(mActivityInfo, oldCategory);
         final DashboardCategory category1 = new DashboardCategory(CategoryKey.CATEGORY_ACCOUNT);
         category1.addTile(tile1);
         final DashboardCategory category2 = new DashboardCategory(oldCategory);
@@ -108,7 +109,7 @@
     @Test
     public void backwardCompatCleanupForCategory_shouldChangeCategoryForOldKeys() {
         final String oldCategory = "com.android.settings.category.wireless";
-        final Tile tile1 = new Tile(mActivityInfo, oldCategory);
+        final Tile tile1 = new ActivityTile(mActivityInfo, oldCategory);
         tile1.setCategory(oldCategory);
         final DashboardCategory category1 = new DashboardCategory(oldCategory);
         category1.addTile(tile1);
@@ -146,9 +147,9 @@
         activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 200);
         activityInfo3.packageName = testPackage;
         activityInfo3.name = "class3";
-        final Tile tile1 = new Tile(activityInfo1, category.key);
-        final Tile tile2 = new Tile(activityInfo2, category.key);
-        final Tile tile3 = new Tile(activityInfo3, category.key);
+        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
+        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
+        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
 
         category.addTile(tile1);
         category.addTile(tile2);
@@ -186,9 +187,9 @@
         activityInfo3.packageName = testPackage1;
         activityInfo3.name = "class3";
 
-        final Tile tile1 = new Tile(activityInfo1, category.key);
-        final Tile tile2 = new Tile(activityInfo2, category.key);
-        final Tile tile3 = new Tile(activityInfo3, category.key);
+        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
+        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
+        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
         category.addTile(tile1);
         category.addTile(tile2);
         category.addTile(tile3);
@@ -223,9 +224,9 @@
         activityInfo3.name = "class3";
         activityInfo3.metaData = new Bundle();
         activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 50);
-        final Tile tile1 = new Tile(activityInfo1, category.key);
-        final Tile tile2 = new Tile(activityInfo2, category.key);
-        final Tile tile3 = new Tile(activityInfo3, category.key);
+        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
+        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
+        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
         category.addTile(tile1);
         category.addTile(tile2);
         category.addTile(tile3);
@@ -268,10 +269,10 @@
         activityInfo4.metaData = new Bundle();
         activityInfo4.metaData.putInt(META_DATA_KEY_ORDER, -1);
 
-        final Tile tile1 = new Tile(activityInfo1, category.key);
-        final Tile tile2 = new Tile(activityInfo2, category.key);
-        final Tile tile4 = new Tile(activityInfo4, category.key);
-        final Tile tile3 = new Tile(activityInfo3, category.key);
+        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
+        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
+        final Tile tile4 = new ActivityTile(activityInfo4, category.key);
+        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
         category.addTile(tile1);
         category.addTile(tile2);
         category.addTile(tile3);
@@ -310,9 +311,9 @@
         activityInfo3.name = "class3";
         activityInfo3.metaData = new Bundle();
         activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 1);
-        final Tile tile1 = new Tile(activityInfo1, category.key);
-        final Tile tile2 = new Tile(activityInfo2, category.key);
-        final Tile tile3 = new Tile(activityInfo3, category.key);
+        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
+        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
+        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
         category.addTile(tile1);
         category.addTile(tile2);
         category.addTile(tile3);
@@ -347,9 +348,9 @@
         activityInfo3.name = "class3";
         activityInfo3.metaData = new Bundle();
         activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 50);
-        final Tile tile1 = new Tile(activityInfo1, category.key);
-        final Tile tile2 = new Tile(activityInfo2, category.key);
-        final Tile tile3 = new Tile(activityInfo3, category.key);
+        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
+        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
+        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
         category.addTile(tile1);
         category.addTile(tile2);
         category.addTile(tile3);
@@ -381,9 +382,9 @@
         activityInfo3.metaData = new Bundle();
         activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 50);
 
-        final Tile tile1 = new Tile(activityInfo1, category.key);
-        final Tile tile2 = new Tile(activityInfo2, category.key);
-        final Tile tile3 = new Tile(activityInfo3, category.key);
+        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
+        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
+        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
         category.addTile(tile1);
         category.addTile(tile2);
         category.addTile(tile3);
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
index 7084856..7dafd07 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
@@ -57,10 +57,10 @@
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.testutils.shadow.ShadowThreadUtils;
 import com.android.settings.testutils.shadow.ShadowTileUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.drawer.ActivityTile;
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.drawer.TileUtils;
@@ -127,7 +127,7 @@
     @Test
     public void bindPreference_shouldBindAllData() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
+        final Tile tile = spy(new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
         mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
         doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)))
                 .when(tile).getIcon(any(Context.class));
@@ -148,7 +148,7 @@
     public void bindPreference_noFragmentMetadata_shouldBindIntent() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
         mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
 
         mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES,
                 preference, tile, "123", Preference.DEFAULT_ORDER);
@@ -161,7 +161,7 @@
     @Test
     public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         tile.userHandle = new ArrayList<>();
         tile.userHandle.add(mock(UserHandle.class));
         tile.userHandle.add(mock(UserHandle.class));
@@ -176,7 +176,7 @@
     @Test
     public void bindPreference_noFragmentMetadataSingleUser_shouldBindToDirectLaunchIntent() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         tile.userHandle = new ArrayList<>();
         tile.userHandle.add(mock(UserHandle.class));
 
@@ -199,7 +199,7 @@
     public void bindPreference_toInternalSettingActivity_shouldBindToDirectLaunchIntentAndNotLog() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
         mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName();
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         tile.userHandle = new ArrayList<>();
         tile.userHandle.add(mock(UserHandle.class));
 
@@ -226,7 +226,7 @@
     @Test
     public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
                 preference, tile, null /*key */, Preference.DEFAULT_ORDER);
 
@@ -239,7 +239,7 @@
         final Preference preference = new Preference(RuntimeEnvironment.application);
         mActivityInfo.metaData.remove(META_DATA_PREFERENCE_SUMMARY);
 
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
 
         mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
                 preference, tile, null /*key */, Preference.DEFAULT_ORDER);
@@ -252,7 +252,7 @@
     @Config(shadows = {ShadowTileUtils.class})
     public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProvider() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI,
                 "content://com.android.settings/tile_summary");
 
@@ -266,7 +266,7 @@
     @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);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_TITLE_URI,
                 "content://com.android.settings/tile_title");
 
@@ -280,7 +280,7 @@
     public void bindPreference_withNullKeyTileKey_shouldUseTileKey() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
         mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
                 preference, tile, null /* key */, Preference.DEFAULT_ORDER);
 
@@ -292,7 +292,7 @@
     public void bindPreference_withIconUri_shouldLoadIconFromContentProvider() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
         mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName();
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
         mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_ICON_URI,
                 "content://com.android.settings/tile_icon");
@@ -306,7 +306,7 @@
         final int baseOrder = 100;
         final Preference preference = new Preference(RuntimeEnvironment.application);
         mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
 
         mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
                 preference, tile, "123", baseOrder);
@@ -319,7 +319,7 @@
         final Preference preference = new Preference(RuntimeEnvironment.application);
         final int testOrder = -30;
         mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, testOrder);
         mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
                 preference, tile, "123", Preference.DEFAULT_ORDER);
@@ -330,7 +330,7 @@
     @Test
     public void bindPreference_invalidOrderMetadata_shouldIgnore() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mActivityInfo.metaData.putString(META_DATA_KEY_ORDER, "hello");
 
         mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
@@ -343,7 +343,7 @@
     public void bindPreference_withIntentActionMetadata_shouldSetLaunchAction() {
         FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get();
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
         mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction");
         tile.userHandle = null;
@@ -366,7 +366,7 @@
                 mImpl, "mPackageManager", RuntimeEnvironment.application.getPackageManager());
         FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get();
         final Preference preference = new Preference(RuntimeEnvironment.application);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
         mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction");
         tile.userHandle = null;
@@ -385,7 +385,7 @@
     public void openTileIntent_profileSelectionDialog_shouldShow() {
         ShadowUserManager.getShadow().addUser(10, "Someone", 0);
 
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         final ArrayList<UserHandle> handles = new ArrayList<>();
         handles.add(new UserHandle(0));
         handles.add(new UserHandle(10));
@@ -402,7 +402,7 @@
         ShadowUserManager.getShadow().addUser(10, "Someone", 0);
 
         mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_ALL);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         final ArrayList<UserHandle> handles = new ArrayList<>();
         handles.add(new UserHandle(0));
         handles.add(new UserHandle(10));
@@ -419,7 +419,7 @@
         ShadowUserManager.getShadow().addUser(10, "Someone", 0);
 
         mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_PRIMARY);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         final ArrayList<UserHandle> handles = new ArrayList<>();
         handles.add(new UserHandle(0));
         handles.add(new UserHandle(10));
@@ -437,7 +437,7 @@
         ShadowUserManager.getShadow().addUser(userId, "Someone", 0);
 
         final UserHandle userHandle = new UserHandle(userId);
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         tile.getIntent().putExtra(EXTRA_USER, userHandle);
         final ArrayList<UserHandle> handles = new ArrayList<>();
         handles.add(new UserHandle(0));
@@ -457,7 +457,7 @@
     public void openTileIntent_profileSelectionDialog_invalidUserHandleShouldShow() {
         ShadowUserManager.getShadow().addUser(10, "Someone", 0);
 
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         tile.getIntent().putExtra(EXTRA_USER, new UserHandle(30));
         final ArrayList<UserHandle> handles = new ArrayList<>();
         handles.add(new UserHandle(0));
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index 188f566..954a872 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -45,6 +45,7 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
+import com.android.settingslib.drawer.ActivityTile;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 
@@ -86,7 +87,7 @@
         mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "injected_tile_key");
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mDashboardCategory = new DashboardCategory("key");
-        mDashboardCategory.addTile(new Tile(mActivityInfo, mDashboardCategory.key));
+        mDashboardCategory.addTile(new ActivityTile(mActivityInfo, mDashboardCategory.key));
         mTestFragment = new TestFragment(RuntimeEnvironment.application);
         when(mFakeFeatureFactory.dashboardFeatureProvider
                 .getTilesForCategory(nullable(String.class)))
diff --git a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java
index 2aee0dd..75a1c39 100644
--- a/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/profileselector/ProfileSelectDialogTest.java
@@ -29,6 +29,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 
+import com.android.settingslib.drawer.ActivityTile;
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.Tile;
 
@@ -66,7 +67,7 @@
 
     @Test
     public void updateUserHandlesIfNeeded_Normal() {
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         tile.userHandle.add(NORMAL_USER);
 
         ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile);
@@ -78,7 +79,7 @@
 
     @Test
     public void updateUserHandlesIfNeeded_Remove() {
-        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
         tile.userHandle.add(REMOVED_USER);
         tile.userHandle.add(NORMAL_USER);
         tile.userHandle.add(REMOVED_USER);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTileUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTileUtils.java
index 8736fe8..e46d72f 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTileUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTileUtils.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.content.IContentProvider;
+import android.net.Uri;
 import android.util.Pair;
 
 import com.android.settings.R;
@@ -35,14 +36,14 @@
     public static final String MOCK_SUMMARY = "summary";
 
     @Implementation
-    protected static String getTextFromUri(Context context, String uriString,
+    protected static String getTextFromUri(Context context, Uri uri,
             Map<String, IContentProvider> providerMap, String key) {
         return MOCK_SUMMARY;
     }
 
     @Implementation
     protected static Pair<String, Integer> getIconFromUri(Context context, String packageName,
-            String uriString, Map<String, IContentProvider> providerMap) {
+            Uri uri, Map<String, IContentProvider> providerMap) {
         return Pair.create(RuntimeEnvironment.application.getPackageName(), R.drawable.ic_settings_accent);
     }
 }