From dea5102c44c24db792e70a4b1d8270b1277ad69c Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 12 Jun 2024 20:48:32 -0400 Subject: [PATCH] Migrate Settings intents to our new modes ui Fixes: 333909883 Test: manual - created test app that launches each intent, launched each with flag on and flag off Test: atest com.android.settings.notification.modes Flag: android.app.modes_ui Change-Id: I8259b554fe34b453880890c667165547033ccd06 --- Android.bp | 6 ++ AndroidManifest.xml | 71 +++++++++++++++++-- src/com/android/settings/Settings.java | 8 ++- .../core/gateway/SettingsGateway.java | 4 ++ .../ZenModeActionsPreferenceController.java | 4 +- .../ZenModeAppsLinkPreferenceController.java | 5 +- .../ZenModeAppsPreferenceController.java | 4 +- .../ZenModeCallsLinkPreferenceController.java | 4 +- ...enModeDisplayLinkPreferenceController.java | 4 +- .../modes/ZenModeFragmentBase.java | 27 ++++--- ...nModeMessagesLinkPreferenceController.java | 4 +- ...nModeNotifVisLinkPreferenceController.java | 5 +- .../ZenModeOtherLinkPreferenceController.java | 5 +- ...ZenModePeopleLinkPreferenceController.java | 5 +- ...odeSetTriggerLinkPreferenceController.java | 1 - .../modes/ZenSubSettingLauncher.java | 4 +- ...nModeAppsLinkPreferenceControllerTest.java | 5 +- 17 files changed, 120 insertions(+), 46 deletions(-) diff --git a/Android.bp b/Android.bp index cb898bef834..0c6d8d1952b 100644 --- a/Android.bp +++ b/Android.bp @@ -125,6 +125,9 @@ android_library { "telephony-common", "ims-common", ], + flags_packages: [ + "android.app.flags-aconfig", + ], } platform_compat_config { @@ -155,6 +158,9 @@ android_app { optimize: { proguard_flags_files: ["proguard.flags"], }, + flags_packages: [ + "android.app.flags-aconfig", + ], } android_library_import { diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ca963287c18..b589fd9fdf1 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1287,20 +1287,63 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1312,6 +1355,20 @@ android:value="true" /> + + + + + + + + + - + - + diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 3367bf18f9f..e3bb1a15425 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -18,6 +18,8 @@ package com.android.settings; import static android.provider.Settings.ACTION_PRIVACY_SETTINGS; +import android.annotation.FlaggedApi; +import android.app.Flags; import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Bundle; @@ -317,11 +319,13 @@ public class Settings extends SettingsActivity { public static class PrintSettingsActivity extends SettingsActivity { /* empty */ } public static class PrintJobSettingsActivity extends SettingsActivity { /* empty */ } public static class ZenModeSettingsActivity extends SettingsActivity { /* empty */ } - public static class ZenModeBehaviorSettingsActivity extends SettingsActivity { /* empty */ } - public static class ZenModeBlockedEffectsSettingsActivity extends SettingsActivity { /* empty */ } public static class ZenModeAutomationSettingsActivity extends SettingsActivity { /* empty */ } public static class ZenModeScheduleRuleSettingsActivity extends SettingsActivity { /* empty */ } public static class ZenModeEventRuleSettingsActivity extends SettingsActivity { /* empty */ } + @FlaggedApi(Flags.FLAG_MODES_UI) + public static class ModeSettingsActivity extends SettingsActivity { /* empty */ } + @FlaggedApi(Flags.FLAG_MODES_UI) + public static class ModesSettingsActivity extends SettingsActivity { /* empty */ } public static class SoundSettingsActivity extends SettingsActivity { /* empty */ } public static class ConfigureNotificationSettingsActivity extends SettingsActivity { /* empty */ } public static class ConversationListSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 1c14712df30..11c05f318d4 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -162,6 +162,8 @@ import com.android.settings.notification.app.AppNotificationSettings; import com.android.settings.notification.app.ChannelNotificationSettings; import com.android.settings.notification.app.ConversationListSettings; import com.android.settings.notification.history.NotificationStation; +import com.android.settings.notification.modes.ZenModeFragment; +import com.android.settings.notification.modes.ZenModesListFragment; import com.android.settings.notification.zen.ZenAccessSettings; import com.android.settings.notification.zen.ZenModeAutomationSettings; import com.android.settings.notification.zen.ZenModeBlockedEffectsSettings; @@ -396,6 +398,8 @@ public class SettingsGateway { CellularSecuritySettingsFragment.class.getName(), AccessibilityHearingAidsFragment.class.getName(), HearingDevicePairingFragment.class.getName(), + ZenModesListFragment.class.getName(), + ZenModeFragment.class.getName() }; public static final String[] SETTINGS_FOR_RESTRICTED = { diff --git a/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java index 8585234506f..52ca7e60d15 100644 --- a/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java @@ -16,7 +16,7 @@ package com.android.settings.notification.modes; -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -50,7 +50,7 @@ class ZenModeActionsPreferenceController extends AbstractZenModePreferenceContro buttonsPreference.setButton2Enabled(zenMode.canEditIcon()); buttonsPreference.setButton2OnClickListener(v -> { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); new SubSettingLauncher(mContext) .setDestination(ZenModeIconPickerFragment.class.getName()) // TODO: b/332937635 - Update metrics category diff --git a/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java index 6835e6cd853..a30b0aceaba 100644 --- a/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java @@ -17,8 +17,7 @@ package com.android.settings.notification.modes; import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL; - -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -72,7 +71,7 @@ class ZenModeAppsLinkPreferenceController extends AbstractZenModePreferenceContr @Override public void updateState(Preference preference, @NonNull ZenMode zenMode) { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); // TODO(b/332937635): Update metrics category preference.setIntent(new SubSettingLauncher(mContext) .setDestination(ZenModeAppsFragment.class.getName()) diff --git a/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java index d5ef0440b5e..beb8327aaab 100644 --- a/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeAppsPreferenceController.java @@ -16,7 +16,7 @@ package com.android.settings.notification.modes; -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.app.settings.SettingsEnums; import android.content.Context; @@ -103,7 +103,7 @@ public class ZenModeAppsPreferenceController extends private void launchPrioritySettings() { Bundle bundle = new Bundle(); if (mModeId != null) { - bundle.putString(MODE_ID, mModeId); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, mModeId); } // TODO(b/332937635): Update metrics category new SubSettingLauncher(mContext) diff --git a/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java index 8d27d4cbf63..b7306fc8ee1 100644 --- a/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeCallsLinkPreferenceController.java @@ -16,7 +16,7 @@ package com.android.settings.notification.modes; -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -39,7 +39,7 @@ class ZenModeCallsLinkPreferenceController extends AbstractZenModePreferenceCont @Override public void updateState(Preference preference, @NonNull ZenMode zenMode) { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); // TODO(b/332937635): Update metrics category preference.setIntent(new SubSettingLauncher(mContext) .setDestination(ZenModeCallsFragment.class.getName()) diff --git a/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java index 712c78a2e50..351a7a7f558 100644 --- a/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeDisplayLinkPreferenceController.java @@ -16,7 +16,7 @@ package com.android.settings.notification.modes; -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -39,7 +39,7 @@ class ZenModeDisplayLinkPreferenceController extends AbstractZenModePreferenceCo @Override void updateState(Preference preference, @NonNull ZenMode zenMode) { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); // TODO(b/332937635): Update metrics category preference.setIntent(new SubSettingLauncher(mContext) .setDestination(ZenModeDisplayFragment.class.getName()) diff --git a/src/com/android/settings/notification/modes/ZenModeFragmentBase.java b/src/com/android/settings/notification/modes/ZenModeFragmentBase.java index 67cc13beb4a..9127182aa8f 100644 --- a/src/com/android/settings/notification/modes/ZenModeFragmentBase.java +++ b/src/com/android/settings/notification/modes/ZenModeFragmentBase.java @@ -16,6 +16,8 @@ package com.android.settings.notification.modes; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; + import android.app.AutomaticZenRule; import android.content.Context; import android.os.Bundle; @@ -37,7 +39,6 @@ import java.util.List; */ abstract class ZenModeFragmentBase extends ZenModesFragmentBase { static final String TAG = "ZenModeSettings"; - static final String MODE_ID = "MODE_ID"; @Nullable // only until reloadMode() is called private ZenMode mZenMode; @@ -46,17 +47,21 @@ abstract class ZenModeFragmentBase extends ZenModesFragmentBase { public void onAttach(@NonNull Context context) { super.onAttach(context); - // TODO: b/322373473 - Update if modes page ends up using a different method of passing id + String id = null; + if (getActivity() != null && getActivity().getIntent() != null) { + id = getActivity().getIntent().getStringExtra(EXTRA_AUTOMATIC_ZEN_RULE_ID); + } Bundle bundle = getArguments(); - if (bundle != null && bundle.containsKey(MODE_ID)) { - String id = bundle.getString(MODE_ID); - if (!reloadMode(id)) { - Log.e(TAG, "Mode id " + id + " not found"); - toastAndFinish(); - return; - } - } else { - Log.e(TAG, "Mode id required to set mode config settings"); + if (id == null && bundle != null && bundle.containsKey(EXTRA_AUTOMATIC_ZEN_RULE_ID)) { + id = bundle.getString(EXTRA_AUTOMATIC_ZEN_RULE_ID); + } + if (id == null) { + Log.d(TAG, "No id provided"); + toastAndFinish(); + return; + } + if (!reloadMode(id)) { + Log.d(TAG, "Mode id " + id + " not found"); toastAndFinish(); return; } diff --git a/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java index 6e563c42a64..c95c3560850 100644 --- a/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeMessagesLinkPreferenceController.java @@ -16,7 +16,7 @@ package com.android.settings.notification.modes; -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -38,7 +38,7 @@ class ZenModeMessagesLinkPreferenceController extends AbstractZenModePreferenceC @Override public void updateState(Preference preference, @NonNull ZenMode zenMode) { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); // TODO(b/332937635): Update metrics category preference.setIntent(new SubSettingLauncher(mContext) .setDestination(ZenModeMessagesFragment.class.getName()) diff --git a/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java index 1b1fec4e3f6..4cb68d1ca3e 100644 --- a/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeNotifVisLinkPreferenceController.java @@ -17,8 +17,7 @@ package com.android.settings.notification.modes; import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL; - -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -46,7 +45,7 @@ class ZenModeNotifVisLinkPreferenceController extends AbstractZenModePreferenceC @Override public void updateState(Preference preference, @NonNull ZenMode zenMode) { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); // TODO(b/332937635): Update metrics category preference.setIntent(new SubSettingLauncher(mContext) .setDestination(ZenModeNotifVisFragment.class.getName()) diff --git a/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java index f6df9e3e3d7..f90f1e64b32 100644 --- a/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeOtherLinkPreferenceController.java @@ -17,8 +17,7 @@ package com.android.settings.notification.modes; import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL; - -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -49,7 +48,7 @@ class ZenModeOtherLinkPreferenceController extends AbstractZenModePreferenceCont @Override public void updateState(Preference preference, @NonNull ZenMode zenMode) { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); preference.setIntent(new SubSettingLauncher(mContext) .setDestination(ZenModeOtherFragment.class.getName()) .setSourceMetricsCategory(0) diff --git a/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java index db8e135e5a2..98d5126e98f 100644 --- a/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModePeopleLinkPreferenceController.java @@ -17,8 +17,7 @@ package com.android.settings.notification.modes; import static android.app.NotificationManager.INTERRUPTION_FILTER_ALL; - -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; @@ -49,7 +48,7 @@ class ZenModePeopleLinkPreferenceController extends AbstractZenModePreferenceCon @Override public void updateState(Preference preference, @NonNull ZenMode zenMode) { Bundle bundle = new Bundle(); - bundle.putString(MODE_ID, zenMode.getId()); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId()); // TODO(b/332937635): Update metrics category preference.setIntent(new SubSettingLauncher(mContext) .setDestination(ZenModePeopleFragment.class.getName()) diff --git a/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java index fd27958db95..73cb058e2c6 100644 --- a/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeSetTriggerLinkPreferenceController.java @@ -63,7 +63,6 @@ class ZenModeSetTriggerLinkPreferenceController extends AbstractZenModePreferenc } switchPref.setChecked(zenMode.getRule().isEnabled()); switchPref.setOnPreferenceChangeListener(mSwitchChangeListener); - switchPref.setSummary(zenMode.getRule().getTriggerDescription()); switchPref.setIcon(null); switchPref.setOnPreferenceClickListener(null); diff --git a/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java b/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java index aa66e6c5186..529f7fa1cdd 100644 --- a/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java +++ b/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java @@ -16,6 +16,8 @@ package com.android.settings.notification.modes; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; + import android.app.settings.SettingsEnums; import android.content.Context; import android.os.Bundle; @@ -33,7 +35,7 @@ class ZenSubSettingLauncher { Class fragmentClass, String modeId, int sourceMetricsCategory) { Bundle bundle = new Bundle(); - bundle.putString(ZenModeFragmentBase.MODE_ID, modeId); + bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, modeId); return new SubSettingLauncher(context) .setDestination(fragmentClass.getName()) diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java index b199a2bf922..8278aa3b17e 100644 --- a/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java @@ -17,8 +17,7 @@ package com.android.settings.notification.modes; import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY; - -import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID; +import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import static com.google.common.truth.Truth.assertThat; @@ -138,7 +137,7 @@ public final class ZenModeAppsLinkPreferenceControllerTest { Bundle bundle = launcherIntent.getBundleExtra( SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS); assertThat(bundle).isNotNull(); - assertThat(bundle.getString(MODE_ID)).isEqualTo("id"); + assertThat(bundle.getString(EXTRA_AUTOMATIC_ZEN_RULE_ID)).isEqualTo("id"); } @Test