Merge "Import translations. DO NOT MERGE"
diff --git a/res/xml/storage_dashboard_fragment.xml b/res/xml/storage_dashboard_fragment.xml
index 463dd96..81191e8 100644
--- a/res/xml/storage_dashboard_fragment.xml
+++ b/res/xml/storage_dashboard_fragment.xml
@@ -14,7 +14,9 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/storage_settings">
     <com.android.settings.dashboard.DashboardTilePreference
         android:key="pref_manage_storage"
         android:title="@string/storage_menu_manage"
diff --git a/src/com/android/settings/core/PreferenceController.java b/src/com/android/settings/core/PreferenceController.java
index 55e3394..eb912b2 100644
--- a/src/com/android/settings/core/PreferenceController.java
+++ b/src/com/android/settings/core/PreferenceController.java
@@ -19,6 +19,8 @@
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 
+import java.util.List;
+
 /**
  * A controller that manages event for preference.
  */
@@ -43,6 +45,12 @@
      */
     public abstract boolean handlePreferenceTreeClick(Preference preference);
 
+    /**
+     * Updates non-indexable keys for search provider.
+     *
+     * Called by SearchIndexProvider#getNonIndexableKeys
+     */
+    public abstract void updateNonIndexableKeys(List<String> keys);
 
     /**
      * Removes preference from screen.
diff --git a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
index 86dc07d..aae4be0 100644
--- a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
@@ -22,6 +22,8 @@
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 
+import java.util.List;
+
 public class ManageStoragePreferenceController extends PreferenceController {
 
     public static final String KEY_MANAGE_STORAGE = "pref_manage_storage";
@@ -38,6 +40,13 @@
     }
 
     @Override
+    public void updateNonIndexableKeys(List<String> keys) {
+        if (!isAvailable()) {
+            keys.add(KEY_MANAGE_STORAGE);
+        }
+    }
+
+    @Override
     public boolean handlePreferenceTreeClick(Preference preference) {
         return false;
     }
diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
index f32731c..cb6343a 100644
--- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
@@ -18,10 +18,19 @@
 
 import android.content.Context;
 import android.os.Bundle;
+import android.os.UserManager;
+import android.provider.SearchIndexableResource;
 import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 public class StorageDashboardFragment extends DashboardFragment {
 
@@ -62,4 +71,35 @@
         displayTilesAsPreference(TAG, getPreferenceScreen(),
                 mDashboardFeatureProvider.getTilesForStorageCategory());
     }
+
+    /**
+     * For Search.
+     */
+    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
+                            .isEnabled()) {
+                        return null;
+                    }
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.storage_dashboard_fragment;
+                    return Arrays.asList(sir);
+                }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
+                            .isEnabled()) {
+                        return null;
+                    }
+                    final ManageStoragePreferenceController controller =
+                            new ManageStoragePreferenceController(context);
+                    final List<String> keys = new ArrayList<>();
+                    controller.updateNonIndexableKeys(keys);
+                    return keys;
+                }
+            };
 }
diff --git a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
index dfab981..5c2ebcb 100644
--- a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
@@ -62,11 +62,7 @@
         }
     }
 
-    /**
-     * Updates non-indexable keys for search provider.
-     *
-     * Called by SearchIndexProvider#getNonIndexableKeys
-     */
+    @Override
     public void updateNonIndexableKeys(List<String> keys) {
         // TODO: system update needs to be fixed for non-owner user b/22760654
         if (!isAvailable(mContext, KEY_SYSTEM_UPDATE_SETTINGS)) {
diff --git a/src/com/android/settings/search/Ranking.java b/src/com/android/settings/search/Ranking.java
index 1f5df85..e9ceb85 100644
--- a/src/com/android/settings/search/Ranking.java
+++ b/src/com/android/settings/search/Ranking.java
@@ -34,6 +34,7 @@
 import com.android.settings.bluetooth.BluetoothSettings;
 import com.android.settings.datausage.DataUsageMeteredSettings;
 import com.android.settings.datausage.DataUsageSummary;
+import com.android.settings.deviceinfo.StorageDashboardFragment;
 import com.android.settings.deviceinfo.StorageSettings;
 import com.android.settings.display.ScreenZoomSettings;
 import com.android.settings.fuelgauge.BatterySaverSettings;
@@ -186,6 +187,7 @@
         sRankMap.put(DeviceInfoSettings.class.getName(), RANK_DEVICE_INFO);
         sRankMap.put(LegalSettings.class.getName(), RANK_DEVICE_INFO);
 
+        sRankMap.put(StorageDashboardFragment.class.getName(), RANK_STORAGE);
         sRankMap.put(SystemDashboardFragment.class.getName(), RANK_DEVICE_INFO);
 
         sBaseRankMap.put("com.android.settings", 0);
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 299f059..1b8e0be 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -35,6 +35,7 @@
 import com.android.settings.bluetooth.BluetoothSettings;
 import com.android.settings.datausage.DataUsageMeteredSettings;
 import com.android.settings.datausage.DataUsageSummary;
+import com.android.settings.deviceinfo.StorageDashboardFragment;
 import com.android.settings.deviceinfo.StorageSettings;
 import com.android.settings.display.ScreenZoomSettings;
 import com.android.settings.fuelgauge.BatterySaverSettings;
@@ -334,6 +335,12 @@
                         NO_DATA_RES_ID,
                         SystemDashboardFragment.class.getName(),
                         R.drawable.ic_settings_about));
+        sResMap.put(StorageDashboardFragment.class.getName(),
+                new SearchIndexableResource(
+                        Ranking.getRankForClassName(StorageDashboardFragment.class.getName()),
+                        NO_DATA_RES_ID,
+                        StorageDashboardFragment.class.getName(),
+                        R.drawable.ic_settings_storage));
     }
 
     private SearchIndexableResources() {