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

Commit da0bc475 authored by Richard MacGregor's avatar Richard MacGregor Committed by Android (Google) Code Review
Browse files

Merge "Move redaction calc to NotifUiAdjustmentProvider" into main

parents 3d51486f 6a9ceb47
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -367,7 +367,8 @@ public class PreparationCoordinator implements Coordinator {
                /* reason = */ reason,
                /* reason = */ reason,
                /* showSnooze = */ adjustment.isSnoozeEnabled(),
                /* showSnooze = */ adjustment.isSnoozeEnabled(),
                /* isChildInGroup = */ adjustment.isChildInGroup(),
                /* isChildInGroup = */ adjustment.isChildInGroup(),
                /* isGroupSummary = */ adjustment.isGroupSummary()
                /* isGroupSummary = */ adjustment.isGroupSummary(),
                /* needsRedaction = */ adjustment.getNeedsRedaction()
        );
        );
    }
    }


+1 −0
Original line number Original line Diff line number Diff line
@@ -61,5 +61,6 @@ interface NotifInflater {
        val showSnooze: Boolean,
        val showSnooze: Boolean,
        val isChildInGroup: Boolean = false,
        val isChildInGroup: Boolean = false,
        val isGroupSummary: Boolean = false,
        val isGroupSummary: Boolean = false,
        val needsRedaction: Boolean,
    )
    )
}
}
+19 −1
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.Handler
import android.os.HandlerExecutor
import android.os.HandlerExecutor
import android.os.UserHandle
import android.os.UserHandle
import android.provider.Settings.Secure.SHOW_NOTIFICATION_SNOOZE
import android.provider.Settings.Secure.SHOW_NOTIFICATION_SNOOZE
import com.android.server.notification.Flags.screenshareNotificationHiding
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.settings.UserTracker
import com.android.systemui.settings.UserTracker
@@ -30,6 +31,7 @@ import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.provider.SectionStyleProvider
import com.android.systemui.statusbar.notification.collection.provider.SectionStyleProvider
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager
import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController
import com.android.systemui.util.ListenerSet
import com.android.systemui.util.ListenerSet
import com.android.systemui.util.settings.SecureSettings
import com.android.systemui.util.settings.SecureSettings
import javax.inject.Inject
import javax.inject.Inject
@@ -43,6 +45,7 @@ class NotifUiAdjustmentProvider @Inject constructor(
    @Main private val handler: Handler,
    @Main private val handler: Handler,
    private val secureSettings: SecureSettings,
    private val secureSettings: SecureSettings,
    private val lockscreenUserManager: NotificationLockscreenUserManager,
    private val lockscreenUserManager: NotificationLockscreenUserManager,
    private val sensitiveNotifProtectionController: SensitiveNotificationProtectionController,
    private val sectionStyleProvider: SectionStyleProvider,
    private val sectionStyleProvider: SectionStyleProvider,
    private val userTracker: UserTracker,
    private val userTracker: UserTracker,
    private val groupMembershipManager: GroupMembershipManager,
    private val groupMembershipManager: GroupMembershipManager,
@@ -66,6 +69,11 @@ class NotifUiAdjustmentProvider @Inject constructor(
    fun addDirtyListener(listener: Runnable) {
    fun addDirtyListener(listener: Runnable) {
        if (dirtyListeners.isEmpty()) {
        if (dirtyListeners.isEmpty()) {
            lockscreenUserManager.addNotificationStateChangedListener(notifStateChangedListener)
            lockscreenUserManager.addNotificationStateChangedListener(notifStateChangedListener)
            if (screenshareNotificationHiding()) {
                sensitiveNotifProtectionController.registerSensitiveStateListener(
                    onSensitiveStateChangedListener
                )
            }
            updateSnoozeEnabled()
            updateSnoozeEnabled()
            secureSettings.registerContentObserverForUser(
            secureSettings.registerContentObserverForUser(
                SHOW_NOTIFICATION_SNOOZE,
                SHOW_NOTIFICATION_SNOOZE,
@@ -80,6 +88,11 @@ class NotifUiAdjustmentProvider @Inject constructor(
        dirtyListeners.remove(listener)
        dirtyListeners.remove(listener)
        if (dirtyListeners.isEmpty()) {
        if (dirtyListeners.isEmpty()) {
            lockscreenUserManager.removeNotificationStateChangedListener(notifStateChangedListener)
            lockscreenUserManager.removeNotificationStateChangedListener(notifStateChangedListener)
            if (screenshareNotificationHiding()) {
                sensitiveNotifProtectionController.unregisterSensitiveStateListener(
                    onSensitiveStateChangedListener
                )
            }
            secureSettings.unregisterContentObserver(settingsObserver)
            secureSettings.unregisterContentObserver(settingsObserver)
        }
        }
    }
    }
@@ -89,6 +102,8 @@ class NotifUiAdjustmentProvider @Inject constructor(
            dirtyListeners.forEach(Runnable::run)
            dirtyListeners.forEach(Runnable::run)
        }
        }


    private val onSensitiveStateChangedListener = Runnable { dirtyListeners.forEach(Runnable::run) }

    private val settingsObserver = object : ContentObserver(handler) {
    private val settingsObserver = object : ContentObserver(handler) {
        override fun onChange(selfChange: Boolean) {
        override fun onChange(selfChange: Boolean) {
            updateSnoozeEnabled()
            updateSnoozeEnabled()
@@ -122,7 +137,10 @@ class NotifUiAdjustmentProvider @Inject constructor(
        isConversation = entry.ranking.isConversation,
        isConversation = entry.ranking.isConversation,
        isSnoozeEnabled = isSnoozeSettingsEnabled && !entry.isCanceled,
        isSnoozeEnabled = isSnoozeSettingsEnabled && !entry.isCanceled,
        isMinimized = isEntryMinimized(entry),
        isMinimized = isEntryMinimized(entry),
        needsRedaction = lockscreenUserManager.needsRedaction(entry),
        needsRedaction =
            lockscreenUserManager.needsRedaction(entry) ||
                (screenshareNotificationHiding() &&
                    sensitiveNotifProtectionController.shouldProtectNotification(entry)),
        isChildInGroup = entry.sbn.isAppOrSystemGroupChild,
        isChildInGroup = entry.sbn.isAppOrSystemGroupChild,
        isGroupSummary = entry.sbn.isAppOrSystemGroupSummary,
        isGroupSummary = entry.sbn.isAppOrSystemGroupSummary,
    )
    )
+2 −4
Original line number Original line Diff line number Diff line
@@ -254,11 +254,9 @@ public class NotificationRowBinderImpl implements NotificationRowBinder {
        params.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
        params.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
        params.setUseLowPriority(isLowPriority);
        params.setUseLowPriority(isLowPriority);


        // If screenshareNotificationHiding is enabled, both public and private views should be
        // inflated to avoid any latency associated with reinflating all notification views when
        // screen share starts and stops
        if (screenshareNotificationHiding()
        if (screenshareNotificationHiding()
                || mNotificationLockscreenUserManager.needsRedaction(entry)) {
                ? inflaterParams.getNeedsRedaction()
                : mNotificationLockscreenUserManager.needsRedaction(entry)) {
            params.requireContentViews(FLAG_CONTENT_VIEW_PUBLIC);
            params.requireContentViews(FLAG_CONTENT_VIEW_PUBLIC);
        } else {
        } else {
            params.markContentViewsFreeable(FLAG_CONTENT_VIEW_PUBLIC);
            params.markContentViewsFreeable(FLAG_CONTENT_VIEW_PUBLIC);
+3 −0
Original line number Original line Diff line number Diff line
@@ -68,6 +68,7 @@ import com.android.systemui.statusbar.notification.collection.provider.SectionSt
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.notification.collection.render.NotifViewBarn;
import com.android.systemui.statusbar.notification.collection.render.NotifViewBarn;
import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager;
import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager;
import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController;
import com.android.systemui.util.settings.SecureSettings;
import com.android.systemui.util.settings.SecureSettings;


import org.junit.Before;
import org.junit.Before;
@@ -107,6 +108,7 @@ public class PreparationCoordinatorTest extends SysuiTestCase {
    @Mock private IStatusBarService mService;
    @Mock private IStatusBarService mService;
    @Mock private BindEventManagerImpl mBindEventManagerImpl;
    @Mock private BindEventManagerImpl mBindEventManagerImpl;
    @Mock private NotificationLockscreenUserManager mLockscreenUserManager;
    @Mock private NotificationLockscreenUserManager mLockscreenUserManager;
    @Mock private SensitiveNotificationProtectionController mSensitiveNotifProtectionController;
    @Mock private Handler mHandler;
    @Mock private Handler mHandler;
    @Mock private SecureSettings mSecureSettings;
    @Mock private SecureSettings mSecureSettings;
    @Spy private FakeNotifInflater mNotifInflater = new FakeNotifInflater();
    @Spy private FakeNotifInflater mNotifInflater = new FakeNotifInflater();
@@ -128,6 +130,7 @@ public class PreparationCoordinatorTest extends SysuiTestCase {
                mHandler,
                mHandler,
                mSecureSettings,
                mSecureSettings,
                mLockscreenUserManager,
                mLockscreenUserManager,
                mSensitiveNotifProtectionController,
                mSectionStyleProvider,
                mSectionStyleProvider,
                mUserTracker,
                mUserTracker,
                mGroupMembershipManager
                mGroupMembershipManager
Loading