Allow injecting DreamTouchHandlers into DreamOverlayComponent.
This changelist enables DreamTouchHandlers to be specified when creating a new DreamOverlayComponent through its Factory. The DreamOverlayService will specify no additional handlers until the complication layer has been separated from the dream overlay. Test: atest DreamOverlayServiceTest Bug: 261781069 Change-Id: I041d45059e443c61ce5eb497319999858e544508
This commit is contained in:
@@ -146,7 +146,8 @@ public class DreamOverlayService extends android.service.dreams.DreamOverlayServ
|
||||
final ViewModelStore viewModelStore = new ViewModelStore();
|
||||
final Complication.Host host =
|
||||
() -> mExecutor.execute(DreamOverlayService.this::requestExit);
|
||||
mDreamOverlayComponent = dreamOverlayComponentFactory.create(viewModelStore, host);
|
||||
|
||||
mDreamOverlayComponent = dreamOverlayComponentFactory.create(viewModelStore, host, null);
|
||||
mLifecycleRegistry = mDreamOverlayComponent.getLifecycleRegistry();
|
||||
|
||||
mExecutor.execute(() -> setCurrentStateLocked(Lifecycle.State.CREATED));
|
||||
|
||||
@@ -16,8 +16,12 @@
|
||||
|
||||
package com.android.systemui.dreams.dagger;
|
||||
|
||||
import static com.android.systemui.dreams.dagger.DreamOverlayModule.DREAM_TOUCH_HANDLERS;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LifecycleRegistry;
|
||||
import androidx.lifecycle.ViewModelStore;
|
||||
@@ -26,16 +30,19 @@ 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 com.android.systemui.dreams.touch.DreamTouchHandler;
|
||||
import com.android.systemui.dreams.touch.dagger.DreamTouchModule;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
|
||||
import javax.inject.Scope;
|
||||
|
||||
import dagger.BindsInstance;
|
||||
import dagger.Subcomponent;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Scope;
|
||||
|
||||
/**
|
||||
* Dagger subcomponent for {@link DreamOverlayModule}.
|
||||
*/
|
||||
@@ -50,7 +57,9 @@ public interface DreamOverlayComponent {
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
DreamOverlayComponent create(@BindsInstance ViewModelStore store,
|
||||
@BindsInstance Complication.Host host);
|
||||
@BindsInstance Complication.Host host,
|
||||
@BindsInstance @Named(DREAM_TOUCH_HANDLERS) @Nullable
|
||||
Set<DreamTouchHandler> dreamTouchHandlers);
|
||||
}
|
||||
|
||||
/** Scope annotation for singleton items within the {@link DreamOverlayComponent}. */
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.dreams.dagger;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.res.Resources;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
@@ -29,19 +30,24 @@ import com.android.systemui.R;
|
||||
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.touch.TouchInsetManager;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Named;
|
||||
|
||||
import dagger.Lazy;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.multibindings.ElementsIntoSet;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Named;
|
||||
|
||||
/** Dagger module for {@link DreamOverlayComponent}. */
|
||||
@Module
|
||||
public abstract class DreamOverlayModule {
|
||||
public static final String DREAM_TOUCH_HANDLERS = "dream_touch_handlers";
|
||||
public static final String DREAM_OVERLAY_CONTENT_VIEW = "dream_overlay_content_view";
|
||||
public static final String MAX_BURN_IN_OFFSET = "max_burn_in_offset";
|
||||
public static final String BURN_IN_PROTECTION_UPDATE_INTERVAL =
|
||||
@@ -261,4 +267,11 @@ public abstract class DreamOverlayModule {
|
||||
static Lifecycle providesLifecycle(LifecycleOwner lifecycleOwner) {
|
||||
return lifecycleOwner.getLifecycle();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@ElementsIntoSet
|
||||
static Set<DreamTouchHandler> providesDreamTouchHandlers(
|
||||
@Named(DREAM_TOUCH_HANDLERS) @Nullable Set<DreamTouchHandler> touchHandlers) {
|
||||
return touchHandlers != null ? touchHandlers : new HashSet<>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.systemui.dreams;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.isNull;
|
||||
import static org.mockito.Mockito.clearInvocations;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
@@ -46,6 +47,7 @@ import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.dreams.dagger.DreamOverlayComponent;
|
||||
import com.android.systemui.dreams.touch.BouncerSwipeTouchHandler;
|
||||
import com.android.systemui.dreams.touch.DreamOverlayTouchMonitor;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
@@ -110,6 +112,9 @@ public class DreamOverlayServiceTest extends SysuiTestCase {
|
||||
@Mock
|
||||
ViewGroup mDreamOverlayContainerViewParent;
|
||||
|
||||
@Mock
|
||||
BouncerSwipeTouchHandler mBouncerSwipeTouchHandler;
|
||||
|
||||
@Mock
|
||||
UiEventLogger mUiEventLogger;
|
||||
|
||||
@@ -130,8 +135,10 @@ public class DreamOverlayServiceTest extends SysuiTestCase {
|
||||
.thenReturn(mLifecycleRegistry);
|
||||
when(mDreamOverlayComponent.getDreamOverlayTouchMonitor())
|
||||
.thenReturn(mDreamOverlayTouchMonitor);
|
||||
// TODO(b/261781069): A touch handler should be passed in from the complication component
|
||||
// when the complication component is introduced.
|
||||
when(mDreamOverlayComponentFactory
|
||||
.create(any(), any()))
|
||||
.create(any(), any(), isNull()))
|
||||
.thenReturn(mDreamOverlayComponent);
|
||||
when(mDreamOverlayContainerViewController.getContainerView())
|
||||
.thenReturn(mDreamOverlayContainerView);
|
||||
|
||||
Reference in New Issue
Block a user