Remove sub-text from slice builder

We would like to remove all sub-text from Settings Search. But slice
view does not support API to configure the sub-text visibility.
Therefore, the only way is to remove the sub-text from slices directly.

Since Settings slices are also invoked by other apps, we can not
directly remove the sub-text.

Finally, we decide to check the caller's uid. If it comes from Settings
Search, we will return the slice without the sub-text.

Bug: 143118037
Test: visual, robotests
Change-Id: Iac72f1683a2c930592634e0599058890d86f669d
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index e8eb8ba..2391fe8 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -57,6 +57,7 @@
 import android.net.Network;
 import android.net.wifi.WifiManager;
 import android.os.BatteryManager;
+import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.IBinder;
@@ -1089,4 +1090,15 @@
         }
         return f;
     }
+
+    /**
+     * Returns true if current binder uid is Settings Intelligence.
+     */
+    public static boolean isSettingsIntelligence(Context context) {
+        final int callingUid = Binder.getCallingUid();
+        final String callingPackage = context.getPackageManager().getPackagesForUid(callingUid)[0];
+        final boolean isSettingsIntelligence = TextUtils.equals(callingPackage,
+                context.getString(R.string.config_settingsintelligence_package_name));
+        return isSettingsIntelligence;
+    }
 }
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index b76eb38..c3b08d3 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -96,15 +96,18 @@
                 ListBuilder.ICON_IMAGE, title);
         final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
                 null /* actionTitle */, isMobileDataEnabled());
+        final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
+                .setTitle(title)
+                .addEndItem(toggleSliceAction)
+                .setPrimaryAction(primarySliceAction);
+        if (!Utils.isSettingsIntelligence(mContext)) {
+            rowBuilder.setSubtitle(summary);
+        }
 
         final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
                 ListBuilder.INFINITY)
                 .setAccentColor(color)
-                .addRow(new ListBuilder.RowBuilder()
-                        .setTitle(title)
-                        .setSubtitle(summary)
-                        .addEndItem(toggleSliceAction)
-                        .setPrimaryAction(primarySliceAction));
+                .addRow(rowBuilder);
         return listBuilder.build();
     }
 
diff --git a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
index fe1e204..c9a203e 100644
--- a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
+++ b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
@@ -82,15 +82,18 @@
         final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
                 null /* actionTitle */,
                 isZenModeEnabled);
+        final RowBuilder rowBuilder = new RowBuilder()
+                .setTitle(title)
+                .addEndItem(toggleSliceAction)
+                .setPrimaryAction(primarySliceAction);
+        if (!Utils.isSettingsIntelligence(context)) {
+            rowBuilder.setSubtitle(subtitle);
+        }
 
         return new ListBuilder(context, CustomSliceRegistry.ZEN_MODE_SLICE_URI,
                 ListBuilder.INFINITY)
                 .setAccentColor(color)
-                .addRow(new RowBuilder()
-                        .setTitle(title)
-                        .setSubtitle(subtitle)
-                        .addEndItem(toggleSliceAction)
-                        .setPrimaryAction(primarySliceAction))
+                .addRow(rowBuilder)
                 .build();
     }
 
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index 34c0f1b..2d5b4aa 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -241,16 +241,19 @@
         final SliceAction sliceAction = getToggleAction(context, sliceData,
                 toggleController.isChecked());
         final Set<String> keywords = buildSliceKeywords(sliceData);
+        final RowBuilder rowBuilder = new RowBuilder()
+                .setTitle(sliceData.getTitle())
+                .setPrimaryAction(
+                        SliceAction.createDeeplink(contentIntent, icon,
+                                ListBuilder.ICON_IMAGE, sliceData.getTitle()))
+                .addEndItem(sliceAction);
+        if (!Utils.isSettingsIntelligence(context)) {
+            rowBuilder.setSubtitle(subtitleText);
+        }
 
         return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                 .setAccentColor(color)
-                .addRow(new RowBuilder()
-                        .setTitle(sliceData.getTitle())
-                        .setSubtitle(subtitleText)
-                        .setPrimaryAction(
-                                SliceAction.createDeeplink(contentIntent, icon,
-                                        ListBuilder.ICON_IMAGE, sliceData.getTitle()))
-                        .addEndItem(sliceAction))
+                .addRow(rowBuilder)
                 .setKeywords(keywords)
                 .build();
     }
@@ -262,16 +265,19 @@
         final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
         @ColorInt final int color = Utils.getColorAccentDefaultColor(context);
         final Set<String> keywords = buildSliceKeywords(sliceData);
+        final RowBuilder rowBuilder = new RowBuilder()
+                .setTitle(sliceData.getTitle())
+                .setPrimaryAction(
+                        SliceAction.createDeeplink(contentIntent, icon,
+                                ListBuilder.ICON_IMAGE,
+                                sliceData.getTitle()));
+        if (!Utils.isSettingsIntelligence(context)) {
+            rowBuilder.setSubtitle(subtitleText);
+        }
 
         return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                 .setAccentColor(color)
