Merge "Update the icon size of homepage preference for injected IAs"
diff --git a/res/layout/settings_collapsing_base_layout.xml b/res/layout/settings_collapsing_base_layout.xml
index 298f9e1..fe6449b 100644
--- a/res/layout/settings_collapsing_base_layout.xml
+++ b/res/layout/settings_collapsing_base_layout.xml
@@ -19,7 +19,8 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/content_parent"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:transitionGroup="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar_layout"
diff --git a/res/xml/configure_notification_settings_v2.xml b/res/xml/configure_notification_settings_v2.xml
new file mode 100644
index 0000000..9498d28
--- /dev/null
+++ b/res/xml/configure_notification_settings_v2.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/configure_notification_settings">
+
+    <com.android.settings.widget.VideoPreference
+        android:key="notification_model_illustration"
+        android:title="@string/summary_placeholder"
+        settings:animation="@raw/notification_interruption_model"
+        settings:controller="com.android.settings.widget.VideoPreferenceController"
+        android:persistent="false" />
+
+    <Preference
+        android:key="notification_history"
+        android:title="@string/notification_history"
+        android:summary="@string/notification_history_summary"
+        settings:allowDividerAbove="true"
+        settings:allowDividerBelow="false"
+        android:order="2">
+        <intent
+            android:action="android.intent.action.MAIN"
+            android:targetPackage="com.android.settings"
+            android:targetClass="com.android.settings.notification.history.NotificationHistoryActivity" />
+    </Preference>
+
+    <Preference
+        android:key="conversations"
+        android:title="@string/conversations_category_title"
+        android:order="3"
+        settings:controller="com.android.settings.notification.ConversationListSummaryPreferenceController"
+        android:fragment="com.android.settings.notification.app.ConversationListSettings"
+    />
+
+    <Preference
+        android:key="notification_bubbles"
+        android:title="@string/notification_bubbles_title"
+        android:summary="@string/notifications_bubble_setting_on_summary"
+        android:order="4"
+        settings:controller="com.android.settings.notification.BubbleSummaryNotificationPreferenceController"
+        android:fragment="com.android.settings.notification.BubbleNotificationSettings"
+    />
+
+    <com.android.settingslib.RestrictedPreference
+        android:key="app_and_notif_cell_broadcast_settings"
+        android:title="@string/cell_broadcast_settings"
+        android:order="5"
+        settings:useAdminDisabledSummary="true">
+        <intent
+            android:action="android.intent.action.MAIN"
+            android:targetPackage="@string/cell_broadcast_receiver_package"
+            android:targetClass="com.android.cellbroadcastreceiver.CellBroadcastSettings"/>
+    </com.android.settingslib.RestrictedPreference>
+
+    <PreferenceCategory
+        android:key="recent_notifications_category"
+        android:title="@string/recent_notifications"
+        settings:allowDividerAbove="true"
+        android:order="6">
+        <!-- Placeholder for a list of recent apps -->
+
+        <!-- See all apps button -->
+        <Preference
+            android:key="all_notifications"
+            android:title="@string/notifications_title"
+            android:fragment="com.android.settings.applications.manageapplications.ManageApplications"
+            android:order="7"
+            settings:searchable="false">
+            <extra
+                android:name="classname"
+                android:value="com.android.settings.Settings$NotificationAppListActivity"/>
+        </Preference>
+    </PreferenceCategory>
+
+
+    <PreferenceCategory
+        android:key="configure_notifications_lock"
+        android:title="@string/lock_screen_notifications_title"
+        android:order="10">
+        <!-- When device is locked -->
+        <com.android.settings.RestrictedListPreference
+            android:key="lock_screen_notifications"
+            android:title="@string/lock_screen_notifs_title"
+            android:singleLineTitle="false"
+            android:summary="@string/summary_placeholder" />
+
+        <SwitchPreference
+            android:key="lock_screen_redact"
+            android:title="@string/lock_screen_notifs_redact"
+            android:summary="@string/lock_screen_notifs_redact_summary"
+            settings:controller="com.android.settings.notification.RedactNotificationPreferenceController" />
+
+        <SwitchPreference
+            android:key="lock_screen_work_redact"
+            android:title="@string/lock_screen_notifs_redact_work"
+            android:summary="@string/lock_screen_notifs_redact_work_summary"
+            settings:controller="com.android.settings.notification.RedactNotificationPreferenceController" />
+
+        <SwitchPreference
+            android:key="notification_lockscreen_bypass"
+            android:title="@string/lockscreen_bypass_title"
+            android:summary="@string/lockscreen_bypass_summary"
+            settings:searchable="false"
+            settings:controller="com.android.settings.biometrics.face.FaceSettingsLockscreenBypassPreferenceController" />
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="configure_notifications_advanced"
+        android:order="15"
+        settings:initialExpandedChildrenCount="0">
+
+        <SwitchPreference
+            android:key="silent_icons"
+            android:title="@string/silent_notifications_status_bar"
+            settings:controller="com.android.settings.notification.SilentStatusBarPreferenceController"/>
+
+        <SwitchPreference
+            android:key="show_snooze_options"
+            android:title="@string/snooze_options_title"
+            settings:controller="com.android.settings.notification.SnoozeNotificationPreferenceController" />
+
+        <SwitchPreference
+            android:key="asst_capabilities_actions_replies"
+            android:title="@string/asst_capabilities_actions_replies_title"
+            android:summary="@string/asst_capabilities_actions_replies_summary"
+            settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
+
+        <!-- Notification badging -->
+        <SwitchPreference
+            android:key="notification_badging"
+            android:title="@string/notification_badging_title"
+            settings:controller="com.android.settings.notification.BadgingNotificationPreferenceController"/>
+
+        <!-- Pulse notification light -->
+        <SwitchPreference
+            android:key="notification_pulse"
+            android:title="@string/notification_pulse_title"
+            settings:controller="com.android.settings.notification.PulseNotificationPreferenceController"/>
+
+        <!-- Default notification ringtone -->
+        <com.android.settings.DefaultRingtonePreference
+            android:key="notification_default_ringtone"
+            android:title="@string/notification_ringtone_title"
+            android:dialogTitle="@string/notification_ringtone_title"
+            android:summary="@string/summary_placeholder"
+            android:ringtoneType="notification"
+            settings:searchable="false"/>
+
+        <Preference
+            android:key="gesture_swipe_down_fingerprint_notifications"
+            android:title="@string/fingerprint_swipe_for_notifications_title"
+            android:fragment="com.android.settings.gestures.SwipeToNotificationSettings"
+            settings:controller="com.android.settings.gestures.SwipeToNotificationPreferenceController"/>
+
+        <com.android.settingslib.RestrictedPreference
+            android:key="zen_mode_notifications"
+            android:title="@string/zen_mode_settings_title"
+            settings:useAdminDisabledSummary="true"
+            android:fragment="com.android.settings.notification.zen.ZenModeSettings"
+            settings:controller="com.android.settings.notification.zen.ZenModePreferenceController"
+            settings:allowDividerAbove="false"/>
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/res/xml/sound_settings_v2.xml b/res/xml/sound_settings_v2.xml
index 9699240..22a3581 100644
--- a/res/xml/sound_settings_v2.xml
+++ b/res/xml/sound_settings_v2.xml
@@ -19,8 +19,7 @@
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/sound_settings"
     android:key="sound_settings"
