Add home controls complication type.

Use the correct complication type for home controls so it shows up
properly only when available.

Bug: 240707969
Fix: 240707969
Test: atest ComplicationUtilsTest#testConvertComplicationType
Test: atest DreamHomeControlsComplicationTest#complicationType
Test: on device see that home controls only shows on dreams that support
complications

Change-Id: I6c6518e35a1d94a49932e3f7a744f1b8a5095e1a
This commit is contained in:
Darrell Shi
2022-07-29 22:16:55 +00:00
parent 9b7a7182a7
commit 4d9db6618b
5 changed files with 25 additions and 2 deletions

View File

@@ -162,7 +162,8 @@ public interface Complication {
COMPLICATION_TYPE_DATE,
COMPLICATION_TYPE_WEATHER,
COMPLICATION_TYPE_AIR_QUALITY,
COMPLICATION_TYPE_CAST_INFO
COMPLICATION_TYPE_CAST_INFO,
COMPLICATION_TYPE_HOME_CONTROLS
})
@Retention(RetentionPolicy.SOURCE)
@interface ComplicationType {}
@@ -173,6 +174,7 @@ public interface Complication {
int COMPLICATION_TYPE_WEATHER = 1 << 2;
int COMPLICATION_TYPE_AIR_QUALITY = 1 << 3;
int COMPLICATION_TYPE_CAST_INFO = 1 << 4;
int COMPLICATION_TYPE_HOME_CONTROLS = 1 << 5;
/**
* The {@link Host} interface specifies a way a {@link Complication} to communicate with its

View File

@@ -19,6 +19,7 @@ package com.android.systemui.dreams.complication;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_AIR_QUALITY;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_CAST_INFO;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_DATE;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_HOME_CONTROLS;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_NONE;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_TIME;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_WEATHER;
@@ -48,6 +49,8 @@ public class ComplicationUtils {
return COMPLICATION_TYPE_AIR_QUALITY;
case DreamBackend.COMPLICATION_TYPE_CAST_INFO:
return COMPLICATION_TYPE_CAST_INFO;
case DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS:
return COMPLICATION_TYPE_HOME_CONTROLS;
default:
return COMPLICATION_TYPE_NONE;
}

View File

@@ -62,7 +62,7 @@ public class DreamHomeControlsComplication implements Complication {
@Override
public int getRequiredTypeAvailability() {
return COMPLICATION_TYPE_NONE;
return COMPLICATION_TYPE_HOME_CONTROLS;
}
/**

View File

@@ -19,6 +19,7 @@ package com.android.systemui.dreams.complication;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_AIR_QUALITY;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_CAST_INFO;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_DATE;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_HOME_CONTROLS;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_TIME;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_WEATHER;
import static com.android.systemui.dreams.complication.ComplicationUtils.convertComplicationType;
@@ -57,6 +58,8 @@ public class ComplicationUtilsTest extends SysuiTestCase {
.isEqualTo(COMPLICATION_TYPE_AIR_QUALITY);
assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_CAST_INFO))
.isEqualTo(COMPLICATION_TYPE_CAST_INFO);
assertThat(convertComplicationType(DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS))
.isEqualTo(COMPLICATION_TYPE_HOME_CONTROLS);
}
@Test

View File

@@ -17,6 +17,9 @@
package com.android.systemui.dreams.complication;
import static com.android.systemui.controls.dagger.ControlsComponent.Visibility.AVAILABLE;
import static com.android.systemui.dreams.complication.Complication.COMPLICATION_TYPE_HOME_CONTROLS;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
@@ -36,6 +39,7 @@ import com.android.systemui.controls.controller.StructureInfo;
import com.android.systemui.controls.dagger.ControlsComponent;
import com.android.systemui.controls.management.ControlsListingController;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.dreams.complication.dagger.DreamHomeControlsComplicationComponent;
import org.junit.Before;
import org.junit.Test;
@@ -69,6 +73,9 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase {
@Mock
private ControlsListingController mControlsListingController;
@Mock
private DreamHomeControlsComplicationComponent.Factory mComponentFactory;
@Captor
private ArgumentCaptor<ControlsListingController.ControlsListingCallback> mCallbackCaptor;
@@ -84,6 +91,14 @@ public class DreamHomeControlsComplicationTest extends SysuiTestCase {
when(mControlsComponent.getVisibility()).thenReturn(AVAILABLE);
}
@Test
public void complicationType() {
final DreamHomeControlsComplication complication =
new DreamHomeControlsComplication(mComponentFactory);
assertThat(complication.getRequiredTypeAvailability()).isEqualTo(
COMPLICATION_TYPE_HOME_CONTROLS);
}
@Test
public void complicationAvailability_serviceNotAvailable_noFavorites_doNotAddComplication() {
final DreamHomeControlsComplication.Registrant registrant =