Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d9db661 authored by Darrell Shi's avatar Darrell Shi
Browse files

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
parent 9b7a7182
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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;
        }
+1 −1
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ public class DreamHomeControlsComplication implements Complication {

    @Override
    public int getRequiredTypeAvailability() {
        return COMPLICATION_TYPE_NONE;
        return COMPLICATION_TYPE_HOME_CONTROLS;
    }

    /**
+3 −0
Original line number Diff line number Diff line
@@ -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
+15 −0
Original line number Diff line number Diff line
@@ -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 =