Merge "Fix bottom zone is transparent in add network page"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f29ed2f..69152dd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7239,7 +7239,7 @@
     <string name="keywords_sounds_and_notifications_interruptions">dont don\u2019t disturb, interrupt, interruption, break</string>
     <string name="keywords_app">RAM</string>
     <string name="keywords_location">nearby, location, history, reporting, GPS</string>
-    <string name="keywords_accounts">account, add an account, work profile</string>
+    <string name="keywords_accounts">account, add an account, work profile, add account</string>
     <string name="keywords_users">restriction, restrict, restricted</string>
     <string name="keywords_keyboard_and_ime">text correction, correct, sound, vibrate, auto, language, gesture, suggest, suggestion, theme, offensive, word, type, emoji, international</string>
     <string name="keywords_reset_apps">reset, preferences, default</string>
diff --git a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
index d1a60fa..e53afeb 100644
--- a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
@@ -91,7 +91,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 
diff --git a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
index f613c69..31a8c19 100644
--- a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
@@ -70,6 +70,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public CharSequence getSummary() {
         int resId = 0;
         if (mIsFromSUW) {
diff --git a/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java b/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
index 5af5d93..1b8d854d 100644
--- a/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
@@ -77,6 +77,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public CharSequence getSummary() {
         int resId = 0;
         if (mIsFromSUW) {
diff --git a/src/com/android/settings/accounts/AccountDashboardFragment.java b/src/com/android/settings/accounts/AccountDashboardFragment.java
index 46c08ab..bee9071 100644
--- a/src/com/android/settings/accounts/AccountDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDashboardFragment.java
@@ -30,6 +30,7 @@
 import com.android.settings.users.AutoSyncWorkDataPreferenceController;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.search.SearchIndexableRaw;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -92,5 +93,11 @@
                     return buildPreferenceControllers(
                             context, null /* parent */, null /* authorities*/);
                 }
+
+                @Override
+                public List<SearchIndexableRaw> getDynamicRawDataToIndex(Context context,
+                        boolean enabled) {
+                    return null;
+                }
             };
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 6e1727b..36a7012 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -80,6 +80,9 @@
     private static final int ORDER_NEXT_TO_LAST = 1001;
     private static final int ORDER_NEXT_TO_NEXT_TO_LAST = 1000;
 
+    private static final String PREF_KEY_REMOVE_PROFILE = "remove_profile";
+    private static final String PREF_KEY_WORK_PROFILE_SETTING = "work_profile_setting";
+
     private UserManager mUm;
     private SparseArray<ProfileData> mProfiles = new SparseArray<ProfileData>();
     private ManagedProfileBroadcastReceiver mManagedProfileBroadcastReceiver =
@@ -170,7 +173,7 @@
     }
 
     @Override
-    public void updateRawDataToIndex(List<SearchIndexableRaw> rawData) {
+    public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) {
         if (!isAvailable()) {
             return;
         }
@@ -178,29 +181,21 @@
         final String screenTitle = res.getString(R.string.account_settings_title);
 
         List<UserInfo> profiles = mUm.getProfiles(UserHandle.myUserId());
-        final int profilesCount = profiles.size();
-        for (int i = 0; i < profilesCount; i++) {
-            UserInfo userInfo = profiles.get(i);
-            if (userInfo.isEnabled()) {
-                if (!mHelper.hasBaseUserRestriction(DISALLOW_MODIFY_ACCOUNTS, userInfo.id)) {
-                    SearchIndexableRaw data = new SearchIndexableRaw(mContext);
-                    data.title = res.getString(R.string.add_account_label);
+        for (final UserInfo userInfo : profiles) {
+            if (userInfo.isEnabled() && userInfo.isManagedProfile()) {
+                if (!mHelper.hasBaseUserRestriction(DISALLOW_REMOVE_MANAGED_PROFILE,
+                        UserHandle.myUserId())) {
+                    final SearchIndexableRaw data = new SearchIndexableRaw(mContext);
+                    data.key = PREF_KEY_REMOVE_PROFILE;
+                    data.title = res.getString(R.string.remove_managed_profile_label);
                     data.screenTitle = screenTitle;
                     rawData.add(data);
                 }
-                if (userInfo.isManagedProfile()) {
-                    if (!mHelper.hasBaseUserRestriction(DISALLOW_REMOVE_MANAGED_PROFILE,
-                            UserHandle.myUserId())) {
-                        SearchIndexableRaw data = new SearchIndexableRaw(mContext);
-                        data.title = res.getString(R.string.remove_managed_profile_label);
-                        data.screenTitle = screenTitle;
-                        rawData.add(data);
-                    }
-                    SearchIndexableRaw data = new SearchIndexableRaw(mContext);
-                    data.title = res.getString(R.string.managed_profile_settings_title);
-                    data.screenTitle = screenTitle;
-                    rawData.add(data);
-                }
+                final SearchIndexableRaw data = new SearchIndexableRaw(mContext);
+                data.key = PREF_KEY_WORK_PROFILE_SETTING;
+                data.title = res.getString(R.string.managed_profile_settings_title);
+                data.screenTitle = screenTitle;
+                rawData.add(data);
             }
         }
     }
@@ -375,6 +370,7 @@
     private RestrictedPreference newRemoveWorkProfilePreference() {
         RestrictedPreference preference = new RestrictedPreference(
                 mParent.getPreferenceManager().getContext());
+        preference.setKey(PREF_KEY_REMOVE_PROFILE);
         preference.setTitle(R.string.remove_managed_profile_label);
         preference.setIcon(R.drawable.ic_delete);
         preference.setOnPreferenceClickListener(this);
@@ -385,6 +381,7 @@
 
     private Preference newManagedProfileSettings() {
         Preference preference = new Preference(mParent.getPreferenceManager().getContext());
+        preference.setKey(PREF_KEY_WORK_PROFILE_SETTING);
         preference.setTitle(R.string.managed_profile_settings_title);
         preference.setIcon(R.drawable.ic_settings_24dp);
         preference.setOnPreferenceClickListener(this);
diff --git a/src/com/android/settings/core/TogglePreferenceController.java b/src/com/android/settings/core/TogglePreferenceController.java
index 165d7eb..7abe6e0 100644
--- a/src/com/android/settings/core/TogglePreferenceController.java
+++ b/src/com/android/settings/core/TogglePreferenceController.java
@@ -70,4 +70,13 @@
         return SliceData.SliceType.SWITCH;
     }
 
+    @Override
+    public boolean isSliceable() {
+        return true;
+    }
+
+    @Override
+    public boolean isPublicSlice() {
+        return false;
+    }
 }
\ No newline at end of file
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
index 40e34c0..52dbb5b 100644
--- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
@@ -103,6 +103,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isCopyableSlice() {
         return true;
     }
diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
index 71bd8c5..7d6f5e2 100644
--- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
@@ -96,6 +96,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isCopyableSlice() {
         return true;
     }
diff --git a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java
index daa10d2..3f93303 100644
--- a/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceController.java
@@ -69,6 +69,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public CharSequence getSummary() {
         return Build.VERSION.RELEASE;
     }
diff --git a/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceController.java b/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceController.java
index 93dd826..8a07961 100644
--- a/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceController.java
@@ -41,6 +41,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public CharSequence getSummary() {
         return HardwareInfoPreferenceController.getDeviceModel();
     }
diff --git a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java
index e7f6423..62da477 100644
--- a/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceController.java
@@ -46,6 +46,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isCopyableSlice() {
         return true;
     }
diff --git a/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java b/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java
index 7ef1313..9150482 100644
--- a/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceController.java
@@ -41,6 +41,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isCopyableSlice() {
         return true;
     }
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
index 3459b5c..bdce2f5 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
@@ -124,6 +124,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isCopyableSlice() {
         return true;
     }
diff --git a/src/com/android/settings/display/AdaptiveSleepDetailPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepDetailPreferenceController.java
index 0e2358c..d6eabec 100644
--- a/src/com/android/settings/display/AdaptiveSleepDetailPreferenceController.java
+++ b/src/com/android/settings/display/AdaptiveSleepDetailPreferenceController.java
@@ -36,7 +36,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 
diff --git a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
index a0b1f44..6dee5d2 100644
--- a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
@@ -56,6 +56,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isChecked() {
         return getConfig().alwaysOnEnabled(MY_USER);
     }
diff --git a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
index daaf7b1..e143d73 100644
--- a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
@@ -88,6 +88,11 @@
         return TextUtils.equals(getPreferenceKey(), "ambient_display_notification");
     }
 
+    @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
     private AmbientDisplayConfiguration getAmbientConfig() {
         if (mConfig == null) {
             mConfig = new AmbientDisplayConfiguration(mContext);
diff --git a/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java b/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java
index a04ddbf..030c5b9 100644
--- a/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessDetailPreferenceController.java
@@ -33,7 +33,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 }
diff --git a/src/com/android/settings/display/AutoRotatePreferenceController.java b/src/com/android/settings/display/AutoRotatePreferenceController.java
index f444d8a..202a085 100644
--- a/src/com/android/settings/display/AutoRotatePreferenceController.java
+++ b/src/com/android/settings/display/AutoRotatePreferenceController.java
@@ -82,6 +82,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isChecked() {
         return !RotationPolicy.isRotationLocked(mContext);
     }
diff --git a/src/com/android/settings/display/NightDisplayActivationPreferenceController.java b/src/com/android/settings/display/NightDisplayActivationPreferenceController.java
index df81ee7..c1c477e 100644
--- a/src/com/android/settings/display/NightDisplayActivationPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayActivationPreferenceController.java
@@ -64,6 +64,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
 
diff --git a/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java b/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java
index c8447cb..02dde40 100644
--- a/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java
@@ -51,6 +51,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         final SeekBarPreference preference = screen.findPreference(getPreferenceKey());
diff --git a/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
index af49f3d..040af9f 100644
--- a/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
@@ -56,6 +56,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public void updateState(Preference preference) {
         super.updateState(preference);
         final boolean smartBatteryOn = Settings.Global.getInt(mContext.getContentResolver(),
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
index 56e90ff..1f4690e 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
@@ -59,7 +59,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 
diff --git a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
index 751bb79..3d2e176 100644
--- a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
@@ -61,6 +61,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     protected String getVideoPrefKey() {
         return PREF_KEY_VIDEO;
     }
diff --git a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
index 4abf09a..c3171b8 100644
--- a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
@@ -78,6 +78,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean setChecked(boolean isChecked) {
         return Settings.Secure.putInt(mContext.getContentResolver(), SECURE_KEY,
                 isChecked ? ON : OFF);
diff --git a/src/com/android/settings/gestures/DoubleTwistPreferenceController.java b/src/com/android/settings/gestures/DoubleTwistPreferenceController.java
index d4c63c0..afc5074 100644
--- a/src/com/android/settings/gestures/DoubleTwistPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTwistPreferenceController.java
@@ -78,6 +78,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     protected String getVideoPrefKey() {
         return PREF_KEY_VIDEO;
     }
diff --git a/src/com/android/settings/gestures/GlobalActionsPanelPreferenceController.java b/src/com/android/settings/gestures/GlobalActionsPanelPreferenceController.java
index b980499..32a7ba5 100644
--- a/src/com/android/settings/gestures/GlobalActionsPanelPreferenceController.java
+++ b/src/com/android/settings/gestures/GlobalActionsPanelPreferenceController.java
@@ -61,6 +61,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean isChecked() {
         int enabled = Settings.Secure.getInt(mContext.getContentResolver(), ENABLED_SETTING, 0);
         return enabled == 1;
diff --git a/src/com/android/settings/gestures/PickupGesturePreferenceController.java b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
index 0738a51..c1590bf 100644
--- a/src/com/android/settings/gestures/PickupGesturePreferenceController.java
+++ b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
@@ -73,6 +73,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     protected String getVideoPrefKey() {
         return PREF_KEY_VIDEO;
     }
diff --git a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
index 104abf9..af541ff 100644
--- a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
+++ b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
@@ -66,6 +66,11 @@
     }
 
     @Override
+    public boolean isPublicSlice() {
+        return true;
+    }
+
+    @Override
     public boolean setChecked(boolean isChecked) {
         setSwipeToNotification(mContext, isChecked);
         return true;
diff --git a/src/com/android/settings/gestures/TapScreenGesturePreferenceController.java b/src/com/android/settings/gestures/TapScreenGesturePreferenceController.java
index ba2b869..179ed26 100644
--- a/src/com/android/settings/gestures/TapScreenGesturePreferenceController.java
+++ b/src/com/android/settings/gestures/TapScreenGesturePreferenceController.java
@@ -23,7 +23,6 @@
 import android.hardware.display.AmbientDisplayConfiguration;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.text.TextUtils;
 
 public class TapScreenGesturePreferenceController extends GesturePreferenceController {
 
@@ -54,7 +53,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 
diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java
index 1dc9588..3c79be3 100644
--- a/src/com/android/settings/network/AirplaneModePreferenceController.java
+++ b/src/com/android/settings/network/AirplaneModePreferenceController.java
@@ -103,7 +103,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 
diff --git a/src/com/android/settings/nfc/NfcPreferenceController.java b/src/com/android/settings/nfc/NfcPreferenceController.java
index 34e7e24..9bf013c 100644
--- a/src/com/android/settings/nfc/NfcPreferenceController.java
+++ b/src/com/android/settings/nfc/NfcPreferenceController.java
@@ -23,7 +23,7 @@
 import android.nfc.NfcAdapter;
 import android.provider.Settings;
 import android.util.Log;
-import androidx.annotation.VisibleForTesting;
+
 import androidx.preference.PreferenceScreen;
 import androidx.preference.SwitchPreference;
 
@@ -90,7 +90,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 
diff --git a/src/com/android/settings/nfc/SecureNfcPreferenceController.java b/src/com/android/settings/nfc/SecureNfcPreferenceController.java
index 12dbd57..4e548d1 100644
--- a/src/com/android/settings/nfc/SecureNfcPreferenceController.java
+++ b/src/com/android/settings/nfc/SecureNfcPreferenceController.java
@@ -77,7 +77,7 @@
     }
 
     @Override
-    public boolean isSliceable() {
+    public boolean isPublicSlice() {
         return true;
     }
 
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySlicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySlicePreferenceControllerTest.java
index 471f107..16ff3c4 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySlicePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySlicePreferenceControllerTest.java
@@ -121,6 +121,16 @@
         new AccessibilitySlicePreferenceController(mContext, "not_split_by_slash");
     }
 
+    @Test
+    public void isSliceable_returnTrue() {
+        assertThat(mController.isSliceable()).isTrue();
+    }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+
     private List<AccessibilityServiceInfo> getFakeServiceList() {
         final List<AccessibilityServiceInfo> infoList = new ArrayList<>();
 
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java
index c6bf343..c7d70e0 100644
--- a/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationGesturesPreferenceControllerTest.java
@@ -130,4 +130,9 @@
                 new MagnificationGesturesPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java
index 08b53b2..83fe496 100644
--- a/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationNavbarPreferenceControllerTest.java
@@ -174,4 +174,9 @@
                 new MagnificationNavbarPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
index bf64190..d4a855f 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
@@ -274,33 +274,33 @@
     }
 
     @Test
-    public void updateRawDataToIndex_EnabledUser_shouldAddOne() {
+    public void updateDynamicRawDataToIndex_enabledUser_notManagedUser_shouldNotUpdate() {
         final List<SearchIndexableRaw> data = new ArrayList<>();
         final List<UserInfo> infos = new ArrayList<>();
         infos.add(new UserInfo(1, "user 1", 0));
         when(mUserManager.isManagedProfile()).thenReturn(false);
         when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
 
-        mController.updateRawDataToIndex(data);
+        mController.updateDynamicRawDataToIndex(data);
 
-        assertThat(data.size()).isEqualTo(1);
+        assertThat(data.size()).isEqualTo(0);
     }
 
     @Test
-    public void updateRawDataToIndex_ManagedUser_shouldAddThree() {
+    public void updateDynamicRawDataToIndex_managedUser_shouldAddTwo() {
         final List<SearchIndexableRaw> data = new ArrayList<>();
         final List<UserInfo> infos = new ArrayList<>();
         infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_MANAGED_PROFILE));
         when(mUserManager.isManagedProfile()).thenReturn(false);
         when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
 
-        mController.updateRawDataToIndex(data);
+        mController.updateDynamicRawDataToIndex(data);
 
-        assertThat(data.size()).isEqualTo(3);
+        assertThat(data.size()).isEqualTo(2);
     }
 
     @Test
-    public void updateRawDataToIndex_DisallowRemove_shouldAddTwo() {
+    public void updateDynamicRawDataToIndex_disallowRemove_shouldAddOne() {
         final List<SearchIndexableRaw> data = new ArrayList<>();
         final List<UserInfo> infos = new ArrayList<>();
         infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_MANAGED_PROFILE));
@@ -310,13 +310,13 @@
                 eq(UserManager.DISALLOW_REMOVE_MANAGED_PROFILE), anyInt()))
                 .thenReturn(true);
 
-        mController.updateRawDataToIndex(data);
+        mController.updateDynamicRawDataToIndex(data);
 
-        assertThat(data.size()).isEqualTo(2);
+        assertThat(data.size()).isEqualTo(1);
     }
 
     @Test
-    public void updateRawDataToIndex_DisallowModify_shouldAddTwo() {
+    public void updateDynamicRawDataToIndex_disallowModify_shouldAddTwo() {
         final List<SearchIndexableRaw> data = new ArrayList<>();
         final List<UserInfo> infos = new ArrayList<>();
         infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_MANAGED_PROFILE));
@@ -325,7 +325,7 @@
         when(mAccountHelper.hasBaseUserRestriction(
                 eq(UserManager.DISALLOW_MODIFY_ACCOUNTS), anyInt())).thenReturn(true);
 
-        mController.updateRawDataToIndex(data);
+        mController.updateDynamicRawDataToIndex(data);
 
         assertThat(data.size()).isEqualTo(2);
     }
diff --git a/tests/robotests/src/com/android/settings/core/TogglePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/core/TogglePreferenceControllerTest.java
index 7cda34a..541f0c4 100644
--- a/tests/robotests/src/com/android/settings/core/TogglePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/core/TogglePreferenceControllerTest.java
@@ -90,6 +90,16 @@
                 SliceData.SliceType.SWITCH);
     }
 
+    @Test
+    public void isSliceable_returnTrue() {
+        assertThat(mToggleController.isSliceable()).isTrue();
+    }
+
+    @Test
+    public void isPublicSlice_returnFalse() {
+        assertThat(mToggleController.isPublicSlice()).isFalse();
+    }
+
     private static class FakeToggle extends TogglePreferenceController {
 
         private boolean checkedFlag;
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
index 80a3a11..851e56f 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
@@ -205,4 +205,9 @@
         final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
         assertThat(data.toString()).isEqualTo(mController.getSummary());
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
index 3e6e436..c47a1e6 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.java
@@ -179,4 +179,9 @@
         final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
         assertThat(phoneNumber.contentEquals(data)).isTrue();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceControllerTest.java
index adfff25..a3606e8 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/FirmwareVersionDetailPreferenceControllerTest.java
@@ -19,7 +19,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -89,6 +88,11 @@
         verify(mContext).startActivity(any());
     }
 
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+
     private static class TestController extends FirmwareVersionDetailPreferenceController {
 
         public TestController(Context context, String key) {
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
index 1204c44..65e29b4 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/DeviceModelPreferenceControllerTest.java
@@ -61,4 +61,9 @@
     public void isAlwaysSliceable() {
         assertThat(mController.isSliceable()).isTrue();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
index 98ffbd0..ce022fd 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/HardwareRevisionPreferenceControllerTest.java
@@ -51,6 +51,11 @@
     }
 
     @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+
+    @Test
     public void isCopyableSlice_shouldBeCopyableSlice() {
         assertThat(mController.isCopyableSlice()).isTrue();
     }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java
index c2ae4af..93762b1 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java
@@ -43,6 +43,11 @@
     }
 
     @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+
+    @Test
     public void isCopyableSlice() {
         assertThat(mController.isSliceable()).isTrue();
         assertThat(mController.isCopyableSlice()).isTrue();
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
index 997c35e..24277fc 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
@@ -186,4 +186,9 @@
         final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText();
         assertThat(data.toString()).isEqualTo(meid);
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/display/AdaptiveSleepDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AdaptiveSleepDetailPreferenceControllerTest.java
index 91a4ed6..981942d 100644
--- a/tests/robotests/src/com/android/settings/display/AdaptiveSleepDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AdaptiveSleepDetailPreferenceControllerTest.java
@@ -62,6 +62,11 @@
     }
 
     @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+
+    @Test
     public void getAvailabilityStatus_configTrueSet_shouldReturnAvailable() {
         SettingsShadowResources.overrideResource(R.bool.config_adaptive_sleep_available, true);
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
diff --git a/tests/robotests/src/com/android/settings/display/AdaptiveSleepPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AdaptiveSleepPreferenceControllerTest.java
index 9928e6c..295eac5 100644
--- a/tests/robotests/src/com/android/settings/display/AdaptiveSleepPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AdaptiveSleepPreferenceControllerTest.java
@@ -133,10 +133,10 @@
     }
 
     @Test
-    public void isSliceable_returnsFalse() {
+    public void isSliceable_returnsTrue() {
         final AdaptiveSleepPreferenceController controller =
                 new AdaptiveSleepPreferenceController(mContext, "any_key");
-        assertThat(controller.isSliceable()).isFalse();
+        assertThat(controller.isSliceable()).isTrue();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
index 7cd5a23..1548b42 100644
--- a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
@@ -128,4 +128,9 @@
                 new AmbientDisplayAlwaysOnPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
index fbfb8a4..6caa8bd 100644
--- a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
@@ -171,4 +171,9 @@
                 new AmbientDisplayNotificationsPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessDetailPreferenceControllerTest.java
index e76cff6..cdb08f3 100644
--- a/tests/robotests/src/com/android/settings/display/AutoBrightnessDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessDetailPreferenceControllerTest.java
@@ -52,6 +52,11 @@
     }
 
     @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+
+    @Test
     public void getAvailabilityStatus_configTrueSet_shouldReturnAvailable() {
         SettingsShadowResources.overrideResource(
                 com.android.internal.R.bool.config_automatic_brightness_available, true);
diff --git a/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java
index a26e0b7..1d175de 100644
--- a/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AutoRotatePreferenceControllerTest.java
@@ -35,7 +35,6 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowRotationPolicy;
 
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -153,6 +152,11 @@
         assertThat(controller.isSliceable()).isFalse();
     }
 
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+
     private void enableAutoRotationPreference() {
         when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true);
         when(mContext.getResources().getBoolean(anyInt())).thenReturn(true);
diff --git a/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java
index e666d61..bad112a 100644
--- a/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/NightDisplayActivationPreferenceControllerTest.java
@@ -15,6 +15,7 @@
 package com.android.settings.display;
 
 import static com.google.common.truth.Truth.assertThat;
+
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.when;
 
@@ -57,7 +58,7 @@
         mPreference = new LayoutPreference(mContext, R.layout.night_display_activation_button);
         when(mScreen.findPreference(anyString())).thenReturn(mPreference);
         mPreferenceController = new NightDisplayActivationPreferenceController(mContext,
-            "night_display_activation");
+                "night_display_activation");
         mPreferenceController.displayPreference(mScreen);
     }
 
@@ -83,7 +84,7 @@
     @Test
     public void isSliceableCorrectKey_returnsTrue() {
         final NightDisplayActivationPreferenceController controller =
-                new NightDisplayActivationPreferenceController(mContext,"night_display_activated");
+                new NightDisplayActivationPreferenceController(mContext, "night_display_activated");
         assertThat(controller.isSliceable()).isTrue();
     }
 
@@ -95,6 +96,11 @@
     }
 
     @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mPreferenceController.isPublicSlice()).isTrue();