-    settings:keywords="@string/keywords_sounds"
-    settings:initialExpandedChildrenCount="9">
+    settings:keywords="@string/keywords_sounds">
 
     <!-- Remote volume group -->
     <PreferenceCategory
@@ -90,41 +89,17 @@
         android:order="-140"
         settings:controller="com.android.settings.notification.NotificationVolumePreferenceController"/>
 
-    <!-- Also vibrate for calls -->
-    <Preference
-        android:fragment="com.android.settings.sound.VibrateForCallsPreferenceFragment"
-        android:key="vibrate_for_calls"
-        android:title="@string/vibrate_when_ringing_title"
-        android:order="-130"
-        settings:controller="com.android.settings.sound.VibrateForCallsPreferenceController"
-        settings:keywords="@string/keywords_vibrate_for_calls"/>
-
+    <!-- TODO(b/174964721): make this a PrimarySwitchPreference -->
     <!-- Interruptions -->
     <com.android.settingslib.RestrictedPreference
         android:key="zen_mode"
         android:title="@string/zen_mode_settings_title"
         android:fragment="com.android.settings.notification.zen.ZenModeSettings"
-        android:order="-120"
+        android:order="-130"
         settings:useAdminDisabledSummary="true"
         settings:keywords="@string/keywords_sounds_and_notifications_interruptions"
