Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c208993 authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

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
parent 74b3b88d
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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);
    }
}
+35 −0
Original line number Diff line number Diff line
/*
 * 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 {
}
+24 −3
Original line number Diff line number Diff line
@@ -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();
+3 −1
Original line number Diff line number Diff line
@@ -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();

+20 −6
Original line number Diff line number Diff line
@@ -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();
Loading