Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java +2 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,8 @@ public class PreparationCoordinator implements Coordinator { /* reason = */ reason, /* showSnooze = */ adjustment.isSnoozeEnabled(), /* isChildInGroup = */ adjustment.isChildInGroup(), /* isGroupSummary = */ adjustment.isGroupSummary() /* isGroupSummary = */ adjustment.isGroupSummary(), /* needsRedaction = */ adjustment.getNeedsRedaction() ); } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifInflater.kt +1 −0 Original line number Diff line number Diff line Loading @@ -61,5 +61,6 @@ interface NotifInflater { val showSnooze: Boolean, val isChildInGroup: Boolean = false, val isGroupSummary: Boolean = false, val needsRedaction: Boolean, ) } packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProvider.kt +19 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.os.Handler import android.os.HandlerExecutor import android.os.UserHandle 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.qualifiers.Main import com.android.systemui.settings.UserTracker Loading @@ -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.provider.SectionStyleProvider 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.settings.SecureSettings import javax.inject.Inject Loading @@ -43,6 +45,7 @@ class NotifUiAdjustmentProvider @Inject constructor( @Main private val handler: Handler, private val secureSettings: SecureSettings, private val lockscreenUserManager: NotificationLockscreenUserManager, private val sensitiveNotifProtectionController: SensitiveNotificationProtectionController, private val sectionStyleProvider: SectionStyleProvider, private val userTracker: UserTracker, private val groupMembershipManager: GroupMembershipManager, Loading @@ -66,6 +69,11 @@ class NotifUiAdjustmentProvider @Inject constructor( fun addDirtyListener(listener: Runnable) { if (dirtyListeners.isEmpty()) { lockscreenUserManager.addNotificationStateChangedListener(notifStateChangedListener) if (screenshareNotificationHiding()) { sensitiveNotifProtectionController.registerSensitiveStateListener( onSensitiveStateChangedListener ) } updateSnoozeEnabled() secureSettings.registerContentObserverForUser( SHOW_NOTIFICATION_SNOOZE, Loading @@ -80,6 +88,11 @@ class NotifUiAdjustmentProvider @Inject constructor( dirtyListeners.remove(listener) if (dirtyListeners.isEmpty()) { lockscreenUserManager.removeNotificationStateChangedListener(notifStateChangedListener) if (screenshareNotificationHiding()) { sensitiveNotifProtectionController.unregisterSensitiveStateListener( onSensitiveStateChangedListener ) } secureSettings.unregisterContentObserver(settingsObserver) } } Loading @@ -89,6 +102,8 @@ class NotifUiAdjustmentProvider @Inject constructor( dirtyListeners.forEach(Runnable::run) } private val onSensitiveStateChangedListener = Runnable { dirtyListeners.forEach(Runnable::run) } private val settingsObserver = object : ContentObserver(handler) { override fun onChange(selfChange: Boolean) { updateSnoozeEnabled() Loading Loading @@ -122,7 +137,10 @@ class NotifUiAdjustmentProvider @Inject constructor( isConversation = entry.ranking.isConversation, isSnoozeEnabled = isSnoozeSettingsEnabled && !entry.isCanceled, isMinimized = isEntryMinimized(entry), needsRedaction = lockscreenUserManager.needsRedaction(entry), needsRedaction = lockscreenUserManager.needsRedaction(entry) || (screenshareNotificationHiding() && sensitiveNotifProtectionController.shouldProtectNotification(entry)), isChildInGroup = entry.sbn.isAppOrSystemGroupChild, isGroupSummary = entry.sbn.isAppOrSystemGroupSummary, ) Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java +2 −4 Original line number Diff line number Diff line Loading @@ -254,11 +254,9 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { params.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight); 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() || mNotificationLockscreenUserManager.needsRedaction(entry)) { ? inflaterParams.getNeedsRedaction() : mNotificationLockscreenUserManager.needsRedaction(entry)) { params.requireContentViews(FLAG_CONTENT_VIEW_PUBLIC); } else { params.markContentViewsFreeable(FLAG_CONTENT_VIEW_PUBLIC); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -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.NotifViewBarn; import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager; import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController; import com.android.systemui.util.settings.SecureSettings; import org.junit.Before; Loading Loading @@ -107,6 +108,7 @@ public class PreparationCoordinatorTest extends SysuiTestCase { @Mock private IStatusBarService mService; @Mock private BindEventManagerImpl mBindEventManagerImpl; @Mock private NotificationLockscreenUserManager mLockscreenUserManager; @Mock private SensitiveNotificationProtectionController mSensitiveNotifProtectionController; @Mock private Handler mHandler; @Mock private SecureSettings mSecureSettings; @Spy private FakeNotifInflater mNotifInflater = new FakeNotifInflater(); Loading @@ -128,6 +130,7 @@ public class PreparationCoordinatorTest extends SysuiTestCase { mHandler, mSecureSettings, mLockscreenUserManager, mSensitiveNotifProtectionController, mSectionStyleProvider, mUserTracker, mGroupMembershipManager Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java +2 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,8 @@ public class PreparationCoordinator implements Coordinator { /* reason = */ reason, /* showSnooze = */ adjustment.isSnoozeEnabled(), /* isChildInGroup = */ adjustment.isChildInGroup(), /* isGroupSummary = */ adjustment.isGroupSummary() /* isGroupSummary = */ adjustment.isGroupSummary(), /* needsRedaction = */ adjustment.getNeedsRedaction() ); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifInflater.kt +1 −0 Original line number Diff line number Diff line Loading @@ -61,5 +61,6 @@ interface NotifInflater { val showSnooze: Boolean, val isChildInGroup: Boolean = false, val isGroupSummary: Boolean = false, val needsRedaction: Boolean, ) }
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotifUiAdjustmentProvider.kt +19 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.os.Handler import android.os.HandlerExecutor import android.os.UserHandle 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.qualifiers.Main import com.android.systemui.settings.UserTracker Loading @@ -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.provider.SectionStyleProvider 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.settings.SecureSettings import javax.inject.Inject Loading @@ -43,6 +45,7 @@ class NotifUiAdjustmentProvider @Inject constructor( @Main private val handler: Handler, private val secureSettings: SecureSettings, private val lockscreenUserManager: NotificationLockscreenUserManager, private val sensitiveNotifProtectionController: SensitiveNotificationProtectionController, private val sectionStyleProvider: SectionStyleProvider, private val userTracker: UserTracker, private val groupMembershipManager: GroupMembershipManager, Loading @@ -66,6 +69,11 @@ class NotifUiAdjustmentProvider @Inject constructor( fun addDirtyListener(listener: Runnable) { if (dirtyListeners.isEmpty()) { lockscreenUserManager.addNotificationStateChangedListener(notifStateChangedListener) if (screenshareNotificationHiding()) { sensitiveNotifProtectionController.registerSensitiveStateListener( onSensitiveStateChangedListener ) } updateSnoozeEnabled() secureSettings.registerContentObserverForUser( SHOW_NOTIFICATION_SNOOZE, Loading @@ -80,6 +88,11 @@ class NotifUiAdjustmentProvider @Inject constructor( dirtyListeners.remove(listener) if (dirtyListeners.isEmpty()) { lockscreenUserManager.removeNotificationStateChangedListener(notifStateChangedListener) if (screenshareNotificationHiding()) { sensitiveNotifProtectionController.unregisterSensitiveStateListener( onSensitiveStateChangedListener ) } secureSettings.unregisterContentObserver(settingsObserver) } } Loading @@ -89,6 +102,8 @@ class NotifUiAdjustmentProvider @Inject constructor( dirtyListeners.forEach(Runnable::run) } private val onSensitiveStateChangedListener = Runnable { dirtyListeners.forEach(Runnable::run) } private val settingsObserver = object : ContentObserver(handler) { override fun onChange(selfChange: Boolean) { updateSnoozeEnabled() Loading Loading @@ -122,7 +137,10 @@ class NotifUiAdjustmentProvider @Inject constructor( isConversation = entry.ranking.isConversation, isSnoozeEnabled = isSnoozeSettingsEnabled && !entry.isCanceled, isMinimized = isEntryMinimized(entry), needsRedaction = lockscreenUserManager.needsRedaction(entry), needsRedaction = lockscreenUserManager.needsRedaction(entry) || (screenshareNotificationHiding() && sensitiveNotifProtectionController.shouldProtectNotification(entry)), isChildInGroup = entry.sbn.isAppOrSystemGroupChild, isGroupSummary = entry.sbn.isAppOrSystemGroupSummary, ) Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java +2 −4 Original line number Diff line number Diff line Loading @@ -254,11 +254,9 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { params.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight); 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() || mNotificationLockscreenUserManager.needsRedaction(entry)) { ? inflaterParams.getNeedsRedaction() : mNotificationLockscreenUserManager.needsRedaction(entry)) { params.requireContentViews(FLAG_CONTENT_VIEW_PUBLIC); } else { params.markContentViewsFreeable(FLAG_CONTENT_VIEW_PUBLIC); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -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.NotifViewBarn; import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager; import com.android.systemui.statusbar.policy.SensitiveNotificationProtectionController; import com.android.systemui.util.settings.SecureSettings; import org.junit.Before; Loading Loading @@ -107,6 +108,7 @@ public class PreparationCoordinatorTest extends SysuiTestCase { @Mock private IStatusBarService mService; @Mock private BindEventManagerImpl mBindEventManagerImpl; @Mock private NotificationLockscreenUserManager mLockscreenUserManager; @Mock private SensitiveNotificationProtectionController mSensitiveNotifProtectionController; @Mock private Handler mHandler; @Mock private SecureSettings mSecureSettings; @Spy private FakeNotifInflater mNotifInflater = new FakeNotifInflater(); Loading @@ -128,6 +130,7 @@ public class PreparationCoordinatorTest extends SysuiTestCase { mHandler, mSecureSettings, mLockscreenUserManager, mSensitiveNotifProtectionController, mSectionStyleProvider, mUserTracker, mGroupMembershipManager Loading