-        settings:allowDividerAbove="true"
         settings:controller="com.android.settings.notification.zen.ZenModePreferenceController"/>
 
-    <Preference
-        android:key="media_controls_summary"
-        android:title="@string/media_controls_title"
-        android:fragment="com.android.settings.sound.MediaControlsSettings"
-        android:order="-110"
-        settings:controller="com.android.settings.sound.MediaControlsParentPreferenceController"
-        settings:keywords="@string/keywords_media_controls"/>
-
-    <com.android.settings.widget.PrimarySwitchPreference
-        android:key="gesture_prevent_ringing_sound"
-        android:title="@string/gesture_prevent_ringing_sound_title"
-        android:order="-107"
-        android:fragment="com.android.settings.gestures.PreventRingingGestureSettings"
-        settings:controller="com.android.settings.gestures.PreventRingingParentPreferenceController"/>
-
     <!-- Phone ringtone -->
     <com.android.settings.DefaultRingtonePreference
         android:key="phone_ringtone"
@@ -132,9 +107,34 @@
         android:dialogTitle="@string/ringtone_title"
         android:summary="@string/summary_placeholder"
         android:ringtoneType="ringtone"
-        android:order="-100"
+        android:order="-120"
         settings:keywords="@string/sound_settings"/>
 
+    <!-- Live Caption -110 and Now Playing -105-->
+    <Preference
+        android:key="media_controls_summary"
+        android:title="@string/media_controls_title"
+        android:fragment="com.android.settings.sound.MediaControlsSettings"
+        android:order="-100"
+        settings:controller="com.android.settings.sound.MediaControlsParentPreferenceController"
+        settings:keywords="@string/keywords_media_controls"/>
+
+    <!-- Also vibrate for calls -->
+    <Preference
+        android:fragment="com.android.settings.sound.VibrateForCallsPreferenceFragment"
+        android:key="vibrate_for_calls"
+        android:title="@string/vibrate_when_ringing_title"
+        android:order="-90"
+        settings:controller="com.android.settings.sound.VibrateForCallsPreferenceController"
+        settings:keywords="@string/keywords_vibrate_for_calls"/>
+
+    <com.android.settings.widget.PrimarySwitchPreference
+        android:key="gesture_prevent_ringing_sound"
+        android:title="@string/gesture_prevent_ringing_sound_title"
+        android:order="-80"
+        android:fragment="com.android.settings.gestures.PreventRingingGestureSettings"
+        settings:controller="com.android.settings.gestures.PreventRingingParentPreferenceController"/>
+
     <!-- Default notification ringtone -->
     <com.android.settings.DefaultRingtonePreference
         android:key="notification_ringtone"
@@ -142,7 +142,7 @@
         android:dialogTitle="@string/notification_ringtone_title"
         android:summary="@string/summary_placeholder"
         android:ringtoneType="notification"
-        android:order="-90"/>
+        android:order="-70"/>
 
     <!-- Default alarm ringtone -->
     <com.android.settings.DefaultRingtonePreference
@@ -152,100 +152,103 @@
         android:summary="@string/summary_placeholder"
         android:persistent="false"
         android:ringtoneType="alarm"
-        android:order="-80"/>
+        android:order="-60"/>
 
-    <!-- Other sounds -->
-    <PreferenceCategory
-          android:key="other_sounds_and_vibrations_category"
-          android:title="@string/other_sound_category_preference_title"
-          android:order="-50">
+    <!-- Dial pad tones -->
+    <SwitchPreference
+        android:key="dial_pad_tones"
+        android:title="@string/dial_pad_tones_title"
+        android:order="-50"/>
 
-        <!-- Dial pad tones -->
-        <SwitchPreference
-          android:key="dial_pad_tones"
-          android:title="@string/dial_pad_tones_title"/>
+    <!-- Screen locking sounds -->
+    <SwitchPreference
+        android:key="screen_locking_sounds"
+        android:title="@string/screen_locking_sounds_title"
+        android:order="-45"/>
 
