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

Commit 49f4a8e7 authored by Alison Cichowlas's avatar Alison Cichowlas
Browse files

Detour promoted notification demote button through Settings

Bug: 417258670
Flag:  com.android.systemui.permission_helper_ui_rich_ongoing
Test: manual
Change-Id: I245d29aa0f20cb7ebd9b6d4c2ce16b0b51337ac4
parent d83a2c44
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ package com.android.systemui.statusbar.notification.row;
import static android.app.Notification.EXTRA_BUILDER_APPLICATION_INFO;
import static android.app.NotificationManager.IMPORTANCE_LOW;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -52,11 +55,11 @@ import com.android.systemui.statusbar.notification.collection.EntryAdapter;
import com.android.systemui.statusbar.notification.collection.EntryAdapterFactoryImpl;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager;
import com.android.systemui.statusbar.notification.promoted.domain.interactor.PackageDemotionInteractor;
import com.android.systemui.statusbar.notification.collection.coordinator.VisualStabilityCoordinator;
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.promoted.domain.interactor.PackageDemotionInteractor;
import com.android.systemui.statusbar.notification.row.icon.AppIconProvider;
import com.android.systemui.statusbar.notification.row.icon.NotificationIconStyleProvider;

@@ -101,6 +104,7 @@ public class PromotedNotificationInfoTest extends SysuiTestCase {
    @Mock
    private OnUserInteractionCallback mOnUserInteractionCallback;
    @Mock

    private ChannelEditorDialogController mChannelEditorDialogController;
    @Mock
    private PackageDemotionInteractor mPackageDemotionInteractor;
@@ -109,6 +113,9 @@ public class PromotedNotificationInfoTest extends SysuiTestCase {
    @Mock
    private TelecomManager mTelecomManager;

    @Mock
    NotificationInfo.OnSettingsClickListener mMockSettingsClickListener;

    @Before
    public void setUp() throws Exception {
        final ApplicationInfo applicationInfo = new ApplicationInfo();
@@ -171,7 +178,7 @@ public class PromotedNotificationInfoTest extends SysuiTestCase {
                mSbn,
                mEntry,
                mEntryAdapter,
                null,
                mMockSettingsClickListener,
                null,
                null,
                mUiEventLogger,
@@ -185,9 +192,11 @@ public class PromotedNotificationInfoTest extends SysuiTestCase {
        // Click demote button
        final View demoteButton = mInfo.findViewById(R.id.promoted_demote);
        demoteButton.performClick();
        // TODO(b/417258670): restore original behavior when settings detour is removed.
        // verify that notiManager tried to demote
        verify(mMockINotificationManager, atLeastOnce()).setCanBePromoted(TEST_PACKAGE_NAME,
                mSbn.getUid(), false, true);

        // verify(mMockINotificationManager, atLeastOnce()).setCanBePromoted(TEST_PACKAGE_NAME,
        //        mSbn.getUid(), false, true);
        verify(mMockSettingsClickListener, atLeastOnce()).onClick(any(), isNull(), 
            eq(TEST_UID));
    }
}
+8 −8
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import android.service.notification.StatusBarNotification;
import android.text.SpannableStringBuilder;
import android.text.style.ImageSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

@@ -51,6 +50,7 @@ public class PromotedNotificationInfo extends NotificationInfo {
    private INotificationManager mNotificationManager;
    private PackageDemotionInteractor mPackageDemotionInteractor;

    OnSettingsClickListener mOnSettingsClickListener;
    public PromotedNotificationInfo(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
@@ -88,6 +88,7 @@ public class PromotedNotificationInfo extends NotificationInfo {

        mNotificationManager = iNotificationManager;

        mOnSettingsClickListener = onSettingsClick;
        mPackageDemotionInteractor = packageDemotionInteractor;

        bindDemote(sbn, pkg);
@@ -130,13 +131,12 @@ public class PromotedNotificationInfo extends NotificationInfo {

    private OnClickListener getDemoteClickListener(StatusBarNotification sbn, String packageName) {
        return ((View v) -> {
            try {
                mNotificationManager.setCanBePromoted(packageName, sbn.getUid(), false, true);
                mPackageDemotionInteractor.onPackageDemoted(packageName, sbn.getUid());
                mGutsContainer.closeControls(v, true);
            } catch (RemoteException e) {
                Log.e(TAG, "Couldn't revoke live update permission", e);
            }
            // TODO(b/417258670) Remove detour through settings by using specialized permission.
            // mNotificationManager.setCanBePromoted(packageName, sbn.getUid(), false, true);
            // mPackageDemotionInteractor.onPackageDemoted(packageName, sbn.getUid());
            // mGutsContainer.closeControls(v, true);

            mOnSettingsClickListener.onClick(v, null, sbn.getUid());
        });
    }
}