From 475632c4feda1bba831a2e343a4c7de6eec4cda5 Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Wed, 24 Aug 2022 12:22:12 +0000 Subject: [PATCH] Revert^3 "Improve App notification loading" 33710fd9e2893d2b7650f40006348319960a8318 Change-Id: Ifb45f949c28bff04f8abfe3e1a73628f2e407241 --- .../AppBubbleListPreferenceController.java | 14 +-- .../AddToHomeScreenPreferenceController.java | 10 +- .../app/AllowSoundPreferenceController.java | 13 +-- ...nnelsBypassingDndPreferenceController.java | 6 +- ...pConversationListPreferenceController.java | 22 ++--- .../app/AppLinkPreferenceController.java | 10 +- .../app/BadgePreferenceController.java | 22 ++--- .../app/BlockPreferenceController.java | 10 +- .../BubbleCategoryPreferenceController.java | 10 +- .../app/BubbleLinkPreferenceController.java | 10 +- .../app/BubblePreferenceController.java | 19 ++-- .../BubbleSummaryPreferenceController.java | 21 ++--- .../app/ChannelListPreferenceController.java | 47 +++++----- ...onversationDemotePreferenceController.java | 15 ++- ...onversationHeaderPreferenceController.java | 6 +- ...versationPriorityPreferenceController.java | 12 +-- ...nversationPromotePreferenceController.java | 15 ++- .../DeletedChannelsPreferenceController.java | 15 ++- .../app/DescriptionPreferenceController.java | 16 ++-- .../app/DndPreferenceController.java | 10 +- .../app/HeaderPreferenceController.java | 6 +- .../HighImportancePreferenceController.java | 16 ++-- .../app/ImportancePreferenceController.java | 12 +-- ...dConversationInfoPreferenceController.java | 14 ++- ...validConversationPreferenceController.java | 14 ++- .../app/LightsPreferenceController.java | 18 ++-- .../MinImportancePreferenceController.java | 14 +-- .../app/NotificationPreferenceController.java | 33 +++---- .../app/NotificationSettings.java | 94 ++++++++++--------- .../NotificationsOffPreferenceController.java | 14 +-- .../app/SoundPreferenceController.java | 15 ++- .../app/VibrationPreferenceController.java | 19 ++-- .../app/VisibilityPreferenceController.java | 16 ++-- .../NotificationPreferenceControllerTest.java | 2 +- 34 files changed, 272 insertions(+), 318 deletions(-) diff --git a/src/com/android/settings/notification/AppBubbleListPreferenceController.java b/src/com/android/settings/notification/AppBubbleListPreferenceController.java index 6ebb376b5c1..bf7fcc03756 100644 --- a/src/com/android/settings/notification/AppBubbleListPreferenceController.java +++ b/src/com/android/settings/notification/AppBubbleListPreferenceController.java @@ -51,7 +51,7 @@ public class AppBubbleListPreferenceController extends AppConversationListPrefer private static final String KEY = "bubble_conversations"; public AppBubbleListPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); } @Override @@ -80,25 +80,25 @@ public class AppBubbleListPreferenceController extends AppConversationListPrefer } @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { // copy rather than inherit super's isAvailable because apps can link to this page // as part of onboarding, before they send a valid conversation notification if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mAppRow.banned) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannel != null) { if (mBackend.onlyHasDefaultChannel(mAppRow.pkg, mAppRow.uid) || NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId())) { - return CONDITIONALLY_UNAVAILABLE; + return false; } } if (mAppRow.bubblePreference == BUBBLE_PREFERENCE_NONE) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return AVAILABLE; + return true; } @VisibleForTesting diff --git a/src/com/android/settings/notification/app/AddToHomeScreenPreferenceController.java b/src/com/android/settings/notification/app/AddToHomeScreenPreferenceController.java index 12b807534f9..e5afd9d3db0 100644 --- a/src/com/android/settings/notification/app/AddToHomeScreenPreferenceController.java +++ b/src/com/android/settings/notification/app/AddToHomeScreenPreferenceController.java @@ -32,7 +32,7 @@ public class AddToHomeScreenPreferenceController extends NotificationPreferenceC private static final String KEY = "add_to_home"; public AddToHomeScreenPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); } @Override @@ -41,11 +41,11 @@ public class AddToHomeScreenPreferenceController extends NotificationPreferenceC } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } - return mConversationInfo != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + return mConversationInfo != null; } @Override diff --git a/src/com/android/settings/notification/app/AllowSoundPreferenceController.java b/src/com/android/settings/notification/app/AllowSoundPreferenceController.java index 99d08734c96..0664c544bec 100644 --- a/src/com/android/settings/notification/app/AllowSoundPreferenceController.java +++ b/src/com/android/settings/notification/app/AllowSoundPreferenceController.java @@ -40,7 +40,7 @@ public class AllowSoundPreferenceController extends NotificationPreferenceContro public AllowSoundPreferenceController(Context context, NotificationSettings.DependentFieldListener dependentFieldListener, NotificationBackend backend) { - super(context, backend, KEY_IMPORTANCE); + super(context, backend); mDependentFieldListener = dependentFieldListener; } @@ -50,14 +50,11 @@ public class AllowSoundPreferenceController extends NotificationPreferenceContro } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } - if (mChannel != null && NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId())) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return mChannel != null && NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId()); } diff --git a/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java b/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java index 6c2c0c3cf77..92cd911843a 100644 --- a/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java +++ b/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java @@ -64,7 +64,7 @@ public class AppChannelsBypassingDndPreferenceController extends NotificationPre public AppChannelsBypassingDndPreferenceController( Context context, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); } @Override @@ -110,8 +110,8 @@ public class AppChannelsBypassingDndPreferenceController extends NotificationPre } @Override - public int getAvailabilityStatus() { - return mAppRow != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + return mAppRow != null; } @Override diff --git a/src/com/android/settings/notification/app/AppConversationListPreferenceController.java b/src/com/android/settings/notification/app/AppConversationListPreferenceController.java index e7b23788968..dd44a13f7c8 100644 --- a/src/com/android/settings/notification/app/AppConversationListPreferenceController.java +++ b/src/com/android/settings/notification/app/AppConversationListPreferenceController.java @@ -49,12 +49,7 @@ public class AppConversationListPreferenceController extends NotificationPrefere protected PreferenceCategory mPreference; public AppConversationListPreferenceController(Context context, NotificationBackend backend) { - this(context, backend, KEY); - } - - public AppConversationListPreferenceController(Context context, NotificationBackend backend, - String key) { - super(context, backend, key); + super(context, backend); } @Override @@ -63,24 +58,21 @@ public class AppConversationListPreferenceController extends NotificationPrefere } @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mAppRow.banned) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannel != null) { if (mBackend.onlyHasDefaultChannel(mAppRow.pkg, mAppRow.uid) || NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId())) { - return CONDITIONALLY_UNAVAILABLE; + return false; } } - if (mBackend.hasSentValidMsg(mAppRow.pkg, mAppRow.uid) || mBackend.isInInvalidMsgState( - mAppRow.pkg, mAppRow.uid)) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return mBackend.hasSentValidMsg(mAppRow.pkg, mAppRow.uid) || mBackend.isInInvalidMsgState( + mAppRow.pkg, mAppRow.uid); } @Override diff --git a/src/com/android/settings/notification/app/AppLinkPreferenceController.java b/src/com/android/settings/notification/app/AppLinkPreferenceController.java index ecf9670cba9..043ae698f54 100644 --- a/src/com/android/settings/notification/app/AppLinkPreferenceController.java +++ b/src/com/android/settings/notification/app/AppLinkPreferenceController.java @@ -32,7 +32,7 @@ public class AppLinkPreferenceController extends NotificationPreferenceControlle private static final String KEY_APP_LINK = "app_link"; public AppLinkPreferenceController(Context context) { - super(context, null, KEY_APP_LINK); + super(context, null); } @Override @@ -41,11 +41,11 @@ public class AppLinkPreferenceController extends NotificationPreferenceControlle } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } - return mAppRow.settingsIntent != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + return mAppRow.settingsIntent != null; } @Override diff --git a/src/com/android/settings/notification/app/BadgePreferenceController.java b/src/com/android/settings/notification/app/BadgePreferenceController.java index f94dfb513ae..108fa1d7a07 100644 --- a/src/com/android/settings/notification/app/BadgePreferenceController.java +++ b/src/com/android/settings/notification/app/BadgePreferenceController.java @@ -38,7 +38,7 @@ public class BadgePreferenceController extends NotificationPreferenceController public BadgePreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY_BADGE); + super(context, backend); } @Override @@ -47,29 +47,25 @@ public class BadgePreferenceController extends NotificationPreferenceController } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mAppRow == null && mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (Settings.Secure.getInt(mContext.getContentResolver(), NOTIFICATION_BADGING, SYSTEM_WIDE_ON) == SYSTEM_WIDE_OFF) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannel != null) { if (isDefaultChannel()) { - return AVAILABLE; + return true; } else { - return mAppRow == null - ? CONDITIONALLY_UNAVAILABLE - : mAppRow.showBadge - ? AVAILABLE - : CONDITIONALLY_UNAVAILABLE; + return mAppRow == null ? false : mAppRow.showBadge; } } - return AVAILABLE; + return true; } @Override diff --git a/src/com/android/settings/notification/app/BlockPreferenceController.java b/src/com/android/settings/notification/app/BlockPreferenceController.java index ea3eaeb3353..f4e213298a7 100644 --- a/src/com/android/settings/notification/app/BlockPreferenceController.java +++ b/src/com/android/settings/notification/app/BlockPreferenceController.java @@ -42,7 +42,7 @@ public class BlockPreferenceController extends NotificationPreferenceController public BlockPreferenceController(Context context, NotificationSettings.DependentFieldListener dependentFieldListener, NotificationBackend backend) { - super(context, backend, KEY_BLOCK); + super(context, backend); mDependentFieldListener = dependentFieldListener; } @@ -52,14 +52,14 @@ public class BlockPreferenceController extends NotificationPreferenceController } @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mPreferenceFilter != null && !isIncludedInFilter()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return AVAILABLE; + return true; } @Override diff --git a/src/com/android/settings/notification/app/BubbleCategoryPreferenceController.java b/src/com/android/settings/notification/app/BubbleCategoryPreferenceController.java index da67afeeb33..ad3a10cf381 100644 --- a/src/com/android/settings/notification/app/BubbleCategoryPreferenceController.java +++ b/src/com/android/settings/notification/app/BubbleCategoryPreferenceController.java @@ -32,15 +32,15 @@ public class BubbleCategoryPreferenceController extends NotificationPreferenceCo static final int ON = 1; public BubbleCategoryPreferenceController(Context context) { - super(context, null, KEY); + super(context, null); } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } - return areBubblesEnabled() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + return areBubblesEnabled(); } @Override diff --git a/src/com/android/settings/notification/app/BubbleLinkPreferenceController.java b/src/com/android/settings/notification/app/BubbleLinkPreferenceController.java index ed1c9b53079..0b9529b10b5 100644 --- a/src/com/android/settings/notification/app/BubbleLinkPreferenceController.java +++ b/src/com/android/settings/notification/app/BubbleLinkPreferenceController.java @@ -32,15 +32,15 @@ public class BubbleLinkPreferenceController extends NotificationPreferenceContro static final int ON = 1; public BubbleLinkPreferenceController(Context context) { - super(context, null, KEY); + super(context, null); } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } - return areBubblesEnabled() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + return areBubblesEnabled(); } @Override diff --git a/src/com/android/settings/notification/app/BubblePreferenceController.java b/src/com/android/settings/notification/app/BubblePreferenceController.java index 516a45e482d..351b4635bb6 100644 --- a/src/com/android/settings/notification/app/BubblePreferenceController.java +++ b/src/com/android/settings/notification/app/BubblePreferenceController.java @@ -56,7 +56,7 @@ public class BubblePreferenceController extends NotificationPreferenceController public BubblePreferenceController(Context context, @Nullable FragmentManager fragmentManager, NotificationBackend backend, boolean isAppPage, @Nullable NotificationSettings.DependentFieldListener listener) { - super(context, backend, KEY); + super(context, backend); mFragmentManager = fragmentManager; mIsAppPage = isAppPage; mListener = listener; @@ -68,24 +68,21 @@ public class BubblePreferenceController extends NotificationPreferenceController } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (!mIsAppPage && !isEnabled()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannel != null) { if (isDefaultChannel()) { - return AVAILABLE; + return true; } else { - if (mAppRow != null && mAppRow.bubblePreference != BUBBLE_PREFERENCE_NONE) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return mAppRow != null && mAppRow.bubblePreference != BUBBLE_PREFERENCE_NONE; } } - return AVAILABLE; + return true; } @Override diff --git a/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java b/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java index abbe89e6fa8..51370b16bef 100644 --- a/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java +++ b/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java @@ -42,31 +42,28 @@ public class BubbleSummaryPreferenceController extends NotificationPreferenceCon static final int ON = 1; public BubbleSummaryPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannel != null) { if (!isGloballyEnabled()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (isDefaultChannel()) { - return AVAILABLE; + return true; } else { - return mAppRow != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + return mAppRow != null; } } - if (isGloballyEnabled() && mBackend.hasSentValidBubble(mAppRow.pkg, mAppRow.uid)) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return isGloballyEnabled() && mBackend.hasSentValidBubble(mAppRow.pkg, mAppRow.uid); } @Override diff --git a/src/com/android/settings/notification/app/ChannelListPreferenceController.java b/src/com/android/settings/notification/app/ChannelListPreferenceController.java index 8d079114a9e..8db3b21f4be 100644 --- a/src/com/android/settings/notification/app/ChannelListPreferenceController.java +++ b/src/com/android/settings/notification/app/ChannelListPreferenceController.java @@ -28,7 +28,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; -import android.util.Slog; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -40,19 +39,16 @@ import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.applications.AppInfoBase; -import com.android.settings.core.BasePreferenceController; import com.android.settings.core.SubSettingLauncher; import com.android.settings.notification.NotificationBackend; import com.android.settingslib.PrimarySwitchPreference; import com.android.settingslib.RestrictedSwitchPreference; -import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class ChannelListPreferenceController extends NotificationPreferenceController - implements BasePreferenceController.UiBlocker { +public class ChannelListPreferenceController extends NotificationPreferenceController { private static final String KEY = "channels"; private static final String KEY_GENERAL_CATEGORY = "categories"; @@ -63,7 +59,7 @@ public class ChannelListPreferenceController extends NotificationPreferenceContr private PreferenceCategory mPreference; public ChannelListPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); } @Override @@ -72,20 +68,20 @@ public class ChannelListPreferenceController extends NotificationPreferenceContr } @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mAppRow.banned) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannel != null) { if (mBackend.onlyHasDefaultChannel(mAppRow.pkg, mAppRow.uid) || NotificationChannel.DEFAULT_CHANNEL_ID.equals(mChannel.getId())) { - return CONDITIONALLY_UNAVAILABLE; + return false; } } - return AVAILABLE; + return true; } @Override @@ -95,17 +91,24 @@ public class ChannelListPreferenceController extends NotificationPreferenceContr @Override public void updateState(Preference preference) { - mPreference = (PreferenceCategory) preference; - // Load channel settings - ThreadUtils.postOnBackgroundThread(() -> { + mPreference = (PreferenceCategory) preference; + // Load channel settings + new AsyncTask() { + @Override + protected Void doInBackground(Void... unused) { mChannelGroupList = mBackend.getGroups(mAppRow.pkg, mAppRow.uid).getList(); Collections.sort(mChannelGroupList, CHANNEL_GROUP_COMPARATOR); - ThreadUtils.getUiThreadHandler().getLooper().prepare(); + return null; + } + + @Override + protected void onPostExecute(Void unused) { + if (mContext == null) { + return; + } updateFullList(mPreference, mChannelGroupList); - ThreadUtils.postOnMainThread(() -> { - showPreferences(); - }); - }); + } + }.execute(); } /** @@ -141,12 +144,6 @@ public class ChannelListPreferenceController extends NotificationPreferenceContr } } - private void showPreferences() { - if (mUiBlockListener != null) { - mUiBlockListener.onBlockerWorkFinished(this); - } - } - /** * Looks for the category for the given group's key at the expected index, if that doesn't * match, it checks all groups, and if it can't find that group anywhere, it creates it. diff --git a/src/com/android/settings/notification/app/ConversationDemotePreferenceController.java b/src/com/android/settings/notification/app/ConversationDemotePreferenceController.java index ba7ca358b8b..02f639c3157 100644 --- a/src/com/android/settings/notification/app/ConversationDemotePreferenceController.java +++ b/src/com/android/settings/notification/app/ConversationDemotePreferenceController.java @@ -37,7 +37,7 @@ public class ConversationDemotePreferenceController extends NotificationPreferen public ConversationDemotePreferenceController(Context context, SettingsPreferenceFragment hostFragment, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); mHostFragment = hostFragment; } @@ -47,17 +47,14 @@ public class ConversationDemotePreferenceController extends NotificationPreferen } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mAppRow == null || mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - if (!TextUtils.isEmpty(mChannel.getConversationId()) && !mChannel.isDemoted()) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return !TextUtils.isEmpty(mChannel.getConversationId()) && !mChannel.isDemoted(); } @Override diff --git a/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java b/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java index 56de88b324a..f99a56aabda 100644 --- a/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java +++ b/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java @@ -45,7 +45,7 @@ public class ConversationHeaderPreferenceController extends NotificationPreferen private boolean mStarted = false; public ConversationHeaderPreferenceController(Context context, DashboardFragment fragment) { - super(context, null, PREF_KEY_APP_HEADER); + super(context, null); mFragment = fragment; } @@ -55,8 +55,8 @@ public class ConversationHeaderPreferenceController extends NotificationPreferen } @Override - public int getAvailabilityStatus() { - return mAppRow != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + return mAppRow != null; } @Override diff --git a/src/com/android/settings/notification/app/ConversationPriorityPreferenceController.java b/src/com/android/settings/notification/app/ConversationPriorityPreferenceController.java index 46bc3c0c840..ae169282484 100644 --- a/src/com/android/settings/notification/app/ConversationPriorityPreferenceController.java +++ b/src/com/android/settings/notification/app/ConversationPriorityPreferenceController.java @@ -34,7 +34,7 @@ public class ConversationPriorityPreferenceController extends NotificationPrefer public ConversationPriorityPreferenceController(Context context, NotificationBackend backend, NotificationSettings.DependentFieldListener listener) { - super(context, backend, KEY); + super(context, backend); mDependentFieldListener = listener; } @@ -44,14 +44,14 @@ public class ConversationPriorityPreferenceController extends NotificationPrefer } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mAppRow == null || mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return AVAILABLE; + return true; } @Override diff --git a/src/com/android/settings/notification/app/ConversationPromotePreferenceController.java b/src/com/android/settings/notification/app/ConversationPromotePreferenceController.java index a5ef569d620..24c3d2ff6a1 100644 --- a/src/com/android/settings/notification/app/ConversationPromotePreferenceController.java +++ b/src/com/android/settings/notification/app/ConversationPromotePreferenceController.java @@ -37,7 +37,7 @@ public class ConversationPromotePreferenceController extends NotificationPrefere public ConversationPromotePreferenceController(Context context, SettingsPreferenceFragment hostFragment, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); mHostFragment = hostFragment; } @@ -47,17 +47,14 @@ public class ConversationPromotePreferenceController extends NotificationPrefere } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mAppRow == null || mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - if (!TextUtils.isEmpty(mChannel.getConversationId()) && mChannel.isDemoted()) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return !TextUtils.isEmpty(mChannel.getConversationId()) && mChannel.isDemoted(); } @Override diff --git a/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java b/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java index cd160df1fd4..77a692f1488 100644 --- a/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java +++ b/src/com/android/settings/notification/app/DeletedChannelsPreferenceController.java @@ -30,7 +30,7 @@ public class DeletedChannelsPreferenceController extends NotificationPreferenceC private static final String KEY_DELETED = "deleted"; public DeletedChannelsPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY_DELETED); + super(context, backend); } @Override @@ -39,19 +39,16 @@ public class DeletedChannelsPreferenceController extends NotificationPreferenceC } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } // only visible on app screen if (mChannel != null || hasValidGroup()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - if (mBackend.getDeletedChannelCount(mAppRow.pkg, mAppRow.uid) > 0) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return mBackend.getDeletedChannelCount(mAppRow.pkg, mAppRow.uid) > 0; } @Override diff --git a/src/com/android/settings/notification/app/DescriptionPreferenceController.java b/src/com/android/settings/notification/app/DescriptionPreferenceController.java index 413a876cec9..0a5bb2f9260 100644 --- a/src/com/android/settings/notification/app/DescriptionPreferenceController.java +++ b/src/com/android/settings/notification/app/DescriptionPreferenceController.java @@ -29,7 +29,7 @@ public class DescriptionPreferenceController extends NotificationPreferenceContr private static final String KEY_DESC = "desc"; public DescriptionPreferenceController(Context context) { - super(context, null, KEY_DESC); + super(context, null); } @Override @@ -38,20 +38,20 @@ public class DescriptionPreferenceController extends NotificationPreferenceContr } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mChannel == null && !hasValidGroup()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannel != null && !TextUtils.isEmpty(mChannel.getDescription())) { - return AVAILABLE; + return true; } if (hasValidGroup() && !TextUtils.isEmpty(mChannelGroup.getDescription())) { - return AVAILABLE; + return true; } - return CONDITIONALLY_UNAVAILABLE; + return false; } @Override diff --git a/src/com/android/settings/notification/app/DndPreferenceController.java b/src/com/android/settings/notification/app/DndPreferenceController.java index 811eeb4ec79..b65928aa915 100644 --- a/src/com/android/settings/notification/app/DndPreferenceController.java +++ b/src/com/android/settings/notification/app/DndPreferenceController.java @@ -31,7 +31,7 @@ public class DndPreferenceController extends NotificationPreferenceController private static final String KEY_BYPASS_DND = "bypass_dnd"; public DndPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY_BYPASS_DND); + super(context, backend); } @Override @@ -40,11 +40,11 @@ public class DndPreferenceController extends NotificationPreferenceController } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE || mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable() || mChannel == null) { + return false; } - return AVAILABLE; + return true; } @Override diff --git a/src/com/android/settings/notification/app/HeaderPreferenceController.java b/src/com/android/settings/notification/app/HeaderPreferenceController.java index c4b0e598dff..7379d55395b 100644 --- a/src/com/android/settings/notification/app/HeaderPreferenceController.java +++ b/src/com/android/settings/notification/app/HeaderPreferenceController.java @@ -45,7 +45,7 @@ public class HeaderPreferenceController extends NotificationPreferenceController private boolean mStarted = false; public HeaderPreferenceController(Context context, DashboardFragment fragment) { - super(context, null, PREF_KEY_APP_HEADER); + super(context, null); mFragment = fragment; } @@ -55,8 +55,8 @@ public class HeaderPreferenceController extends NotificationPreferenceController } @Override - public int getAvailabilityStatus() { - return mAppRow != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + return mAppRow != null; } @Override diff --git a/src/com/android/settings/notification/app/HighImportancePreferenceController.java b/src/com/android/settings/notification/app/HighImportancePreferenceController.java index 98dc8a760e2..d60668b9abe 100644 --- a/src/com/android/settings/notification/app/HighImportancePreferenceController.java +++ b/src/com/android/settings/notification/app/HighImportancePreferenceController.java @@ -37,7 +37,7 @@ public class HighImportancePreferenceController extends NotificationPreferenceCo public HighImportancePreferenceController(Context context, NotificationSettings.DependentFieldListener dependentFieldListener, NotificationBackend backend) { - super(context, backend, KEY_IMPORTANCE); + super(context, backend); mDependentFieldListener = dependentFieldListener; } @@ -47,19 +47,17 @@ public class HighImportancePreferenceController extends NotificationPreferenceCo } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (isDefaultChannel()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return mChannel.getImportance() >= IMPORTANCE_DEFAULT - ? AVAILABLE - : CONDITIONALLY_UNAVAILABLE; + return mChannel.getImportance() >= IMPORTANCE_DEFAULT; } @Override diff --git a/src/com/android/settings/notification/app/ImportancePreferenceController.java b/src/com/android/settings/notification/app/ImportancePreferenceController.java index 31ddac39373..3c32ca4b0bc 100644 --- a/src/com/android/settings/notification/app/ImportancePreferenceController.java +++ b/src/com/android/settings/notification/app/ImportancePreferenceController.java @@ -38,7 +38,7 @@ public class ImportancePreferenceController extends NotificationPreferenceContro public ImportancePreferenceController(Context context, NotificationSettings.DependentFieldListener dependentFieldListener, NotificationBackend backend) { - super(context, backend, KEY_IMPORTANCE); + super(context, backend); mDependentFieldListener = dependentFieldListener; } @@ -48,14 +48,14 @@ public class ImportancePreferenceController extends NotificationPreferenceContro } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return !isDefaultChannel() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + return !isDefaultChannel(); } @Override diff --git a/src/com/android/settings/notification/app/InvalidConversationInfoPreferenceController.java b/src/com/android/settings/notification/app/InvalidConversationInfoPreferenceController.java index bb2c58b728b..b937e80e0d6 100644 --- a/src/com/android/settings/notification/app/InvalidConversationInfoPreferenceController.java +++ b/src/com/android/settings/notification/app/InvalidConversationInfoPreferenceController.java @@ -31,7 +31,7 @@ public class InvalidConversationInfoPreferenceController extends NotificationPre public InvalidConversationInfoPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); } @Override @@ -40,19 +40,17 @@ public class InvalidConversationInfoPreferenceController extends NotificationPre } @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mAppRow.banned) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mPreferenceFilter != null && !isIncludedInFilter()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return mBackend.isInInvalidMsgState(mAppRow.pkg, mAppRow.uid) - ? AVAILABLE - : CONDITIONALLY_UNAVAILABLE; + return mBackend.isInInvalidMsgState(mAppRow.pkg, mAppRow.uid); } @Override diff --git a/src/com/android/settings/notification/app/InvalidConversationPreferenceController.java b/src/com/android/settings/notification/app/InvalidConversationPreferenceController.java index 219ccbcea85..5c502dccbe0 100644 --- a/src/com/android/settings/notification/app/InvalidConversationPreferenceController.java +++ b/src/com/android/settings/notification/app/InvalidConversationPreferenceController.java @@ -31,7 +31,7 @@ public class InvalidConversationPreferenceController extends NotificationPrefere private static final String KEY = "invalid_conversation_switch"; public InvalidConversationPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY); + super(context, backend); } @Override @@ -40,19 +40,17 @@ public class InvalidConversationPreferenceController extends NotificationPrefere } @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mAppRow.banned) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mPreferenceFilter != null && !isIncludedInFilter()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return mBackend.isInInvalidMsgState(mAppRow.pkg, mAppRow.uid) - ? AVAILABLE - : CONDITIONALLY_UNAVAILABLE; + return mBackend.isInInvalidMsgState(mAppRow.pkg, mAppRow.uid); } @Override diff --git a/src/com/android/settings/notification/app/LightsPreferenceController.java b/src/com/android/settings/notification/app/LightsPreferenceController.java index f7f92442c9b..d096922e348 100644 --- a/src/com/android/settings/notification/app/LightsPreferenceController.java +++ b/src/com/android/settings/notification/app/LightsPreferenceController.java @@ -33,7 +33,7 @@ public class LightsPreferenceController extends NotificationPreferenceController private static final String KEY_LIGHTS = "lights"; public LightsPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY_LIGHTS); + super(context, backend); } @Override @@ -42,18 +42,16 @@ public class LightsPreferenceController extends NotificationPreferenceController } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - if (checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) && canPulseLight() - && !isDefaultChannel()) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) + && canPulseLight() + && !isDefaultChannel(); } @Override diff --git a/src/com/android/settings/notification/app/MinImportancePreferenceController.java b/src/com/android/settings/notification/app/MinImportancePreferenceController.java index b2c0862b8f8..f8257636615 100644 --- a/src/com/android/settings/notification/app/MinImportancePreferenceController.java +++ b/src/com/android/settings/notification/app/MinImportancePreferenceController.java @@ -37,7 +37,7 @@ public class MinImportancePreferenceController extends NotificationPreferenceCon public MinImportancePreferenceController(Context context, NotificationSettings.DependentFieldListener dependentFieldListener, NotificationBackend backend) { - super(context, backend, KEY_IMPORTANCE); + super(context, backend); mDependentFieldListener = dependentFieldListener; } @@ -47,17 +47,17 @@ public class MinImportancePreferenceController extends NotificationPreferenceCon } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (isDefaultChannel()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - return mChannel.getImportance() <= IMPORTANCE_LOW ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + return mChannel.getImportance() <= IMPORTANCE_LOW; } @Override diff --git a/src/com/android/settings/notification/app/NotificationPreferenceController.java b/src/com/android/settings/notification/app/NotificationPreferenceController.java index 271a83d76f8..fb19d9d6b4c 100644 --- a/src/com/android/settings/notification/app/NotificationPreferenceController.java +++ b/src/com/android/settings/notification/app/NotificationPreferenceController.java @@ -17,24 +17,26 @@ package com.android.settings.notification.app; import static android.app.NotificationManager.IMPORTANCE_NONE; +import static android.os.UserHandle.USER_SYSTEM; import android.annotation.Nullable; import android.app.NotificationChannel; import android.app.NotificationChannelGroup; import android.app.NotificationManager; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ShortcutInfo; import android.graphics.drawable.Drawable; import android.os.UserManager; +import android.provider.Settings; import android.util.Log; -import android.util.Slog; import androidx.preference.Preference; -import com.android.settings.core.BasePreferenceController; import com.android.settings.notification.NotificationBackend; import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.core.AbstractPreferenceController; import java.util.Comparator; import java.util.List; @@ -44,7 +46,7 @@ import java.util.Objects; * Parent class for preferences appearing on notification setting pages at the app, * notification channel group, or notification channel level. */ -public abstract class NotificationPreferenceController extends BasePreferenceController { +public abstract class NotificationPreferenceController extends AbstractPreferenceController { private static final String TAG = "ChannelPrefContr"; @Nullable protected NotificationChannel mChannel; @@ -69,11 +71,8 @@ public abstract class NotificationPreferenceController extends BasePreferenceCon boolean overrideCanBlockValue; boolean overrideCanConfigureValue; - boolean mLoadedChannelState; - - public NotificationPreferenceController(Context context, NotificationBackend backend, - String key) { - super(context, key); + public NotificationPreferenceController(Context context, NotificationBackend backend) { + super(context); mContext = context; mNm = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); mBackend = backend; @@ -82,30 +81,28 @@ public abstract class NotificationPreferenceController extends BasePreferenceCon } /** - * Returns available if field's parent object is not blocked. + * Returns true if field's parent object is not blocked. */ @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mAppRow.banned) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mChannelGroup != null) { if (mChannelGroup.isBlocked()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } } if (mChannel != null) { if (mPreferenceFilter != null && !isIncludedInFilter()) { - return CONDITIONALLY_UNAVAILABLE; - } - if(mChannel.getImportance() == IMPORTANCE_NONE) { - return CONDITIONALLY_UNAVAILABLE; + return false; } + return mChannel.getImportance() != IMPORTANCE_NONE; } - return AVAILABLE; + return true; } protected void onResume(NotificationBackend.AppRow appRow, diff --git a/src/com/android/settings/notification/app/NotificationSettings.java b/src/com/android/settings/notification/app/NotificationSettings.java index 5750167c271..192a0ee9fc7 100644 --- a/src/com/android/settings/notification/app/NotificationSettings.java +++ b/src/com/android/settings/notification/app/NotificationSettings.java @@ -41,7 +41,6 @@ import android.os.UserHandle; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; -import android.util.Slog; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -130,52 +129,15 @@ abstract public class NotificationSettings extends DashboardFragment { } } - mUserId = UserHandle.getUserId(mUid); mPkgInfo = findPackageInfo(mPkg, mUid); - } - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (mIntent == null && mArgs == null) { - toastAndFinish("no intent"); - return; - } - - if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) { - toastAndFinish("Missing package or uid or packageinfo"); - return; - } - - startListeningToPackageRemove(); - } - - @Override - public void onDestroy() { - stopListeningToPackageRemove(); - super.onDestroy(); - } - - @Override - public void onResume() { - super.onResume(); - if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) { - toastAndFinish("Missing package or uid or packageinfo"); - return; - } - mPkgInfo = findPackageInfo(mPkg, mUid); if (mPkgInfo != null) { + mUserId = UserHandle.getUserId(mUid); mSuspendedAppsAdmin = RestrictedLockUtilsInternal.checkIfApplicationIsSuspended( mContext, mPkg, mUserId); - loadAppRow(); - if (mAppRow == null) { - toastAndFinish("Can't load package"); - return; - } loadChannel(); - loadConversation(); + loadAppRow(); loadChannelGroup(); loadPreferencesFilter(); collectConfigActivities(); @@ -195,6 +157,55 @@ abstract public class NotificationSettings extends DashboardFragment { } } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (mIntent == null && mArgs == null) { + Log.w(TAG, "No intent"); + toastAndFinish(); + return; + } + + if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null) { + Log.w(TAG, "Missing package or uid or packageinfo"); + toastAndFinish(); + return; + } + + startListeningToPackageRemove(); + } + + @Override + public void onDestroy() { + stopListeningToPackageRemove(); + super.onDestroy(); + } + + @Override + public void onResume() { + super.onResume(); + if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mAppRow == null) { + Log.w(TAG, "Missing package or uid or packageinfo"); + finish(); + return; + } + // Reload app, channel, etc onResume in case they've changed. A little wasteful if we've + // just done onAttach but better than making every preference controller reload all + // the data + loadAppRow(); + if (mAppRow == null) { + Log.w(TAG, "Can't load package"); + finish(); + return; + } + loadChannel(); + loadConversation(); + loadChannelGroup(); + loadPreferencesFilter(); + collectConfigActivities(); + } + protected void animatePanel() { if (mPreferenceFilter != null) { mLayoutView = getActivity().findViewById(R.id.main_content); @@ -296,8 +307,7 @@ abstract public class NotificationSettings extends DashboardFragment { } } - protected void toastAndFinish(String msg) { - Log.w(TAG, msg); + protected void toastAndFinish() { Toast.makeText(mContext, R.string.app_not_found_dlg_text, Toast.LENGTH_SHORT).show(); getActivity().finish(); } diff --git a/src/com/android/settings/notification/app/NotificationsOffPreferenceController.java b/src/com/android/settings/notification/app/NotificationsOffPreferenceController.java index 46625c3101a..0c7cd2361e2 100644 --- a/src/com/android/settings/notification/app/NotificationsOffPreferenceController.java +++ b/src/com/android/settings/notification/app/NotificationsOffPreferenceController.java @@ -30,7 +30,7 @@ public class NotificationsOffPreferenceController extends NotificationPreference private static final String KEY_BLOCKED_DESC = "block_desc"; public NotificationsOffPreferenceController(Context context) { - super(context, null, KEY_BLOCKED_DESC); + super(context, null); } @Override @@ -39,20 +39,16 @@ public class NotificationsOffPreferenceController extends NotificationPreference } @Override - public int getAvailabilityStatus() { + public boolean isAvailable() { if (mAppRow == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } if (mPreferenceFilter != null && !isIncludedInFilter()) { - return CONDITIONALLY_UNAVAILABLE; + return false; } // Available only when other controllers are unavailable - this UI replaces the UI that // would give more detailed notification controls. - if (super.getAvailabilityStatus() == AVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; - } else { - return AVAILABLE; - } + return !super.isAvailable(); } @Override diff --git a/src/com/android/settings/notification/app/SoundPreferenceController.java b/src/com/android/settings/notification/app/SoundPreferenceController.java index 335b44226ce..b23b4fc86cb 100644 --- a/src/com/android/settings/notification/app/SoundPreferenceController.java +++ b/src/com/android/settings/notification/app/SoundPreferenceController.java @@ -47,7 +47,7 @@ public class SoundPreferenceController extends NotificationPreferenceController public SoundPreferenceController(Context context, SettingsPreferenceFragment hostFragment, NotificationSettings.DependentFieldListener dependentFieldListener, NotificationBackend backend) { - super(context, backend, KEY_SOUND); + super(context, backend); mFragment = hostFragment; mListener = dependentFieldListener; } @@ -58,17 +58,14 @@ public class SoundPreferenceController extends NotificationPreferenceController } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - if (checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) && !isDefaultChannel()) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + return checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) && !isDefaultChannel(); } @Override diff --git a/src/com/android/settings/notification/app/VibrationPreferenceController.java b/src/com/android/settings/notification/app/VibrationPreferenceController.java index f91999f074d..34d1a543b56 100644 --- a/src/com/android/settings/notification/app/VibrationPreferenceController.java +++ b/src/com/android/settings/notification/app/VibrationPreferenceController.java @@ -34,7 +34,7 @@ public class VibrationPreferenceController extends NotificationPreferenceControl private final Vibrator mVibrator; public VibrationPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, KEY_VIBRATE); + super(context, backend); mVibrator = context.getSystemService(Vibrator.class); } @@ -44,15 +44,14 @@ public class VibrationPreferenceController extends NotificationPreferenceControl } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE || mChannel == null) { - return CONDITIONALLY_UNAVAILABLE; - } - if (checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) && !isDefaultChannel() - && mVibrator != null && mVibrator.hasVibrator()) { - return AVAILABLE; - } - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable() || mChannel == null) { + return false; + } + return checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) + && !isDefaultChannel() + && mVibrator != null + && mVibrator.hasVibrator(); } @Override diff --git a/src/com/android/settings/notification/app/VisibilityPreferenceController.java b/src/com/android/settings/notification/app/VisibilityPreferenceController.java index 3f33267a749..a2a1d76b71c 100644 --- a/src/com/android/settings/notification/app/VisibilityPreferenceController.java +++ b/src/com/android/settings/notification/app/VisibilityPreferenceController.java @@ -48,7 +48,7 @@ public class VisibilityPreferenceController extends NotificationPreferenceContro public VisibilityPreferenceController(Context context, LockPatternUtils utils, NotificationBackend backend) { - super(context, backend, KEY_VISIBILITY_OVERRIDE); + super(context, backend); mLockPatternUtils = utils; } @@ -58,18 +58,14 @@ public class VisibilityPreferenceController extends NotificationPreferenceContro } @Override - public int getAvailabilityStatus() { - if (super.getAvailabilityStatus() == CONDITIONALLY_UNAVAILABLE) { - return CONDITIONALLY_UNAVAILABLE; + public boolean isAvailable() { + if (!super.isAvailable()) { + return false; } if (mChannel == null || mAppRow.banned) { - return CONDITIONALLY_UNAVAILABLE; + return false; } - if (checkCanBeVisible(NotificationManager.IMPORTANCE_LOW) && isLockScreenSecure()) { - return AVAILABLE; - } - - return CONDITIONALLY_UNAVAILABLE; + return checkCanBeVisible(NotificationManager.IMPORTANCE_LOW) && isLockScreenSecure(); } @Override diff --git a/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java index bf529e67568..b2f1673f317 100644 --- a/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/app/NotificationPreferenceControllerTest.java @@ -426,7 +426,7 @@ public class NotificationPreferenceControllerTest { private final class TestPreferenceController extends NotificationPreferenceController { private TestPreferenceController(Context context, NotificationBackend backend) { - super(context, backend, "key"); + super(context, backend); } @Override