Add highlight menu keys for all toggle pref controllers and custom slices

Bug: 204695404
Test: manual, robotest build pass, unit
Change-Id: Iad2e28ada8ddb766ffa7eff2c8dc581250cbd6f8
diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceController.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceController.java
index ce3d294..d204bb7 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceController.java
@@ -23,6 +23,7 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -57,4 +58,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
index ca3befa..dd6edeb 100644
--- a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java
@@ -26,6 +26,7 @@
 import android.provider.Settings;
 import android.view.accessibility.AccessibilityManager;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.accessibility.AccessibilityUtils;
 
@@ -98,6 +99,11 @@
         return true;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
+
     private AccessibilityServiceInfo getAccessibilityServiceInfo() {
         final AccessibilityManager accessibilityManager = mContext.getSystemService(
                 AccessibilityManager.class);
diff --git a/src/com/android/settings/accessibility/DisableAnimationsPreferenceController.java b/src/com/android/settings/accessibility/DisableAnimationsPreferenceController.java
index 1f91a87..5630dd9 100644
--- a/src/com/android/settings/accessibility/DisableAnimationsPreferenceController.java
+++ b/src/com/android/settings/accessibility/DisableAnimationsPreferenceController.java
@@ -22,6 +22,7 @@
 
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 public class DisableAnimationsPreferenceController extends TogglePreferenceController {
@@ -71,4 +72,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceController.java b/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceController.java
index 97f96a4..b59b3b2 100644
--- a/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceController.java
+++ b/src/com/android/settings/accessibility/FontWeightAdjustmentPreferenceController.java
@@ -20,6 +20,7 @@
 import android.graphics.fonts.FontStyle;
 import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /** PreferenceController for displaying all text in bold. */
@@ -47,4 +48,9 @@
         return Settings.Secure.putInt(mContext.getContentResolver(),
                 Settings.Secure.FONT_WEIGHT_ADJUSTMENT, (isChecked ? BOLD_TEXT_ADJUSTMENT : 0));
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java b/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java
index f4474d6..e98a28c 100644
--- a/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java
+++ b/src/com/android/settings/accessibility/HighTextContrastPreferenceController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 public class HighTextContrastPreferenceController extends TogglePreferenceController {
@@ -43,4 +44,9 @@
         return Settings.Secure.putInt(mContext.getContentResolver(),
                 Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, (isChecked ? 1 : 0));
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/LargePointerIconPreferenceController.java b/src/com/android/settings/accessibility/LargePointerIconPreferenceController.java
index a7ee3d5..0220245 100644
--- a/src/com/android/settings/accessibility/LargePointerIconPreferenceController.java
+++ b/src/com/android/settings/accessibility/LargePointerIconPreferenceController.java
@@ -21,6 +21,7 @@
 
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 public class LargePointerIconPreferenceController extends TogglePreferenceController {
@@ -50,4 +51,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/LockScreenRotationPreferenceController.java b/src/com/android/settings/accessibility/LockScreenRotationPreferenceController.java
index a9716d5..5ed4b5c 100644
--- a/src/com/android/settings/accessibility/LockScreenRotationPreferenceController.java
+++ b/src/com/android/settings/accessibility/LockScreenRotationPreferenceController.java
@@ -23,6 +23,7 @@
 
 import com.android.internal.view.RotationPolicy;
 import com.android.internal.view.RotationPolicy.RotationPolicyListener;
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -62,6 +63,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
+
+    @Override
     public void onStop() {
         if (mRotationPolicyListener != null) {
             RotationPolicy.unregisterRotationPolicyListener(mContext, mRotationPolicyListener);
diff --git a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
index 900e280..37d09a7 100644
--- a/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationGesturesPreferenceController.java
@@ -77,6 +77,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
+
+    @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 9813bde..98855f7 100644
--- a/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
+++ b/src/com/android/settings/accessibility/MagnificationNavbarPreferenceController.java
@@ -83,6 +83,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
+
+    @Override
     public CharSequence getSummary() {
         int resId = 0;
         if (mIsFromSUW) {
diff --git a/src/com/android/settings/accessibility/PowerButtonEndsCallPreferenceController.java b/src/com/android/settings/accessibility/PowerButtonEndsCallPreferenceController.java
index 9ea9644..d409fa4 100644
--- a/src/com/android/settings/accessibility/PowerButtonEndsCallPreferenceController.java
+++ b/src/com/android/settings/accessibility/PowerButtonEndsCallPreferenceController.java
@@ -21,6 +21,7 @@
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
 
+import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.TogglePreferenceController;
 
@@ -51,4 +52,9 @@
         return !KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
                 || !Utils.isVoiceCapable(mContext) ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/PrimaryMonoPreferenceController.java b/src/com/android/settings/accessibility/PrimaryMonoPreferenceController.java
index bf12bde..5e69da7 100644
--- a/src/com/android/settings/accessibility/PrimaryMonoPreferenceController.java
+++ b/src/com/android/settings/accessibility/PrimaryMonoPreferenceController.java
@@ -20,6 +20,7 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -47,4 +48,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceController.java
index 62051c1..7550a30 100644
--- a/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceController.java
+++ b/src/com/android/settings/accessibility/ReduceBrightColorsPersistencePreferenceController.java
@@ -22,6 +22,7 @@
 
 import androidx.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /** PreferenceController for persisting feature activation state after a restart. */
@@ -62,4 +63,9 @@
         super.updateState(preference);
         preference.setEnabled(mColorDisplayManager.isReduceBrightColorsActivated());
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
 }
diff --git a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
index d886a59..ca91219 100644
--- a/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
+++ b/src/com/android/settings/accessibility/ReduceBrightColorsPreferenceController.java
@@ -95,6 +95,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accessibility;
+    }
+
+    @Override
     public void onStart() {
         mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
                 Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED),
diff --git a/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java b/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java
index 863e790..3dc05ef 100644
--- a/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java
+++ b/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java
@@ -22,6 +22,7 @@
 import android.provider.Settings;
 import android.util.Log;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 import java.util.Set;
@@ -71,6 +72,11 @@
                 CROSS_PROFILE_CALENDAR_ENABLED, value, mManagedUser.getIdentifier());
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_accounts;
+    }
+
     static boolean isCrossProfileCalendarDisallowedByAdmin(Context context, int userId) {
         final Context managedProfileContext = createPackageContextAsUser(context, userId);
         final DevicePolicyManager dpm = managedProfileContext.getSystemService(
diff --git a/src/com/android/settings/accounts/ManagedProfileSettings.java b/src/com/android/settings/accounts/ManagedProfileSettings.java
index f16bc3f..a6fa15a 100644
--- a/src/com/android/settings/accounts/ManagedProfileSettings.java
+++ b/src/com/android/settings/accounts/ManagedProfileSettings.java
@@ -16,33 +16,25 @@
 
 package com.android.settings.accounts;
 
-import android.app.admin.DevicePolicyManager;
 import android.app.settings.SettingsEnums;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.SearchIndexableResource;
 import android.util.Log;
 
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.PreferenceManager;
-
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.search.Indexable;
 import com.android.settingslib.search.SearchIndexable;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 /**
  * Setting page for managed profile.
diff --git a/src/com/android/settings/applications/managedomainurls/InstantAppWebActionPreferenceController.java b/src/com/android/settings/applications/managedomainurls/InstantAppWebActionPreferenceController.java
index 77abfe7..1d395ee 100644
--- a/src/com/android/settings/applications/managedomainurls/InstantAppWebActionPreferenceController.java
+++ b/src/com/android/settings/applications/managedomainurls/InstantAppWebActionPreferenceController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 public class InstantAppWebActionPreferenceController extends TogglePreferenceController {
@@ -43,4 +44,9 @@
         return Settings.Secure.putInt(mContext.getContentResolver(),
                 Settings.Secure.INSTANT_APPS_ENABLED, isChecked ? 1 : 0);
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_apps;
+    }
 }
diff --git a/src/com/android/settings/backup/AutoRestorePreferenceController.java b/src/com/android/settings/backup/AutoRestorePreferenceController.java
index 4dd2eb6..bf63e25 100644
--- a/src/com/android/settings/backup/AutoRestorePreferenceController.java
+++ b/src/com/android/settings/backup/AutoRestorePreferenceController.java
@@ -27,6 +27,7 @@
 import androidx.preference.Preference;
 import androidx.preference.SwitchPreference;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 public class AutoRestorePreferenceController extends TogglePreferenceController {
@@ -84,4 +85,9 @@
 
         return result;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
\ No newline at end of file
diff --git a/src/com/android/settings/biometrics/combination/BiometricSettingsAppPreferenceController.java b/src/com/android/settings/biometrics/combination/BiometricSettingsAppPreferenceController.java
index 2da8164..6351621 100644
--- a/src/com/android/settings/biometrics/combination/BiometricSettingsAppPreferenceController.java
+++ b/src/com/android/settings/biometrics/combination/BiometricSettingsAppPreferenceController.java
@@ -91,4 +91,10 @@
     public final boolean isSliceable() {
         return false;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        // not needed since it's not sliceable
+        return 0;
+    }
 }
diff --git a/src/com/android/settings/biometrics/combination/BiometricSettingsKeyguardPreferenceController.java b/src/com/android/settings/biometrics/combination/BiometricSettingsKeyguardPreferenceController.java
index f6f2d5f..4101963 100644
--- a/src/com/android/settings/biometrics/combination/BiometricSettingsKeyguardPreferenceController.java
+++ b/src/com/android/settings/biometrics/combination/BiometricSettingsKeyguardPreferenceController.java
@@ -73,4 +73,10 @@
     public final boolean isSliceable() {
         return false;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        // not needed since it's not sliceable
+        return 0;
+    }
 }
diff --git a/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java
index 36984a2..a8bff6b 100644
--- a/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java
+++ b/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java
@@ -51,4 +51,10 @@
     public final boolean isSliceable() {
         return false;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        // not needed since it's not sliceable
+        return 0;
+    }
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
index b09d180..508084d 100644
--- a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
+++ b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
@@ -98,7 +98,8 @@
                 SettingsSlicesContract.KEY_BLUETOOTH).build();
         return SliceBuilderUtils.buildSearchResultPageIntent(context,
                 BluetoothDashboardFragment.class.getName(), null /* key */, screenTitle,
-                SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY)
+                SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY,
+                R.string.menu_key_connected_devices)
                 .setClassName(context.getPackageName(), SubSettings.class.getName())
                 .setData(contentUri);
     }
diff --git a/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java b/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java
index e25422f..2bab3e9 100644
--- a/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java
+++ b/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java
@@ -118,6 +118,12 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        // not needed since it's not sliceable
+        return 0;
+    }
+
+    @Override
     public int getAvailabilityStatus() {
         TimeZoneCapabilities timeZoneCapabilities =
                 getTimeZoneCapabilitiesAndConfig(/* forceRefresh= */ false).getCapabilities();
diff --git a/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceController.java b/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceController.java
index 3cbf3cb..1c2fcd9 100644
--- a/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceController.java
+++ b/src/com/android/settings/development/transcode/TranscodeDefaultOptionPreferenceController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.os.SystemProperties;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -48,4 +49,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceController.java b/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceController.java
index 38c3208..c3b0624 100644
--- a/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceController.java
+++ b/src/com/android/settings/development/transcode/TranscodeDisableCachePreferenceController.java
@@ -20,6 +20,7 @@
 import android.os.SystemProperties;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -50,4 +51,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java b/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java
index c15806d..b2d446e 100644
--- a/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java
+++ b/src/com/android/settings/development/transcode/TranscodeGlobalTogglePreferenceController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.os.SystemProperties;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -49,4 +50,9 @@
         SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(isChecked));
         return true;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceController.java b/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceController.java
index fd5ec5a..6b6692e 100644
--- a/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceController.java
+++ b/src/com/android/settings/development/transcode/TranscodeNotificationPreferenceController.java
@@ -20,6 +20,7 @@
 import android.os.SystemProperties;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -50,4 +51,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceController.java b/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceController.java
index 49456ff..ce82293 100644
--- a/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceController.java
+++ b/src/com/android/settings/development/transcode/TranscodeUserControlPreferenceController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.os.SystemProperties;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -48,4 +49,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/display/AlwaysOnDisplaySlice.java b/src/com/android/settings/display/AlwaysOnDisplaySlice.java
index 27374ef..c66f4ed 100644
--- a/src/com/android/settings/display/AlwaysOnDisplaySlice.java
+++ b/src/com/android/settings/display/AlwaysOnDisplaySlice.java
@@ -106,4 +106,9 @@
     public Intent getIntent() {
         return null;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
 }
diff --git a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
index 7749c8f..bf81727 100644
--- a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
@@ -68,6 +68,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @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 e143d73..a5b0aeb 100644
--- a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
@@ -25,6 +25,7 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -100,4 +101,9 @@
 
         return mConfig;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
 }
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
index 0018d84..d925de3 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
@@ -61,4 +61,9 @@
                 ? R.string.auto_brightness_summary_on
                 : R.string.auto_brightness_summary_off);
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
 }
