From e06b065f6e0d0f939b8519ccd3699b90aef818e9 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Wed, 2 Mar 2016 16:35:27 -0500 Subject: [PATCH] Fix QS edit state being out of sync Do this by making SignalCallbacks send out initial state immediately rather than posting this state. This requires a little refactoring to how SignalControllers work. Bug: 27061469 Change-Id: Iba6b91a4a5d1d13cce0f0d308b6f85f0340bff39 --- .../systemui/statusbar/SignalClusterView.java | 1 + .../systemui/statusbar/phone/PhoneStatusBar.java | 1 - .../statusbar/policy/EthernetSignalController.java | 5 +++-- .../statusbar/policy/MobileSignalController.java | 5 +++-- .../statusbar/policy/NetworkControllerImpl.java | 14 +++++++------- .../statusbar/policy/SignalController.java | 9 +++++++-- .../statusbar/policy/WifiSignalController.java | 5 +++-- .../policy/NetworkControllerBaseTest.java | 3 ++- 8 files changed, 26 insertions(+), 17 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java index 960e4cf47001e..988d537f6c2cb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java @@ -221,6 +221,7 @@ public class SignalClusterView apply(); applyIconTint(); + mNC.addSignalCallback(this); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index e73994443491e..d86af74d7824e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -995,7 +995,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, SignalClusterView signalCluster = (SignalClusterView) containerView.findViewById(R.id.signal_cluster); if (signalCluster != null) { - mNetworkController.addSignalCallback(signalCluster); signalCluster.setSecurityController(mSecurityController); signalCluster.setNetworkController(mNetworkController); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java index bd36462ca6128..159bd41a20948 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java @@ -19,6 +19,7 @@ import android.content.Context; import android.net.NetworkCapabilities; import com.android.systemui.statusbar.policy.NetworkController.IconState; +import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import java.util.BitSet; @@ -46,12 +47,12 @@ public class EthernetSignalController extends } @Override - public void notifyListeners() { + public void notifyListeners(SignalCallback callback) { boolean ethernetVisible = mCurrentState.connected; String contentDescription = getStringIfExists(getContentDescription()); // TODO: wire up data transfer using WifiSignalPoller. - mCallbackHandler.setEthernetIndicators(new IconState(ethernetVisible, getCurrentIconId(), + callback.setEthernetIndicators(new IconState(ethernetVisible, getCurrentIconId(), contentDescription)); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index 8fd4d9cd326a5..80dcfb6dfe2c8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -34,6 +34,7 @@ import com.android.internal.telephony.TelephonyIntents; import com.android.internal.telephony.cdma.EriInfo; import com.android.systemui.R; import com.android.systemui.statusbar.policy.NetworkController.IconState; +import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config; import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionDefaults; @@ -198,7 +199,7 @@ public class MobileSignalController extends SignalController< } @Override - public void notifyListeners() { + public void notifyListeners(SignalCallback callback) { MobileIconGroup icons = getIcons(); String contentDescription = getStringIfExists(getContentDescription()); @@ -231,7 +232,7 @@ public class MobileSignalController extends SignalController< || mCurrentState.iconGroup == TelephonyIcons.ROAMING || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED; int typeIcon = showDataIcon ? icons.mDataType : 0; - mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon, + callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon, activityIn, activityOut, dataContentDescription, description, icons.mIsWide, mSubscriptionInfo.getSubscriptionId()); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index 8193b52b569ca..40eb71d8327b1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -322,16 +322,16 @@ public class NetworkControllerImpl extends BroadcastReceiver } public void addSignalCallback(SignalCallback cb) { - mCallbackHandler.setListening(cb, true); - mCallbackHandler.setSubs(mCurrentSubscriptions); - mCallbackHandler.setIsAirplaneMode(new IconState(mAirplaneMode, + cb.setSubs(mCurrentSubscriptions); + cb.setIsAirplaneMode(new IconState(mAirplaneMode, TelephonyIcons.FLIGHT_MODE_ICON, R.string.accessibility_airplane_mode, mContext)); - mCallbackHandler.setNoSims(mHasNoSims); - mWifiSignalController.notifyListeners(); - mEthernetSignalController.notifyListeners(); + cb.setNoSims(mHasNoSims); + mWifiSignalController.notifyListeners(cb); + mEthernetSignalController.notifyListeners(cb); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { - mobileSignalController.notifyListeners(); + mobileSignalController.notifyListeners(cb); } + mCallbackHandler.setListening(cb, true); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java index c954d081329d8..4cfd1c7fe6fd6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.policy; import android.content.Context; import android.text.format.DateFormat; import android.util.Log; +import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import java.io.PrintWriter; import java.util.BitSet; @@ -48,7 +49,7 @@ public abstract class SignalController