Loading packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +1 −1 Original line number Diff line number Diff line Loading @@ -186,7 +186,7 @@ class ControlsUiControllerImpl @Inject constructor ( val allStructures = controlsController.get().getFavorites() val selected = getPreferredSelectedItem(allStructures) val anyPanels = controlsListingController.get().getCurrentServices() .none { it.panelActivity != null } .any { it.panelActivity != null } return if (controlsController.get().addSeedingFavoritesCallback(onSeedingComplete)) { ControlsActivity::class.java Loading packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java +8 −1 Original line number Diff line number Diff line Loading @@ -136,8 +136,15 @@ public class DreamHomeControlsComplication implements Complication { final boolean hasFavorites = mControlsComponent.getControlsController() .map(c -> !c.getFavorites().isEmpty()) .orElse(false); boolean hasPanels = false; for (int i = 0; i < controlsServices.size(); i++) { if (controlsServices.get(i).getPanelActivity() != null) { hasPanels = true; break; } } final ControlsComponent.Visibility visibility = mControlsComponent.getVisibility(); return hasFavorites && visibility != UNAVAILABLE; return (hasFavorites || hasPanels) && visibility != UNAVAILABLE; } } Loading packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/HomeControlsKeyguardQuickAffordanceConfig.kt +3 −1 Original line number Diff line number Diff line Loading @@ -130,6 +130,7 @@ constructor( state( isFeatureEnabled = component.isEnabled(), hasFavorites = favorites?.isNotEmpty() == true, hasPanels = serviceInfos.any { it.panelActivity != null }, hasServiceInfos = serviceInfos.isNotEmpty(), iconResourceId = component.getTileImageId(), visibility = component.getVisibility(), Loading @@ -148,13 +149,14 @@ constructor( private fun state( isFeatureEnabled: Boolean, hasFavorites: Boolean, hasPanels: Boolean, hasServiceInfos: Boolean, visibility: ControlsComponent.Visibility, @DrawableRes iconResourceId: Int?, ): KeyguardQuickAffordanceConfig.LockScreenState { return if ( isFeatureEnabled && hasFavorites && (hasFavorites || hasPanels) && hasServiceInfos && iconResourceId != null && visibility == ControlsComponent.Visibility.AVAILABLE Loading packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt +41 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.systemui.controls.CustomIconCache import com.android.systemui.controls.controller.ControlsController import com.android.systemui.controls.controller.StructureInfo import com.android.systemui.controls.management.ControlsListingController import com.android.systemui.controls.management.ControlsProviderSelectorActivity import com.android.systemui.controls.settings.FakeControlsSettingsRepository import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.ActivityStarter Loading @@ -53,6 +54,7 @@ import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.util.time.FakeSystemClock import com.android.wm.shell.TaskView import com.android.wm.shell.TaskViewFactory Loading Loading @@ -322,6 +324,45 @@ class ControlsUiControllerImplTest : SysuiTestCase() { .isFalse() } @Test fun testResolveActivityWhileSeeding_ControlsActivity() { whenever(controlsController.addSeedingFavoritesCallback(any())).thenReturn(true) assertThat(underTest.resolveActivity()).isEqualTo(ControlsActivity::class.java) } @Test fun testResolveActivityNotSeedingNoFavoritesNoPanels_ControlsProviderSelectorActivity() { whenever(controlsController.addSeedingFavoritesCallback(any())).thenReturn(false) whenever(controlsController.getFavorites()).thenReturn(emptyList()) val selectedItems = listOf( SelectedItem.StructureItem( StructureInfo(ComponentName.unflattenFromString("pkg/.cls1"), "a", ArrayList()) ), ) sharedPreferences .edit() .putString("controls_component", selectedItems[0].componentName.flattenToString()) .putString("controls_structure", selectedItems[0].name.toString()) .commit() assertThat(underTest.resolveActivity()) .isEqualTo(ControlsProviderSelectorActivity::class.java) } @Test fun testResolveActivityNotSeedingNoDefaultNoFavoritesPanel_ControlsActivity() { val panel = SelectedItem.PanelItem("App name", ComponentName("pkg", "cls")) val activity = ComponentName("pkg", "activity") val csi = ControlsServiceInfo(panel.componentName, panel.appName, activity) whenever(controlsController.addSeedingFavoritesCallback(any())).thenReturn(true) whenever(controlsController.getFavorites()).thenReturn(emptyList()) whenever(controlsListingController.getCurrentServices()).thenReturn(listOf(csi)) assertThat(underTest.resolveActivity()).isEqualTo(ControlsActivity::class.java) } private fun setUpPanel(panel: SelectedItem.PanelItem): ControlsServiceInfo { val activity = ComponentName("pkg", "activity") sharedPreferences Loading packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Context; import android.testing.AndroidTestingRunner; import android.view.View; Loading Loading @@ -54,6 +55,7 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.List; import java.util.Optional; Loading Loading @@ -146,6 +148,19 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase { verify(mDreamOverlayStateController, never()).addComplication(mComplication); } @Test public void complicationAvailability_serviceAvailable_noFavorites_panel_addComplication() { final DreamHomeControlsComplication.Registrant registrant = new DreamHomeControlsComplication.Registrant(mComplication, mDreamOverlayStateController, mControlsComponent); registrant.start(); setHaveFavorites(false); setServiceWithPanel(); verify(mDreamOverlayStateController).addComplication(mComplication); } @Test public void complicationAvailability_serviceNotAvailable_haveFavorites_doNotAddComplication() { final DreamHomeControlsComplication.Registrant registrant = Loading Loading @@ -232,6 +247,15 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase { triggerControlsListingCallback(serviceInfos); } private void setServiceWithPanel() { final List<ControlsServiceInfo> serviceInfos = new ArrayList<>(); ControlsServiceInfo csi = mock(ControlsServiceInfo.class); serviceInfos.add(csi); when(csi.getPanelActivity()).thenReturn(new ComponentName("a", "b")); when(mControlsListingController.getCurrentServices()).thenReturn(serviceInfos); triggerControlsListingCallback(serviceInfos); } private void setDreamOverlayActive(boolean value) { when(mDreamOverlayStateController.isOverlayActive()).thenReturn(value); verify(mDreamOverlayStateController).addCallback(mStateCallbackCaptor.capture()); Loading Loading
packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +1 −1 Original line number Diff line number Diff line Loading @@ -186,7 +186,7 @@ class ControlsUiControllerImpl @Inject constructor ( val allStructures = controlsController.get().getFavorites() val selected = getPreferredSelectedItem(allStructures) val anyPanels = controlsListingController.get().getCurrentServices() .none { it.panelActivity != null } .any { it.panelActivity != null } return if (controlsController.get().addSeedingFavoritesCallback(onSeedingComplete)) { ControlsActivity::class.java Loading
packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java +8 −1 Original line number Diff line number Diff line Loading @@ -136,8 +136,15 @@ public class DreamHomeControlsComplication implements Complication { final boolean hasFavorites = mControlsComponent.getControlsController() .map(c -> !c.getFavorites().isEmpty()) .orElse(false); boolean hasPanels = false; for (int i = 0; i < controlsServices.size(); i++) { if (controlsServices.get(i).getPanelActivity() != null) { hasPanels = true; break; } } final ControlsComponent.Visibility visibility = mControlsComponent.getVisibility(); return hasFavorites && visibility != UNAVAILABLE; return (hasFavorites || hasPanels) && visibility != UNAVAILABLE; } } Loading
packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/HomeControlsKeyguardQuickAffordanceConfig.kt +3 −1 Original line number Diff line number Diff line Loading @@ -130,6 +130,7 @@ constructor( state( isFeatureEnabled = component.isEnabled(), hasFavorites = favorites?.isNotEmpty() == true, hasPanels = serviceInfos.any { it.panelActivity != null }, hasServiceInfos = serviceInfos.isNotEmpty(), iconResourceId = component.getTileImageId(), visibility = component.getVisibility(), Loading @@ -148,13 +149,14 @@ constructor( private fun state( isFeatureEnabled: Boolean, hasFavorites: Boolean, hasPanels: Boolean, hasServiceInfos: Boolean, visibility: ControlsComponent.Visibility, @DrawableRes iconResourceId: Int?, ): KeyguardQuickAffordanceConfig.LockScreenState { return if ( isFeatureEnabled && hasFavorites && (hasFavorites || hasPanels) && hasServiceInfos && iconResourceId != null && visibility == ControlsComponent.Visibility.AVAILABLE Loading
packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt +41 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.systemui.controls.CustomIconCache import com.android.systemui.controls.controller.ControlsController import com.android.systemui.controls.controller.StructureInfo import com.android.systemui.controls.management.ControlsListingController import com.android.systemui.controls.management.ControlsProviderSelectorActivity import com.android.systemui.controls.settings.FakeControlsSettingsRepository import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.ActivityStarter Loading @@ -53,6 +54,7 @@ import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.util.time.FakeSystemClock import com.android.wm.shell.TaskView import com.android.wm.shell.TaskViewFactory Loading Loading @@ -322,6 +324,45 @@ class ControlsUiControllerImplTest : SysuiTestCase() { .isFalse() } @Test fun testResolveActivityWhileSeeding_ControlsActivity() { whenever(controlsController.addSeedingFavoritesCallback(any())).thenReturn(true) assertThat(underTest.resolveActivity()).isEqualTo(ControlsActivity::class.java) } @Test fun testResolveActivityNotSeedingNoFavoritesNoPanels_ControlsProviderSelectorActivity() { whenever(controlsController.addSeedingFavoritesCallback(any())).thenReturn(false) whenever(controlsController.getFavorites()).thenReturn(emptyList()) val selectedItems = listOf( SelectedItem.StructureItem( StructureInfo(ComponentName.unflattenFromString("pkg/.cls1"), "a", ArrayList()) ), ) sharedPreferences .edit() .putString("controls_component", selectedItems[0].componentName.flattenToString()) .putString("controls_structure", selectedItems[0].name.toString()) .commit() assertThat(underTest.resolveActivity()) .isEqualTo(ControlsProviderSelectorActivity::class.java) } @Test fun testResolveActivityNotSeedingNoDefaultNoFavoritesPanel_ControlsActivity() { val panel = SelectedItem.PanelItem("App name", ComponentName("pkg", "cls")) val activity = ComponentName("pkg", "activity") val csi = ControlsServiceInfo(panel.componentName, panel.appName, activity) whenever(controlsController.addSeedingFavoritesCallback(any())).thenReturn(true) whenever(controlsController.getFavorites()).thenReturn(emptyList()) whenever(controlsListingController.getCurrentServices()).thenReturn(listOf(csi)) assertThat(underTest.resolveActivity()).isEqualTo(ControlsActivity::class.java) } private fun setUpPanel(panel: SelectedItem.PanelItem): ControlsServiceInfo { val activity = ComponentName("pkg", "activity") sharedPreferences Loading
packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Context; import android.testing.AndroidTestingRunner; import android.view.View; Loading Loading @@ -54,6 +55,7 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.List; import java.util.Optional; Loading Loading @@ -146,6 +148,19 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase { verify(mDreamOverlayStateController, never()).addComplication(mComplication); } @Test public void complicationAvailability_serviceAvailable_noFavorites_panel_addComplication() { final DreamHomeControlsComplication.Registrant registrant = new DreamHomeControlsComplication.Registrant(mComplication, mDreamOverlayStateController, mControlsComponent); registrant.start(); setHaveFavorites(false); setServiceWithPanel(); verify(mDreamOverlayStateController).addComplication(mComplication); } @Test public void complicationAvailability_serviceNotAvailable_haveFavorites_doNotAddComplication() { final DreamHomeControlsComplication.Registrant registrant = Loading Loading @@ -232,6 +247,15 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase { triggerControlsListingCallback(serviceInfos); } private void setServiceWithPanel() { final List<ControlsServiceInfo> serviceInfos = new ArrayList<>(); ControlsServiceInfo csi = mock(ControlsServiceInfo.class); serviceInfos.add(csi); when(csi.getPanelActivity()).thenReturn(new ComponentName("a", "b")); when(mControlsListingController.getCurrentServices()).thenReturn(serviceInfos); triggerControlsListingCallback(serviceInfos); } private void setDreamOverlayActive(boolean value) { when(mDreamOverlayStateController.isOverlayActive()).thenReturn(value); verify(mDreamOverlayStateController).addCallback(mStateCallbackCaptor.capture()); Loading