diff --git a/src/com/android/settings/display/AutoRotatePreferenceController.java b/src/com/android/settings/display/AutoRotatePreferenceController.java
index 202a085..5dc2286 100644
--- a/src/com/android/settings/display/AutoRotatePreferenceController.java
+++ b/src/com/android/settings/display/AutoRotatePreferenceController.java
@@ -20,6 +20,7 @@
 import androidx.preference.Preference;
 
 import com.android.internal.view.RotationPolicy;
+import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -87,6 +88,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @Override
     public boolean isChecked() {
         return !RotationPolicy.isRotationLocked(mContext);
     }
diff --git a/src/com/android/settings/display/ControlsPrivacyPreferenceController.java b/src/com/android/settings/display/ControlsPrivacyPreferenceController.java
index 65fd846..00573a7 100644
--- a/src/com/android/settings/display/ControlsPrivacyPreferenceController.java
+++ b/src/com/android/settings/display/ControlsPrivacyPreferenceController.java
@@ -70,6 +70,11 @@
         refreshSummary(preference);
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
     private boolean isEnabled() {
         return isControlsAvailable();
     }
diff --git a/src/com/android/settings/display/DarkUIPreferenceController.java b/src/com/android/settings/display/DarkUIPreferenceController.java
index 98d9a69..d07410e 100644
--- a/src/com/android/settings/display/DarkUIPreferenceController.java
+++ b/src/com/android/settings/display/DarkUIPreferenceController.java
@@ -95,6 +95,11 @@
         return mUiModeManager.setNightModeActivated(isChecked);
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
     private void showDarkModeDialog() {
         final DarkUIInfoDialogFragment frag = new DarkUIInfoDialogFragment();
         if (mFragment != null && mFragment.getFragmentManager() != null) {
diff --git a/src/com/android/settings/display/DisplayWhiteBalancePreferenceController.java b/src/com/android/settings/display/DisplayWhiteBalancePreferenceController.java
index 6fc0b0e..805cb08 100644
--- a/src/com/android/settings/display/DisplayWhiteBalancePreferenceController.java
+++ b/src/com/android/settings/display/DisplayWhiteBalancePreferenceController.java
@@ -21,19 +21,19 @@
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
-import android.os.UserHandle;
 import android.provider.Settings.Secure;
 import android.provider.Settings.System;
+
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
+import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
 
-import com.android.settings.core.TogglePreferenceController;
-
 public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController
     implements LifecycleObserver, OnStart, OnStop {
 
@@ -63,6 +63,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @Override
     public void onStart() {
         if (!isAvailable()) {
             return;
diff --git a/src/com/android/settings/display/NightDisplayActivationPreferenceController.java b/src/com/android/settings/display/NightDisplayActivationPreferenceController.java
index e6217ff..d0d4822 100644
--- a/src/com/android/settings/display/NightDisplayActivationPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayActivationPreferenceController.java
@@ -24,6 +24,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -66,6 +67,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @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 0f8ecc5..700b601 100644
--- a/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayIntensityPreferenceController.java
@@ -23,6 +23,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.SliderPreferenceController;
 import com.android.settings.widget.SeekBarPreference;
 
@@ -56,6 +57,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         final SeekBarPreference preference = screen.findPreference(getPreferenceKey());
diff --git a/src/com/android/settings/display/NightDisplayPreferenceController.java b/src/com/android/settings/display/NightDisplayPreferenceController.java
index 003373c..df9e849 100644
--- a/src/com/android/settings/display/NightDisplayPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayPreferenceController.java
@@ -96,6 +96,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @Override
     public void onActivated(boolean activated) {
         updateState(mPreference);
     }
diff --git a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
index 9b654dc..27ba340 100644
--- a/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
+++ b/src/com/android/settings/display/PeakRefreshRatePreferenceController.java
@@ -120,6 +120,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @Override
     public void onStart() {
         mDeviceConfigDisplaySettings.startListening();
     }
diff --git a/src/com/android/settings/display/SmartAutoRotateController.java b/src/com/android/settings/display/SmartAutoRotateController.java
index 61bbd18..b88aa80 100644
--- a/src/com/android/settings/display/SmartAutoRotateController.java
+++ b/src/com/android/settings/display/SmartAutoRotateController.java
@@ -43,6 +43,7 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.view.RotationPolicy;
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -157,6 +158,11 @@
         return true;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
     static boolean isRotationResolverServiceAvailable(Context context) {
         final PackageManager packageManager = context.getPackageManager();
         final String resolvePackage = packageManager.getRotationResolverPackageName();
diff --git a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
index 849fbe7..afeea80 100644
--- a/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
+++ b/src/com/android/settings/display/SmartAutoRotatePreferenceController.java
@@ -22,7 +22,6 @@
 import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission;
 import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;
 
-import android.text.TextUtils;
 import android.app.settings.SettingsEnums;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -32,6 +31,7 @@
 import android.os.PowerManager;
 import android.os.UserHandle;
 import android.provider.Settings;
+import android.text.TextUtils;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
@@ -91,6 +91,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
diff --git a/src/com/android/settings/display/WalletPrivacyPreferenceController.java b/src/com/android/settings/display/WalletPrivacyPreferenceController.java
index 2e78fe3..92580f3 100644
--- a/src/com/android/settings/display/WalletPrivacyPreferenceController.java
+++ b/src/com/android/settings/display/WalletPrivacyPreferenceController.java
@@ -72,6 +72,11 @@
         refreshSummary(preference);
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
     private boolean isEnabled() {
         return mClient.isWalletServiceAvailable();
     }
diff --git a/src/com/android/settings/dream/StartNowPreferenceController.java b/src/com/android/settings/dream/StartNowPreferenceController.java
index f6a79cc..add1b58f 100644
--- a/src/com/android/settings/dream/StartNowPreferenceController.java
+++ b/src/com/android/settings/dream/StartNowPreferenceController.java
@@ -20,6 +20,7 @@
 
 import androidx.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.widget.SettingsMainSwitchPreferenceController;
@@ -67,4 +68,9 @@
         }
         return true;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
 }
diff --git a/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java b/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java
index f9fb647..3d6695b 100644
--- a/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java
+++ b/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java
@@ -53,6 +53,12 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        // not needed since it's not sliceable
+        return 0;
+    }
+
+    @Override
     public boolean isChecked() {
         return mEmergencyNumberUtils.getEmergencyGestureSoundEnabled();
     }
diff --git a/src/com/android/settings/flashlight/FlashlightSlice.java b/src/com/android/settings/flashlight/FlashlightSlice.java
index bd7f486..f18d712 100644
--- a/src/com/android/settings/flashlight/FlashlightSlice.java
+++ b/src/com/android/settings/flashlight/FlashlightSlice.java
@@ -117,6 +117,12 @@
         return null;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        // no landing page in Settings
+        return 0;
+    }
+
     private static String getCameraId(Context context) throws CameraAccessException {
         final CameraManager cameraManager = context.getSystemService(CameraManager.class);
         final String[] ids = cameraManager.getCameraIdList();
diff --git a/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
index 27b70cb..26c0ab9 100644
--- a/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/SmartBatteryPreferenceController.java
@@ -24,6 +24,7 @@
 import androidx.preference.Preference;
 import androidx.preference.SwitchPreference;
 
+import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 
@@ -62,6 +63,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_battery;
+    }
+
+    @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 1a7fa38..2979151 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java
@@ -119,6 +119,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_battery;
+    }
+
+    @Override
     public void onPowerSaveModeChanged() {
         mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(),
                 SWITCH_ANIMATION_DURATION);
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java
index 6754245..ce2cbb0 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java
@@ -8,6 +8,7 @@
 
 import androidx.preference.Preference;
 import androidx.preference.SwitchPreference;
+
 import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.TogglePreferenceController;
@@ -59,4 +60,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_battery;
+    }
 }
