From 9b7a7182a762ce07c4868c1adf9f87efb5d2223d Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Fri, 29 Jul 2022 22:15:46 +0000 Subject: [PATCH 1/2] Add home controls complication type in settingslib. Bug: 240707969 Test: manually on device Change-Id: I568d9323b8f552da8adb9c033b772846bb947abf --- packages/SettingsLib/res/values/strings.xml | 2 ++ .../src/com/android/settingslib/dream/DreamBackend.java | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 4f84c8c817cbd..322e1be250a69 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1608,6 +1608,8 @@ Air Quality Cast Info + + Home Controls Choose a profile picture diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java index 01d0cc40c0bce..a46e232358439 100644 --- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java @@ -91,7 +91,8 @@ public class DreamBackend { 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) public @interface ComplicationType {} @@ -101,6 +102,7 @@ public class DreamBackend { public static final int COMPLICATION_TYPE_WEATHER = 3; public static final int COMPLICATION_TYPE_AIR_QUALITY = 4; public static final int COMPLICATION_TYPE_CAST_INFO = 5; + public static final int COMPLICATION_TYPE_HOME_CONTROLS = 6; private final Context mContext; private final IDreamManager mDreamManager; @@ -346,6 +348,9 @@ public class DreamBackend { case COMPLICATION_TYPE_CAST_INFO: res = R.string.dream_complication_title_cast_info; break; + case COMPLICATION_TYPE_HOME_CONTROLS: + res = R.string.dream_complication_title_home_controls; + break; default: return null; } From 4d9db6618b4e3406fa9f9ac4fe2eb4bae63637c4 Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Fri, 29 Jul 2022 22:16:55 +0000 Subject: [PATCH 2/2] 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 --- .../dreams/complication/Complication.java | 4 +++- .../dreams/complication/ComplicationUtils.java | 3 +++ .../DreamHomeControlsComplication.java | 2 +- .../complication/ComplicationUtilsTest.java | 3 +++ .../DreamHomeControlsComplicationTest.java | 15 +++++++++++++++ 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java index 51bd31100ad0f..54571448c981f 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/Complication.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java index a4a0075e742aa..dcab90fe7ab9a 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/ComplicationUtils.java @@ -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; } diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java index 1a9d9b50104b0..6bc969b4d3a7f 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/DreamHomeControlsComplication.java @@ -62,7 +62,7 @@ public class DreamHomeControlsComplication implements Complication { @Override public int getRequiredTypeAvailability() { - return COMPLICATION_TYPE_NONE; + return COMPLICATION_TYPE_HOME_CONTROLS; } /** diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java index 365c5291b1180..2915f5a504d76 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/ComplicationUtilsTest.java @@ -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 diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java index 5191f635a2cf2..04ff7aed480db 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/complication/DreamHomeControlsComplicationTest.java @@ -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 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 =