From 409c3dfe689df2bdea4749bde297e0b055fc7fe1 Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Thu, 5 Mar 2020 18:31:39 -0800 Subject: [PATCH] Bubble settings: feature, notification, app * Removed setting from developer options * Removed bubble settings from normal notifications / channels * Feature available via notification setting * Feature screen with educational gif * App level is now a tri-state choice of all / selected / none * App level bubble controls are accessible top-level in app notifications Test: make -j40 RunSettingsRoboTests ROBOTEST_FILTER="Bubble" Bug: 138116133 Change-Id: Id103e9d3717fdc9b86a916be40c43cda9c35ac34 --- res/drawable/button_border_selected.xml | 2 +- res/drawable/ic_bubble_all.xml | 25 +++ res/drawable/ic_bubble_none.xml | 25 +++ res/drawable/ic_bubble_selected.xml | 25 +++ res/drawable/ic_create_bubble.xml | 22 +-- res/layout/bubble_preference.xml | 128 +++++++++++++ .../bubble_notification_animation.mp4 | Bin 0 -> 102399 bytes res/raw/bubble_notification_animation.mp4 | Bin 0 -> 101063 bytes res/xml/app_bubble_notification_settings.xml | 12 +- res/xml/app_notification_settings.xml | 12 +- res/xml/bubble_notification_settings.xml | 38 ++++ res/xml/configure_notification_settings.xml | 22 ++- .../BubbleGlobalPreferenceController.java | 73 -------- .../DevelopmentSettingsDashboardFragment.java | 1 - ...ubbleNotificationPreferenceController.java | 132 ++++++++++++++ .../BubbleNotificationSettings.java | 52 ++++++ ...mmaryNotificationPreferenceController.java | 58 ++++++ .../notification/NotificationBackend.java | 15 +- .../app/AppBubbleNotificationSettings.java | 3 + .../app/AppNotificationSettings.java | 13 +- .../notification/app/BubblePreference.java | 172 ++++++++++++++++++ .../app/BubblePreferenceController.java | 78 +++++--- .../BubbleSummaryPreferenceController.java | 74 ++++---- .../app/BubbleWarningDialogFragment.java | 7 +- .../BubbleGlobalPreferenceControllerTest.java | 111 ----------- ...eNotificationPreferenceControllerTest.java | 138 ++++++++++++++ ...yNotificationPreferenceControllerTest.java | 71 ++++++++ .../app/BubblePreferenceControllerTest.java | 168 ++++++++++------- ...BubbleSummaryPreferenceControllerTest.java | 117 +++++++----- 29 files changed, 1183 insertions(+), 411 deletions(-) create mode 100644 res/drawable/ic_bubble_all.xml create mode 100644 res/drawable/ic_bubble_none.xml create mode 100644 res/drawable/ic_bubble_selected.xml create mode 100644 res/layout/bubble_preference.xml create mode 100644 res/raw-night/bubble_notification_animation.mp4 create mode 100644 res/raw/bubble_notification_animation.mp4 create mode 100644 res/xml/bubble_notification_settings.xml delete mode 100644 src/com/android/settings/development/BubbleGlobalPreferenceController.java create mode 100644 src/com/android/settings/notification/BubbleNotificationPreferenceController.java create mode 100644 src/com/android/settings/notification/BubbleNotificationSettings.java create mode 100644 src/com/android/settings/notification/BubbleSummaryNotificationPreferenceController.java create mode 100644 src/com/android/settings/notification/app/BubblePreference.java delete mode 100644 tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/notification/BubbleNotificationPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceControllerTest.java diff --git a/res/drawable/button_border_selected.xml b/res/drawable/button_border_selected.xml index 65dfe1b67a3..29acbcea8e1 100644 --- a/res/drawable/button_border_selected.xml +++ b/res/drawable/button_border_selected.xml @@ -20,6 +20,6 @@ android:color="@color/notification_importance_selection_bg" /> + android:color="?android:attr/colorAccent"/> diff --git a/res/drawable/ic_bubble_all.xml b/res/drawable/ic_bubble_all.xml new file mode 100644 index 00000000000..fdcf6dc803c --- /dev/null +++ b/res/drawable/ic_bubble_all.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/res/drawable/ic_bubble_none.xml b/res/drawable/ic_bubble_none.xml new file mode 100644 index 00000000000..e8fd7df3def --- /dev/null +++ b/res/drawable/ic_bubble_none.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/res/drawable/ic_bubble_selected.xml b/res/drawable/ic_bubble_selected.xml new file mode 100644 index 00000000000..f9533283b5e --- /dev/null +++ b/res/drawable/ic_bubble_selected.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/res/drawable/ic_create_bubble.xml b/res/drawable/ic_create_bubble.xml index e9433553163..82d5db81210 100644 --- a/res/drawable/ic_create_bubble.xml +++ b/res/drawable/ic_create_bubble.xml @@ -14,17 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - - + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="?android:attr/colorControlNormal"> + + \ No newline at end of file diff --git a/res/layout/bubble_preference.xml b/res/layout/bubble_preference.xml new file mode 100644 index 00000000000..8a64716b757 --- /dev/null +++ b/res/layout/bubble_preference.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/raw-night/bubble_notification_animation.mp4 b/res/raw-night/bubble_notification_animation.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1a25e9378adfae8b75ee089060dc212c4de7bded GIT binary patch literal 102399 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%0D^J>a;gy5fa4g>H6(Yi{GiSTAcuew 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

)4xIP*v$=~^f|V81E7 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 S=XvRQxp{=Rd3pJ`x&I%dnEdhp literal 0 HcmV?d00001 diff --git a/res/raw/bubble_notification_animation.mp4 b/res/raw/bubble_notification_animation.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..299454850e466a6092dd18fd21fbab3bb008d93a GIT binary patch literal 101063 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 - + - - - + android:title="@string/notification_bubbles_title" + settings:allowDividerBelow="false"/> diff --git a/res/xml/app_notification_settings.xml b/res/xml/app_notification_settings.xml index ceb08a26e32..f0200ce46b5 100644 --- a/res/xml/app_notification_settings.xml +++ b/res/xml/app_notification_settings.xml @@ -29,6 +29,14 @@ + + + + - + + + + + + + + + + \ No newline at end of file diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml index 3dcddc8eb19..cb8357bdb0e 100644 --- a/res/xml/configure_notification_settings.xml +++ b/res/xml/configure_notification_settings.xml @@ -50,15 +50,23 @@ - - - + settings:allowDividerAbove="true" + android:summary="@string/manage_conversations" + android:order="6" + android:fragment="com.android.settings.notification.app.ConversationListSettings" + /> + + (mControllers); } } diff --git a/src/com/android/settings/notification/app/BubblePreference.java b/src/com/android/settings/notification/app/BubblePreference.java new file mode 100644 index 00000000000..679b663c8dd --- /dev/null +++ b/src/com/android/settings/notification/app/BubblePreference.java @@ -0,0 +1,172 @@ +/* + * Copyright (C) 2020 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. + */ + +package com.android.settings.notification.app; + +import static android.app.NotificationManager.BUBBLE_PREFERENCE_ALL; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + +import com.android.settings.Utils; +import com.android.settingslib.R; +import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedPreferenceHelper; + +/** + * A tri-state preference allowing a user to specify what gets to bubble. + */ +public class BubblePreference extends Preference implements View.OnClickListener { + RestrictedPreferenceHelper mHelper; + + private int mSelectedPreference; + + private Context mContext; + private Drawable mSelectedBackground; + private Drawable mUnselectedBackground; + + private ButtonViewHolder mBubbleAllButton; + private ButtonViewHolder mBubbleSelectedButton; + private ButtonViewHolder mBubbleNoneButton; + + public BubblePreference(Context context) { + this(context, null); + } + + public BubblePreference(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public BubblePreference(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public BubblePreference(Context context, AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + mHelper = new RestrictedPreferenceHelper(context, this, attrs); + mHelper.useAdminDisabledSummary(true); + mContext = context; + mSelectedBackground = mContext.getDrawable(R.drawable.button_border_selected); + mUnselectedBackground = mContext.getDrawable(R.drawable.button_border_unselected); + setLayoutResource(R.layout.bubble_preference); + } + + public void setSelectedPreference(int preference) { + mSelectedPreference = preference; + } + + public int getSelectedPreference() { + return mSelectedPreference; + } + + public void setDisabledByAdmin(RestrictedLockUtils.EnforcedAdmin admin) { + if (mHelper.setDisabledByAdmin(admin)) { + notifyChanged(); + } + } + + @Override + public void onBindViewHolder(final PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + + final boolean disabledByAdmin = mHelper.isDisabledByAdmin(); + View summary = holder.findViewById(android.R.id.summary); + if (disabledByAdmin) { + mHelper.onBindViewHolder(holder); + summary.setVisibility(View.VISIBLE); + } else { + summary.setVisibility(View.GONE); + } + holder.itemView.setClickable(false); + + View bubbleAll = holder.findViewById(R.id.bubble_all); + ImageView bubbleAllImage = (ImageView) holder.findViewById(R.id.bubble_all_icon); + TextView bubbleAllText = (TextView) holder.findViewById(R.id.bubble_all_label); + mBubbleAllButton = new ButtonViewHolder(bubbleAll, bubbleAllImage, bubbleAllText, + BUBBLE_PREFERENCE_ALL); + mBubbleAllButton.setSelected(mContext, mSelectedPreference == BUBBLE_PREFERENCE_ALL); + bubbleAll.setTag(BUBBLE_PREFERENCE_ALL); + bubbleAll.setOnClickListener(this); + bubbleAll.setVisibility(disabledByAdmin ? View.GONE : View.VISIBLE); + + View bubbleSelected = holder.findViewById(R.id.bubble_selected); + ImageView bubbleSelectedImage = (ImageView) holder.findViewById(R.id.bubble_selected_icon); + TextView bubbleSelectedText = (TextView) holder.findViewById(R.id.bubble_selected_label); + mBubbleSelectedButton = new ButtonViewHolder(bubbleSelected, bubbleSelectedImage, + bubbleSelectedText, BUBBLE_PREFERENCE_SELECTED); + mBubbleSelectedButton.setSelected(mContext, + mSelectedPreference == BUBBLE_PREFERENCE_SELECTED); + bubbleSelected.setTag(BUBBLE_PREFERENCE_SELECTED); + bubbleSelected.setOnClickListener(this); + bubbleSelected.setVisibility(disabledByAdmin ? View.GONE : View.VISIBLE); + + View bubbleNone = holder.findViewById(R.id.bubble_none); + ImageView bubbleNoneImage = (ImageView) holder.findViewById(R.id.bubble_none_icon); + TextView bubbleNoneText = (TextView) holder.findViewById(R.id.bubble_none_label); + mBubbleNoneButton = new ButtonViewHolder(bubbleNone, bubbleNoneImage, bubbleNoneText, + BUBBLE_PREFERENCE_NONE); + mBubbleNoneButton.setSelected(mContext, mSelectedPreference == BUBBLE_PREFERENCE_NONE); + bubbleNone.setTag(BUBBLE_PREFERENCE_NONE); + bubbleNone.setOnClickListener(this); + bubbleNone.setVisibility(disabledByAdmin ? View.GONE : View.VISIBLE); + } + + @Override + public void onClick(View v) { + final int selected = (int) v.getTag(); + callChangeListener(selected); + + mBubbleAllButton.setSelected(mContext, selected == BUBBLE_PREFERENCE_ALL); + mBubbleSelectedButton.setSelected(mContext, selected == BUBBLE_PREFERENCE_SELECTED); + mBubbleNoneButton.setSelected(mContext, selected == BUBBLE_PREFERENCE_NONE); + } + + private class ButtonViewHolder { + private View mView; + private ImageView mImageView; + private TextView mTextView; + private int mId; + + ButtonViewHolder(View v, ImageView iv, TextView tv, int identifier) { + mView = v; + mImageView = iv; + mTextView = tv; + mId = identifier; + } + + void setSelected(Context context, boolean selected) { + mView.setBackground(selected ? mSelectedBackground : mUnselectedBackground); + mView.setSelected(selected); + + ColorStateList stateList = selected + ? Utils.getColorAccent(context) + : Utils.getColorAttr(context, android.R.attr.textColorPrimary); + mImageView.setImageTintList(stateList); + mTextView.setTextColor(stateList); + } + } +} diff --git a/src/com/android/settings/notification/app/BubblePreferenceController.java b/src/com/android/settings/notification/app/BubblePreferenceController.java index d33ba7e1aa3..3255192a912 100644 --- a/src/com/android/settings/notification/app/BubblePreferenceController.java +++ b/src/com/android/settings/notification/app/BubblePreferenceController.java @@ -16,6 +16,7 @@ package com.android.settings.notification.app; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE; import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; import android.annotation.Nullable; @@ -26,11 +27,14 @@ import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; -import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.notification.NotificationBackend; import com.android.settingslib.RestrictedSwitchPreference; +/** + * Preference controller for Bubbles. This is used as the app-specific page and conversation + * settings. + */ public class BubblePreferenceController extends NotificationPreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener { @@ -74,40 +78,49 @@ public class BubblePreferenceController extends NotificationPreferenceController return true; } + @Override public void updateState(Preference preference) { - if (mAppRow != null) { - RestrictedSwitchPreference pref = (RestrictedSwitchPreference) preference; + if (mIsAppPage && mAppRow != null) { + // We're on the app specific bubble page which displays a tri-state + int backEndPref = mAppRow.bubblePreference; + BubblePreference pref = (BubblePreference) preference; pref.setDisabledByAdmin(mAdmin); - if (mChannel != null) { - pref.setChecked(mChannel.canBubble() && isGloballyEnabled()); - pref.setEnabled(!pref.isDisabledByAdmin()); + if (!isGloballyEnabled()) { + pref.setSelectedPreference(BUBBLE_PREFERENCE_NONE); } else { - pref.setChecked(mAppRow.allowBubbles && isGloballyEnabled()); - pref.setSummary(mContext.getString( - R.string.bubbles_app_toggle_summary, mAppRow.label)); + pref.setSelectedPreference(backEndPref); } + } else if (mChannel != null) { + // We're on the channel specific notification page which displays a toggle. + RestrictedSwitchPreference switchpref = (RestrictedSwitchPreference) preference; + switchpref.setDisabledByAdmin(mAdmin); + switchpref.setChecked(mChannel.canBubble() && isGloballyEnabled()); } } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - final boolean value = (Boolean) newValue && isGloballyEnabled(); if (mChannel != null) { - mChannel.setAllowBubbles(value); + // Channel page is toggle + mChannel.setAllowBubbles((boolean) newValue); saveChannel(); - return true; - } else if (mAppRow != null && mFragmentManager != null) { - RestrictedSwitchPreference pref = (RestrictedSwitchPreference) preference; - // if the global setting is off, toggling app level permission requires extra - // confirmation - if (!isGloballyEnabled() && !pref.isChecked()) { - new BubbleWarningDialogFragment() - .setPkgInfo(mAppRow.pkg, mAppRow.uid) - .show(mFragmentManager, "dialog"); - return false; - } else { - mAppRow.allowBubbles = value; - mBackend.setAllowBubbles(mAppRow.pkg, mAppRow.uid, value); + } else if (mIsAppPage) { + // App page is bubble preference + BubblePreference pref = (BubblePreference) preference; + if (mAppRow != null && mFragmentManager != null) { + final int value = (int) newValue; + if (!isGloballyEnabled() + && pref.getSelectedPreference() == BUBBLE_PREFERENCE_NONE) { + // if the global setting is off, toggling app level permission requires extra + // confirmation + new BubbleWarningDialogFragment() + .setPkgPrefInfo(mAppRow.pkg, mAppRow.uid, value) + .show(mFragmentManager, "dialog"); + return false; + } else { + mAppRow.bubblePreference = value; + mBackend.setAllowBubbles(mAppRow.pkg, mAppRow.uid, value); + } } } return true; @@ -118,21 +131,26 @@ public class BubblePreferenceController extends NotificationPreferenceController NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF) == SYSTEM_WIDE_ON; } - // Used in app level prompt that confirms the user is ok with turning on bubbles - // globally. If they aren't, undo what + /** + * Used in app level prompt that confirms the user is ok with turning on bubbles + * globally. If they aren't, undo that. + */ public static void revertBubblesApproval(Context mContext, String pkg, int uid) { NotificationBackend backend = new NotificationBackend(); - backend.setAllowBubbles(pkg, uid, false); + backend.setAllowBubbles(pkg, uid, BUBBLE_PREFERENCE_NONE); + // changing the global settings will cause the observer on the host page to reload // correct preference state Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF); } - // Apply global bubbles approval - public static void applyBubblesApproval(Context mContext, String pkg, int uid) { + /** + * Apply global bubbles approval + */ + public static void applyBubblesApproval(Context mContext, String pkg, int uid, int pref) { NotificationBackend backend = new NotificationBackend(); - backend.setAllowBubbles(pkg, uid, true); + backend.setAllowBubbles(pkg, uid, pref); // changing the global settings will cause the observer on the host page to reload // correct preference state Settings.Global.putInt(mContext.getContentResolver(), diff --git a/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java b/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java index f13613c4daf..06c6f3a1a84 100644 --- a/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java +++ b/src/com/android/settings/notification/app/BubbleSummaryPreferenceController.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 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. @@ -16,38 +16,34 @@ package com.android.settings.notification.app; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_ALL; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE; import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; -import android.app.settings.SettingsEnums; import android.content.Context; -import android.os.Bundle; +import android.content.Intent; +import android.content.res.Resources; import android.provider.Settings; -import com.android.settings.R; -import com.android.settings.applications.AppInfoBase; -import com.android.settings.core.SubSettingLauncher; -import com.android.settings.notification.NotificationBackend; - import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; -public class BubbleSummaryPreferenceController extends NotificationPreferenceController { +import com.android.settings.R; +import com.android.settings.notification.NotificationBackend; + +/** + * Summary of the app setting for bubbles, available through app notification settings. + */ +public class BubbleSummaryPreferenceController extends NotificationPreferenceController { + private static final String KEY = "bubble_pref_link"; - private static final String KEY = "bubble_link_pref"; @VisibleForTesting - static final int SYSTEM_WIDE_ON = 1; - @VisibleForTesting - static final int SYSTEM_WIDE_OFF = 0; + static final int ON = 1; public BubbleSummaryPreferenceController(Context context, NotificationBackend backend) { super(context, backend); } - @Override - public String getPreferenceKey() { - return KEY; - } - @Override public boolean isAvailable() { if (!super.isAvailable()) { @@ -63,45 +59,47 @@ public class BubbleSummaryPreferenceController extends NotificationPreferenceCon if (isDefaultChannel()) { return true; } else { - return mAppRow != null && mAppRow.allowBubbles; + return mAppRow != null; } } return isGloballyEnabled(); } + @Override + public String getPreferenceKey() { + return KEY; + } + @Override public void updateState(Preference preference) { super.updateState(preference); if (mAppRow != null) { - Bundle args = new Bundle(); - args.putString(AppInfoBase.ARG_PACKAGE_NAME, mAppRow.pkg); - args.putInt(AppInfoBase.ARG_PACKAGE_UID, mAppRow.uid); - - preference.setIntent(new SubSettingLauncher(mContext) - .setDestination(AppBubbleNotificationSettings.class.getName()) - .setArguments(args) - .setSourceMetricsCategory( - SettingsEnums.NOTIFICATION_APP_NOTIFICATION) - .toIntent()); + final Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_BUBBLE_SETTINGS); + intent.putExtra(Settings.EXTRA_APP_PACKAGE, mAppRow.pkg); + intent.putExtra(Settings.EXTRA_APP_UID, mAppRow.uid); + preference.setIntent(intent); } } @Override public CharSequence getSummary() { - boolean canBubble = false; - if (mAppRow != null) { - if (mChannel != null) { - canBubble |= mChannel.canBubble() && isGloballyEnabled(); - } else { - canBubble |= mAppRow.allowBubbles && isGloballyEnabled(); - } + if (mAppRow == null) { + return null; + } + int backEndPref = mAppRow.bubblePreference; + Resources res = mContext.getResources(); + if (backEndPref == BUBBLE_PREFERENCE_NONE || !isGloballyEnabled()) { + return res.getString(R.string.bubble_app_setting_none); + } else if (backEndPref == BUBBLE_PREFERENCE_ALL) { + return res.getString(R.string.bubble_app_setting_all); + } else { + return res.getString(R.string.bubble_app_setting_selected); } - return mContext.getString(canBubble ? R.string.switch_on_text : R.string.switch_off_text); } private boolean isGloballyEnabled() { return Settings.Global.getInt(mContext.getContentResolver(), - NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF) == SYSTEM_WIDE_ON; + NOTIFICATION_BUBBLES, ON) == ON; } } diff --git a/src/com/android/settings/notification/app/BubbleWarningDialogFragment.java b/src/com/android/settings/notification/app/BubbleWarningDialogFragment.java index d3aa7585260..7d5b24a3050 100644 --- a/src/com/android/settings/notification/app/BubbleWarningDialogFragment.java +++ b/src/com/android/settings/notification/app/BubbleWarningDialogFragment.java @@ -27,6 +27,7 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment; public class BubbleWarningDialogFragment extends InstrumentedDialogFragment { static final String KEY_PKG = "p"; static final String KEY_UID = "u"; + static final String KEY_SELECTED_PREFERENCE = "pref"; @Override @@ -34,10 +35,11 @@ public class BubbleWarningDialogFragment extends InstrumentedDialogFragment { return SettingsEnums.DIALOG_APP_BUBBLE_SETTINGS; } - public BubbleWarningDialogFragment setPkgInfo(String pkg, int uid) { + public BubbleWarningDialogFragment setPkgPrefInfo(String pkg, int uid, int preference) { Bundle args = new Bundle(); args.putString(KEY_PKG, pkg); args.putInt(KEY_UID, uid); + args.putInt(KEY_SELECTED_PREFERENCE, preference); setArguments(args); return this; } @@ -48,6 +50,7 @@ public class BubbleWarningDialogFragment extends InstrumentedDialogFragment { final Bundle args = getArguments(); final String pkg = args.getString(KEY_PKG); final int uid = args.getInt(KEY_UID); + final int pref = args.getInt(KEY_SELECTED_PREFERENCE); final String title = getResources().getString(R.string.bubbles_feature_disabled_dialog_title); @@ -60,7 +63,7 @@ public class BubbleWarningDialogFragment extends InstrumentedDialogFragment { .setPositiveButton(R.string.bubbles_feature_disabled_button_approve, (dialog, id) -> BubblePreferenceController.applyBubblesApproval( - getContext(), pkg, uid)) + getContext(), pkg, uid, pref)) .setNegativeButton(R.string.bubbles_feature_disabled_button_cancel, (dialog, id) -> BubblePreferenceController.revertBubblesApproval( diff --git a/tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java deleted file mode 100644 index 9e52a8829c9..00000000000 --- a/tests/robotests/src/com/android/settings/development/BubbleGlobalPreferenceControllerTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2019 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. - */ - -package com.android.settings.development; - -import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; - -import static com.android.settings.development.BubbleGlobalPreferenceController.OFF; -import static com.android.settings.development.BubbleGlobalPreferenceController.ON; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.provider.Settings; - -import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreference; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -@RunWith(RobolectricTestRunner.class) -public class BubbleGlobalPreferenceControllerTest { - private Context mContext; - - @Mock - private SwitchPreference mPreference; - @Mock - private PreferenceScreen mPreferenceScreen; - - private BubbleGlobalPreferenceController mController; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; - mController = new BubbleGlobalPreferenceController(mContext); - when(mPreferenceScreen.findPreference(mController.getPreferenceKey())) - .thenReturn(mPreference); - mController.displayPreference(mPreferenceScreen); - } - - @Test - public void onPreferenceChange_settingEnabled_allowBubbles_shouldBeOn() { - mController.onPreferenceChange(mPreference, true /* new value */); - - assertThat(isSettingEnabled()).isTrue(); - } - - @Test - public void onPreferenceChange_settingDisabled_allowBubbles_shouldBeOff() { - mController.onPreferenceChange(mPreference, false /* new value */); - - assertThat(isSettingEnabled()).isFalse(); - } - - @Test - public void updateState_settingEnabled_preferenceShouldBeChecked() { - Settings.Global.putInt(mContext.getContentResolver(), - NOTIFICATION_BUBBLES, 1 /* enabled */); - mController.updateState(mPreference); - - verify(mPreference).setChecked(true); - } - - @Test - public void updateState_settingReset_defaultDisabled_preferenceShouldNotBeChecked() { - Settings.Global.putInt(mContext.getContentResolver(), - NOTIFICATION_BUBBLES, 0 /* enabled */); - mController.updateState(mPreference); - - verify(mPreference).setChecked(false); - } - - @Test - public void onDeveloperOptionsSwitchDisabled_shouldDisable() { - mController.onDeveloperOptionsSwitchDisabled(); - - verify(mPreference).setChecked(false); - verify(mPreference).setEnabled(false); - - assertThat(isSettingEnabled()).isFalse(); - } - - private boolean isSettingEnabled() { - return Settings.Global.getInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, - OFF /* default off */) == ON; - } - -} diff --git a/tests/robotests/src/com/android/settings/notification/BubbleNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BubbleNotificationPreferenceControllerTest.java new file mode 100644 index 00000000000..b2cf55b97b2 --- /dev/null +++ b/tests/robotests/src/com/android/settings/notification/BubbleNotificationPreferenceControllerTest.java @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2020 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. + */ + +package com.android.settings.notification; + +import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; + +import static com.android.settings.core.BasePreferenceController.AVAILABLE; +import static com.android.settings.notification.BadgingNotificationPreferenceController.OFF; +import static com.android.settings.notification.BadgingNotificationPreferenceController.ON; + +import static com.google.common.truth.Truth.assertThat; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.provider.Settings; + +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; +import androidx.preference.TwoStatePreference; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; + +@RunWith(RobolectricTestRunner.class) +public class BubbleNotificationPreferenceControllerTest { + + private Context mContext; + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private PreferenceScreen mScreen; + + private BubbleNotificationPreferenceController mController; + private Preference mPreference; + + private static final String KEY_NOTIFICATION_BUBBLES = "notification_bubbles"; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + mController = new BubbleNotificationPreferenceController(mContext, + KEY_NOTIFICATION_BUBBLES); + mPreference = new Preference(RuntimeEnvironment.application); + mPreference.setKey(mController.getPreferenceKey()); + when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); + } + + @Test + public void getAvilabilityStatus_returnsAvailable() { + assertEquals(AVAILABLE, mController.getAvailabilityStatus()); + } + + @Test + public void updateState_settingIsOn_preferenceSetChecked() { + final TwoStatePreference preference = mock(TwoStatePreference.class); + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, ON); + + mController.updateState(preference); + + verify(preference).setChecked(true); + } + + @Test + public void updateState_settingIsOff_preferenceSetUnchecked() { + final TwoStatePreference preference = mock(TwoStatePreference.class); + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, OFF); + assertThat(Settings.Global.getInt(mContext.getContentResolver(), + NOTIFICATION_BUBBLES, ON)).isEqualTo(OFF); + + mController.updateState(preference); + + verify(preference).setChecked(false); + } + + @Test + public void isChecked_settingIsOff_shouldReturnFalse() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, OFF); + + assertThat(mController.isChecked()).isFalse(); + } + + @Test + public void isChecked_settingIsOn_shouldReturnTrue() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, ON); + + assertThat(mController.isChecked()).isTrue(); + } + + @Test + public void setChecked_setFalse_disablesSetting() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, ON); + + mController.setChecked(false); + int updatedValue = Settings.Global.getInt(mContext.getContentResolver(), + NOTIFICATION_BUBBLES, -1); + + assertThat(updatedValue).isEqualTo(OFF); + } + + @Test + public void setChecked_setTrue_enablesSetting() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, OFF); + + mController.setChecked(true); + int updatedValue = Settings.Global.getInt(mContext.getContentResolver(), + NOTIFICATION_BUBBLES, -1); + + assertThat(updatedValue).isEqualTo(ON); + } + + @Test + public void isSliceable_returnsFalse() { + assertThat(mController.isSliceable()).isFalse(); + } +} diff --git a/tests/robotests/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceControllerTest.java new file mode 100644 index 00000000000..b5f505b6e82 --- /dev/null +++ b/tests/robotests/src/com/android/settings/notification/BubbleSummaryNotificationPreferenceControllerTest.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2020 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. + */ + +package com.android.settings.notification; + +import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; + +import static com.android.settings.notification.BadgingNotificationPreferenceController.OFF; +import static com.android.settings.notification.BadgingNotificationPreferenceController.ON; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.provider.Settings; + +import androidx.preference.Preference; + +import com.android.settings.R; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; + +@RunWith(RobolectricTestRunner.class) +public class BubbleSummaryNotificationPreferenceControllerTest { + + private Context mContext; + + private BubbleSummaryNotificationPreferenceController mController; + private Preference mPreference; + + private static final String KEY_NOTIFICATION_BUBBLES = "notification_bubbles"; + + @Before + public void setUp() { + mContext = RuntimeEnvironment.application; + mController = new BubbleSummaryNotificationPreferenceController(mContext, + KEY_NOTIFICATION_BUBBLES); + mPreference = new Preference(RuntimeEnvironment.application); + } + + @Test + public void getSummary_NOTIFICATION_BUBBLESIsOff_returnOffString() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, OFF); + + assertThat(mController.getSummary()).isEqualTo("Off"); + } + + @Test + public void getSummary_NOTIFICATION_BUBBLESIsOff_returnOnString() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, ON); + + String onString = mContext.getString(R.string.notifications_bubble_setting_on_summary); + assertThat(mController.getSummary()).isEqualTo(onString); + } +} diff --git a/tests/robotests/src/com/android/settings/notification/app/BubblePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/BubblePreferenceControllerTest.java index c2c45cb1707..0cf6dc67829 100644 --- a/tests/robotests/src/com/android/settings/notification/app/BubblePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/app/BubblePreferenceControllerTest.java @@ -17,6 +17,9 @@ package com.android.settings.notification.app; import static android.app.NotificationChannel.DEFAULT_CHANNEL_ID; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_ALL; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED; import static android.app.NotificationManager.IMPORTANCE_HIGH; import static android.app.NotificationManager.IMPORTANCE_LOW; import static android.app.NotificationManager.IMPORTANCE_NONE; @@ -25,8 +28,8 @@ import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; import static com.android.settings.notification.app.BubblePreferenceController.SYSTEM_WIDE_OFF; import static com.android.settings.notification.app.BubblePreferenceController.SYSTEM_WIDE_ON; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; @@ -44,6 +47,11 @@ import android.content.Context; import android.os.UserManager; import android.provider.Settings; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; + import com.android.settings.notification.NotificationBackend; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedSwitchPreference; @@ -58,11 +66,6 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowApplication; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; - @RunWith(RobolectricTestRunner.class) public class BubblePreferenceControllerTest { @@ -125,7 +128,7 @@ public class BubblePreferenceControllerTest { public void testIsAvailable_channel_yesIfAppOff() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = false; + appRow.bubblePreference = BUBBLE_PREFERENCE_NONE; NotificationChannel channel = mock(NotificationChannel.class); when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH); mController.onResume(appRow, channel, null, null, null, null); @@ -177,7 +180,7 @@ public class BubblePreferenceControllerTest { @Test public void testIsAvailable_defaultChannel() { NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; NotificationChannel channel = mock(NotificationChannel.class); when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH); when(channel.getId()).thenReturn(DEFAULT_CHANNEL_ID); @@ -190,7 +193,7 @@ public class BubblePreferenceControllerTest { @Test public void testIsAvailable_channel() { NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; NotificationChannel channel = mock(NotificationChannel.class); when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH); mController.onResume(appRow, channel, null, null, null, null); @@ -213,7 +216,20 @@ public class BubblePreferenceControllerTest { } @Test - public void testUpdateState_channelNotBlockable() { + public void testUpdateState_app_disabledByAdmin() { + NotificationChannel channel = mock(NotificationChannel.class); + when(channel.getId()).thenReturn("something"); + mAppPageController.onResume(new NotificationBackend.AppRow(), channel, null, + null, null, mock(RestrictedLockUtils.EnforcedAdmin.class)); + + BubblePreference pref = new BubblePreference(mContext); + mAppPageController.updateState(pref); + + assertFalse(pref.isEnabled()); + } + + @Test + public void testUpdateState_channel_channelNotBlockable() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); NotificationChannel channel = mock(NotificationChannel.class); @@ -251,21 +267,24 @@ public class BubblePreferenceControllerTest { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); appRow.label = "App!"; - appRow.allowBubbles = true; - mController.onResume(appRow, null, null, null, null, null); + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; + mAppPageController.onResume(appRow, null, null, null, null, null); - RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext); - mController.updateState(pref); - assertTrue(pref.isChecked()); + BubblePreference pref = new BubblePreference(mContext); + mAppPageController.updateState(pref); + assertEquals(BUBBLE_PREFERENCE_ALL, pref.getSelectedPreference()); - appRow.allowBubbles = false; - mController.onResume(appRow, null, null, null, null, null); + appRow.bubblePreference = BUBBLE_PREFERENCE_NONE; + mAppPageController.onResume(appRow, null, null, null, null, null); - mController.updateState(pref); - assertFalse(pref.isChecked()); + mAppPageController.updateState(pref); + assertEquals(BUBBLE_PREFERENCE_NONE, pref.getSelectedPreference()); - assertNotNull(pref.getSummary()); - assertTrue(pref.getSummary().toString().contains(appRow.label)); + appRow.bubblePreference = BUBBLE_PREFERENCE_SELECTED; + mAppPageController.onResume(appRow, null, null, null, null, null); + + mAppPageController.updateState(pref); + assertEquals(BUBBLE_PREFERENCE_SELECTED, pref.getSelectedPreference()); } @Test @@ -274,22 +293,21 @@ public class BubblePreferenceControllerTest { NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); appRow.label = "App!"; - appRow.allowBubbles = true; - mController.onResume(appRow, null, null, null, null, null); + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; + mAppPageController.onResume(appRow, null, null, null, null, null); - RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext); - mController.updateState(pref); - assertFalse(pref.isChecked()); + BubblePreference pref = new BubblePreference(mContext); + mAppPageController.updateState(pref); + assertEquals(BUBBLE_PREFERENCE_NONE, pref.getSelectedPreference()); } @Test public void testOnPreferenceChange_on_channel() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; + appRow.bubblePreference = BUBBLE_PREFERENCE_SELECTED; NotificationChannel channel = new NotificationChannel(DEFAULT_CHANNEL_ID, "a", IMPORTANCE_LOW); - channel.setAllowBubbles(false); mController.onResume(appRow, channel, null, null, null, null); RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext); @@ -306,10 +324,9 @@ public class BubblePreferenceControllerTest { public void testOnPreferenceChange_off_channel() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; + appRow.bubblePreference = BUBBLE_PREFERENCE_SELECTED; NotificationChannel channel = new NotificationChannel(DEFAULT_CHANNEL_ID, "a", IMPORTANCE_HIGH); - channel.setAllowBubbles(true); mController.onResume(appRow, channel, null, null, null, null); RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext); @@ -322,59 +339,78 @@ public class BubblePreferenceControllerTest { assertFalse(channel.canBubble()); } + @Test - public void testOnPreferenceChange_on_app() { + public void testOnPreferenceChange_app_all() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = false; - mController.onResume(appRow, null, null, null, null, null); + appRow.bubblePreference = BUBBLE_PREFERENCE_NONE; + mAppPageController.onResume(appRow, null, null, null, null, null); - RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext); + BubblePreference pref = new BubblePreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(pref); - mController.displayPreference(mScreen); - mController.updateState(pref); + mAppPageController.displayPreference(mScreen); + mAppPageController.updateState(pref); - mController.onPreferenceChange(pref, true); + mAppPageController.onPreferenceChange(pref, BUBBLE_PREFERENCE_ALL); - assertTrue(appRow.allowBubbles); - verify(mBackend, times(1)).setAllowBubbles(any(), anyInt(), eq(true)); + assertEquals(appRow.bubblePreference, BUBBLE_PREFERENCE_ALL); + verify(mBackend, times(1)).setAllowBubbles(any(), anyInt(), eq(BUBBLE_PREFERENCE_ALL)); } @Test - public void testOnPreferenceChange_off_app() { - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); - NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; - mController.onResume(appRow, null, null, null, null, null); - - RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext); - when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(pref); - mController.displayPreference(mScreen); - mController.updateState(pref); - - mController.onPreferenceChange(pref, false); - - assertFalse(appRow.allowBubbles); - verify(mBackend, times(1)).setAllowBubbles(any(), anyInt(), eq(false)); - } - - @Test - public void testOnPreferenceChange_on_app_offGlobally() { + public void testOnPreferenceChange_app_all_offGlobally() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = false; - mController.onResume(appRow, null, null, null, null, null); + appRow.bubblePreference = BUBBLE_PREFERENCE_NONE; + mAppPageController.onResume(appRow, null, null, null, null, null); - RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext); + BubblePreference pref = new BubblePreference(mContext); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(pref); - mController.displayPreference(mScreen); - mController.updateState(pref); + mAppPageController.displayPreference(mScreen); + mAppPageController.updateState(pref); - mController.onPreferenceChange(pref, true); + mAppPageController.onPreferenceChange(pref, BUBBLE_PREFERENCE_ALL); - assertFalse(appRow.allowBubbles); - verify(mBackend, never()).setAllowBubbles(any(), anyInt(), eq(true)); + assertEquals(appRow.bubblePreference, BUBBLE_PREFERENCE_NONE); + verify(mBackend, never()).setAllowBubbles(any(), anyInt(), eq(BUBBLE_PREFERENCE_ALL)); verify(mFragmentManager, times(1)).beginTransaction(); } + + @Test + public void testOnPreferenceChange_app_selected() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; + mAppPageController.onResume(appRow, null, null, null, null, null); + + BubblePreference pref = new BubblePreference(mContext); + when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(pref); + mAppPageController.displayPreference(mScreen); + mAppPageController.updateState(pref); + + mAppPageController.onPreferenceChange(pref, BUBBLE_PREFERENCE_NONE); + + assertEquals(BUBBLE_PREFERENCE_NONE, appRow.bubblePreference); + verify(mBackend, times(1)).setAllowBubbles(any(), anyInt(), eq(BUBBLE_PREFERENCE_NONE)); + } + + @Test + public void testOnPreferenceChange_app_none() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; + mAppPageController.onResume(appRow, null, null, null, null, null); + + BubblePreference pref = new BubblePreference(mContext); + when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(pref); + mAppPageController.displayPreference(mScreen); + mAppPageController.updateState(pref); + + mAppPageController.onPreferenceChange(pref, BUBBLE_PREFERENCE_NONE); + + assertEquals(BUBBLE_PREFERENCE_NONE, appRow.bubblePreference); + verify(mBackend, times(1)).setAllowBubbles(any(), anyInt(), eq(BUBBLE_PREFERENCE_NONE)); + } } diff --git a/tests/robotests/src/com/android/settings/notification/app/BubbleSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/BubbleSummaryPreferenceControllerTest.java index 80abfbb5f20..9d664ac02c8 100644 --- a/tests/robotests/src/com/android/settings/notification/app/BubbleSummaryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/app/BubbleSummaryPreferenceControllerTest.java @@ -17,28 +17,31 @@ package com.android.settings.notification.app; import static android.app.NotificationChannel.DEFAULT_CHANNEL_ID; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_ALL; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE; +import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED; import static android.app.NotificationManager.IMPORTANCE_HIGH; import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; -import static com.android.settings.notification.app.BubbleSummaryPreferenceController.SYSTEM_WIDE_OFF; -import static com.android.settings.notification.app.BubbleSummaryPreferenceController.SYSTEM_WIDE_ON; +import static com.android.settings.notification.app.BubblePreferenceController.SYSTEM_WIDE_OFF; +import static com.android.settings.notification.app.BubblePreferenceController.SYSTEM_WIDE_ON; import static junit.framework.TestCase.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.NotificationChannel; import android.content.Context; import android.provider.Settings; +import androidx.preference.Preference; + +import com.android.settings.R; import com.android.settings.notification.NotificationBackend; import org.junit.Before; @@ -50,8 +53,6 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowApplication; -import androidx.preference.Preference; - @RunWith(RobolectricTestRunner.class) public class BubbleSummaryPreferenceControllerTest { @@ -70,13 +71,13 @@ public class BubbleSummaryPreferenceControllerTest { } @Test - public void testNoCrashIfNoOnResume() { + public void isAvailable_noOnResume_shouldNotCrash() { mController.isAvailable(); mController.updateState(mock(Preference.class)); } @Test - public void testIsAvailable_notIfAppBlocked() { + public void isAvailable_appBlocked_shouldReturnFalse() { NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); appRow.banned = true; mController.onResume(appRow, mock(NotificationChannel.class), null, null, null, null); @@ -84,53 +85,52 @@ public class BubbleSummaryPreferenceControllerTest { } @Test - public void testIsAvailable_notIfOffGlobally() { - NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - NotificationChannel channel = mock(NotificationChannel.class); - when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH); - mController.onResume(appRow, channel, null, null, null, null); - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, - SYSTEM_WIDE_OFF); - - assertFalse(mController.isAvailable()); - } - - @Test - public void testIsAvailable_app() { + public void isAvailable_nullChannelNOTIFICATION_BUBBLESisOn_shouldReturnTrue() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); mController.onResume(appRow, null, null, null, null, null); - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); assertTrue(mController.isAvailable()); } @Test - public void testIsNotAvailable_app_globalOff() { - NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - mController.onResume(appRow, null, null, null, null, null); + public void isAvailable_nullChannelNOTIFICATION_BUBBLESisOff_shouldReturnFalse() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF); + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); + mController.onResume(appRow, null, null, null, null, null); assertFalse(mController.isAvailable()); } @Test - public void testIsAvailable_defaultChannel() { + public void isAvailable_nonNullChannelNOTIFICATION_BUBBLESisOff_shouldReturnFalse() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, + SYSTEM_WIDE_OFF); + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); + NotificationChannel channel = mock(NotificationChannel.class); + when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH); + mController.onResume(appRow, channel, null, null, null, null); + + assertFalse(mController.isAvailable()); + } + + @Test + public void isAvailable_defaultChannelNOTIFICATION_BUBBLESisOn_shouldReturnTrue() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; NotificationChannel channel = mock(NotificationChannel.class); when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH); when(channel.getId()).thenReturn(DEFAULT_CHANNEL_ID); mController.onResume(appRow, channel, null, null, null, null); - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); assertTrue(mController.isAvailable()); } @Test - public void testUpdateState() { + public void updateState_setsIntent() { NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; mController.onResume(appRow, null, null, null, null, null); Preference pref = new Preference(mContext); @@ -139,22 +139,53 @@ public class BubbleSummaryPreferenceControllerTest { } @Test - public void testGetSummary() { - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); - NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); - appRow.allowBubbles = true; - mController.onResume(appRow, null, null, null, null, null); - - assertEquals("On", mController.getSummary()); - + public void getSummary_NOTIFICATION_BUBBLESIsOff_returnsNoneString() { Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_OFF); - assertEquals("Off", mController.getSummary()); - Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON); - appRow.allowBubbles = false; + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); mController.onResume(appRow, null, null, null, null, null); - assertEquals("Off", mController.getSummary()); + String noneString = mContext.getString(R.string.bubble_app_setting_none); + assertEquals(noneString, mController.getSummary()); + } + + @Test + public void getSummary_BUBBLE_PREFERENCE_NONEisSelected_returnsNoneString() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, + SYSTEM_WIDE_ON); + + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); + appRow.bubblePreference = BUBBLE_PREFERENCE_NONE; + mController.onResume(appRow, null, null, null, null, null); + + String noneString = mContext.getString(R.string.bubble_app_setting_none); + assertEquals(noneString, mController.getSummary()); + } + + @Test + public void getSummary_BUBBLE_PREFERENCE_ALLisSelected_returnsAllString() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, + SYSTEM_WIDE_ON); + + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); + appRow.bubblePreference = BUBBLE_PREFERENCE_ALL; + mController.onResume(appRow, null, null, null, null, null); + + String allString = mContext.getString(R.string.bubble_app_setting_all); + assertEquals(allString, mController.getSummary()); + } + + @Test + public void getSummary_BUBBLE_PREFERENCE_SELECTEDisSelected_returnsSelectedString() { + Settings.Global.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, + SYSTEM_WIDE_ON); + + NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); + appRow.bubblePreference = BUBBLE_PREFERENCE_SELECTED; + mController.onResume(appRow, null, null, null, null, null); + + String selectedString = mContext.getString(R.string.bubble_app_setting_selected); + assertEquals(selectedString, mController.getSummary()); } }