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

Commit cb727584 authored by Alejandro Nijamkin's avatar Alejandro Nijamkin Committed by Android (Google) Code Review
Browse files

Merge changes from topic "b234146317_statusbar_network_improved_dumpsys-tm-qpr-dev" into tm-qpr-dev

* changes:
  Logs aux dump of status bar telephony broadcasts.
  Adds logging for signal controller set changes
  Adds active mobile data sub to dumpsys
parents 26e72dd6 8c208993
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 {
}
+51 −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;
@@ -94,9 +97,12 @@ import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;

import javax.inject.Inject;

import kotlin.Unit;

/** Platform implementation of the network controller. **/
@SysUISingleton
public class NetworkControllerImpl extends BroadcastReceiver
@@ -133,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;
@@ -231,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,
@@ -251,7 +259,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
                trackerFactory,
                handler,
                featureFlags,
                dumpManager);
                dumpManager,
                logBuffer);
        mReceiverHandler.post(mRegisterListeners);
        mInternetDialogFactory = internetDialogFactory;
    }
@@ -276,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;
@@ -297,6 +307,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
        mCarrierConfigTracker = carrierConfigTracker;
        mFeatureFlags = featureFlags;
        mDumpManager = dumpManager;
        mLogBuffer = logBuffer;

        // telephony
        mPhone = telephonyManager;
@@ -770,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();
@@ -937,6 +959,12 @@ public class NetworkControllerImpl extends BroadcastReceiver
                        : lhs.getSimSlotIndex() - rhs.getSimSlotIndex();
            }
        });
        Log.i(
                TAG,
                String.format(
                        Locale.US,
                        "Subscriptions changed: %s",
                        createSubscriptionChangeStatement(mCurrentSubscriptions, subscriptions)));
        mCurrentSubscriptions = subscriptions;

        SparseArray<MobileSignalController> cachedControllers =
@@ -1154,6 +1182,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
        pw.print("  hasVoiceCallingFeature()=");
        pw.println(hasVoiceCallingFeature());
        pw.println("  mListening=" + mListening);
        pw.println("  mActiveMobileDataSubscription=" + mActiveMobileDataSubscription);

        pw.println("  - connectivity ------");
        pw.print("  mConnectedTransports=");
@@ -1473,4 +1502,23 @@ public class NetworkControllerImpl extends BroadcastReceiver
     * get created will also run on the BG Looper.
     */
    private final Runnable mRegisterListeners = () -> registerListeners();

    /** Returns a logging statement for the given old and new list of {@link SubscriptionInfo} */
    private static String createSubscriptionChangeStatement(
            final @Nullable List<SubscriptionInfo> oldSubscriptions,
            final @Nullable List<SubscriptionInfo> newSubscriptions) {
        return String.format(
                Locale.US,
                "old=%s, new=%s",
                toSubscriptionIds(oldSubscriptions),
                toSubscriptionIds(newSubscriptions));
    }

    /** Returns to a list of subscription IDs for the given list of {@link SubscriptionInfo} */
    @Nullable
    private static List<Integer> toSubscriptionIds(
            final @Nullable List<SubscriptionInfo> subscriptions) {
        return subscriptions != null ? subscriptions.stream().map(
                SubscriptionInfo::getSubscriptionId).collect(Collectors.toList()) : null;
    }
}
+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