Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserInfoTracker.kt +30 −14 Original line number Original line Diff line number Diff line Loading @@ -19,12 +19,19 @@ package com.android.systemui.statusbar.phone.userswitcher import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable import android.os.UserManager import android.os.UserManager import com.android.systemui.DejankUtils.whitelistIpcs import com.android.systemui.Dumpable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.policy.CallbackController import com.android.systemui.statusbar.policy.CallbackController import com.android.systemui.statusbar.policy.UserInfoController import com.android.systemui.statusbar.policy.UserInfoController import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener import java.io.FileDescriptor import java.io.PrintWriter import java.util.concurrent.Executor import javax.inject.Inject import javax.inject.Inject /** /** Loading @@ -34,8 +41,11 @@ import javax.inject.Inject @SysUISingleton @SysUISingleton class StatusBarUserInfoTracker @Inject constructor( class StatusBarUserInfoTracker @Inject constructor( private val userInfoController: UserInfoController, private val userInfoController: UserInfoController, private val userManager: UserManager private val userManager: UserManager, ) : CallbackController<CurrentUserChipInfoUpdatedListener> { private val dumpManager: DumpManager, @Main private val mainExecutor: Executor, @Background private val backgroundExecutor: Executor ) : CallbackController<CurrentUserChipInfoUpdatedListener>, Dumpable { var currentUserName: String? = null var currentUserName: String? = null private set private set var currentUserAvatar: Drawable? = null var currentUserAvatar: Drawable? = null Loading @@ -53,7 +63,7 @@ class StatusBarUserInfoTracker @Inject constructor( } } init { init { startListening() dumpManager.registerDumpable(TAG, this) } } override fun addCallback(listener: CurrentUserChipInfoUpdatedListener) { override fun addCallback(listener: CurrentUserChipInfoUpdatedListener) { Loading Loading @@ -96,27 +106,33 @@ class StatusBarUserInfoTracker @Inject constructor( userInfoController.removeCallback(userInfoChangedListener) userInfoController.removeCallback(userInfoChangedListener) } } private fun checkUserSwitcherEnabled() { whitelistIpcs { userSwitcherEnabled = userManager.isUserSwitcherEnabled } } /** /** * Force a check to [UserManager.isUserSwitcherEnabled], and update listeners if the value has * Force a check to [UserManager.isUserSwitcherEnabled], and update listeners if the value has * changed * changed */ */ fun checkEnabled() { fun checkEnabled() { backgroundExecutor.execute { // Check on a background thread to avoid main thread Binder calls val wasEnabled = userSwitcherEnabled val wasEnabled = userSwitcherEnabled checkUserSwitcherEnabled() userSwitcherEnabled = userManager.isUserSwitcherEnabled if (wasEnabled != userSwitcherEnabled) { if (wasEnabled != userSwitcherEnabled) { mainExecutor.execute { notifyListenersSettingChanged() notifyListenersSettingChanged() } } } } } } } override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) { pw.println(" userSwitcherEnabled=$userSwitcherEnabled") pw.println(" listening=$listening") } } interface CurrentUserChipInfoUpdatedListener { interface CurrentUserChipInfoUpdatedListener { fun onCurrentUserChipInfoUpdated() fun onCurrentUserChipInfoUpdated() fun onStatusBarUserSwitcherSettingChanged(enabled: Boolean) {} fun onStatusBarUserSwitcherSettingChanged(enabled: Boolean) {} } } private const val TAG = "StatusBarUserInfoTracker" Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserInfoTracker.kt +30 −14 Original line number Original line Diff line number Diff line Loading @@ -19,12 +19,19 @@ package com.android.systemui.statusbar.phone.userswitcher import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable import android.os.UserManager import android.os.UserManager import com.android.systemui.DejankUtils.whitelistIpcs import com.android.systemui.Dumpable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.policy.CallbackController import com.android.systemui.statusbar.policy.CallbackController import com.android.systemui.statusbar.policy.UserInfoController import com.android.systemui.statusbar.policy.UserInfoController import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener import java.io.FileDescriptor import java.io.PrintWriter import java.util.concurrent.Executor import javax.inject.Inject import javax.inject.Inject /** /** Loading @@ -34,8 +41,11 @@ import javax.inject.Inject @SysUISingleton @SysUISingleton class StatusBarUserInfoTracker @Inject constructor( class StatusBarUserInfoTracker @Inject constructor( private val userInfoController: UserInfoController, private val userInfoController: UserInfoController, private val userManager: UserManager private val userManager: UserManager, ) : CallbackController<CurrentUserChipInfoUpdatedListener> { private val dumpManager: DumpManager, @Main private val mainExecutor: Executor, @Background private val backgroundExecutor: Executor ) : CallbackController<CurrentUserChipInfoUpdatedListener>, Dumpable { var currentUserName: String? = null var currentUserName: String? = null private set private set var currentUserAvatar: Drawable? = null var currentUserAvatar: Drawable? = null Loading @@ -53,7 +63,7 @@ class StatusBarUserInfoTracker @Inject constructor( } } init { init { startListening() dumpManager.registerDumpable(TAG, this) } } override fun addCallback(listener: CurrentUserChipInfoUpdatedListener) { override fun addCallback(listener: CurrentUserChipInfoUpdatedListener) { Loading Loading @@ -96,27 +106,33 @@ class StatusBarUserInfoTracker @Inject constructor( userInfoController.removeCallback(userInfoChangedListener) userInfoController.removeCallback(userInfoChangedListener) } } private fun checkUserSwitcherEnabled() { whitelistIpcs { userSwitcherEnabled = userManager.isUserSwitcherEnabled } } /** /** * Force a check to [UserManager.isUserSwitcherEnabled], and update listeners if the value has * Force a check to [UserManager.isUserSwitcherEnabled], and update listeners if the value has * changed * changed */ */ fun checkEnabled() { fun checkEnabled() { backgroundExecutor.execute { // Check on a background thread to avoid main thread Binder calls val wasEnabled = userSwitcherEnabled val wasEnabled = userSwitcherEnabled checkUserSwitcherEnabled() userSwitcherEnabled = userManager.isUserSwitcherEnabled if (wasEnabled != userSwitcherEnabled) { if (wasEnabled != userSwitcherEnabled) { mainExecutor.execute { notifyListenersSettingChanged() notifyListenersSettingChanged() } } } } } } } override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) { pw.println(" userSwitcherEnabled=$userSwitcherEnabled") pw.println(" listening=$listening") } } interface CurrentUserChipInfoUpdatedListener { interface CurrentUserChipInfoUpdatedListener { fun onCurrentUserChipInfoUpdated() fun onCurrentUserChipInfoUpdated() fun onStatusBarUserSwitcherSettingChanged(enabled: Boolean) {} fun onStatusBarUserSwitcherSettingChanged(enabled: Boolean) {} } } private const val TAG = "StatusBarUserInfoTracker"