+    }
+
+    @Test
     public void onClick_activates() {
         mColorDisplayManager.setNightDisplayActivated(false);
 
diff --git a/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java
index b9c2abd..be9ceaf 100644
--- a/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/NightDisplayIntensityPreferenceControllerTest.java
@@ -19,7 +19,9 @@
 import android.content.Context;
 import android.hardware.display.ColorDisplayManager;
 import android.provider.Settings.Secure;
+
 import com.android.settings.testutils.shadow.SettingsShadowResources;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -32,83 +34,89 @@
 @Config(shadows = SettingsShadowResources.class)
 public class NightDisplayIntensityPreferenceControllerTest {
 
-  private Context mContext;
-  private NightDisplayIntensityPreferenceController mPreferenceController;
+    private Context mContext;
+    private NightDisplayIntensityPreferenceController mPreferenceController;
 
-  @Before
-  public void setUp() {
-    mContext = RuntimeEnvironment.application;
-    mPreferenceController = new NightDisplayIntensityPreferenceController(mContext,
-        "night_display_temperature");
-  }
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreferenceController = new NightDisplayIntensityPreferenceController(mContext,
+                "night_display_temperature");
+    }
 
-  @After
-  public void tearDown() {
-    SettingsShadowResources.reset();
-  }
+    @After
+    public void tearDown() {
+        SettingsShadowResources.reset();
+    }
 
-  @Test
-  public void isAvailable_configuredAvailable_isActivated_available() {
-    SettingsShadowResources.overrideResource(
-        com.android.internal.R.bool.config_nightDisplayAvailable, true);
-    Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 1);
-    assertThat(mPreferenceController.isAvailable()).isTrue();
-  }
+    @Test
+    public void isAvailable_configuredAvailable_isActivated_available() {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.bool.config_nightDisplayAvailable, true);
+        Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 1);
+        assertThat(mPreferenceController.isAvailable()).isTrue();
+    }
 