-        <!-- Screen locking sounds -->
-        <SwitchPreference
-          android:key="screen_locking_sounds"
-          android:title="@string/screen_locking_sounds_title"/>
+    <!-- Charging sounds -->
+    <SwitchPreference
+        android:key="charging_sounds"
+        android:title="@string/charging_sounds_title"
+        android:order="-40"/>
 
-        <!-- Charging sounds -->
-        <SwitchPreference
-          android:key="charging_sounds"
-          android:title="@string/charging_sounds_title"/>
+    <!-- Docking sounds -->
+    <SwitchPreference
+        android:key="docking_sounds"
+        android:title="@string/docking_sounds_title"
+        android:order="-35"/>
 
-        <!-- Docking sounds -->
-        <SwitchPreference
-          android:key="docking_sounds"
-          android:title="@string/docking_sounds_title"/>
+    <!-- Touch sounds -->
+    <SwitchPreference
+        android:key="touch_sounds"
+        android:title="@string/touch_sounds_title"
+        android:order="-30"/>
 
-        <!-- Touch sounds -->
-        <SwitchPreference
-          android:key="touch_sounds"
-          android:title="@string/touch_sounds_title"/>
+    <!-- Vibrate on touch -->
+    <SwitchPreference
+        android:key="vibrate_on_touch"
+        android:title="@string/vibrate_on_touch_title"
+        android:summary="@string/vibrate_on_touch_summary"
+        settings:keywords="@string/keywords_vibrate_on_touch"
+        android:order="-25"/>
 
-        <!-- Vibrate on touch -->
-        <SwitchPreference
-          android:key="vibrate_on_touch"
-          android:title="@string/vibrate_on_touch_title"
-          android:summary="@string/vibrate_on_touch_summary"
-          settings:keywords="@string/keywords_vibrate_on_touch"/>
+    <!-- Dock speaker plays -->
+    <DropDownPreference
+        android:key="dock_audio_media"
+        android:title="@string/dock_audio_media_title"
+        android:summary="%s"
+        android:order="-20"/>
 
-        <!-- Dock speaker plays -->
-        <DropDownPreference
-          android:key="dock_audio_media"
-          android:title="@string/dock_audio_media_title"
-          android:summary="%s"/>
+    <!-- Boot sounds -->
+    <SwitchPreference
+        android:key="boot_sounds"
+        android:title="@string/boot_sounds_title"
+        android:order="-15"/>
 
-        <!-- Boot sounds -->
-        <SwitchPreference
-          android:key="boot_sounds"
-          android:title="@string/boot_sounds_title"/>
+    <!-- Emergency tone -->
+    <DropDownPreference
+        android:key="emergency_tone"
+        android:title="@string/emergency_tone_title"
+        android:summary="%s"
+        android:order="-10"/>
 
-        <!-- Emergency tone -->
-        <DropDownPreference
-          android:key="emergency_tone"
-          android:title="@string/emergency_tone_title"
-          android:summary="%s"/>
-    </PreferenceCategory>
-
+    <!-- TODO(b/174964721): make this category its own entry -->
     <com.android.settings.widget.WorkOnlyCategory
         android:key="sound_work_settings_section"
         android:title="@string/sound_work_settings"
         android:order="100">
 
-                <!-- Use the same sounds of the work profile -->
-                <SwitchPreference
-                    android:key="work_use_personal_sounds"
-                    android:title="@string/work_use_personal_sounds_title"
-                    android:summary="@string/work_use_personal_sounds_summary"
-                    android:disableDependentsState="true"/>
+        <!-- Use the same sounds of the work profile -->
+        <SwitchPreference
+            android:key="work_use_personal_sounds"
+            android:title="@string/work_use_personal_sounds_title"
+            android:summary="@string/work_use_personal_sounds_summary"
+            android:disableDependentsState="true"/>
 
-                <!-- Work phone ringtone -->
-                <com.android.settings.DefaultRingtonePreference
-                    android:key="work_ringtone"
-                    android:title="@string/work_ringtone_title"
-                    android:dialogTitle="@string/work_alarm_ringtone_title"
-                    android:ringtoneType="ringtone"
-                    android:dependency="work_use_personal_sounds"/>
+        <!-- Work phone ringtone -->
+        <com.android.settings.DefaultRingtonePreference
+            android:key="work_ringtone"
+            android:title="@string/work_ringtone_title"
+            android:dialogTitle="@string/work_alarm_ringtone_title"
+            android:ringtoneType="ringtone"
+            android:dependency="work_use_personal_sounds"/>
 