diff --git a/src/com/android/settings/gestures/GestureNavigationSettingsAssistController.java b/src/com/android/settings/gestures/GestureNavigationSettingsAssistController.java
index 95fd9f1..159f479 100644
--- a/src/com/android/settings/gestures/GestureNavigationSettingsAssistController.java
+++ b/src/com/android/settings/gestures/GestureNavigationSettingsAssistController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -50,4 +51,9 @@
         return SystemNavigationPreferenceController.isGestureAvailable(mContext) ? AVAILABLE
                 : UNSUPPORTED_ON_DEVICE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/gestures/GesturePreferenceController.java b/src/com/android/settings/gestures/GesturePreferenceController.java
index c771abd..71c3c9a 100644
--- a/src/com/android/settings/gestures/GesturePreferenceController.java
+++ b/src/com/android/settings/gestures/GesturePreferenceController.java
@@ -78,6 +78,11 @@
         }
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
+
     protected abstract String getVideoPrefKey();
 
     protected boolean canHandleClicks() {
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index 76964e5..d82cb10 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -25,10 +25,13 @@
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.search.SearchIndexable;
 
+import java.util.List;
+
 @SearchIndexable
 public class GestureSettings extends DashboardFragment {
 
     private static final String TAG = "GestureSettings";
+    private static final String PREF_KEY_PREVENT_RINGING = "gesture_prevent_ringing_summary";
 
     private AmbientDisplayConfiguration mAmbientDisplayConfig;
 
@@ -63,5 +66,13 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider(R.xml.gestures);
+            new BaseSearchIndexProvider(R.xml.gestures) {
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    final List<String> keys = super.getNonIndexableKeys(context);
+                    // de-duplicated due to another same entry in Sound page
+                    keys.add(PREF_KEY_PREVENT_RINGING);
+                    return keys;
+                }
+            };
 }