-  @Test
-  public void isAvailable_configuredAvailable_isNotActivated_available() {
-    SettingsShadowResources.overrideResource(
-        com.android.internal.R.bool.config_nightDisplayAvailable, true);
-    Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 0);
-    assertThat(mPreferenceController.isAvailable()).isTrue();
-  }
+    @Test
+    public void isAvailable_configuredAvailable_isNotActivated_available() {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.bool.config_nightDisplayAvailable, true);
+        Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 0);
+        assertThat(mPreferenceController.isAvailable()).isTrue();
+    }
 
-  @Test
-  public void isAvailable_configuredUnavailable_unavailable() {
-    SettingsShadowResources.overrideResource(
-        com.android.internal.R.bool.config_nightDisplayAvailable, false);
-    assertThat(mPreferenceController.isAvailable()).isFalse();
-  }
+    @Test
+    public void isAvailable_configuredUnavailable_unavailable() {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.bool.config_nightDisplayAvailable, false);
+        assertThat(mPreferenceController.isAvailable()).isFalse();
+    }
 
-  @Test
-  public void onPreferenceChange_changesTemperature() {
-    SettingsShadowResources.overrideResource(
-        com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950);
-    SettingsShadowResources.overrideResource(
-        com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050);
-    // A slider-adjusted "20" here would be 1/5 from the left / least-intense, i.e. 3030.
-    mPreferenceController.onPreferenceChange(null, 20);
+    @Test
+    public void onPreferenceChange_changesTemperature() {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950);
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050);
+        // A slider-adjusted "20" here would be 1/5 from the left / least-intense, i.e. 3030.
+        mPreferenceController.onPreferenceChange(null, 20);
 
