From f3290eafcedf57a04b0dda1dd28db94206b34054 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 18 Apr 2018 12:17:33 -0400 Subject: [PATCH] Expand channel settings if coming from app Test: manual inspection Change-Id: I2ed7f5cc2355f27e0edf36a0d8ee23e418eafd99 Fixes: 77648459 --- .../settings/notification/AppNotificationSettings.java | 2 +- .../notification/ChannelNotificationSettings.java | 18 +++++++++++++++++- .../settings/notification/DndPreferenceController.java | 9 ++------- .../notification/NotificationSettingsBase.java | 2 ++ .../notification/DndPreferenceControllerTest.java | 4 +--- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java index c028298e0b..6776931999 100644 --- a/src/com/android/settings/notification/AppNotificationSettings.java +++ b/src/com/android/settings/notification/AppNotificationSettings.java @@ -125,7 +125,7 @@ public class AppNotificationSettings extends NotificationSettingsBase { mControllers.add(new VibrationPreferenceController(context, mBackend)); mControllers.add(new VisibilityPreferenceController(context, new LockPatternUtils(context), mBackend)); - mControllers.add(new DndPreferenceController(context, getLifecycle(), mBackend)); + mControllers.add(new DndPreferenceController(context, mBackend)); mControllers.add(new AppLinkPreferenceController(context)); mControllers.add(new DescriptionPreferenceController(context)); mControllers.add(new NotificationsOffPreferenceController(context)); diff --git a/src/com/android/settings/notification/ChannelNotificationSettings.java b/src/com/android/settings/notification/ChannelNotificationSettings.java index a13842956d..bd9771a378 100644 --- a/src/com/android/settings/notification/ChannelNotificationSettings.java +++ b/src/com/android/settings/notification/ChannelNotificationSettings.java @@ -18,13 +18,16 @@ package com.android.settings.notification; import android.content.Context; import android.content.Intent; +import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import android.util.Log; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; +import com.android.settings.applications.AppInfoBase; import com.android.settingslib.core.AbstractPreferenceController; import java.util.ArrayList; @@ -39,6 +42,19 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { } @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final PreferenceScreen screen = getPreferenceScreen(); + Bundle args = getArguments(); + // If linking to this screen from an external app, expand settings + if (screen != null && args != null) { + if (!args.getBoolean(ARG_FROM_SETTINGS, false)) { + screen.setInitialExpandedChildrenCount(Integer.MAX_VALUE); + } + } + } + + @Override public void onResume() { super.onResume(); if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null) { @@ -92,7 +108,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mBackend)); mControllers.add(new LightsPreferenceController(context, mBackend)); mControllers.add(new BadgePreferenceController(context, mBackend)); - mControllers.add(new DndPreferenceController(context, getLifecycle(), mBackend)); + mControllers.add(new DndPreferenceController(context, mBackend)); mControllers.add(new NotificationsOffPreferenceController(context)); return new ArrayList<>(mControllers); } diff --git a/src/com/android/settings/notification/DndPreferenceController.java b/src/com/android/settings/notification/DndPreferenceController.java index d4c7a101d2..899c585167 100644 --- a/src/com/android/settings/notification/DndPreferenceController.java +++ b/src/com/android/settings/notification/DndPreferenceController.java @@ -28,17 +28,12 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnResume; public class DndPreferenceController extends NotificationPreferenceController - implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, - LifecycleObserver { + implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener { private static final String KEY_BYPASS_DND = "bypass_dnd"; - public DndPreferenceController(Context context, Lifecycle lifecycle, - NotificationBackend backend) { + public DndPreferenceController(Context context, NotificationBackend backend) { super(context, backend); - if (lifecycle != null) { - lifecycle.addObserver(this); - } } @Override diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java index 6436de63c2..7eb0ba4e50 100644 --- a/src/com/android/settings/notification/NotificationSettingsBase.java +++ b/src/com/android/settings/notification/NotificationSettingsBase.java @@ -58,6 +58,7 @@ import java.util.List; abstract public class NotificationSettingsBase extends DashboardFragment { private static final String TAG = "NotifiSettingsBase"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); + protected static final String ARG_FROM_SETTINGS = "fromSettings"; protected PackageManager mPm; protected NotificationBackend mBackend = new NotificationBackend(); @@ -249,6 +250,7 @@ abstract public class NotificationSettingsBase extends DashboardFragment { channelArgs.putInt(AppInfoBase.ARG_PACKAGE_UID, mUid); channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg); channelArgs.putString(Settings.EXTRA_CHANNEL_ID, channel.getId()); + channelArgs.putBoolean(ARG_FROM_SETTINGS, true); channelPref.setIntent(new SubSettingLauncher(getActivity()) .setDestination(ChannelNotificationSettings.class.getName()) .setArguments(channelArgs) diff --git a/tests/robotests/src/com/android/settings/notification/DndPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/DndPreferenceControllerTest.java index 54dda6af88..ba612ac2ee 100644 --- a/tests/robotests/src/com/android/settings/notification/DndPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/DndPreferenceControllerTest.java @@ -64,8 +64,6 @@ public class DndPreferenceControllerTest { private UserManager mUm; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private PreferenceScreen mScreen; - @Mock - private Lifecycle mLifecycle; private DndPreferenceController mController; @@ -76,7 +74,7 @@ public class DndPreferenceControllerTest { shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm); shadowApplication.setSystemService(Context.USER_SERVICE, mUm); mContext = RuntimeEnvironment.application; - mController = spy(new DndPreferenceController(mContext, mLifecycle, mBackend)); + mController = spy(new DndPreferenceController(mContext, mBackend)); } @Test -- 2.11.0