From 0934dc1192a6ee40755cc7cceb8eac2a4dea7734 Mon Sep 17 00:00:00 2001 From: Ned Burns Date: Thu, 18 Jun 2020 18:42:53 -0400 Subject: [PATCH] Log when users/profiles change This is in the new pipeline, but it should apply for both pipelines. Bug: 148390204 Test: manual Change-Id: I780b6cb6174d759e978c52ab49bb42f28eda315c --- .../HideNotifsForOtherUsersCoordinator.java | 23 ++++++++++- .../coordinator/SharedCoordinatorLogger.kt | 38 +++++++++++++++++++ ...ideNotifsForOtherUsersCoordinatorTest.java | 3 +- 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinator.java index 261ae079a2c8c..e595dd4a2f717 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinator.java @@ -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 @@ -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 currentProfiles) { + mLogger.logUserOrProfileChanged( + mLockscreenUserManager.getCurrentUserId(), + profileIdsToStr(currentProfiles)); mFilter.invalidateList(); } }; + + private String profileIdsToStr(SparseArray 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(); + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt new file mode 100644 index 0000000000000..c85fc1efee95d --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SharedCoordinatorLogger.kt @@ -0,0 +1,38 @@ +/* + * 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" + }) + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java index 87fc02062ad4d..d21053bcd691d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/HideNotifsForOtherUsersCoordinatorTest.java @@ -51,6 +51,7 @@ public class HideNotifsForOtherUsersCoordinatorTest extends SysuiTestCase { @Mock private NotificationLockscreenUserManager mLockscreenUserManager; @Mock private NotifPipeline mNotifPipeline; @Mock private PluggableListener mInvalidationListener; + @Mock private SharedCoordinatorLogger mLogger; @Captor private ArgumentCaptor mUserChangedListenerCaptor; @Captor private ArgumentCaptor mNotifFilterCaptor; @@ -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());