Merge changes I0fdcc086,I6beaccc5,Ice240ec2 into tm-qpr-dev am: 05b4c5da28 am: 872cbb51f5
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20612833 Change-Id: I55eb3958394717b3cafabf57437fda89dcc2b1ca Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -78,6 +78,7 @@ import com.android.systemui.plugins.log.LogBuffer;
|
||||
import com.android.systemui.plugins.log.LogLevel;
|
||||
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.DataSaverController;
|
||||
import com.android.systemui.statusbar.policy.DataSaverControllerImpl;
|
||||
@@ -192,6 +193,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
private final Executor mBgExecutor;
|
||||
// Handler that all callbacks are made on.
|
||||
private final CallbackHandler mCallbackHandler;
|
||||
private final StatusBarPipelineFlags mStatusBarPipelineFlags;
|
||||
|
||||
private int mEmergencySource;
|
||||
private boolean mIsEmergency;
|
||||
@@ -242,6 +244,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
TelephonyListenerManager telephonyListenerManager,
|
||||
@Nullable WifiManager wifiManager,
|
||||
AccessPointControllerImpl accessPointController,
|
||||
StatusBarPipelineFlags statusBarPipelineFlags,
|
||||
DemoModeController demoModeController,
|
||||
CarrierConfigTracker carrierConfigTracker,
|
||||
WifiStatusTrackerFactory trackerFactory,
|
||||
@@ -260,6 +263,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
bgExecutor,
|
||||
callbackHandler,
|
||||
accessPointController,
|
||||
statusBarPipelineFlags,
|
||||
new DataUsageController(context),
|
||||
new SubscriptionDefaults(),
|
||||
deviceProvisionedController,
|
||||
@@ -287,6 +291,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
Executor bgExecutor,
|
||||
CallbackHandler callbackHandler,
|
||||
AccessPointControllerImpl accessPointController,
|
||||
StatusBarPipelineFlags statusBarPipelineFlags,
|
||||
DataUsageController dataUsageController,
|
||||
SubscriptionDefaults defaultsHandler,
|
||||
DeviceProvisionedController deviceProvisionedController,
|
||||
@@ -308,6 +313,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mBgLooper = bgLooper;
|
||||
mBgExecutor = bgExecutor;
|
||||
mCallbackHandler = callbackHandler;
|
||||
mStatusBarPipelineFlags = statusBarPipelineFlags;
|
||||
mDataSaverController = new DataSaverControllerImpl(context);
|
||||
mBroadcastDispatcher = broadcastDispatcher;
|
||||
mMobileFactory = mobileFactory;
|
||||
@@ -1333,7 +1339,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mWifiSignalController.notifyListeners();
|
||||
}
|
||||
String sims = args.getString("sims");
|
||||
if (sims != null) {
|
||||
if (sims != null && !mStatusBarPipelineFlags.useNewMobileIcons()) {
|
||||
int num = MathUtils.constrain(Integer.parseInt(sims), 1, 8);
|
||||
List<SubscriptionInfo> subs = new ArrayList<>();
|
||||
if (num != mMobileSignalControllers.size()) {
|
||||
@@ -1356,7 +1362,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
mCallbackHandler.setNoSims(mHasNoSubs, mSimDetected);
|
||||
}
|
||||
String mobile = args.getString("mobile");
|
||||
if (mobile != null) {
|
||||
if (mobile != null && !mStatusBarPipelineFlags.useNewMobileIcons()) {
|
||||
boolean show = mobile.equals("show");
|
||||
String datatype = args.getString("datatype");
|
||||
String slotString = args.getString("slot");
|
||||
@@ -1441,7 +1447,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
|
||||
controller.notifyListeners();
|
||||
}
|
||||
String carrierNetworkChange = args.getString("carriernetworkchange");
|
||||
if (carrierNetworkChange != null) {
|
||||
if (carrierNetworkChange != null && !mStatusBarPipelineFlags.useNewMobileIcons()) {
|
||||
boolean show = carrierNetworkChange.equals("show");
|
||||
for (int i = 0; i < mMobileSignalControllers.size(); i++) {
|
||||
MobileSignalController controller = mMobileSignalControllers.valueAt(i);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.statusbar.pipeline.dagger
|
||||
|
||||
import com.android.systemui.CoreStartable
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.log.table.TableLogBuffer
|
||||
import com.android.systemui.log.table.TableLogBufferFactory
|
||||
@@ -29,6 +30,7 @@ import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupR
|
||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupRepositoryImpl
|
||||
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
|
||||
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractorImpl
|
||||
import com.android.systemui.statusbar.pipeline.mobile.ui.MobileUiAdapter
|
||||
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxy
|
||||
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxyImpl
|
||||
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepository
|
||||
@@ -40,6 +42,8 @@ import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiIntera
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.multibindings.ClassKey
|
||||
import dagger.multibindings.IntoMap
|
||||
|
||||
@Module
|
||||
abstract class StatusBarPipelineModule {
|
||||
@@ -52,8 +56,7 @@ abstract class StatusBarPipelineModule {
|
||||
@Binds
|
||||
abstract fun connectivityRepository(impl: ConnectivityRepositoryImpl): ConnectivityRepository
|
||||
|
||||
@Binds
|
||||
abstract fun wifiRepository(impl: WifiRepositoryImpl): WifiRepository
|
||||
@Binds abstract fun wifiRepository(impl: WifiRepositoryImpl): WifiRepository
|
||||
|
||||
@Binds
|
||||
abstract fun wifiInteractor(impl: WifiInteractorImpl): WifiInteractor
|
||||
@@ -63,15 +66,18 @@ abstract class StatusBarPipelineModule {
|
||||
impl: MobileConnectionsRepositoryImpl
|
||||
): MobileConnectionsRepository
|
||||
|
||||
@Binds
|
||||
abstract fun userSetupRepository(impl: UserSetupRepositoryImpl): UserSetupRepository
|
||||
@Binds abstract fun userSetupRepository(impl: UserSetupRepositoryImpl): UserSetupRepository
|
||||
|
||||
@Binds
|
||||
abstract fun mobileMappingsProxy(impl: MobileMappingsProxyImpl): MobileMappingsProxy
|
||||
@Binds abstract fun mobileMappingsProxy(impl: MobileMappingsProxyImpl): MobileMappingsProxy
|
||||
|
||||
@Binds
|
||||
abstract fun mobileIconsInteractor(impl: MobileIconsInteractorImpl): MobileIconsInteractor
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ClassKey(MobileUiAdapter::class)
|
||||
abstract fun bindFeature(impl: MobileUiAdapter): CoreStartable
|
||||
|
||||
@Module
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.telephony.TelephonyManager.DATA_CONNECTED
|
||||
import android.telephony.TelephonyManager.DATA_CONNECTING
|
||||
import android.telephony.TelephonyManager.DATA_DISCONNECTED
|
||||
import android.telephony.TelephonyManager.DATA_DISCONNECTING
|
||||
import android.telephony.TelephonyManager.DATA_UNKNOWN
|
||||
import android.telephony.TelephonyManager.DataState
|
||||
|
||||
/** Internal enum representation of the telephony data connection states */
|
||||
@@ -28,6 +29,7 @@ enum class DataConnectionState(@DataState val dataState: Int) {
|
||||
Connecting(DATA_CONNECTING),
|
||||
Disconnected(DATA_DISCONNECTED),
|
||||
Disconnecting(DATA_DISCONNECTING),
|
||||
Unknown(DATA_UNKNOWN),
|
||||
}
|
||||
|
||||
fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState =
|
||||
@@ -36,5 +38,6 @@ fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState =
|
||||
DATA_CONNECTING -> DataConnectionState.Connecting
|
||||
DATA_DISCONNECTED -> DataConnectionState.Disconnected
|
||||
DATA_DISCONNECTING -> DataConnectionState.Disconnecting
|
||||
else -> throw IllegalArgumentException("unknown data state received")
|
||||
DATA_UNKNOWN -> DataConnectionState.Unknown
|
||||
else -> throw IllegalArgumentException("unknown data state received $this")
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.statusbar.pipeline.mobile.ui
|
||||
|
||||
import com.android.systemui.CoreStartable
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Application
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController
|
||||
@@ -29,9 +30,10 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.flow.mapLatest
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.stateIn
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* This class is intended to provide a context to collect on the
|
||||
@@ -50,9 +52,9 @@ constructor(
|
||||
interactor: MobileIconsInteractor,
|
||||
private val iconController: StatusBarIconController,
|
||||
private val iconsViewModelFactory: MobileIconsViewModel.Factory,
|
||||
@Application scope: CoroutineScope,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val statusBarPipelineFlags: StatusBarPipelineFlags,
|
||||
) {
|
||||
) : CoreStartable {
|
||||
private val mobileSubIds: Flow<List<Int>> =
|
||||
interactor.filteredSubscriptions.mapLatest { infos ->
|
||||
infos.map { subscriptionInfo -> subscriptionInfo.subscriptionId }
|
||||
@@ -66,18 +68,19 @@ constructor(
|
||||
* NOTE: this should go away as the view presenter learns more about this data pipeline
|
||||
*/
|
||||
private val mobileSubIdsState: StateFlow<List<Int>> =
|
||||
mobileSubIds
|
||||
.onEach {
|
||||
// Only notify the icon controller if we want to *render* the new icons.
|
||||
// Note that this flow may still run if
|
||||
// [statusBarPipelineFlags.runNewMobileIconsBackend] is true because we may want to
|
||||
// get the logging data without rendering.
|
||||
if (statusBarPipelineFlags.useNewMobileIcons()) {
|
||||
// Notify the icon controller here so that it knows to add icons
|
||||
iconController.setNewMobileIconSubIds(it)
|
||||
}
|
||||
mobileSubIds.stateIn(scope, SharingStarted.WhileSubscribed(), listOf())
|
||||
|
||||
override fun start() {
|
||||
// Only notify the icon controller if we want to *render* the new icons.
|
||||
// Note that this flow may still run if
|
||||
// [statusBarPipelineFlags.runNewMobileIconsBackend] is true because we may want to
|
||||
// get the logging data without rendering.
|
||||
if (statusBarPipelineFlags.useNewMobileIcons()) {
|
||||
scope.launch {
|
||||
mobileSubIds.collectLatest { iconController.setNewMobileIconSubIds(it) }
|
||||
}
|
||||
.stateIn(scope, SharingStarted.WhileSubscribed(), listOf())
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a MobileIconsViewModel for a given [IconManager], and bind it to to the manager's
|
||||
|
||||
@@ -72,6 +72,7 @@ import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.plugins.log.LogBuffer;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags;
|
||||
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener;
|
||||
@@ -245,6 +246,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(StatusBarPipelineFlags.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mMockProvisionController,
|
||||
|
||||
@@ -49,6 +49,7 @@ import com.android.settingslib.mobile.TelephonyIcons;
|
||||
import com.android.settingslib.net.DataUsageController;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.plugins.log.LogBuffer;
|
||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
|
||||
@@ -150,6 +151,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(StatusBarPipelineFlags.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
|
||||
@@ -44,6 +44,7 @@ import com.android.settingslib.net.DataUsageController;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.plugins.log.LogBuffer;
|
||||
import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.util.CarrierConfigTracker;
|
||||
|
||||
@@ -78,6 +79,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(StatusBarPipelineFlags.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mMockProvisionController,
|
||||
@@ -115,6 +117,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(StatusBarPipelineFlags.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mMockProvisionController,
|
||||
@@ -150,6 +153,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(StatusBarPipelineFlags.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
@@ -188,6 +192,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(StatusBarPipelineFlags.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
@@ -274,6 +279,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mFakeExecutor,
|
||||
mCallbackHandler,
|
||||
mock(AccessPointControllerImpl.class),
|
||||
mock(StatusBarPipelineFlags.class),
|
||||
mock(DataUsageController.class),
|
||||
mMockSubDefaults,
|
||||
mock(DeviceProvisionedController.class),
|
||||
|
||||
@@ -31,6 +31,7 @@ import android.telephony.TelephonyManager.DATA_CONNECTED
|
||||
import android.telephony.TelephonyManager.DATA_CONNECTING
|
||||
import android.telephony.TelephonyManager.DATA_DISCONNECTED
|
||||
import android.telephony.TelephonyManager.DATA_DISCONNECTING
|
||||
import android.telephony.TelephonyManager.DATA_UNKNOWN
|
||||
import android.telephony.TelephonyManager.NETWORK_TYPE_LTE
|
||||
import android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN
|
||||
import androidx.test.filters.SmallTest
|
||||
@@ -220,6 +221,21 @@ class MobileConnectionRepositoryTest : SysuiTestCase() {
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFlowForSubId_dataConnectionState_unknown() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
var latest: MobileSubscriptionModel? = null
|
||||
val job = underTest.subscriptionModelFlow.onEach { latest = it }.launchIn(this)
|
||||
|
||||
val callback =
|
||||
getTelephonyCallbackForType<TelephonyCallback.DataConnectionStateListener>()
|
||||
callback.onDataConnectionStateChanged(DATA_UNKNOWN, 200 /* unused */)
|
||||
|
||||
assertThat(latest?.dataConnectionState).isEqualTo(DataConnectionState.Unknown)
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFlowForSubId_dataActivity() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
|
||||
Reference in New Issue
Block a user