diff --git a/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java b/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java
index 44494ee..82766db 100644
--- a/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java
+++ b/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java
@@ -120,6 +120,11 @@
         return false;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
+
     private void refreshStateDisplay() {
         if (mAssistSwitch != null) {
             mAssistSwitch.setSummary(getSummary());
diff --git a/src/com/android/settings/gestures/OneHandedMainSwitchPreferenceController.java b/src/com/android/settings/gestures/OneHandedMainSwitchPreferenceController.java
index 2b7d7a0..3f84aba 100644
--- a/src/com/android/settings/gestures/OneHandedMainSwitchPreferenceController.java
+++ b/src/com/android/settings/gestures/OneHandedMainSwitchPreferenceController.java
@@ -21,6 +21,7 @@
 
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.widget.SettingsMainSwitchPreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -92,4 +93,9 @@
             mPreference.setChecked(isChecked());
         }
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java b/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
index b3b39fb..5f880f7 100644
--- a/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
+++ b/src/com/android/settings/gestures/PreventRingingParentPreferenceController.java
@@ -138,6 +138,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_sound;
+    }
+
+    @Override
     public void onStart() {
         if (mSettingObserver != null) {
             mSettingObserver.register(mContext.getContentResolver());
diff --git a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
index 94d3f69..f10a2d7 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
@@ -147,12 +147,18 @@
         return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
                 PowerUsageSummary.class.getName(), BatteryTipPreferenceController.PREF_NAME,
                 screenTitle,
-                SettingsEnums.SLICE)
+                SettingsEnums.SLICE,
+                this)
                 .setClassName(mContext.getPackageName(), SubSettings.class.getName())
                 .setData(contentUri);
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_battery;
+    }
+
+    @Override
     public void onNotifyChange(Intent intent) {
     }
 
diff --git a/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
index bfdd13a..7e4730c 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
@@ -130,12 +130,18 @@
         return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
                 ConnectedDeviceDashboardFragment.class.getName(), "" /* key */,
                 screenTitle,
-                SettingsEnums.SLICE)
+                SettingsEnums.SLICE,
+                this)
                 .setClassName(mContext.getPackageName(), SubSettings.class.getName())
                 .setData(getUri());
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_connected_devices;
+    }
+
+    @Override
     public void onNotifyChange(Intent intent) {
         final boolean enableBluetooth = intent.getBooleanExtra(EXTRA_ENABLE_BLUETOOTH, false);
         if (enableBluetooth) {
diff --git a/src/com/android/settings/homepage/contextualcards/slices/ContextualAdaptiveSleepSlice.java b/src/com/android/settings/homepage/contextualcards/slices/ContextualAdaptiveSleepSlice.java
index f11b0e3..2291bd7 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/ContextualAdaptiveSleepSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/ContextualAdaptiveSleepSlice.java
@@ -117,8 +117,14 @@
         final Uri contentUri = new Uri.Builder().appendPath(PREF_NAME).build();
         return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
                 ScreenTimeoutSettings.class.getName(), PREF_NAME, screenTitle.toString(),
-                SettingsEnums.SLICE).setClassName(mContext.getPackageName(),
-                SubSettings.class.getName()).setData(contentUri);
+                SettingsEnums.SLICE, this)
+                .setClassName(mContext.getPackageName(),
+                        SubSettings.class.getName()).setData(contentUri);
+    }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
     }
 
     private PendingIntent getPrimaryAction() {
diff --git a/src/com/android/settings/homepage/contextualcards/slices/DarkThemeSlice.java b/src/com/android/settings/homepage/contextualcards/slices/DarkThemeSlice.java
index f934d58..96924e4 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/DarkThemeSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/DarkThemeSlice.java
@@ -149,6 +149,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
+    @Override
     public Class getBackgroundWorkerClass() {
         return DarkThemeWorker.class;
     }
diff --git a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
index 1b3ee10..7cf7d86 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
@@ -133,13 +133,18 @@
                     SecuritySettings.class.getName(),
                     FaceStatusPreferenceController.KEY_FACE_SETTINGS,
                     mContext.getText(R.string.security_settings_face_settings_enroll).toString(),
-                    SettingsEnums.SLICE)
+                    SettingsEnums.SLICE, this)
                     .setClassName(mContext.getPackageName(), SubSettings.class.getName());
         } else {
             return new Intent(mContext, FaceReEnrollDialog.class);
         }
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_security;
+    }
+
     private static RowBuilder buildRowBuilder(CharSequence title, CharSequence subTitle,
             IconCompat icon, Context context, Intent intent) {
         final SliceAction primarySliceAction = SliceAction.createDeeplink(
diff --git a/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java b/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
index 3812534..22e3431 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
@@ -109,11 +109,17 @@
         return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
                 StorageDashboardFragment.class.getName(), "" /* key */,
                 screenTitle,
-                SettingsEnums.SLICE)
+                SettingsEnums.SLICE,
+                this)
                 .setClassName(mContext.getPackageName(), SubSettings.class.getName())
                 .setData(CustomSliceRegistry.LOW_STORAGE_SLICE_URI);
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_storage;
+    }
+
     private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
         final SliceAction primarySliceAction = SliceAction.createDeeplink(
                 PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE),
