Merge "[Dagger] Move OnUserInfoChangedListener out of KeyguardStatusBarView and into its controller." into sc-v2-dev am: 7bc08d28a1 am: 8dcab4f811

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15328973

Change-Id: I3a3b499f9d2c515fb5776893c8452318a9f036d5
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index 016d174..72a3a12 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -49,9 +49,6 @@
 import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
 import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.phone.StatusBarIconController.TintedIconManager;
-import com.android.systemui.statusbar.policy.UserInfoController;
-import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener;
-import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -61,8 +58,7 @@
 /**
  * The header group on Keyguard.
  */
-public class KeyguardStatusBarView extends RelativeLayout implements
-        OnUserInfoChangedListener {
+public class KeyguardStatusBarView extends RelativeLayout {
 
     private static final int LAYOUT_NONE = 0;
     private static final int LAYOUT_CUTOUT = 1;
@@ -334,9 +330,6 @@
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
-        UserInfoController userInfoController = Dependency.get(UserInfoController.class);
-        userInfoController.addCallback(this);
-        userInfoController.reloadUserInfo();
         mIconManager = new TintedIconManager(findViewById(R.id.statusIcons), mFeatureFlags);
         mIconManager.setBlockList(mBlockedIcons);
         Dependency.get(StatusBarIconController.class).addIconGroup(mIconManager);
@@ -345,12 +338,11 @@
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
-        Dependency.get(UserInfoController.class).removeCallback(this);
         Dependency.get(StatusBarIconController.class).removeIconGroup(mIconManager);
     }
 
-    @Override
-    public void onUserInfoChanged(String name, Drawable picture, String userAccount) {
+    /** Should only be called from {@link KeyguardStatusBarViewController}. */
+    void onUserInfoChanged(Drawable picture) {
         mMultiUserAvatar.setImageDrawable(picture);
     }
 
@@ -432,9 +424,6 @@
     void onThemeChanged() {
         mBatteryView.setColorsFromContext(mContext);
         updateIconsAndTextColors();
-        // Reload user avatar
-        ((UserInfoControllerImpl) Dependency.get(UserInfoController.class))
-                .onDensityOrFontScaleChanged();
     }
 
     /** Should only be called from {@link KeyguardStatusBarViewController}. */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
index 55873d0..4d17cbc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
@@ -28,6 +28,7 @@
 import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.policy.BatteryController;
 import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.UserInfoController;
 import com.android.systemui.util.ViewController;
 
 import java.io.FileDescriptor;
@@ -41,6 +42,7 @@
     private final ConfigurationController mConfigurationController;
     private final SystemStatusAnimationScheduler mAnimationScheduler;
     private final BatteryController mBatteryController;
+    private final UserInfoController mUserInfoController;
 
     private final ConfigurationController.ConfigurationListener mConfigurationListener =
             new ConfigurationController.ConfigurationListener() {
@@ -89,6 +91,9 @@
                 }
             };
 
+    private final UserInfoController.OnUserInfoChangedListener mOnUserInfoChangedListener =
+            (name, picture, userAccount) -> mView.onUserInfoChanged(picture);
+
     private boolean mBatteryListening;
 
     @Inject
@@ -97,12 +102,14 @@
             CarrierTextController carrierTextController,
             ConfigurationController configurationController,
             SystemStatusAnimationScheduler animationScheduler,
-            BatteryController batteryController) {
+            BatteryController batteryController,
+            UserInfoController userInfoController) {
         super(view);
         mCarrierTextController = carrierTextController;
         mConfigurationController = configurationController;
         mAnimationScheduler = animationScheduler;
         mBatteryController = batteryController;
+        mUserInfoController = userInfoController;
     }
 
     @Override
@@ -115,6 +122,7 @@
     protected void onViewAttached() {
         mConfigurationController.addCallback(mConfigurationListener);
         mAnimationScheduler.addCallback(mAnimationCallback);
+        mUserInfoController.addCallback(mOnUserInfoChangedListener);
         onThemeChanged();
     }
 
@@ -122,6 +130,7 @@
     protected void onViewDetached() {
         mConfigurationController.removeCallback(mConfigurationListener);
         mAnimationScheduler.removeCallback(mAnimationCallback);
+        mUserInfoController.removeCallback(mOnUserInfoChangedListener);
     }
 
     /** Should be called when the theme changes. */
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
index e44b32e..c792a4d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
@@ -27,6 +27,7 @@
 import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
 import com.android.systemui.statusbar.policy.BatteryController;
 import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.UserInfoController;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -45,6 +46,8 @@
     private SystemStatusAnimationScheduler mAnimationScheduler;
     @Mock
     private BatteryController mBatteryController;
+    @Mock
+    private UserInfoController mUserInfoController;
 
     private KeyguardStatusBarViewController mController;
 
@@ -57,7 +60,8 @@
                 mCarrierTextController,
                 mConfigurationController,
                 mAnimationScheduler,
-                mBatteryController
+                mBatteryController,
+                mUserInfoController
         );
     }
 
@@ -67,6 +71,7 @@
 
         verify(mConfigurationController).addCallback(any());
         verify(mAnimationScheduler).addCallback(any());
+        verify(mUserInfoController).addCallback(any());
     }
 
     @Test
@@ -75,6 +80,7 @@
 
         verify(mConfigurationController).removeCallback(any());
         verify(mAnimationScheduler).removeCallback(any());
+        verify(mUserInfoController).removeCallback(any());
     }
 
     @Test