Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 068a5538 authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Reduce jank when revoking notification permission" into udc-dev

parents 9f29b957 a331c50b
Loading
Loading
Loading
Loading
+19 −26
Original line number Diff line number Diff line
@@ -26,17 +26,15 @@
    <com.android.settings.widget.SettingsMainSwitchPreference
        android:key="block" />

    <com.android.settingslib.widget.FooterPreference
    <Preference
        android:key="block_desc" />


    <!-- Conversations added here -->
    <PreferenceCategory
        android:title="@string/conversations_category_title"
        android:key="conversations"
        android:visibility="gone"
        settings:allowDividerAbove="false"
        settings:allowDividerBelow="false">
        android:visibility="gone">

    </PreferenceCategory>
    <com.android.settingslib.RestrictedSwitchPreference
        android:key="invalid_conversation_switch"
@@ -49,25 +47,13 @@
        android:key="bubble_pref_link"
        android:title="@string/notification_bubbles_title"
        android:icon="@drawable/ic_create_bubble"
        settings:allowDividerAbove="false"
        settings:controller="com.android.settings.notification.app.BubbleSummaryPreferenceController">
    </Preference>

    <!-- Channels/Channel groups added here -->
    <PreferenceCategory
        android:key="channels"
        android:layout="@layout/empty_view"
        settings:allowDividerAbove="true"
        settings:allowDividerBelow="true" />

    <!-- Show badge -->
    <com.android.settingslib.RestrictedSwitchPreference
        android:key="badge"
        android:title="@string/notification_badge_title"
        settings:useAdditionalSummary="true"
        android:order="1001"
        settings:allowDividerAbove="true"
        settings:restrictedSwitchSummary="@string/enabled_by_admin" />
        android:layout="@layout/empty_view" />

    <!-- Importance toggle -->
    <com.android.settingslib.RestrictedSwitchPreference
@@ -86,18 +72,25 @@
        android:title="@string/app_notification_override_dnd_title"
        android:summary="@string/app_notification_override_dnd_summary"/>

    <!-- Show badge -->
    <com.android.settingslib.RestrictedSwitchPreference
        android:key="badge"
        android:title="@string/notification_badge_title"
        settings:useAdditionalSummary="true"
        android:order="1001"
        android:icon="@drawable/ic_notification_dot"
        settings:allowDividerAbove="true"
        settings:restrictedSwitchSummary="@string/enabled_by_admin" />

    <Preference
        android:key="app_link"
        android:order="1003"
        android:icon="@drawable/ic_settings_24dp"
        android:title="@string/app_settings_link" />

    <com.android.settingslib.widget.FooterPreference
        android:key="desc"
        android:order="5000" />

    <com.android.settingslib.widget.FooterPreference
        android:key="deleted"
        android:icon="@drawable/ic_trash_can"
        android:order="8000" />

</PreferenceScreen>
+2 −3
Original line number Diff line number Diff line
@@ -98,14 +98,13 @@ public class AppNotificationSettings extends NotificationSettings {
                mBackend));
        mControllers.add(new DndPreferenceController(context, mBackend));
        mControllers.add(new AppLinkPreferenceController(context));
        mControllers.add(new DescriptionPreferenceController(context));
        mControllers.add(new NotificationsOffPreferenceController(context));
        mControllers.add(new DeletedChannelsPreferenceController(context, mBackend));
        mControllers.add(new ChannelListPreferenceController(context, mBackend));
        mControllers.add(new AppConversationListPreferenceController(context, mBackend));
        mControllers.add(new InvalidConversationInfoPreferenceController(context, mBackend));
        mControllers.add(new InvalidConversationPreferenceController(context, mBackend));
        mControllers.add(new BubbleSummaryPreferenceController(context, mBackend));
        mControllers.add(new NotificationsOffPreferenceController(context));
        mControllers.add(new DeletedChannelsPreferenceController(context, mBackend));
        return new ArrayList<>(mControllers);
    }
}
+8 −1
Original line number Diff line number Diff line
@@ -62,9 +62,16 @@ public class BadgePreferenceController extends NotificationPreferenceController
            if (isDefaultChannel()) {
                return true;
            } else {
                return mAppRow == null ? false : mAppRow.showBadge;
                return mAppRow == null
                        ? false
                        : mAppRow.channelCount == 0
                                ? false
                                : mAppRow.showBadge;
            }
        }
        if (mAppRow.channelCount == 0) {
            return false;
        }
        return true;
    }

+0 −73
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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 android.content.Context;
import android.text.TextUtils;

import androidx.preference.Preference;

import com.android.settings.core.PreferenceControllerMixin;

