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

Commit 4266470b authored by Bryce Lee's avatar Bryce Lee Committed by Android (Google) Code Review
Browse files

Merge "Dream overlay touch management."

parents 5392c429 436e42c6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ android_library {
        "androidx.slice_slice-view",
        "androidx.slice_slice-builders",
        "androidx.arch.core_core-runtime",
        "androidx.lifecycle_lifecycle-common-java8",
        "androidx.lifecycle_lifecycle-extensions",
        "androidx.dynamicanimation_dynamicanimation",
        "androidx-constraintlayout_constraintlayout",
@@ -209,6 +210,7 @@ android_library {
        "androidx.slice_slice-view",
        "androidx.slice_slice-builders",
        "androidx.arch.core_core-runtime",
        "androidx.lifecycle_lifecycle-common-java8",
        "androidx.lifecycle_lifecycle-extensions",
        "androidx.dynamicanimation_dynamicanimation",
        "androidx-constraintlayout_constraintlayout",
+27 −1
Original line number Diff line number Diff line
@@ -29,9 +29,12 @@ import androidx.lifecycle.LifecycleRegistry;
import androidx.lifecycle.ViewModelStore;

import com.android.internal.policy.PhoneWindow;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dreams.complication.Complication;
import com.android.systemui.dreams.dagger.DreamOverlayComponent;
import com.android.systemui.dreams.touch.DreamOverlayTouchMonitor;

import java.util.concurrent.Executor;

@@ -53,6 +56,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
    // A controller for the dream overlay container view (which contains both the status bar and the
    // content area).
    private final DreamOverlayContainerViewController mDreamOverlayContainerViewController;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;

    // A reference to the {@link Window} used to hold the dream overlay.
    private Window mWindow;
@@ -68,19 +72,40 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ

    private ViewModelStore mViewModelStore = new ViewModelStore();

    private DreamOverlayTouchMonitor mDreamOverlayTouchMonitor;

    private final KeyguardUpdateMonitorCallback mKeyguardCallback =
            new KeyguardUpdateMonitorCallback() {
                @Override
                public void onShadeExpandedChanged(boolean expanded) {
                    if (mLifecycleRegistry.getCurrentState() != Lifecycle.State.RESUMED
                            && mLifecycleRegistry.getCurrentState() != Lifecycle.State.STARTED) {
                        return;
                    }

                    mLifecycleRegistry.setCurrentState(
                            expanded ? Lifecycle.State.STARTED : Lifecycle.State.RESUMED);
                }
            };

    @Inject
    public DreamOverlayService(
            Context context,
            @Main Executor executor,
            DreamOverlayComponent.Factory dreamOverlayComponentFactory) {
            DreamOverlayComponent.Factory dreamOverlayComponentFactory,
            KeyguardUpdateMonitor keyguardUpdateMonitor) {
        mContext = context;
        mExecutor = executor;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mKeyguardUpdateMonitor.registerCallback(mKeyguardCallback);

        final DreamOverlayComponent component =
                dreamOverlayComponentFactory.create(mViewModelStore, mHost);
        mDreamOverlayContainerViewController = component.getDreamOverlayContainerViewController();
        setCurrentState(Lifecycle.State.CREATED);
        mLifecycleRegistry = component.getLifecycleRegistry();
        mDreamOverlayTouchMonitor = component.getDreamOverlayTouchMonitor();
        mDreamOverlayTouchMonitor.init();
    }

    private void setCurrentState(Lifecycle.State state) {
@@ -89,6 +114,7 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ

    @Override
    public void onDestroy() {
        mKeyguardUpdateMonitor.registerCallback(mKeyguardCallback);
        setCurrentState(Lifecycle.State.DESTROYED);
        final WindowManager windowManager = mContext.getSystemService(WindowManager.class);
        windowManager.removeView(mWindow.getDecorView());
+8 −3
Original line number Diff line number Diff line
@@ -16,12 +16,17 @@

package com.android.systemui.dreams.dagger;

import com.android.systemui.dreams.touch.dagger.DreamTouchModule;

import dagger.Module;

/**
 * Dagger Module providing Communal-related functionality.
 */
@Module(subcomponents = {
@Module(includes = {
            DreamTouchModule.class,
        },
        subcomponents = {
            DreamOverlayComponent.class,
        })
public interface DreamModule {
+4 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import androidx.lifecycle.ViewModelStore;
import com.android.systemui.dreams.DreamOverlayContainerViewController;
import com.android.systemui.dreams.complication.Complication;
import com.android.systemui.dreams.complication.dagger.ComplicationModule;
import com.android.systemui.dreams.touch.DreamOverlayTouchMonitor;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
@@ -64,4 +65,7 @@ public interface DreamOverlayComponent {

    /** Builds a {@link androidx.lifecycle.LifecycleOwner} */
    LifecycleOwner getLifecycleOwner();

    /** Builds a {@link DreamOverlayTouchMonitor} */
    DreamOverlayTouchMonitor getDreamOverlayTouchMonitor();
}
+17 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.Handler;
import android.view.LayoutInflater;
import android.view.ViewGroup;

import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;

@@ -33,6 +34,7 @@ import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dreams.DreamOverlayContainerView;
import com.android.systemui.dreams.DreamOverlayStatusBarView;
import com.android.systemui.dreams.touch.DreamTouchHandler;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.tuner.TunerService;
@@ -42,6 +44,7 @@ import javax.inject.Named;
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
import dagger.multibindings.IntoSet;

/** Dagger module for {@link DreamOverlayComponent}. */
@Module
@@ -140,4 +143,18 @@ public abstract class DreamOverlayModule {
    static LifecycleRegistry providesLifecycleRegistry(LifecycleOwner lifecycleOwner) {
        return new LifecycleRegistry(lifecycleOwner);
    }

    @Provides
    @DreamOverlayComponent.DreamOverlayScope
    static Lifecycle providesLifecycle(LifecycleOwner lifecycleOwner) {
        return lifecycleOwner.getLifecycle();
    }

    // TODO: This stub should be removed once there is a {@link DreamTouchHandler}
    // implementation present.
    @Provides
    @IntoSet
    static DreamTouchHandler provideDreamTouchHandler() {
        return session -> { };
    }
}
Loading