diff --git a/src/com/android/settings/inputmethod/GameControllerPreferenceController.java b/src/com/android/settings/inputmethod/GameControllerPreferenceController.java
index 80f6680..751dac7 100644
--- a/src/com/android/settings/inputmethod/GameControllerPreferenceController.java
+++ b/src/com/android/settings/inputmethod/GameControllerPreferenceController.java
@@ -101,6 +101,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
+
+    @Override
     public void onInputDeviceAdded(int deviceId) {
         updateState(mPreference);
     }
diff --git a/src/com/android/settings/inputmethod/OWNERS b/src/com/android/settings/inputmethod/OWNERS
index 556de5f..7c7d792 100644
--- a/src/com/android/settings/inputmethod/OWNERS
+++ b/src/com/android/settings/inputmethod/OWNERS
@@ -1,5 +1,6 @@
 # Bug component: 34867
 include platform/frameworks/base:/services/core/java/com/android/server/inputmethod/OWNERS
+include /OWNERS
 
 # Settings for physical keyboard and game pad are better to be reviewed by the input team
 per-file GameControllerPreferenceController.java = file: platform/frameworks/base:/services/core/java/com/android/server/input/OWNERS
diff --git a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java
index 051fd8d..b491ec9 100644
--- a/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java
+++ b/src/com/android/settings/location/BluetoothScanningMainSwitchPreferenceController.java
@@ -68,6 +68,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_location;
+    }
+
+    @Override
     public void onSwitchChanged(Switch switchView, boolean isChecked) {
         if (isChecked != isChecked()) {
             setChecked(isChecked);
diff --git a/src/com/android/settings/location/LocationIndicatorsPreferenceController.java b/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
index d39c280..75ffb3a 100644
--- a/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
+++ b/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
@@ -20,6 +20,7 @@
 import android.content.pm.PackageManager;
 import android.provider.DeviceConfig;
 
+import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.TogglePreferenceController;
 
@@ -54,4 +55,9 @@
         return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION)
                 ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_location;
+    }
 }
diff --git a/src/com/android/settings/location/LocationSlice.java b/src/com/android/settings/location/LocationSlice.java
index f8add12..291e5e4 100644
--- a/src/com/android/settings/location/LocationSlice.java
+++ b/src/com/android/settings/location/LocationSlice.java
@@ -88,11 +88,16 @@
         final Uri contentUri = new Uri.Builder().appendPath(KEY_LOCATION).build();
         return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
                 LocationSettings.class.getName(), KEY_LOCATION, screenTitle,
-                SettingsEnums.LOCATION)
+                SettingsEnums.LOCATION, this)
                 .setClassName(mContext.getPackageName(), SubSettings.class.getName())
                 .setData(contentUri);
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_location;
+    }
+
     private PendingIntent getPrimaryAction() {
         final Intent intent = getIntent();
         return PendingIntent.getActivity(mContext, 0 /* requestCode */,
diff --git a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java
index a69fdb8..546f1e1 100644
--- a/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java
+++ b/src/com/android/settings/location/WifiScanningMainSwitchPreferenceController.java
@@ -69,6 +69,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_location;
+    }
+
+    @Override
     public void onSwitchChanged(Switch switchView, boolean isChecked) {
         if (isChecked != isChecked()) {
             setChecked(isChecked);
diff --git a/src/com/android/settings/media/MediaOutputIndicatorSlice.java b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
index 10a8b79..e2232e7 100644
--- a/src/com/android/settings/media/MediaOutputIndicatorSlice.java
+++ b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
@@ -93,6 +93,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_connected_devices;
+    }
+
+    @Override
     public Class getBackgroundWorkerClass() {
         return MediaOutputIndicatorWorker.class;
     }
diff --git a/src/com/android/settings/media/RemoteMediaSlice.java b/src/com/android/settings/media/RemoteMediaSlice.java
index 3d81c44..f856188 100644
--- a/src/com/android/settings/media/RemoteMediaSlice.java
+++ b/src/com/android/settings/media/RemoteMediaSlice.java
@@ -181,7 +181,9 @@
         final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext,
                 SoundSettings.class.getName(),
                 id,
-                mContext.getText(R.string.sound_settings).toString(), 0);
+                mContext.getText(R.string.sound_settings).toString(),
+                0 /* sourceMetricsCategory */,
+                R.string.menu_key_sound);
         intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
         intent.setData(contentUri);
         final PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent,
@@ -222,6 +224,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_connected_devices;
+    }
+
+    @Override
     public Class getBackgroundWorkerClass() {
         return MediaDeviceUpdateWorker.class;
     }
diff --git a/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java b/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java
index e3d779c..ea849f6 100644
--- a/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java
+++ b/src/com/android/settings/network/AdaptiveConnectivityTogglePreferenceController.java
@@ -22,6 +22,7 @@
 
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.widget.SettingsMainSwitchPreferenceController;
 
 /**
@@ -62,4 +63,9 @@
         mWifiManager.setWifiScoringEnabled(isChecked);
         return true;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
 }
diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java
index 6839037..e74f3ae 100644
--- a/src/com/android/settings/network/AirplaneModePreferenceController.java
+++ b/src/com/android/settings/network/AirplaneModePreferenceController.java
@@ -121,6 +121,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
+    @Override
     public void onStart() {
         if (isAvailable()) {
             mAirplaneModeEnabler.start();
diff --git a/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java b/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java
index c5d8b97..26679c6 100644
--- a/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java
+++ b/src/com/android/settings/network/CarrierWifiTogglePreferenceController.java
@@ -22,6 +22,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.wifi.WifiPickerTrackerHelper;
@@ -89,6 +90,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
+    @Override
     public void onWifiStateChanged() {
         updateCarrierNetworkPreference();
     }
diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java
index 146b11a..0aae349 100644
--- a/src/com/android/settings/network/ProviderModelSlice.java
+++ b/src/com/android/settings/network/ProviderModelSlice.java
@@ -290,7 +290,7 @@
         final String screenTitle = mContext.getText(R.string.provider_internet_settings).toString();
         return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
                 NetworkProviderSettings.class.getName(), "" /* key */, screenTitle,
