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

Commit 3e226b07 authored by Alison Cichowlas's avatar Alison Cichowlas Committed by Android (Google) Code Review
Browse files

Merge "Detour promoted notification demote button through Settings" into main

parents 361d3d08 49f4a8e7
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());
        });
    }
}