Logs aux dump of status bar telephony broadcasts.
1. Adds auxillary dumpsys logging capabilities to NetworkControllerImpl 2. Adds logging statements when any broadcast is received Test: Toggled airplane mode on and off. Ran dumpsys using `$ adb shell dumpsys activity service com.android.systemui/.dump.SystemUIAuxiliaryDumpService`, saw some logging statements Bug: 234146317 Fixes: 234146317 Change-Id: I44f69a28911b61bd42d9c68a733ed17d8ca24de2
This commit is contained in:
@@ -251,4 +251,14 @@ public class LogModule {
|
||||
return new LogcatEchoTrackerProd();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a {@link LogBuffer} for use by the status bar network controller.
|
||||
*/
|
||||
@Provides
|
||||
@SysUISingleton
|
||||
@StatusBarNetworkControllerLog
|
||||
public static LogBuffer provideStatusBarNetworkControllerBuffer(LogBufferFactory factory) {
|
||||
return factory.create("StatusBarNetworkControllerLog", 20);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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.log.dagger;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
import com.android.systemui.log.LogBuffer;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
import javax.inject.Qualifier;
|
||||
|
||||
/**
|
||||
* A {@link LogBuffer} for {@link com.android.systemui.statusbar.connectivity.NetworkController}
|
||||
*/
|
||||
@Qualifier
|
||||
@Documented
|
||||
@Retention(RUNTIME)
|
||||
public @interface StatusBarNetworkControllerLog {
|
||||
}
|
||||
@@ -73,6 +73,9 @@ import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.flags.Flags;
|
||||
import com.android.systemui.log.LogBuffer;
|
||||
import com.android.systemui.log.LogLevel;
|
||||
import com.android.systemui.log.dagger.StatusBarNetworkControllerLog;
|
||||
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
|
||||
import com.android.systemui.settings.CurrentUserTracker;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
@@ -98,6 +101,8 @@ import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import kotlin.Unit;
|
||||
|
||||
/** Platform implementation of the network controller. **/
|
||||
@SysUISingleton
|
||||
public class NetworkControllerImpl extends BroadcastReceiver
|
||||
@@ -134,6 +139,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
private final CarrierConfigTracker mCarrierConfigTracker;
|
||||
private final FeatureFlags mFeatureFlags;
|
||||
private final DumpManager mDumpManager;
|
||||
private final LogBuffer mLogBuffer;
|
||||
|
||||
private TelephonyCallback.ActiveDataSubscriptionIdListener mPhoneStateListener;
|
||||
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
@@ -232,7 +238,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
@Main Handler handler,
|
||||
InternetDialogFactory internetDialogFactory,
|
||||
FeatureFlags featureFlags,
|
||||
DumpManager dumpManager) {
|
||||
DumpManager dumpManager,
|
||||
@StatusBarNetworkControllerLog LogBuffer logBuffer) {
|
||||
this(context, connectivityManager,
|
||||
telephonyManager,
|
||||
telephonyListenerManager,
|
||||
@@ -252,7 +259,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
trackerFactory,
|
||||
handler,
|
||||
featureFlags,
|
||||
dumpManager);
|
||||
dumpManager,
|
||||
logBuffer);
|
||||
mReceiverHandler.post(mRegisterListeners);
|
||||
mInternetDialogFactory = internetDialogFactory;
|
||||
}
|
||||
@@ -277,7 +285,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
WifiStatusTrackerFactory trackerFactory,
|
||||
@Main Handler handler,
|
||||
FeatureFlags featureFlags,
|
||||
DumpManager dumpManager
|
||||
DumpManager dumpManager,
|
||||
LogBuffer logBuffer
|
||||
) {
|
||||
mContext = context;
|
||||
mTelephonyListenerManager = telephonyListenerManager;
|
||||
@@ -298,6 +307,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mCarrierConfigTracker = carrierConfigTracker;
|
||||
mFeatureFlags = featureFlags;
|
||||
mDumpManager = dumpManager;
|
||||
mLogBuffer = logBuffer;
|
||||
|
||||
// telephony
|
||||
mPhone = telephonyManager;
|
||||
@@ -771,6 +781,17 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
Log.d(TAG, "onReceive: intent=" + intent);
|
||||
}
|
||||
final String action = intent.getAction();
|
||||
mLogBuffer.log(
|
||||
TAG,
|
||||
LogLevel.INFO,
|
||||
logMessage -> {
|
||||
logMessage.setStr1(action);
|
||||
return Unit.INSTANCE;
|
||||
},
|
||||
logMessage -> String.format(
|
||||
Locale.US,
|
||||
"Received broadcast with action \"%s\"",
|
||||
logMessage.getStr1()));
|
||||
switch (action) {
|
||||
case ConnectivityManager.CONNECTIVITY_ACTION:
|
||||
updateConnectivity();
|
||||
|
||||
@@ -72,6 +72,7 @@ import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.flags.Flags;
|
||||
import com.android.systemui.log.LogBuffer;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
|
||||
import com.android.systemui.telephony.TelephonyListenerManager;
|
||||
@@ -244,7 +245,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
mWifiStatusTrackerFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class)
|
||||
mock(DumpManager.class),
|
||||
mock(LogBuffer.class)
|
||||
);
|
||||
setupNetworkController();
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ import android.testing.TestableLooper.RunWithLooper;
|
||||
import com.android.settingslib.mobile.TelephonyIcons;
|
||||
import com.android.settingslib.net.DataUsageController;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.log.LogBuffer;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
|
||||
@@ -125,16 +126,29 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
|
||||
public void test4gDataIcon() {
|
||||
// Switch to showing 4g icon and re-initialize the NetworkController.
|
||||
mConfig.show4gForLte = true;
|
||||
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm,
|
||||
mTelephonyListenerManager, mMockWm,
|
||||
mMockSm, mConfig, Looper.getMainLooper(), mFakeExecutor, mCallbackHandler,
|
||||
mNetworkController = new NetworkControllerImpl(
|
||||
mContext,
|
||||
mMockCm,
|
||||
mMockTm,
|
||||
mTelephonyListenerManager,
|
||||
mMockWm,
|
||||
mMockSm,
|
||||
mConfig,
|
||||
Looper.getMainLooper(),
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(DataUsageController.class), mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class), mMockBd, mDemoModeController,
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
mMockBd,
|
||||
mDemoModeController,
|
||||
mock(CarrierConfigTracker.class),
|
||||
mWifiStatusTrackerFactory,
|
||||
new Handler(TestableLooper.get(this).getLooper()),
|
||||
mFeatureFlags, mock(DumpManager.class));
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
mock(LogBuffer.class));
|
||||
setupNetworkController();
|
||||
|
||||
setupDefaultSignal();
|
||||
|
||||
@@ -43,6 +43,7 @@ import com.android.settingslib.mobile.TelephonyIcons;
|
||||
import com.android.settingslib.net.DataUsageController;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.log.LogBuffer;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
|
||||
@@ -86,7 +87,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mWifiStatusTrackerFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class)
|
||||
mock(DumpManager.class),
|
||||
mock(LogBuffer.class)
|
||||
);
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
|
||||
@@ -100,7 +102,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
when(mMockProvisionController.isCurrentUserSetup()).thenReturn(true);
|
||||
|
||||
// WHEN - a NetworkController is created
|
||||
mNetworkController = new NetworkControllerImpl(mContext,
|
||||
mNetworkController = new NetworkControllerImpl(
|
||||
mContext,
|
||||
mMockCm,
|
||||
mMockTm,
|
||||
mTelephonyListenerManager,
|
||||
@@ -120,8 +123,8 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mWifiStatusTrackerFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class)
|
||||
);
|
||||
mock(DumpManager.class),
|
||||
mock(LogBuffer.class));
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
|
||||
// THEN - NetworkController claims the user is not setup
|
||||
@@ -133,15 +136,29 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
// Turn off mobile network support.
|
||||
when(mMockTm.isDataCapable()).thenReturn(false);
|
||||
// Create a new NetworkController as this is currently handled in constructor.
|
||||
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm,
|
||||
mTelephonyListenerManager, mMockWm, mMockSm, mConfig,
|
||||
Looper.getMainLooper(), mFakeExecutor, mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
|
||||
mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd,
|
||||
mDemoModeController, mock(CarrierConfigTracker.class),
|
||||
mNetworkController = new NetworkControllerImpl(
|
||||
mContext,
|
||||
mMockCm,
|
||||
mMockTm,
|
||||
mTelephonyListenerManager,
|
||||
mMockWm,
|
||||
mMockSm,
|
||||
mConfig,
|
||||
Looper.getMainLooper(),
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
mMockBd,
|
||||
mDemoModeController,
|
||||
mock(CarrierConfigTracker.class),
|
||||
mWifiStatusTrackerFactory,
|
||||
mMainHandler, mFeatureFlags,
|
||||
mock(DumpManager.class));
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
mock(LogBuffer.class));
|
||||
setupNetworkController();
|
||||
|
||||
verifyLastMobileDataIndicators(false, -1, 0);
|
||||
@@ -156,14 +173,29 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
when(mMockTm.getServiceState()).thenReturn(mServiceState);
|
||||
when(mMockSm.getCompleteActiveSubscriptionInfoList()).thenReturn(Collections.emptyList());
|
||||
|
||||
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm,
|
||||
mTelephonyListenerManager, mMockWm, mMockSm, mConfig,
|
||||
Looper.getMainLooper(), mFakeExecutor, mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
|
||||
mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd,
|
||||
mDemoModeController, mock(CarrierConfigTracker.class),
|
||||
mNetworkController = new NetworkControllerImpl(
|
||||
mContext,
|
||||
mMockCm,
|
||||
mMockTm,
|
||||
mTelephonyListenerManager,
|
||||
mMockWm,
|
||||
mMockSm,
|
||||
mConfig,
|
||||
Looper.getMainLooper(),
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
mMockBd,
|
||||
mDemoModeController,
|
||||
mock(CarrierConfigTracker.class),
|
||||
mWifiStatusTrackerFactory,
|
||||
mMainHandler, mFeatureFlags, mock(DumpManager.class));
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
mock(LogBuffer.class));
|
||||
mNetworkController.registerListeners();
|
||||
|
||||
// Wait for the main looper to execute the previous command
|
||||
@@ -226,14 +258,29 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
// Turn off mobile network support.
|
||||
when(mMockTm.isDataCapable()).thenReturn(false);
|
||||
// Create a new NetworkController as this is currently handled in constructor.
|
||||
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm,
|
||||
mTelephonyListenerManager, mMockWm, mMockSm, mConfig,
|
||||
Looper.getMainLooper(), mFakeExecutor, mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
|
||||
mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd,
|
||||
mDemoModeController, mock(CarrierConfigTracker.class),
|
||||
mNetworkController = new NetworkControllerImpl(
|
||||
mContext,
|
||||
mMockCm,
|
||||
mMockTm,
|
||||
mTelephonyListenerManager,
|
||||
mMockWm,
|
||||
mMockSm,
|
||||
mConfig,
|
||||
Looper.getMainLooper(),
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
mMockBd,
|
||||
mDemoModeController,
|
||||
mock(CarrierConfigTracker.class),
|
||||
mWifiStatusTrackerFactory,
|
||||
mMainHandler, mFeatureFlags, mock(DumpManager.class));
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
mock(LogBuffer.class));
|
||||
setupNetworkController();
|
||||
|
||||
// No Subscriptions.
|
||||
|
||||
Reference in New Issue
Block a user