-                SettingsEnums.SLICE)
+                SettingsEnums.SLICE, this)
                 .setClassName(mContext.getPackageName(), SubSettings.class.getName())
                 .setData(getUri());
     }
diff --git a/src/com/android/settings/network/TetherBasePreferenceController.java b/src/com/android/settings/network/TetherBasePreferenceController.java
index 822aa72..b1627f2 100644
--- a/src/com/android/settings/network/TetherBasePreferenceController.java
+++ b/src/com/android/settings/network/TetherBasePreferenceController.java
@@ -25,6 +25,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.datausage.DataSaverBackend;
 
@@ -118,6 +119,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
+    @Override
     public void onTetherStateUpdated(@TetherEnabler.TetheringState int state) {
         mTetheringState = state;
         updateState(mPreference);
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index 7ec31be..22bb581 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -146,6 +146,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
+    @Override
     public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
         return MobileDataWorker.class;
     }
diff --git a/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java b/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java
index 7fe5f1d..46f279d 100644
--- a/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java
+++ b/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java
@@ -65,6 +65,12 @@
         return false;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        // not needed since it's not sliceable
+        return 0;
+    }
+
     /**
      * Get carrier config based on specific subscription id.
      *
diff --git a/src/com/android/settings/nfc/NfcPreferenceController.java b/src/com/android/settings/nfc/NfcPreferenceController.java
index b30e7c3f..483fead 100644
--- a/src/com/android/settings/nfc/NfcPreferenceController.java
+++ b/src/com/android/settings/nfc/NfcPreferenceController.java
@@ -27,6 +27,7 @@
 
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.slices.SliceBackgroundWorker;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -58,7 +59,7 @@
             return;
         }
 
-        mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
+        mPreference = screen.findPreference(getPreferenceKey());
         mPreference.addOnSwitchChangeListener(this);
         mNfcEnabler = new NfcEnabler(mContext, mPreference);
     }
@@ -104,6 +105,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_connected_devices;
+    }
+
+    @Override
     public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
         return NfcSliceWorker.class;
     }
diff --git a/src/com/android/settings/nfc/SecureNfcPreferenceController.java b/src/com/android/settings/nfc/SecureNfcPreferenceController.java
index 4e548d1..e1d27d0 100644
--- a/src/com/android/settings/nfc/SecureNfcPreferenceController.java
+++ b/src/com/android/settings/nfc/SecureNfcPreferenceController.java
@@ -21,6 +21,7 @@
 import androidx.preference.PreferenceScreen;
 import androidx.preference.SwitchPreference;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -82,6 +83,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_connected_devices;
+    }
+
+    @Override
     public void onResume() {
         if (mSecureNfcEnabler != null) {
             mSecureNfcEnabler.resume();
diff --git a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
index 613204b..69d95a8 100644
--- a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
@@ -30,6 +30,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -88,6 +89,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_notifications;
+    }
+
+    @Override
     public boolean isChecked() {
         return Settings.Secure.getInt(mContext.getContentResolver(),
                 NOTIFICATION_BADGING, ON) == ON;
diff --git a/src/com/android/settings/notification/BubbleNotificationPreferenceController.java b/src/com/android/settings/notification/BubbleNotificationPreferenceController.java
index 37723b1..9e35664 100644
--- a/src/com/android/settings/notification/BubbleNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/BubbleNotificationPreferenceController.java
@@ -89,6 +89,12 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        // not needed since it's not sliceable
+        return 0;
+    }
+
+    @Override
     public boolean isChecked() {
         return Settings.Global.getInt(mContext.getContentResolver(),
                 NOTIFICATION_BUBBLES, ON) == ON;
diff --git a/src/com/android/settings/notification/NotificationAssistantPreferenceController.java b/src/com/android/settings/notification/NotificationAssistantPreferenceController.java
index bdbc478..91031c8 100644
--- a/src/com/android/settings/notification/NotificationAssistantPreferenceController.java
+++ b/src/com/android/settings/notification/NotificationAssistantPreferenceController.java
@@ -24,6 +24,7 @@
 
 import androidx.fragment.app.Fragment;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -73,6 +74,11 @@
         }
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_notifications;
+    }
+
     protected void setNotificationAssistantGranted(ComponentName cn) {
         if (Settings.Secure.getIntForUser(mContext.getContentResolver(),
                 Settings.Secure.NAS_SETTINGS_UPDATED, 0, mUserId) == 0) {
diff --git a/src/com/android/settings/notification/PulseNotificationPreferenceController.java b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
index 7885520..ad53fc3 100644
--- a/src/com/android/settings/notification/PulseNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
@@ -28,6 +28,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -86,6 +87,11 @@
                 isChecked ? ON : OFF);
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_notifications;
+    }
+
     class SettingObserver extends ContentObserver {
 
         private final Uri NOTIFICATION_LIGHT_PULSE_URI =
diff --git a/src/com/android/settings/notification/RedactNotificationPreferenceController.java b/src/com/android/settings/notification/RedactNotificationPreferenceController.java
index d0326bb..db34e5e 100644
--- a/src/com/android/settings/notification/RedactNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/RedactNotificationPreferenceController.java
@@ -32,6 +32,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.RestrictedLockUtils;
@@ -147,6 +148,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_notifications;
+    }
+
+    @Override
     public void onStart() {
         mContext.getContentResolver().registerContentObserver(
                 Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS),
diff --git a/src/com/android/settings/notification/SilentStatusBarPreferenceController.java b/src/com/android/settings/notification/SilentStatusBarPreferenceController.java
index 0585382..4c4c99d 100644
--- a/src/com/android/settings/notification/SilentStatusBarPreferenceController.java
+++ b/src/com/android/settings/notification/SilentStatusBarPreferenceController.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -52,4 +53,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_notifications;
+    }
 }
diff --git a/src/com/android/settings/notification/SnoozeNotificationPreferenceController.java b/src/com/android/settings/notification/SnoozeNotificationPreferenceController.java
index 03170e4..2c89f74 100644
--- a/src/com/android/settings/notification/SnoozeNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/SnoozeNotificationPreferenceController.java
@@ -21,10 +21,11 @@
 import android.content.Context;
 import android.provider.Settings;
 
-import com.android.settings.core.TogglePreferenceController;
-
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.R;
+import com.android.settings.core.TogglePreferenceController;
+
 public class SnoozeNotificationPreferenceController extends TogglePreferenceController {
 
     private static final String TAG = "SnoozeNotifPrefContr";
@@ -53,4 +54,9 @@
         return Settings.Secure.putInt(mContext.getContentResolver(),
                 SHOW_NOTIFICATION_SNOOZE, isChecked ? ON : OFF);
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_notifications;
+    }
 }
diff --git a/src/com/android/settings/notification/SpatialAudioPreferenceController.java b/src/com/android/settings/notification/SpatialAudioPreferenceController.java
index 1420076..7bca516 100644
--- a/src/com/android/settings/notification/SpatialAudioPreferenceController.java
+++ b/src/com/android/settings/notification/SpatialAudioPreferenceController.java
@@ -20,6 +20,7 @@
 import android.media.AudioManager;
 import android.media.Spatializer;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -53,4 +54,9 @@
         mSpatializer.setEnabled(isChecked);
         return isChecked == isChecked();
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_notifications;
+    }
 }
diff --git a/src/com/android/settings/notification/VolumeSeekBarPreferenceController.java b/src/com/android/settings/notification/VolumeSeekBarPreferenceController.java
index b32f922..d170159 100644
--- a/src/com/android/settings/notification/VolumeSeekBarPreferenceController.java
+++ b/src/com/android/settings/notification/VolumeSeekBarPreferenceController.java
@@ -23,6 +23,7 @@
 import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.notification.VolumeSeekBarPreference.Callback;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
@@ -76,6 +77,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_sound;
+    }
+
+    @Override
     public int getSliderPosition() {
         if (mPreference != null) {
             return mPreference.getProgress();
diff --git a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
index 5ea01ea..1f553a2 100644
--- a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
+++ b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
@@ -120,7 +120,7 @@
         final String screenTitle = context.getText(R.string.zen_mode_settings_title).toString();
         return SliceBuilderUtils.buildSearchResultPageIntent(context,
                 ZenModeSettings.class.getName(), ZEN_MODE_SLICE_KEY, screenTitle,
-                SettingsEnums.NOTIFICATION_ZEN_MODE)
+                SettingsEnums.NOTIFICATION_ZEN_MODE, R.string.menu_key_notifications)
                 .setClassName(context.getPackageName(), SubSettings.class.getName())
                 .setData(contentUri);
     }
diff --git a/src/com/android/settings/panel/NfcPanel.java b/src/com/android/settings/panel/NfcPanel.java
index c1e15e8..6b1e435 100644
--- a/src/com/android/settings/panel/NfcPanel.java
+++ b/src/com/android/settings/panel/NfcPanel.java
@@ -62,7 +62,8 @@
                 AdvancedConnectedDeviceDashboardFragment.class.getName(),
                 null /* key */,
                 screenTitle,
