Allow page to suppress all of its content from search.

To suppress things from search, we usually use preferencecontroller to
control individual items. But a page can sometimes to disabled
entirely. Now it can set isPageSearchEnabled to false to achieve that.

Change-Id: I39424b7fdc6460e27fd7c83cf09b5ace12d1cc37
Fix: 36201167
Test: make RunSettingsRoboTests
This commit is contained in:
Fan Zhang
2017-03-14 12:38:43 -07:00
parent ae4d32e2ab
commit cabc509e4f
5 changed files with 139 additions and 13 deletions

View File

@@ -23,6 +23,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.core.PreferenceController;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import java.util.ArrayList;
@@ -71,14 +72,25 @@ public class EnterprisePrivacySettings extends DashboardFragment {
return controllers;
}
public static boolean isPageEnabled(Context context) {
return FeatureFactory.getFactory(context)
.getEnterprisePrivacyFeatureProvider(context)
.hasDeviceOwner();
}
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
final SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.enterprise_privacy_settings;
return Arrays.asList(sir);
}
};
new BaseSearchIndexProvider() {
@Override
protected boolean isPageSearchEnabled(Context context) {
return isPageEnabled(context);
}
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
final SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.enterprise_privacy_settings;
return Arrays.asList(sir);
}
};
}