public class DescriptionPreferenceController extends NotificationPreferenceController
        implements PreferenceControllerMixin {

    private static final String KEY_DESC = "desc";

    public DescriptionPreferenceController(Context context) {
        super(context, null);
    }

    @Override
    public String getPreferenceKey() {
        return KEY_DESC;
    }

    @Override
    public boolean isAvailable() {
        if (!super.isAvailable()) {
            return false;
        }
        if (mChannel == null && !hasValidGroup()) {
            return false;
        }
        if (mChannel != null && !TextUtils.isEmpty(mChannel.getDescription())) {
            return true;
        }
        if (hasValidGroup() && !TextUtils.isEmpty(mChannelGroup.getDescription())) {
            return true;
        }
        return false;
    }

    @Override
    boolean isIncludedInFilter() {
        return false;
    }

    public void updateState(Preference preference) {
        if (mAppRow != null) {
            if (mChannel != null) {
                preference.setTitle(mChannel.getDescription());
            } else if (hasValidGroup()) {
                preference.setTitle(mChannelGroup.getDescription());
            }
        }
        preference.setEnabled(false);
        preference.setSelectable(false);
    }
}
+28 −1
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ public class BadgePreferenceControllerTest {
    @Test
    public void testIsAvailable_notIfAppBlocked() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 1;
        appRow.banned = true;
        mController.onResume(appRow, mock(NotificationChannel.class), null, null, null, null, null);
        assertFalse(mController.isAvailable());
@@ -105,6 +106,7 @@ public class BadgePreferenceControllerTest {
    @Test
    public void testIsAvailable_notIfChannelBlocked() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getImportance()).thenReturn(IMPORTANCE_NONE);
        mController.onResume(appRow, channel, null, null, null, null, null);
@@ -114,6 +116,7 @@ public class BadgePreferenceControllerTest {
    @Test
    public void testIsAvailable_channel_notIfAppOff() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 1;
        appRow.showBadge = false;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
@@ -125,6 +128,7 @@ public class BadgePreferenceControllerTest {
    @Test
    public void testIsAvailable_notIfOffGlobally() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
        mController.onResume(appRow, channel, null, null, null, null, null);
@@ -136,16 +140,28 @@ public class BadgePreferenceControllerTest {
    @Test
    public void testIsAvailable_app() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 1;
        mController.onResume(appRow, null, null, null, null, null, null);
        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BADGING, 1);

        assertTrue(mController.isAvailable());
    }

    @Test
    public void testIsAvailable_appNoChannels() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 0;
        mController.onResume(appRow, null, null, null, null, null, null);
        Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BADGING, 1);

        assertFalse(mController.isAvailable());
    }

    @Test
    public void testIsAvailable_defaultChannel() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
        when(channel.getId()).thenReturn(DEFAULT_CHANNEL_ID);
@@ -159,6 +175,7 @@ public class BadgePreferenceControllerTest {
    public void testIsAvailable_channel() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
        mController.onResume(appRow, channel, null, null, null, null, null);
@@ -183,6 +200,7 @@ public class BadgePreferenceControllerTest {
    public void testIsAvailable_filteredOut() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
        mController.onResume(appRow, channel, null, null, null, null, new ArrayList<>());
@@ -195,6 +213,7 @@ public class BadgePreferenceControllerTest {
    public void testIsAvailable_filteredIn() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getImportance()).thenReturn(IMPORTANCE_HIGH);
        mController.onResume(appRow, channel, null, null, null, null,
@@ -206,9 +225,11 @@ public class BadgePreferenceControllerTest {

    @Test
    public void testUpdateState_disabledByAdmin() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.getId()).thenReturn("something");
        mController.onResume(new NotificationBackend.AppRow(), channel, null,
        mController.onResume(appRow, channel, null,
                null, null, mock(RestrictedLockUtils.EnforcedAdmin.class), null);

        Preference pref = new RestrictedSwitchPreference(mContext);
@@ -220,6 +241,7 @@ public class BadgePreferenceControllerTest {
    @Test
    public void testUpdateState_channel() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.channelCount = 1;
        NotificationChannel channel = mock(NotificationChannel.class);
        when(channel.canShowBadge()).thenReturn(true);
        mController.onResume(appRow, channel, null, null, null, null, null);
@@ -240,6 +262,7 @@ public class BadgePreferenceControllerTest {
    public void testUpdateState_app() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        mController.onResume(appRow, null, null, null, null, null, null);

        RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext);
@@ -257,6 +280,7 @@ public class BadgePreferenceControllerTest {
    public void testOnPreferenceChange_on_channel() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        NotificationChannel channel =
                new NotificationChannel(DEFAULT_CHANNEL_ID, "a", IMPORTANCE_LOW);
        channel.setShowBadge(false);
@@ -276,6 +300,7 @@ public class BadgePreferenceControllerTest {
    public void testOnPreferenceChange_off_channel() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        NotificationChannel channel =
                new NotificationChannel(DEFAULT_CHANNEL_ID, "a", IMPORTANCE_HIGH);
        channel.setShowBadge(true);
@@ -295,6 +320,7 @@ public class BadgePreferenceControllerTest {
    public void testOnPreferenceChange_on_app() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = false;
        appRow.channelCount = 1;
        mController.onResume(appRow, null, null, null, null, null, null);

        RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext);
@@ -312,6 +338,7 @@ public class BadgePreferenceControllerTest {
    public void testOnPreferenceChange_off_app() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        appRow.showBadge = true;
        appRow.channelCount = 1;
        mController.onResume(appRow, null, null, null, null, null, null);

        RestrictedSwitchPreference pref = new RestrictedSwitchPreference(mContext);
Loading