-                SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
+                SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY,
+                R.string.menu_key_connected_devices);
         intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         return intent;
diff --git a/src/com/android/settings/panel/WifiPanel.java b/src/com/android/settings/panel/WifiPanel.java
index 3b36a57..95ebb33 100644
--- a/src/com/android/settings/panel/WifiPanel.java
+++ b/src/com/android/settings/panel/WifiPanel.java
@@ -62,10 +62,11 @@
         final String screenTitle =
                 mContext.getText(R.string.wifi_settings).toString();
         final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext,
-                    WifiSettings.class.getName(),
-                    null /* key */,
-                    screenTitle,
-                    SettingsEnums.WIFI);
+                WifiSettings.class.getName(),
+                null /* key */,
+                screenTitle,
+                SettingsEnums.WIFI,
+                R.string.menu_key_network);
         intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         return intent;
diff --git a/src/com/android/settings/privacy/EnableContentCapturePreferenceController.java b/src/com/android/settings/privacy/EnableContentCapturePreferenceController.java
index 47610aa..3cf72b2 100644
--- a/src/com/android/settings/privacy/EnableContentCapturePreferenceController.java
+++ b/src/com/android/settings/privacy/EnableContentCapturePreferenceController.java
@@ -18,8 +18,8 @@
 
 import android.annotation.NonNull;
 import android.content.Context;
-import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.utils.ContentCaptureUtils;
 
@@ -46,4 +46,9 @@
                 && ContentCaptureUtils.getServiceSettingsComponentName() == null;
         return available ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_privacy;
+    }
 }
diff --git a/src/com/android/settings/privacy/EnableContentCaptureWithServiceSettingsPreferenceController.java b/src/com/android/settings/privacy/EnableContentCaptureWithServiceSettingsPreferenceController.java
index 77aab34..c3878d5 100644
--- a/src/com/android/settings/privacy/EnableContentCaptureWithServiceSettingsPreferenceController.java
+++ b/src/com/android/settings/privacy/EnableContentCaptureWithServiceSettingsPreferenceController.java
@@ -28,8 +28,8 @@
 
 import androidx.appcompat.app.AlertDialog;
 import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.dashboard.profileselector.UserAdapter;
 import com.android.settings.utils.ContentCaptureUtils;
@@ -88,6 +88,11 @@
         return available ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_privacy;
+    }
+
     private static final class ProfileSelectDialog {
         public static void show(Context context, Preference pref) {
             final UserManager userManager = UserManager.get(context);
diff --git a/src/com/android/settings/privacy/SensorToggleController.java b/src/com/android/settings/privacy/SensorToggleController.java
index 50b023b..53b1a2f 100644
--- a/src/com/android/settings/privacy/SensorToggleController.java
+++ b/src/com/android/settings/privacy/SensorToggleController.java
@@ -22,6 +22,7 @@
 
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.utils.SensorPrivacyManagerHelper;
 import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -80,4 +81,9 @@
                 (sensor, blocked) -> updateState(screen.findPreference(mPreferenceKey)),
                 mCallbackExecutor);
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_privacy;
+    }
 }
diff --git a/src/com/android/settings/privacy/ShowClipAccessNotificationPreferenceController.java b/src/com/android/settings/privacy/ShowClipAccessNotificationPreferenceController.java
index cf05ff4..ad57073 100644
--- a/src/com/android/settings/privacy/ShowClipAccessNotificationPreferenceController.java
+++ b/src/com/android/settings/privacy/ShowClipAccessNotificationPreferenceController.java
@@ -27,6 +27,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -72,6 +73,11 @@
         mPreference = screen.findPreference(getPreferenceKey());
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_privacy;
+    }
+
     /**
      * Registers a DeviceConfig listener on start.
      */
diff --git a/src/com/android/settings/security/ShowPasswordPreferenceController.java b/src/com/android/settings/security/ShowPasswordPreferenceController.java
index 472101b..696854a 100644
--- a/src/com/android/settings/security/ShowPasswordPreferenceController.java
+++ b/src/com/android/settings/security/ShowPasswordPreferenceController.java
@@ -58,5 +58,9 @@
                 ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_security;
