Add isSliceable API to BasePrefController

Only support explicitly approved Settings Slices,
dictated by controllers which return true for the new
method isSliceable.

Updating the supported settings to a whitelist means that
the method to return all available slices must be updated,
and checking slicability when we index slices.

Test: robotests
Bug: 79779103
Change-Id: Ib2b9690cdd0036b5cc4a1cb846c52bce7c824ab9
This commit is contained in:
Matthew Fritze
2018-05-18 17:59:26 -07:00
parent 49d8b0a3e4
commit bf1f5b5813
47 changed files with 475 additions and 18 deletions

View File

@@ -28,10 +28,10 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
import android.text.TextUtils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settings.R;
import com.android.settings.search.DatabaseIndexingUtils;
import com.android.settings.search.InlineSwitchPayload;
@@ -88,6 +88,11 @@ public class BadgingNotificationPreferenceController extends TogglePreferenceCon
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean isSliceable() {
return TextUtils.equals(getPreferenceKey(), "notification_badging");
}
@Override
public boolean isChecked() {
return Settings.Secure.getInt(mContext.getContentResolver(),

View File

@@ -18,6 +18,7 @@ package com.android.settings.notification;
import android.content.Context;
import android.media.AudioManager;
import android.text.TextUtils;
import com.android.settings.R;
@@ -37,6 +38,11 @@ public class CallVolumePreferenceController extends VolumeSeekBarPreferenceContr
&& !mHelper.isSingleVolume() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean isSliceable() {
return TextUtils.equals(getPreferenceKey(), "call_volume");
}
@Override
public int getAudioStream() {
if (mAudioManager.isBluetoothScoOn()) {

View File

@@ -18,6 +18,7 @@ package com.android.settings.notification;
import android.content.Context;
import android.media.AudioManager;
import android.text.TextUtils;
import com.android.settings.R;
@@ -37,6 +38,11 @@ public class MediaVolumePreferenceController extends
: UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean isSliceable() {
return TextUtils.equals(getPreferenceKey(), KEY_MEDIA_VOLUME);
}
@Override
public String getPreferenceKey() {
return KEY_MEDIA_VOLUME;

View File

@@ -18,6 +18,7 @@ package com.android.settings.notification;
import android.content.Context;
import android.media.AudioManager;
import android.text.TextUtils;
import com.android.settings.R;
import com.android.settings.Utils;
@@ -38,6 +39,11 @@ public class NotificationVolumePreferenceController extends
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean isSliceable() {
return TextUtils.equals(getPreferenceKey(), KEY_NOTIFICATION_VOLUME);
}
@Override
public String getPreferenceKey() {
return KEY_NOTIFICATION_VOLUME;

View File

@@ -29,6 +29,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.Vibrator;
import android.text.TextUtils;
import com.android.settings.R;
import com.android.settings.Utils;
@@ -89,6 +90,11 @@ public class RingVolumePreferenceController extends VolumeSeekBarPreferenceContr
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean isSliceable() {
return TextUtils.equals(getPreferenceKey(), KEY_RING_VOLUME);
}
@Override
public int getAudioStream() {
return AudioManager.STREAM_RING;

View File

@@ -24,6 +24,8 @@ import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.provider.Settings;
import android.text.TextUtils;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -63,6 +65,11 @@ public class VibrateWhenRingPreferenceController extends TogglePreferenceControl
return Utils.isVoiceCapable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public boolean isSliceable() {
return TextUtils.equals(getPreferenceKey(), "vibrate_when_ringing");
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);