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

Commit 1a33563d authored by Bryce Lee's avatar Bryce Lee
Browse files

Move Complication logic out of DreamOverlay.

This changelist lifts the complication logic, including the
ComplicatHostViewController and ComplicationLayoutEngine, out of
DreamOverlay. This allows these components to be used elsewhere.
Complications are now bound into the DreamOverlayComponent,
passed through from the DreamOverlayService.

Test: atest DreamOverlayServiceTest
Bug: 261781069
Change-Id: I81879e6050d4d0cdeeac69b74acb4fbd548647f5
parent bdd33e3b
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -45,7 +45,10 @@ import com.android.systemui.dreams.complication.Complication;
import com.android.systemui.dreams.complication.dagger.ComplicationComponent;
import com.android.systemui.dreams.dagger.DreamOverlayComponent;
import com.android.systemui.dreams.touch.DreamOverlayTouchMonitor;
import com.android.systemui.touch.TouchInsetManager;

import java.util.Arrays;
import java.util.HashSet;
import java.util.concurrent.Executor;

import javax.inject.Inject;
@@ -84,6 +87,9 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ

    private final ComplicationComponent mComplicationComponent;

    private final com.android.systemui.dreams.dreamcomplication.dagger.ComplicationComponent
            mDreamComplicationComponent;

    private final DreamOverlayComponent mDreamOverlayComponent;

    private final DreamOverlayLifecycleOwner mLifecycleOwner;