-    assertThat(
-        mContext.getSystemService(ColorDisplayManager.class).getNightDisplayColorTemperature())
-        .isEqualTo(3030);
-  }
+        assertThat(
+                mContext.getSystemService(
+                        ColorDisplayManager.class).getNightDisplayColorTemperature())
+                .isEqualTo(3030);
+    }
 
-  @Test
-  public void rangeOfSlider_staysWithinValidRange() {
-    SettingsShadowResources.overrideResource(
-            com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950);
-    SettingsShadowResources.overrideResource(
-            com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050);
+    @Test
+    public void rangeOfSlider_staysWithinValidRange() {
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950);
+        SettingsShadowResources.overrideResource(
+                com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050);
 
-    assertThat(mPreferenceController.getMax() - mPreferenceController.getMin())
-            .isGreaterThan(0);
-  }
+        assertThat(mPreferenceController.getMax() - mPreferenceController.getMin())
+                .isGreaterThan(0);
+    }
 
-  @Test
-  public void getMin_alwaysReturnsZero() {
-    assertThat(mPreferenceController.getMin()).isEqualTo(0);
-  }
+    @Test
+    public void getMin_alwaysReturnsZero() {
+        assertThat(mPreferenceController.getMin()).isEqualTo(0);
+    }
 
-  @Test
-  public void isSliceableCorrectKey_returnsTrue() {
-    assertThat(mPreferenceController.isSliceable()).isTrue();
-  }
+    @Test
+    public void isSliceableCorrectKey_returnsTrue() {
+        assertThat(mPreferenceController.isSliceable()).isTrue();
+    }
 
