Make PreferenceController a mixin

Bug: 62912136
Test: Existing tests in BaseSearchIndexProviderTest
Change-Id: Ieda359806c09a019840b2005446c7ec8b61fdb00
This commit is contained in:
Tony Mantler
2017-06-13 13:09:25 -07:00
parent 4bac421538
commit 1d583e125f
203 changed files with 1027 additions and 782 deletions

View File

@@ -20,12 +20,13 @@ import android.content.Context;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnResume;
public abstract class DynamicAvailabilityPreferenceController extends PreferenceController
implements LifecycleObserver, OnResume {
public abstract class DynamicAvailabilityPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnResume {
private Preference mPreference;
private PreferenceScreen mScreen;

View File

@@ -15,21 +15,28 @@
*/
package com.android.settings.core;
import android.content.Context;
import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.search.ResultPayload;
import com.android.settings.search.SearchIndexableRaw;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.List;
/**
* A controller that manages event for preference.
* A controller mixin that adds mobile settings specific functionality
*/
public abstract class PreferenceController extends AbstractPreferenceController {
public interface PreferenceControllerMixin {
public PreferenceController(Context context) {
super(context);
/**
* Updates non-indexable keys for search provider.
*
* Called by SearchIndexProvider#getNonIndexableKeys
*/
default void updateNonIndexableKeys(List<String> keys) {
if (this instanceof AbstractPreferenceController) {
if (!((AbstractPreferenceController) this).isAvailable()) {
keys.add(((AbstractPreferenceController) this).getPreferenceKey());
}
}
}
/**
@@ -37,13 +44,13 @@ public abstract class PreferenceController extends AbstractPreferenceController
*
* Called by SearchIndexProvider#getRawDataToIndex
*/
public void updateRawDataToIndex(List<SearchIndexableRaw> rawData) {
default void updateRawDataToIndex(List<SearchIndexableRaw> rawData) {
}
/**
* @return the {@link ResultPayload} corresponding to the search result type for the preference.
*/
public ResultPayload getResultPayload() {
default ResultPayload getResultPayload() {
return null;
}
}