diff options
3 files changed, 29 insertions, 16 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/demomode/DemoMode.java b/packages/SystemUI/src/com/android/systemui/demomode/DemoMode.java index 672ade2655a3..30211843ad63 100644 --- a/packages/SystemUI/src/com/android/systemui/demomode/DemoMode.java +++ b/packages/SystemUI/src/com/android/systemui/demomode/DemoMode.java @@ -37,6 +37,15 @@ public interface DemoMode extends DemoModeCommandReceiver { return NO_COMMANDS; } + /** Something simple enough to be recognizable in dumpsys logs */ + default String logName() { + if (this.getClass().isAnonymousClass()) { + return getClass().getName(); + } else { + return getClass().getSimpleName(); + } + } + String ACTION_DEMO = "com.android.systemui.demo"; String EXTRA_COMMAND = "command"; diff --git a/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt b/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt index 45ff963c2a9f..f03aa63a7abb 100644 --- a/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt +++ b/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt @@ -25,12 +25,12 @@ import android.os.UserHandle import android.util.Log import com.android.systemui.Dumpable import com.android.systemui.broadcast.BroadcastDispatcher -import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.demomode.DemoMode.ACTION_DEMO import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.policy.CallbackController import com.android.systemui.util.Assert import com.android.systemui.util.settings.GlobalSettings +import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import java.io.PrintWriter import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow @@ -209,20 +209,18 @@ constructor( pw.println("DemoModeController state -") pw.println(" isInDemoMode=$isInDemoMode") pw.println(" isDemoModeAllowed=$isAvailable") - pw.print(" receivers=[") - val copy: List<DemoModeCommandReceiver> + val copy: List<DemoMode> synchronized(this) { copy = receivers.toList() } - copy.forEach { recv -> pw.print(" ${recv.javaClass.simpleName}") } - pw.println(" ]") + + // List of all receivers + pw.println(" receivers=[${copy.joinToString(", ") { it.logName() }}]") + + // Print out the map of COMMAND -> list of receivers for that command pw.println(" receiverMap= [") - receiverMap.keys.forEach { command -> - pw.print(" $command : [") - val recvs = - receiverMap[command]!! - .map { receiver -> receiver.javaClass.simpleName } - .joinToString(",") - pw.println("$recvs ]") + receiverMap.entries.forEach { (comm, recv) -> + pw.println(" $comm : [${recv.joinToString(", ") {it.logName()}}]") } + pw.println(" ]") } private val tracker = diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java index 724b19c891aa..e3c47a43aad4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java @@ -83,6 +83,10 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceP import com.android.systemui.telephony.TelephonyListenerManager; import com.android.systemui.util.CarrierConfigTracker; +import dalvik.annotation.optimization.NeverCompile; + +import kotlin.Unit; + import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -97,9 +101,6 @@ import java.util.stream.Collectors; import javax.inject.Inject; -import dalvik.annotation.optimization.NeverCompile; -import kotlin.Unit; - /** Platform implementation of the network controller. **/ @SysUISingleton public class NetworkControllerImpl extends BroadcastReceiver @@ -464,7 +465,10 @@ public class NetworkControllerImpl extends BroadcastReceiver }); }; - mDemoModeController.addCallback(this); + // TODO(b/336357360): Until we can remove this class entirely, disable its handling of ALL + // demo mode commands, due to the fact that the mobile command handler has an infinite + // loop bug if you use any slot other than 1. + // mDemoModeController.addCallback(this); mDumpManager.registerNormalDumpable(TAG, this); } @@ -1317,6 +1321,8 @@ public class NetworkControllerImpl extends BroadcastReceiver int carrierId = TextUtils.isEmpty(carrierIdString) ? 0 : Integer.parseInt(carrierIdString); // Ensure we have enough sim slots + // TODO(b/336357360): This is the origination of the infinite loop bug, for those + // following along at home. List<SubscriptionInfo> subs = new ArrayList<>(); while (mMobileSignalControllers.size() <= slot) { int nextSlot = mMobileSignalControllers.size(); |