+    }
 }
 
diff --git a/src/com/android/settings/security/VisiblePatternProfilePreferenceController.java b/src/com/android/settings/security/VisiblePatternProfilePreferenceController.java
index 64ca853..9e82e78 100644
--- a/src/com/android/settings/security/VisiblePatternProfilePreferenceController.java
+++ b/src/com/android/settings/security/VisiblePatternProfilePreferenceController.java
@@ -28,6 +28,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -119,6 +120,11 @@
     }
 
     @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_security;
+    }
+
+    @Override
     public void onResume() {
         mPreference.setVisible(isAvailable());
     }
diff --git a/src/com/android/settings/sound/MediaControlsPreferenceController.java b/src/com/android/settings/sound/MediaControlsPreferenceController.java
index ad09e2a..e180b34 100644
--- a/src/com/android/settings/sound/MediaControlsPreferenceController.java
+++ b/src/com/android/settings/sound/MediaControlsPreferenceController.java
@@ -23,6 +23,7 @@
 
 import androidx.annotation.VisibleForTesting;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -50,4 +51,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_sound;
+    }
 }
diff --git a/src/com/android/settings/sound/MediaControlsRecommendationController.java b/src/com/android/settings/sound/MediaControlsRecommendationController.java
index 682cb5b..842a141 100644
--- a/src/com/android/settings/sound/MediaControlsRecommendationController.java
+++ b/src/com/android/settings/sound/MediaControlsRecommendationController.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -50,4 +51,9 @@
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_sound;
+    }
 }
diff --git a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
index f931fa4..ce5533e 100644
--- a/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
+++ b/src/com/android/settings/users/AddUserWhenLockedPreferenceController.java
@@ -20,6 +20,7 @@
 
 import androidx.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.RestrictedSwitchPreference;
 
@@ -69,4 +70,9 @@
         return Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.ADD_USERS_WHEN_LOCKED, isChecked ? 1 : 0);
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_system;
+    }
 }
diff --git a/src/com/android/settings/uwb/UwbPreferenceController.java b/src/com/android/settings/uwb/UwbPreferenceController.java
index 8b330a9..ad040ed 100644
--- a/src/com/android/settings/uwb/UwbPreferenceController.java
+++ b/src/com/android/settings/uwb/UwbPreferenceController.java
@@ -162,5 +162,10 @@
             return mContext.getResources().getString(R.string.uwb_settings_summary);
         }
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_connected_devices;
+    }
 }
 
diff --git a/src/com/android/settings/wifi/CellularFallbackPreferenceController.java b/src/com/android/settings/wifi/CellularFallbackPreferenceController.java
index eab50a6..59ad440 100644
--- a/src/com/android/settings/wifi/CellularFallbackPreferenceController.java
+++ b/src/com/android/settings/wifi/CellularFallbackPreferenceController.java
@@ -22,6 +22,7 @@
 import android.telephony.SubscriptionManager;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
@@ -51,6 +52,11 @@
                 Settings.Global.NETWORK_AVOID_BAD_WIFI, isChecked ? "1" : null);
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
     private boolean avoidBadWifiConfig() {
         final int activeDataSubscriptionId = getActiveDataSubscriptionId();
         if (activeDataSubscriptionId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
diff --git a/src/com/android/settings/wifi/NotifyOpenNetworksPreferenceController.java b/src/com/android/settings/wifi/NotifyOpenNetworksPreferenceController.java
index 6455f5b..4b7506d 100644
--- a/src/com/android/settings/wifi/NotifyOpenNetworksPreferenceController.java
+++ b/src/com/android/settings/wifi/NotifyOpenNetworksPreferenceController.java
@@ -26,6 +26,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -85,6 +86,11 @@
         return true;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
     class SettingObserver extends ContentObserver {
         private final Uri NETWORKS_AVAILABLE_URI = Settings.Global.getUriFor(
                 Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON);
diff --git a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java
index e9fd350..2cc7f8e 100644
--- a/src/com/android/settings/wifi/WifiWakeupPreferenceController.java
+++ b/src/com/android/settings/wifi/WifiWakeupPreferenceController.java
@@ -135,6 +135,11 @@
         }
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
     @VisibleForTesting
     CharSequence getNoLocationSummary() {
         AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo("link", null);
diff --git a/src/com/android/settings/wifi/details2/WifiAutoConnectPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiAutoConnectPreferenceController2.java
index ffbb682..8226bc0 100644
--- a/src/com/android/settings/wifi/details2/WifiAutoConnectPreferenceController2.java
+++ b/src/com/android/settings/wifi/details2/WifiAutoConnectPreferenceController2.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 
+import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 import com.android.wifitrackerlib.WifiEntry;
 
@@ -54,4 +55,9 @@
         mWifiEntry.setAutoJoinEnabled(isChecked);
         return true;
     }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
 }
diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java
index f6604dd..29a2bd6 100644
--- a/src/com/android/settings/wifi/slice/WifiSlice.java
+++ b/src/com/android/settings/wifi/slice/WifiSlice.java
@@ -33,6 +33,7 @@
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.core.graphics.drawable.IconCompat;
@@ -44,6 +45,8 @@
 import com.android.settings.SubSettings;
 import com.android.settings.Utils;
 import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.network.NetworkProviderSettings;
+import com.android.settings.network.WifiSwitchPreferenceController;
 import com.android.settings.slices.CustomSliceable;
 import com.android.settings.slices.SliceBackgroundWorker;
 import com.android.settings.slices.SliceBuilderUtils;
@@ -269,15 +272,28 @@
     public Intent getIntent() {
         final String screenTitle = mContext.getText(R.string.wifi_settings).toString();
         final Uri contentUri = new Uri.Builder().appendPath(KEY_WIFI).build();
-        final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext,
-                WifiSettings.class.getName(), KEY_WIFI, screenTitle,
-                SettingsEnums.DIALOG_WIFI_AP_EDIT)
+        final String className;
+        final String key;
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) {
+            className = NetworkProviderSettings.class.getName();
+            key = WifiSwitchPreferenceController.KEY;
+        } else {
+            className = WifiSettings.class.getName();
+            key = KEY_WIFI;
+        }
+        final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext, className,
+                key, screenTitle, SettingsEnums.DIALOG_WIFI_AP_EDIT, this)
                 .setClassName(mContext.getPackageName(), SubSettings.class.getName())
                 .setData(contentUri);
 
         return intent;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_network;
+    }
+
     private boolean isWifiEnabled() {
         switch (mWifiManager.getWifiState()) {
             case WifiManager.WIFI_STATE_ENABLED: