Use DashboardFeatureProvider to load homepage tiles.

Adding support to homepage category.

Test: SettingsRoboTests for regression. Will write tests for new feature
soon once we are set on the data structure.
Bug: 31781480

Change-Id: I25fa367fecb643f17e23f0182df7585bf1fcdd02
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 69b86fe..ecfc373 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -55,6 +55,7 @@
 import com.android.settings.accessibility.AccessibilitySettings;
 import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard;
 import com.android.settings.accessibility.CaptionPropertiesFragment;
+import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment;
 import com.android.settings.accounts.AccountSettings;
 import com.android.settings.accounts.AccountSyncSettings;
 import com.android.settings.accounts.ChooseAccountActivity;
@@ -74,7 +75,10 @@
 import com.android.settings.bluetooth.BluetoothSettings;
 import com.android.settings.core.instrumentation.SharedPreferencesLogger;
 import com.android.settings.dashboard.DashboardContainerFragment;
+import com.android.settings.dashboard.DashboardFeatureProvider;
+import com.android.settings.dashboard.DashboardSummary;
 import com.android.settings.dashboard.SearchResultsSummary;
+import com.android.settings.dashboard.SupportFragment;
 import com.android.settings.datausage.DataUsageSummary;
 import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
 import com.android.settings.deviceinfo.ImeiInformation;
@@ -113,6 +117,7 @@
 import com.android.settings.notification.ZenModeScheduleRuleSettings;
 import com.android.settings.notification.ZenModeSettings;
 import com.android.settings.notification.ZenModeVisualInterruptionSettings;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.print.PrintJobSettingsFragment;
 import com.android.settings.print.PrintSettingsFragment;
 import com.android.settings.qstile.DevelopmentTiles;
@@ -294,7 +299,7 @@
             AccessibilitySettings.class.getName(),
             AccessibilitySettingsForSetupWizard.class.getName(),
             CaptionPropertiesFragment.class.getName(),
-            com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment.class.getName(),
+            ToggleDaltonizerPreferenceFragment.class.getName(),
             TextToSpeechSettings.class.getName(),
             StorageSettings.class.getName(),
             PrivateVolumeForget.class.getName(),
@@ -357,7 +362,8 @@
             MasterClear.class.getName(),
             NightDisplaySettings.class.getName(),
             ManageDomainUrls.class.getName(),
-            AutomaticStorageManagerSettings.class.getName()
+            AutomaticStorageManagerSettings.class.getName(),
+            SupportFragment.class.getName()
     };
 
 
@@ -424,6 +430,7 @@
 
     private boolean mNeedToRevertToInitialFragment = false;
 
+    private DashboardFeatureProvider mDashboardFeatureProvider;
     private Intent mResultIntentData;
     private ComponentName mCurrentSuggestion;
 
@@ -533,7 +540,8 @@
     protected void onCreate(Bundle savedState) {
         super.onCreate(savedState);
         long startTime = System.currentTimeMillis();
-
+        mDashboardFeatureProvider =
+                FeatureFactory.getFactory(this).getDashboardFeatureProvider(this);
         // Should happen before any call to getIntent()
         getMetaData();
 
@@ -643,9 +651,13 @@
                 final Bundle args = new Bundle();
                 final String extraName = DashboardContainerFragment.EXTRA_SELECT_SETTINGS_TAB;
                 args.putString(extraName, intent.getStringExtra(extraName));
-
-                switchToFragment(DashboardContainerFragment.class.getName(), args, false, false,
-                        mInitialTitleResId, mInitialTitle, false);
+                if (isDashboardFeatureEnabled()) {
+                    switchToFragment(DashboardSummary.class.getName(), args, false, false,
+                            mInitialTitleResId, mInitialTitle, false);
+                } else {
+                    switchToFragment(DashboardContainerFragment.class.getName(), args, false, false,
+                            mInitialTitleResId, mInitialTitle, false);
+                }
             }
         }
 
@@ -1114,7 +1126,13 @@
 
         if (UserHandle.MU_ENABLED && !isAdmin) {
             // When on restricted users, disable all extra categories (but only the settings ones).
-            List<DashboardCategory> categories = getDashboardCategories();
+            List<DashboardCategory> categories;
+            if (isDashboardFeatureEnabled()) {
+                categories = mDashboardFeatureProvider.getAllCategories();
+            } else {
+                categories = getDashboardCategories();
+            }
+
             for (DashboardCategory category : categories) {
                 for (Tile tile : category.tiles) {
                     ComponentName component = tile.intent.getComponent();
@@ -1165,6 +1183,15 @@
         }
     }
 
+    @Override
+    protected boolean isDashboardFeatureEnabled() {
+        if (mDashboardFeatureProvider == null) {
+            mDashboardFeatureProvider =
+                    FeatureFactory.getFactory(this).getDashboardFeatureProvider(this);
+        }
+        return mDashboardFeatureProvider.isEnabled();
+    }
+
     // give subclasses access to the Next button
     public boolean hasNextButton() {
         return mNextButton != null;