Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinator.java +22 −1 Original line number Diff line number Diff line Loading @@ -39,11 +39,14 @@ import javax.inject.Inject; */ public class HideNotifsForOtherUsersCoordinator implements Coordinator { private final NotificationLockscreenUserManager mLockscreenUserManager; private final SharedCoordinatorLogger mLogger; @Inject public HideNotifsForOtherUsersCoordinator( NotificationLockscreenUserManager lockscreenUserManager) { NotificationLockscreenUserManager lockscreenUserManager, SharedCoordinatorLogger logger) { mLockscreenUserManager = lockscreenUserManager; mLogger = logger; } @Override Loading @@ -61,9 +64,27 @@ public class HideNotifsForOtherUsersCoordinator implements Coordinator { }; private final UserChangedListener mUserChangedListener = new UserChangedListener() { // This listener is fired both when the list of profiles changes and when the current user // changes @Override public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) { mLogger.logUserOrProfileChanged( mLockscreenUserManager.getCurrentUserId(), profileIdsToStr(currentProfiles)); mFilter.invalidateList(); } }; private String profileIdsToStr(SparseArray<UserInfo> currentProfiles) { StringBuilder sb = new StringBuilder(); sb.append("{"); for (int i = 0; i < currentProfiles.size(); i++) { sb.append(currentProfiles.keyAt(i)); if (i < currentProfiles.size() - 1) { sb.append(","); } } sb.append("}"); return sb.toString(); } } packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.systemui.statusbar.notification.collection.coordinator import com.android.systemui.log.LogBuffer import com.android.systemui.log.LogLevel import com.android.systemui.log.dagger.NotificationLog import javax.inject.Inject /** * Shared logging class for coordinators that don't log enough to merit their own logger. */ class SharedCoordinatorLogger @Inject constructor( @NotificationLog private val buffer: LogBuffer ) { fun logUserOrProfileChanged(userId: Int, profiles: String) { buffer.log("NotCurrentUserFilter", LogLevel.INFO, { int1 = userId str1 = profiles }, { "Current user or profiles changed. Current user is $int1; profiles are $str1" }) } } packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ public class HideNotifsForOtherUsersCoordinatorTest extends SysuiTestCase { @Mock private NotificationLockscreenUserManager mLockscreenUserManager; @Mock private NotifPipeline mNotifPipeline; @Mock private PluggableListener<NotifFilter> mInvalidationListener; @Mock private SharedCoordinatorLogger mLogger; @Captor private ArgumentCaptor<UserChangedListener> mUserChangedListenerCaptor; @Captor private ArgumentCaptor<NotifFilter> mNotifFilterCaptor; Loading @@ -65,7 +66,7 @@ public class HideNotifsForOtherUsersCoordinatorTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); HideNotifsForOtherUsersCoordinator coordinator = new HideNotifsForOtherUsersCoordinator(mLockscreenUserManager); new HideNotifsForOtherUsersCoordinator(mLockscreenUserManager, mLogger); coordinator.attach(mNotifPipeline); verify(mLockscreenUserManager).addUserChangedListener(mUserChangedListenerCaptor.capture()); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinator.java +22 −1 Original line number Diff line number Diff line Loading @@ -39,11 +39,14 @@ import javax.inject.Inject; */ public class HideNotifsForOtherUsersCoordinator implements Coordinator { private final NotificationLockscreenUserManager mLockscreenUserManager; private final SharedCoordinatorLogger mLogger; @Inject public HideNotifsForOtherUsersCoordinator( NotificationLockscreenUserManager lockscreenUserManager) { NotificationLockscreenUserManager lockscreenUserManager, SharedCoordinatorLogger logger) { mLockscreenUserManager = lockscreenUserManager; mLogger = logger; } @Override Loading @@ -61,9 +64,27 @@ public class HideNotifsForOtherUsersCoordinator implements Coordinator { }; private final UserChangedListener mUserChangedListener = new UserChangedListener() { // This listener is fired both when the list of profiles changes and when the current user // changes @Override public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) { mLogger.logUserOrProfileChanged( mLockscreenUserManager.getCurrentUserId(), profileIdsToStr(currentProfiles)); mFilter.invalidateList(); } }; private String profileIdsToStr(SparseArray<UserInfo> currentProfiles) { StringBuilder sb = new StringBuilder(); sb.append("{"); for (int i = 0; i < currentProfiles.size(); i++) { sb.append(currentProfiles.keyAt(i)); if (i < currentProfiles.size() - 1) { sb.append(","); } } sb.append("}"); return sb.toString(); } }
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.systemui.statusbar.notification.collection.coordinator import com.android.systemui.log.LogBuffer import com.android.systemui.log.LogLevel import com.android.systemui.log.dagger.NotificationLog import javax.inject.Inject /** * Shared logging class for coordinators that don't log enough to merit their own logger. */ class SharedCoordinatorLogger @Inject constructor( @NotificationLog private val buffer: LogBuffer ) { fun logUserOrProfileChanged(userId: Int, profiles: String) { buffer.log("NotCurrentUserFilter", LogLevel.INFO, { int1 = userId str1 = profiles }, { "Current user or profiles changed. Current user is $int1; profiles are $str1" }) } }
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ public class HideNotifsForOtherUsersCoordinatorTest extends SysuiTestCase { @Mock private NotificationLockscreenUserManager mLockscreenUserManager; @Mock private NotifPipeline mNotifPipeline; @Mock private PluggableListener<NotifFilter> mInvalidationListener; @Mock private SharedCoordinatorLogger mLogger; @Captor private ArgumentCaptor<UserChangedListener> mUserChangedListenerCaptor; @Captor private ArgumentCaptor<NotifFilter> mNotifFilterCaptor; Loading @@ -65,7 +66,7 @@ public class HideNotifsForOtherUsersCoordinatorTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); HideNotifsForOtherUsersCoordinator coordinator = new HideNotifsForOtherUsersCoordinator(mLockscreenUserManager); new HideNotifsForOtherUsersCoordinator(mLockscreenUserManager, mLogger); coordinator.attach(mNotifPipeline); verify(mLockscreenUserManager).addUserChangedListener(mUserChangedListenerCaptor.capture()); Loading