@@ -135,10 +141,13 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
            DreamOverlayLifecycleOwner lifecycleOwner,
            WindowManager windowManager,
            ComplicationComponent.Factory complicationComponentFactory,
            com.android.systemui.dreams.dreamcomplication.dagger.ComplicationComponent.Factory
                    dreamComplicationComponentFactory,
            DreamOverlayComponent.Factory dreamOverlayComponentFactory,
            DreamOverlayStateController stateController,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            UiEventLogger uiEventLogger,
            TouchInsetManager touchInsetManager,
            @Nullable @Named(LowLightDreamModule.LOW_LIGHT_DREAM_COMPONENT)
                    ComponentName lowLightDreamComponent) {
        mContext = context;
@@ -154,9 +163,14 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
        final Complication.Host host =
                () -> mExecutor.execute(DreamOverlayService.this::requestExit);

        mComplicationComponent = complicationComponentFactory.create();
        mDreamOverlayComponent =
                dreamOverlayComponentFactory.create(lifecycleOwner, viewModelStore, host, null);
        mComplicationComponent = complicationComponentFactory.create(lifecycleOwner, host,
                viewModelStore, touchInsetManager);
        mDreamComplicationComponent = dreamComplicationComponentFactory.create(
                mComplicationComponent.getVisibilityController(), touchInsetManager);
        mDreamOverlayComponent = dreamOverlayComponentFactory.create(lifecycleOwner,
                mComplicationComponent.getComplicationHostViewController(), touchInsetManager,
                new HashSet<>(Arrays.asList(
                        mDreamComplicationComponent.getHideComplicationTouchHandler())));
        mLifecycleOwner = lifecycleOwner;
        mLifecycleRegistry = mLifecycleOwner.getRegistry();

+2 −2
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ import androidx.constraintlayout.widget.Constraints;

import com.android.systemui.R;
import com.android.systemui.dreams.complication.ComplicationLayoutParams.Position;
import com.android.systemui.dreams.dagger.DreamOverlayComponent;
import com.android.systemui.dreams.complication.dagger.ComplicationModule;
import com.android.systemui.statusbar.CrossFadeHelper;
import com.android.systemui.touch.TouchInsetManager;

@@ -50,7 +50,7 @@ import javax.inject.Named;
 * their layout parameters and attributes. The management of this set is done by
 * {@link ComplicationHostViewController}.
 */
@DreamOverlayComponent.DreamOverlayScope
@ComplicationModule.ComplicationScope
public class ComplicationLayoutEngine implements Complication.VisibilityController {
    public static final String TAG = "ComplicationLayoutEng";

+19 −2
Original line number Diff line number Diff line
package com.android.systemui.dreams.complication.dagger

import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ViewModelStore
import com.android.systemui.dreams.complication.Complication
import com.android.systemui.dreams.complication.ComplicationHostViewController
import com.android.systemui.dreams.complication.ComplicationLayoutEngine
import com.android.systemui.touch.TouchInsetManager
import dagger.BindsInstance
import dagger.Subcomponent

@Subcomponent
@Subcomponent(modules = [ComplicationModule::class])
@ComplicationModule.ComplicationScope
interface ComplicationComponent {
    /** Factory for generating [ComplicationComponent]. */
    @Subcomponent.Factory
    interface Factory {
        fun create(): ComplicationComponent
        fun create(
            @BindsInstance lifecycleOwner: LifecycleOwner,
            @BindsInstance host: Complication.Host,
            @BindsInstance viewModelStore: ViewModelStore,
            @BindsInstance touchInsetManager: TouchInsetManager
        ): ComplicationComponent
    }

    fun getComplicationHostViewController(): ComplicationHostViewController

    fun getVisibilityController(): ComplicationLayoutEngine
}
+3 −9
Original line number Diff line number Diff line
@@ -24,13 +24,12 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import com.android.internal.util.Preconditions;
import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dreams.dagger.DreamOverlayComponent;

import javax.inject.Named;

import dagger.Module;
import dagger.Provides;

import javax.inject.Named;

/**
 * Module for providing a scoped host view.
 */
@@ -49,7 +48,7 @@ public abstract class ComplicationHostViewModule {
     */
    @Provides
    @Named(SCOPED_COMPLICATIONS_LAYOUT)
    @DreamOverlayComponent.DreamOverlayScope
    @ComplicationModule.ComplicationScope
    static ConstraintLayout providesComplicationHostView(
            LayoutInflater layoutInflater) {
        return Preconditions.checkNotNull((ConstraintLayout)
@@ -60,7 +59,6 @@ public abstract class ComplicationHostViewModule {

    @Provides
    @Named(COMPLICATION_MARGIN_DEFAULT)
    @DreamOverlayComponent.DreamOverlayScope
    static int providesComplicationPadding(@Main Resources resources) {
        return resources.getDimensionPixelSize(R.dimen.dream_overlay_complication_margin);
    }
@@ -70,7 +68,6 @@ public abstract class ComplicationHostViewModule {
     */
    @Provides
    @Named(COMPLICATIONS_FADE_OUT_DURATION)
    @DreamOverlayComponent.DreamOverlayScope
    static int providesComplicationsFadeOutDuration(@Main Resources resources) {
        return resources.getInteger(R.integer.complicationFadeOutMs);
    }
@@ -80,7 +77,6 @@ public abstract class ComplicationHostViewModule {
     */
    @Provides
    @Named(COMPLICATIONS_FADE_OUT_DELAY)
    @DreamOverlayComponent.DreamOverlayScope
    static int providesComplicationsFadeOutDelay(@Main Resources resources) {
        return resources.getInteger(R.integer.complicationFadeOutDelayMs);
    }
@@ -90,7 +86,6 @@ public abstract class ComplicationHostViewModule {
     */
    @Provides
    @Named(COMPLICATIONS_FADE_IN_DURATION)
    @DreamOverlayComponent.DreamOverlayScope
    static int providesComplicationsFadeInDuration(@Main Resources resources) {
        return resources.getInteger(R.integer.complicationFadeInMs);
    }
@@ -100,7 +95,6 @@ public abstract class ComplicationHostViewModule {
     */
    @Provides
    @Named(COMPLICATIONS_RESTORE_TIMEOUT)
    @DreamOverlayComponent.DreamOverlayScope
    static int providesComplicationsRestoreTimeout(@Main Resources resources) {
        return resources.getInteger(R.integer.complicationRestoreMs);
    }
+13 −4
Original line number Diff line number Diff line
@@ -24,16 +24,16 @@ import androidx.lifecycle.ViewModelStore;
import com.android.systemui.dreams.complication.Complication;
import com.android.systemui.dreams.complication.ComplicationCollectionViewModel;
import com.android.systemui.dreams.complication.ComplicationLayoutEngine;
import com.android.systemui.touch.TouchInsetManager;

import dagger.Module;
import dagger.Provides;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;

import javax.inject.Named;
import javax.inject.Scope;

import dagger.Module;
import dagger.Provides;

/**
 * Module for housing components related to rendering complications.
 */
@@ -73,4 +73,13 @@ public interface ComplicationModule {
            ComplicationLayoutEngine engine) {
        return engine;
    }

    /**
     * Provides a new touch inset session instance for complication logic.
     */
    @Provides
    static TouchInsetManager.TouchInsetSession providesTouchInsetSession(
            TouchInsetManager manager) {
        return manager.createSession();
    }
}
Loading