-  @Test
-  public void isSliceableIncorrectKey_returnsFalse() {
-    final NightDisplayIntensityPreferenceController controller =
-        new NightDisplayIntensityPreferenceController(mContext, "bad_key");
-    assertThat(controller.isSliceable()).isFalse();
-  }
+    @Test
+    public void isSliceableIncorrectKey_returnsFalse() {
+        final NightDisplayIntensityPreferenceController controller =
+                new NightDisplayIntensityPreferenceController(mContext, "bad_key");
+        assertThat(controller.isSliceable()).isFalse();
+    }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mPreferenceController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java
index 7bc6ead..91e7b04 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/SmartBatteryPreferenceControllerTest.java
@@ -120,4 +120,9 @@
                 new SmartBatteryPreferenceController(null);
         assertThat(controller.isSliceable()).isTrue();
     }
+
+    @Test
+    public void isPublicSlice_returnsTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
index 8609599..c01c174 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceControllerTest.java
@@ -110,4 +110,9 @@
 
         verify(mPowerManager).setPowerSaveModeEnabled(false);
     }
+
+    @Test
+    public void isPublicSlice_returnsTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
index fac5ae8..7582699 100644
--- a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
@@ -140,4 +140,9 @@
                 new DoubleTapPowerPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java
index 0dc7a78..edcbd76 100644
--- a/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/DoubleTapScreenPreferenceControllerTest.java
@@ -129,4 +129,9 @@
                 new DoubleTapScreenPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java
