diff options
10 files changed, 222 insertions, 108 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java index 86f6ff850409..9095d6f4e369 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java @@ -18,6 +18,7 @@ import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_ICON import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_MOBILE; import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_MOBILE_NEW; import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_WIFI; +import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_WIFI_NEW; import android.annotation.Nullable; import android.content.Context; @@ -53,8 +54,9 @@ import com.android.systemui.statusbar.pipeline.mobile.ui.MobileUiAdapter; import com.android.systemui.statusbar.pipeline.mobile.ui.binder.MobileIconsBinder; import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView; import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel; +import com.android.systemui.statusbar.pipeline.wifi.ui.WifiUiAdapter; import com.android.systemui.statusbar.pipeline.wifi.ui.view.ModernStatusBarWifiView; -import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel; +import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel; import com.android.systemui.util.Assert; import java.util.ArrayList; @@ -84,7 +86,18 @@ public interface StatusBarIconController { /** */ void setIcon(String slot, StatusBarIcon icon); /** */ - void setSignalIcon(String slot, WifiIconState state); + void setWifiIcon(String slot, WifiIconState state); + + /** + * Sets up a wifi icon using the new data pipeline. No effect if the wifi icon has already been + * set up (inflated and added to the view hierarchy). + * + * This method completely replaces {@link #setWifiIcon} with the information from the new wifi + * data pipeline. Icons will automatically keep their state up to date, so we don't have to + * worry about funneling state objects through anymore. + */ + void setNewWifiIcon(); + /** */ void setMobileIcons(String slot, List<MobileIconState> states); @@ -151,14 +164,14 @@ public interface StatusBarIconController { LinearLayout linearLayout, StatusBarLocation location, StatusBarPipelineFlags statusBarPipelineFlags, - WifiViewModel wifiViewModel, + WifiUiAdapter wifiUiAdapter, MobileUiAdapter mobileUiAdapter, MobileContextProvider mobileContextProvider, DarkIconDispatcher darkIconDispatcher) { super(linearLayout, location, statusBarPipelineFlags, - wifiViewModel, + wifiUiAdapter, mobileUiAdapter, mobileContextProvider); mIconHPadding = mContext.getResources().getDimensionPixelSize( @@ -218,7 +231,7 @@ public interface StatusBarIconController { @SysUISingleton public static class Factory { private final StatusBarPipelineFlags mStatusBarPipelineFlags; - private final WifiViewModel mWifiViewModel; + private final WifiUiAdapter mWifiUiAdapter; private final MobileContextProvider mMobileContextProvider; private final MobileUiAdapter mMobileUiAdapter; private final DarkIconDispatcher mDarkIconDispatcher; @@ -226,12 +239,12 @@ public interface StatusBarIconController { @Inject public Factory( StatusBarPipelineFlags statusBarPipelineFlags, - WifiViewModel wifiViewModel, + WifiUiAdapter wifiUiAdapter, MobileContextProvider mobileContextProvider, MobileUiAdapter mobileUiAdapter, DarkIconDispatcher darkIconDispatcher) { mStatusBarPipelineFlags = statusBarPipelineFlags; - mWifiViewModel = wifiViewModel; + mWifiUiAdapter = wifiUiAdapter; mMobileContextProvider = mobileContextProvider; mMobileUiAdapter = mobileUiAdapter; mDarkIconDispatcher = darkIconDispatcher; @@ -242,7 +255,7 @@ public interface StatusBarIconController { group, location, mStatusBarPipelineFlags, - mWifiViewModel, + mWifiUiAdapter, mMobileUiAdapter, mMobileContextProvider, mDarkIconDispatcher); @@ -260,14 +273,14 @@ public interface StatusBarIconController { ViewGroup group, StatusBarLocation location, StatusBarPipelineFlags statusBarPipelineFlags, - WifiViewModel wifiViewModel, + WifiUiAdapter wifiUiAdapter, MobileUiAdapter mobileUiAdapter, MobileContextProvider mobileContextProvider ) { super(group, location, statusBarPipelineFlags, - wifiViewModel, + wifiUiAdapter, mobileUiAdapter, mobileContextProvider); } @@ -302,19 +315,19 @@ public interface StatusBarIconController { @SysUISingleton public static class Factory { private final StatusBarPipelineFlags mStatusBarPipelineFlags; - private final WifiViewModel mWifiViewModel; + private final WifiUiAdapter mWifiUiAdapter; private final MobileContextProvider mMobileContextProvider; private final MobileUiAdapter mMobileUiAdapter; @Inject public Factory( StatusBarPipelineFlags statusBarPipelineFlags, - WifiViewModel wifiViewModel, + WifiUiAdapter wifiUiAdapter, MobileUiAdapter mobileUiAdapter, MobileContextProvider mobileContextProvider ) { mStatusBarPipelineFlags = statusBarPipelineFlags; - mWifiViewModel = wifiViewModel; + mWifiUiAdapter = wifiUiAdapter; mMobileUiAdapter = mobileUiAdapter; mMobileContextProvider = mobileContextProvider; } @@ -324,7 +337,7 @@ public interface StatusBarIconController { group, location, mStatusBarPipelineFlags, - mWifiViewModel, + mWifiUiAdapter, mMobileUiAdapter, mMobileContextProvider); } @@ -336,10 +349,9 @@ public interface StatusBarIconController { */ class IconManager implements DemoModeCommandReceiver { protected final ViewGroup mGroup; - private final StatusBarLocation mLocation; private final StatusBarPipelineFlags mStatusBarPipelineFlags; - private final WifiViewModel mWifiViewModel; private final MobileContextProvider mMobileContextProvider; + private final LocationBasedWifiViewModel mWifiViewModel; private final MobileIconsViewModel mMobileIconsViewModel; protected final Context mContext; @@ -359,14 +371,12 @@ public interface StatusBarIconController { ViewGroup group, StatusBarLocation location, StatusBarPipelineFlags statusBarPipelineFlags, - WifiViewModel wifiViewModel, + WifiUiAdapter wifiUiAdapter, MobileUiAdapter mobileUiAdapter, MobileContextProvider mobileContextProvider ) { mGroup = group; - mLocation = location; mStatusBarPipelineFlags = statusBarPipelineFlags; - mWifiViewModel = wifiViewModel; mMobileContextProvider = mobileContextProvider; mContext = group.getContext(); mIconSize = mContext.getResources().getDimensionPixelSize( @@ -379,6 +389,12 @@ public interface StatusBarIconController { } else { mMobileIconsViewModel = null; } + + if (statusBarPipelineFlags.useNewWifiIcon()) { + mWifiViewModel = wifiUiAdapter.bindGroup(mGroup, location); + } else { + mWifiViewModel = null; + } } public boolean isDemoable() { @@ -429,6 +445,9 @@ public interface StatusBarIconController { case TYPE_WIFI: return addWifiIcon(index, slot, holder.getWifiState()); + case TYPE_WIFI_NEW: + return addNewWifiIcon(index, slot); + case TYPE_MOBILE: return addMobileIcon(index, slot, holder.getMobileState()); @@ -450,16 +469,13 @@ public interface StatusBarIconController { @VisibleForTesting protected StatusIconDisplayable addWifiIcon(int index, String slot, WifiIconState state) { - final BaseStatusBarFrameLayout view; if (mStatusBarPipelineFlags.useNewWifiIcon()) { - view = onCreateModernStatusBarWifiView(slot); - // When [ModernStatusBarWifiView] is created, it will automatically apply the - // correct view state so we don't need to call applyWifiState. - } else { - StatusBarWifiView wifiView = onCreateStatusBarWifiView(slot); - wifiView.applyWifiState(state); - view = wifiView; + throw new IllegalStateException("Attempting to add a mobile icon while the new " + + "icons are enabled is not supported"); } + + final StatusBarWifiView view = onCreateStatusBarWifiView(slot); + view.applyWifiState(state); mGroup.addView(view, index, onCreateLayoutParams()); if (mIsInDemoMode) { @@ -468,6 +484,17 @@ public interface StatusBarIconController { return view; } + protected StatusIconDisplayable addNewWifiIcon(int index, String slot) { + if (!mStatusBarPipelineFlags.useNewWifiIcon()) { + throw new IllegalStateException("Attempting to add a wifi icon using the new" + + "pipeline, but the enabled flag is false."); + } + + ModernStatusBarWifiView view = onCreateModernStatusBarWifiView(slot); + mGroup.addView(view, index, onCreateLayoutParams()); + return view; + } + @VisibleForTesting protected StatusIconDisplayable addMobileIcon( int index, @@ -523,8 +550,7 @@ public interface StatusBarIconController { } private ModernStatusBarWifiView onCreateModernStatusBarWifiView(String slot) { - return ModernStatusBarWifiView.constructAndBind( - mContext, slot, mWifiViewModel, mLocation); + return ModernStatusBarWifiView.constructAndBind(mContext, slot, mWifiViewModel); } private StatusBarMobileView onCreateStatusBarMobileView(int subId, String slot) { @@ -600,7 +626,8 @@ public interface StatusBarIconController { onSetMobileIcon(viewIndex, holder.getMobileState()); return; case TYPE_MOBILE_NEW: - // Nothing, the icon updates itself now + case TYPE_WIFI_NEW: + // Nothing, the new icons update themselves return; default: break; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java index 31e960ad7d69..674e5747e331 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java @@ -195,12 +195,13 @@ public class StatusBarIconControllerImpl implements Tunable, } } - /** - * Signal icons need to be handled differently, because they can be - * composite views - */ @Override - public void setSignalIcon(String slot, WifiIconState state) { + public void setWifiIcon(String slot, WifiIconState state) { + if (mStatusBarPipelineFlags.useNewWifiIcon()) { + Log.d(TAG, "ignoring old pipeline callback because the new wifi icon is enabled"); + return; + } + if (state == null) { removeIcon(slot, 0); return; @@ -216,6 +217,24 @@ public class StatusBarIconControllerImpl implements Tunable, } } + + @Override + public void setNewWifiIcon() { + if (!mStatusBarPipelineFlags.useNewWifiIcon()) { + Log.d(TAG, "ignoring new pipeline callback because the new wifi icon is disabled"); + return; + } + + String slot = mContext.getString(com.android.internal.R.string.status_bar_wifi); + StatusBarIconHolder holder = mStatusBarIconList.getIconHolder(slot, /* tag= */ 0); + if (holder == null) { + holder = StatusBarIconHolder.forNewWifiIcon(); + setIcon(slot, holder); + } else { + // Don't have to do anything in the new world + } + } + /** * Accept a list of MobileIconStates, which all live in the same slot(?!), and then are sorted * by subId. Don't worry this definitely makes sense and works. @@ -225,7 +244,7 @@ public class StatusBarIconControllerImpl implements Tunable, @Override public void setMobileIcons(String slot, List<MobileIconState> iconStates) { if (mStatusBarPipelineFlags.useNewMobileIcons()) { - Log.d(TAG, "ignoring old pipeline callbacks, because the new " + Log.d(TAG, "ignoring old pipeline callbacks, because the new mobile " + "icons are enabled"); return; } @@ -251,10 +270,11 @@ public class StatusBarIconControllerImpl implements Tunable, public void setNewMobileIconSubIds(List<Integer> subIds) { if (!mStatusBarPipelineFlags.useNewMobileIcons()) { Log.d(TAG, "ignoring new pipeline callback, " - + "since the new icons are disabled"); + + "since the new mobile icons are disabled"); return; } - Slot mobileSlot = mStatusBarIconList.getSlot("mobile"); + String slotName = mContext.getString(com.android.internal.R.string.status_bar_mobile); + Slot mobileSlot = mStatusBarIconList.getSlot(slotName); Collections.reverse(subIds); @@ -262,7 +282,7 @@ public class StatusBarIconControllerImpl implements Tunable, StatusBarIconHolder holder = mobileSlot.getHolderForTag(subId); if (holder == null) { holder = StatusBarIconHolder.fromSubIdForModernMobileIcon(subId); - setIcon("mobile", holder); + setIcon(slotName, holder); } else { // Don't have to do anything in the new world } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java index 68a203e30f98..f6c0da8da8c0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java @@ -51,11 +51,24 @@ public class StatusBarIconHolder { @Deprecated public static final int TYPE_MOBILE_NEW = 3; + /** + * TODO (b/238425913): address this once the new pipeline is in place + * This type exists so that the new wifi pipeline can be used to inform the old view system + * about the existence of the wifi icon. The design of the new pipeline should allow for removal + * of this icon holder type, and obsolete the need for this entire class. + * + * @deprecated This field only exists so the new status bar pipeline can interface with the + * view holder system. + */ + @Deprecated + public static final int TYPE_WIFI_NEW = 4; + @IntDef({ TYPE_ICON, TYPE_WIFI, TYPE_MOBILE, - TYPE_MOBILE_NEW + TYPE_MOBILE_NEW, + TYPE_WIFI_NEW }) @Retention(RetentionPolicy.SOURCE) @interface IconType {} @@ -95,6 +108,13 @@ public class StatusBarIconHolder { return holder; } + /** Creates a new holder with for the new wifi icon. */ + public static StatusBarIconHolder forNewWifiIcon() { + StatusBarIconHolder holder = new StatusBarIconHolder(); + holder.mType = TYPE_WIFI_NEW; + return holder; + } + /** */ public static StatusBarIconHolder fromMobileIconState(MobileIconState state) { StatusBarIconHolder holder = new StatusBarIconHolder(); @@ -172,9 +192,10 @@ public class StatusBarIconHolder { case TYPE_MOBILE: return mMobileState.visible; case TYPE_MOBILE_NEW: - //TODO (b/249790733), the new pipeline can control visibility via the ViewModel + case TYPE_WIFI_NEW: + // The new pipeline controls visibilities via the view model and view binder, so + // this is effectively an unused return value. return true; - default: return true; } @@ -199,7 +220,9 @@ public class StatusBarIconHolder { break; case TYPE_MOBILE_NEW: - //TODO (b/249790733), the new pipeline can control visibility via the ViewModel + case TYPE_WIFI_NEW: + // The new pipeline controls visibilities via the view model and view binder, so + // ignore setVisible. break; } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java index 492734e93dca..de7bf3c021dd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java @@ -212,7 +212,7 @@ public class StatusBarSignalPolicy implements SignalCallback, private void updateWifiIconWithState(WifiIconState state) { if (DEBUG) Log.d(TAG, "WifiIconState: " + state == null ? "" : state.toString()); if (state.visible && state.resId > 0) { - mIconController.setSignalIcon(mSlotWifi, state); + mIconController.setWifiIcon(mSlotWifi, state); mIconController.setIconVisibility(mSlotWifi, true); } else { mIconController.setIconVisibility(mSlotWifi, false); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/WifiUiAdapter.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/WifiUiAdapter.kt new file mode 100644 index 000000000000..bce92b951d23 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/WifiUiAdapter.kt @@ -0,0 +1,80 @@ +/* + * 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.statusbar.pipeline.wifi.ui + +import android.view.ViewGroup +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.repeatOnLifecycle +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.lifecycle.repeatWhenAttached +import com.android.systemui.statusbar.phone.StatusBarIconController +import com.android.systemui.statusbar.phone.StatusBarLocation +import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel +import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel +import javax.inject.Inject +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch + +/** + * This class serves as a bridge between the old UI classes and the new data pipeline. + * + * Once the new pipeline notifies [wifiViewModel] that the wifi icon should be visible, this class + * notifies [iconController] to inflate the wifi icon (if needed). After that, the [wifiViewModel] + * has sole responsibility for updating the wifi icon drawable, visibility, etc. and the + * [iconController] will not do any updates to the icon. + */ +@SysUISingleton +class WifiUiAdapter +@Inject +constructor( + private val iconController: StatusBarIconController, + private val wifiViewModel: WifiViewModel, +) { + /** + * Binds the container for all the status bar icons to a view model, so that we inflate the wifi + * view once we receive a valid icon from the data pipeline. + * + * NOTE: This should go away as we better integrate the data pipeline with the UI. + * + * @return the view model used for this particular group in the given [location]. + */ + fun bindGroup( + statusBarIconGroup: ViewGroup, + location: StatusBarLocation, + ): LocationBasedWifiViewModel { + val locationViewModel = + when (location) { + StatusBarLocation.HOME -> wifiViewModel.home + StatusBarLocation.KEYGUARD -> wifiViewModel.keyguard + StatusBarLocation.QS -> wifiViewModel.qs + } + + statusBarIconGroup.repeatWhenAttached { + repeatOnLifecycle(Lifecycle.State.STARTED) { + launch { + locationViewModel.wifiIcon.collect { wifiIcon -> + if (wifiIcon != null) { + iconController.setNewWifiIcon() + } + } + } + } + } + + return locationViewModel + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt index 25537b948517..345f8cb75660 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt @@ -30,9 +30,7 @@ import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN import com.android.systemui.statusbar.StatusBarIconView.STATE_ICON -import com.android.systemui.statusbar.phone.StatusBarLocation import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel -import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.collect @@ -62,26 +60,9 @@ object WifiViewBinder { fun onVisibilityStateChanged(@StatusBarIconView.VisibleState state: Int) } - /** - * Binds the view to the appropriate view-model based on the given location. The view will - * continue to be updated following updates from the view-model. - */ - @JvmStatic - fun bind( - view: ViewGroup, - wifiViewModel: WifiViewModel, - location: StatusBarLocation, - ): Binding { - return when (location) { - StatusBarLocation.HOME -> bind(view, wifiViewModel.home) - StatusBarLocation.KEYGUARD -> bind(view, wifiViewModel.keyguard) - StatusBarLocation.QS -> bind(view, wifiViewModel.qs) - } - } - /** Binds the view to the view-model, continuing to update the former based on the latter. */ @JvmStatic - private fun bind( + fun bind( view: ViewGroup, viewModel: LocationBasedWifiViewModel, ): Binding { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt index 0cd9bd7d97b0..a45076b53356 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt @@ -26,9 +26,8 @@ import com.android.systemui.statusbar.BaseStatusBarFrameLayout import com.android.systemui.statusbar.StatusBarIconView import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN -import com.android.systemui.statusbar.phone.StatusBarLocation import com.android.systemui.statusbar.pipeline.wifi.ui.binder.WifiViewBinder -import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel +import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel /** * A new and more modern implementation of [com.android.systemui.statusbar.StatusBarWifiView] that @@ -81,12 +80,11 @@ class ModernStatusBarWifiView( private fun initView( slotName: String, - wifiViewModel: WifiViewModel, - location: StatusBarLocation, + wifiViewModel: LocationBasedWifiViewModel, ) { slot = slotName initDotView() - binding = WifiViewBinder.bind(this, wifiViewModel, location) + binding = WifiViewBinder.bind(this, wifiViewModel) } // Mostly duplicated from [com.android.systemui.statusbar.StatusBarWifiView]. @@ -116,14 +114,13 @@ class ModernStatusBarWifiView( fun constructAndBind( context: Context, slot: String, - wifiViewModel: WifiViewModel, - location: StatusBarLocation, + wifiViewModel: LocationBasedWifiViewModel, ): ModernStatusBarWifiView { return ( LayoutInflater.from(context).inflate(R.layout.new_status_bar_wifi_group, null) as ModernStatusBarWifiView ).also { - it.initView(slot, wifiViewModel, location) + it.initView(slot, wifiViewModel) } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java index 9c56c2670c63..6fb68938b00d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarIconControllerTest.java @@ -45,7 +45,7 @@ import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconStat import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState; import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags; import com.android.systemui.statusbar.pipeline.mobile.ui.MobileUiAdapter; -import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel; +import com.android.systemui.statusbar.pipeline.wifi.ui.WifiUiAdapter; import com.android.systemui.utils.leaks.LeakCheckedTest; import org.junit.Before; @@ -80,7 +80,7 @@ public class StatusBarIconControllerTest extends LeakCheckedTest { layout, StatusBarLocation.HOME, mock(StatusBarPipelineFlags.class), - mock(WifiViewModel.class), + mock(WifiUiAdapter.class), mock(MobileUiAdapter.class), mMobileContextProvider, mock(DarkIconDispatcher.class)); @@ -124,14 +124,14 @@ public class StatusBarIconControllerTest extends LeakCheckedTest { LinearLayout group, StatusBarLocation location, StatusBarPipelineFlags statusBarPipelineFlags, - WifiViewModel wifiViewModel, + WifiUiAdapter wifiUiAdapter, MobileUiAdapter mobileUiAdapter, MobileContextProvider contextProvider, DarkIconDispatcher darkIconDispatcher) { super(group, location, statusBarPipelineFlags, - wifiViewModel, + wifiUiAdapter, mobileUiAdapter, contextProvider, darkIconDispatcher); @@ -172,7 +172,7 @@ public class StatusBarIconControllerTest extends LeakCheckedTest { super(group, StatusBarLocation.HOME, mock(StatusBarPipelineFlags.class), - mock(WifiViewModel.class), + mock(WifiUiAdapter.class), mock(MobileUiAdapter.class), contextProvider); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt index c5841098010a..37457b308597 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt @@ -28,7 +28,6 @@ import com.android.systemui.lifecycle.InstantTaskExecutorRule import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN import com.android.systemui.statusbar.StatusBarIconView.STATE_ICON -import com.android.systemui.statusbar.phone.StatusBarLocation import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor @@ -40,6 +39,7 @@ import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants +import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.CoroutineScope @@ -70,7 +70,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { private lateinit var connectivityRepository: FakeConnectivityRepository private lateinit var wifiRepository: FakeWifiRepository private lateinit var interactor: WifiInteractor - private lateinit var viewModel: WifiViewModel + private lateinit var viewModel: LocationBasedWifiViewModel private lateinit var scope: CoroutineScope private lateinit var airplaneModeViewModel: AirplaneModeViewModel @@ -105,23 +105,19 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { scope, statusBarPipelineFlags, wifiConstants, - ) + ).home } @Test fun constructAndBind_hasCorrectSlot() { - val view = ModernStatusBarWifiView.constructAndBind( - context, "slotName", viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, "slotName", viewModel) assertThat(view.slot).isEqualTo("slotName") } @Test fun getVisibleState_icon_returnsIcon() { - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) view.setVisibleState(STATE_ICON, /* animate= */ false) @@ -130,9 +126,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { @Test fun getVisibleState_dot_returnsDot() { - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) view.setVisibleState(STATE_DOT, /* animate= */ false) @@ -141,9 +135,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { @Test fun getVisibleState_hidden_returnsHidden() { - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) view.setVisibleState(STATE_HIDDEN, /* animate= */ false) @@ -155,9 +147,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { @Test fun setVisibleState_icon_iconShownDotHidden() { - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) view.setVisibleState(STATE_ICON, /* animate= */ false) @@ -172,9 +162,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { @Test fun setVisibleState_dot_iconHiddenDotShown() { - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) view.setVisibleState(STATE_DOT, /* animate= */ false) @@ -189,9 +177,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { @Test fun setVisibleState_hidden_iconAndDotHidden() { - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) view.setVisibleState(STATE_HIDDEN, /* animate= */ false) @@ -211,9 +197,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { WifiNetworkModel.Active(NETWORK_ID, isValidated = true, level = 2) ) - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -230,9 +214,7 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { WifiNetworkModel.Active(NETWORK_ID, isValidated = true, level = 2) ) - val view = ModernStatusBarWifiView.constructAndBind( - context, SLOT_NAME, viewModel, StatusBarLocation.HOME - ) + val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java b/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java index 23c7a6139de8..2d6d29a50a74 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java @@ -62,7 +62,11 @@ public class FakeStatusBarIconController extends BaseLeakChecker<IconManager> } @Override - public void setSignalIcon(String slot, WifiIconState state) { + public void setWifiIcon(String slot, WifiIconState state) { + } + + @Override + public void setNewWifiIcon() { } @Override |