1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.dreams.dagger; 18 19 import static java.lang.annotation.RetentionPolicy.RUNTIME; 20 21 import androidx.lifecycle.LifecycleOwner; 22 23 import com.android.systemui.complication.ComplicationHostViewController; 24 import com.android.systemui.dreams.DreamOverlayContainerViewController; 25 import com.android.systemui.dreams.touch.CommunalTouchHandler; 26 import com.android.systemui.dreams.touch.dagger.CommunalTouchModule; 27 import com.android.systemui.touch.TouchInsetManager; 28 29 import dagger.BindsInstance; 30 import dagger.Subcomponent; 31 32 import java.lang.annotation.Documented; 33 import java.lang.annotation.Retention; 34 35 import javax.inject.Scope; 36 37 /** 38 * Dagger subcomponent for {@link DreamOverlayModule}. 39 */ 40 @Subcomponent(modules = { 41 DreamOverlayModule.class, 42 CommunalTouchModule.class 43 }) 44 @DreamOverlayComponent.DreamOverlayScope 45 public interface DreamOverlayComponent { 46 /** Simple factory for {@link DreamOverlayComponent}. */ 47 @Subcomponent.Factory 48 interface Factory { create( @indsInstance LifecycleOwner lifecycleOwner, @BindsInstance ComplicationHostViewController complicationHostViewController, @BindsInstance TouchInsetManager touchInsetManager)49 DreamOverlayComponent create( 50 @BindsInstance LifecycleOwner lifecycleOwner, 51 @BindsInstance ComplicationHostViewController complicationHostViewController, 52 @BindsInstance TouchInsetManager touchInsetManager); 53 } 54 55 /** Scope annotation for singleton items within the {@link DreamOverlayComponent}. */ 56 @Documented 57 @Retention(RUNTIME) 58 @Scope 59 @interface DreamOverlayScope {} 60 61 /** Builds a {@link DreamOverlayContainerViewController}. */ getDreamOverlayContainerViewController()62 DreamOverlayContainerViewController getDreamOverlayContainerViewController(); 63 64 /** Builds communal touch handler */ getCommunalTouchHandler()65 CommunalTouchHandler getCommunalTouchHandler(); 66 } 67