index 0efbf57..7bdd262 100644
--- a/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java
@@ -170,4 +170,9 @@
         new DoubleTwistPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/GlobalActionsPanelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/GlobalActionsPanelPreferenceControllerTest.java
index 1fed7df..65f7ac7 100644
--- a/tests/robotests/src/com/android/settings/gestures/GlobalActionsPanelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/GlobalActionsPanelPreferenceControllerTest.java
@@ -85,4 +85,9 @@
                 new GlobalActionsPanelPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java
index b2ba216..b694db3 100644
--- a/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/PickupGesturePreferenceControllerTest.java
@@ -118,4 +118,9 @@
                 new PickupGesturePreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
index dbef598..519232e 100644
--- a/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
@@ -184,4 +184,9 @@
                 new SwipeToNotificationPreferenceController(mContext, "bad_key");
         assertThat(controller.isSliceable()).isFalse();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/gestures/TapScreenGesturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/TapScreenGesturePreferenceControllerTest.java
index 12715fd..b1a53cc 100644
--- a/tests/robotests/src/com/android/settings/gestures/TapScreenGesturePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/TapScreenGesturePreferenceControllerTest.java
@@ -30,7 +30,6 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
@@ -90,4 +89,9 @@
                 new TapScreenGesturePreferenceController(mContext, KEY_WAKE_LOCK_SCREEN);
         assertThat(controller.isSliceable()).isTrue();
     }