-                .addRow(new RowBuilder()
-                        .setTitle(sliceData.getTitle())
-                        .setSubtitle(subtitleText)
-                        .setPrimaryAction(
-                                SliceAction.createDeeplink(contentIntent, icon,
-                                        ListBuilder.ICON_IMAGE,
-                                        sliceData.getTitle())))
+                .addRow(rowBuilder)
                 .setKeywords(keywords)
                 .build();
     }
@@ -301,7 +307,6 @@
         }
         final InputRangeBuilder inputRangeBuilder = new InputRangeBuilder()
                 .setTitle(sliceData.getTitle())
-                .setSubtitle(subtitleText)
                 .setPrimaryAction(primaryAction)
                 .setMax(sliderController.getMax())
                 .setMin(sliderController.getMin())
@@ -311,6 +316,9 @@
             inputRangeBuilder.setTitleItem(icon, ListBuilder.ICON_IMAGE);
             color = CustomSliceable.COLOR_NOT_TINTED;
         }
+        if (!Utils.isSettingsIntelligence(context)) {
+            inputRangeBuilder.setSubtitle(subtitleText);
+        }
 
         return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                 .setAccentColor(color)
@@ -330,14 +338,17 @@
         final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
         @ColorInt final int color = Utils.getColorAccentDefaultColor(context);
         final Set<String> keywords = buildSliceKeywords(sliceData);
+        final RowBuilder rowBuilder = new RowBuilder()
+                .setTitle(sliceData.getTitle())
+                .setPrimaryAction(primaryAction)
+                .addEndItem(copyableAction);
+        if (!Utils.isSettingsIntelligence(context)) {
+            rowBuilder.setSubtitle(subtitleText);
+        }
 
         return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                 .setAccentColor(color)
-                .addRow(new RowBuilder()
-                        .setTitle(sliceData.getTitle())
-                        .setSubtitle(subtitleText)
-                        .setPrimaryAction(primaryAction)
-                        .addEndItem(copyableAction))
+                .addRow(rowBuilder)
                 .setKeywords(keywords)
                 .build();
     }
@@ -418,14 +429,17 @@
         final SliceAction primaryAction = SliceAction.createDeeplink(
                 getContentPendingIntent(context, data),
                 icon, ListBuilder.ICON_IMAGE, title);
+        final RowBuilder rowBuilder = new RowBuilder()
+                .setTitle(title)
+                .setTitleItem(icon, ListBuilder.ICON_IMAGE)
+                .setPrimaryAction(primaryAction);
+        if (!Utils.isSettingsIntelligence(context)) {
+            rowBuilder.setSubtitle(subtitle);
+        }
 
         return new ListBuilder(context, data.getUri(), ListBuilder.INFINITY)
                 .setAccentColor(color)
-                .addRow(new RowBuilder()
-                        .setTitle(title)
-                        .setTitleItem(icon, ListBuilder.ICON_IMAGE)
-                        .setSubtitle(subtitle)
-                        .setPrimaryAction(primaryAction))
+                .addRow(rowBuilder)
                 .setKeywords(keywords)
                 .build();
     }
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
index 69adf55..958db7e 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
@@ -269,14 +269,17 @@
         // Top row shows information on current preference state
         final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
                 .setAccentColor(Utils.getColorAccentDefaultColor(mContext));
-        listBuilder.setHeader(new ListBuilder.HeaderBuilder()
+        final ListBuilder.HeaderBuilder headerBuilder = new ListBuilder.HeaderBuilder()
                 .setTitle(res.getText(R.string.wifi_calling_mode_title))
-                .setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref, subId))
                 .setPrimaryAction(SliceAction.createDeeplink(
                         getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY),
                         icon,
                         ListBuilder.ICON_IMAGE,
-                        res.getText(R.string.wifi_calling_mode_title))));
+                        res.getText(R.string.wifi_calling_mode_title)));
+        if (!Utils.isSettingsIntelligence(mContext)) {
+            headerBuilder.setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref, subId));
+        }
+        listBuilder.setHeader(headerBuilder);
 
         if (isWifiOnlySupported) {
             listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
@@ -458,14 +461,17 @@
     private Slice getNonActionableWifiCallingSlice(CharSequence title, CharSequence subtitle,
             Uri sliceUri, PendingIntent primaryActionIntent) {
         final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal);
+        final RowBuilder rowBuilder = new RowBuilder()
+                .setTitle(title)
+                .setPrimaryAction(SliceAction.createDeeplink(
+                        primaryActionIntent, icon, ListBuilder.SMALL_IMAGE,
+                        title));
+        if (!Utils.isSettingsIntelligence(mContext)) {
+            rowBuilder.setSubtitle(subtitle);
+        }
         return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
                 .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
-                .addRow(new RowBuilder()
-                        .setTitle(title)
-                        .setSubtitle(subtitle)
-                        .setPrimaryAction(SliceAction.createDeeplink(
-                                primaryActionIntent, icon, ListBuilder.SMALL_IMAGE,
-                                title)))
+                .addRow(rowBuilder)
                 .build();
     }