-                <!-- Default work notification ringtone -->
-                <com.android.settings.DefaultRingtonePreference
-                    android:key="work_notification_ringtone"
-                    android:title="@string/work_notification_ringtone_title"
-                    android:dialogTitle="@string/work_alarm_ringtone_title"
-                    android:ringtoneType="notification"
-                    android:dependency="work_use_personal_sounds"/>
+        <!-- Default work notification ringtone -->
+        <com.android.settings.DefaultRingtonePreference
+            android:key="work_notification_ringtone"
+            android:title="@string/work_notification_ringtone_title"
+            android:dialogTitle="@string/work_alarm_ringtone_title"
+            android:ringtoneType="notification"
+            android:dependency="work_use_personal_sounds"/>
 
-                <!-- Default work alarm ringtone -->
-                <com.android.settings.DefaultRingtonePreference
-                    android:key="work_alarm_ringtone"
-                    android:title="@string/work_alarm_ringtone_title"
-                    android:dialogTitle="@string/work_alarm_ringtone_title"
-                    android:persistent="false"
-                    android:ringtoneType="alarm"
-                    android:dependency="work_use_personal_sounds"/>
+        <!-- Default work alarm ringtone -->
+        <com.android.settings.DefaultRingtonePreference
+            android:key="work_alarm_ringtone"
+            android:title="@string/work_alarm_ringtone_title"
+            android:dialogTitle="@string/work_alarm_ringtone_title"
+            android:persistent="false"
+            android:ringtoneType="alarm"
+            android:dependency="work_use_personal_sounds"/>
 
     </com.android.settings.widget.WorkOnlyCategory>
 </PreferenceScreen>
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index a574855..b53b834 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -36,8 +36,10 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.view.View;
+import android.view.Window;
 import android.widget.Button;
 
 import androidx.annotation.Nullable;
@@ -53,6 +55,7 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.settings.Settings.WifiSettingsActivity;
 import com.android.settings.applications.manageapplications.ManageApplications;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.OnActivityResultListener;
 import com.android.settings.core.SettingsBaseActivity;
 import com.android.settings.core.SubSettingLauncher;
@@ -67,6 +70,7 @@
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 import com.android.settingslib.drawer.DashboardCategory;
 
+import com.google.android.material.transition.platform.MaterialSharedAxis;
 import com.google.android.setupcompat.util.WizardManagerHelper;
 
 import java.util.ArrayList;
@@ -229,6 +233,20 @@
 
     @Override
     protected void onCreate(Bundle savedState) {
+        if (FeatureFlagUtils.isEnabled(this, FeatureFlags.SILKY_HOME)) {
+            // Enable Activity transitions
+            getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
+            final MaterialSharedAxis enterTransition = new MaterialSharedAxis(
+                    MaterialSharedAxis.X, /* forward */true);
+            enterTransition.addTarget(R.id.content_parent);
+            getWindow().setEnterTransition(enterTransition);
+
+            final MaterialSharedAxis returnTransition = new MaterialSharedAxis(
+                    MaterialSharedAxis.X, /* forward */false);
+            returnTransition.addTarget(R.id.content_parent);
+            getWindow().setReturnTransition(returnTransition);
+        }
+
         super.onCreate(savedState);
         Log.d(LOG_TAG, "Starting onCreate");
         long startTime = System.currentTimeMillis();
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index 6801a80..0f3695a 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -29,6 +29,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.Fragment;
@@ -38,6 +39,7 @@
 
 import com.android.settings.R;
 import com.android.settings.RingtonePreference;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.OnActivityResultListener;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
@@ -75,6 +77,9 @@
 
     @Override
     protected int getPreferenceScreenResId() {
+        if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
+            return R.xml.configure_notification_settings_v2;
+        }
         return R.xml.configure_notification_settings;
     }
 
@@ -111,6 +116,11 @@
             }
 
         });
+
+        if (FeatureFlagUtils.isEnabled(context, FeatureFlags.SILKY_HOME)) {
+            controllers.add(new EmergencyBroadcastPreferenceController(context,
+                    "app_and_notif_cell_broadcast_settings"));
+        }
         return controllers;
     }