+
+    @Test
+    public void isPublicSlice_returnTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java
index fb297fb..a0524fb 100644
--- a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceControllerTest.java
@@ -191,4 +191,9 @@
     public void isSliceable_returnsTrue() {
         assertThat(mController.isSliceable()).isTrue();
     }
+
+    @Test
+    public void isPublicSlice_returnsTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java
index b6c8f37..872c712 100644
--- a/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java
@@ -25,7 +25,6 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.net.Uri;
 import android.nfc.NfcAdapter;
 import android.nfc.NfcManager;
 import android.os.UserManager;
@@ -36,7 +35,6 @@
 
 import com.android.settings.nfc.NfcPreferenceController.NfcSliceWorker;
 import com.android.settings.nfc.NfcPreferenceController.NfcSliceWorker.NfcUpdateReceiver;
-import com.android.settings.slices.SliceBuilderUtils;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -286,4 +284,9 @@
 
         verify(worker).updateSlice();
     }
+
+    @Test
+    public void isPublicSlice_returnsTrue() {
+        assertThat(mNfcController.isPublicSlice()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java
new file mode 100644
index 0000000..56f012a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/nfc/SecureNfcPreferenceControllerTest.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.nfc;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class SecureNfcPreferenceControllerTest {
+
+    private Context mContext;
+    private SecureNfcPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mController = new SecureNfcPreferenceController(mContext, "nfc_secure_settings");
+    }
+
+    @Test
+    public void isPublicSlice_returnsTrue() {
+        assertThat(mController.isPublicSlice()).isTrue();
+    }
+}