• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 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.wmshell;
18 
19 import com.android.systemui.car.wm.CarSystemUIProxyImpl;
20 import com.android.systemui.car.wm.displayarea.DaViewTransitions;
21 import com.android.systemui.car.wm.scalableui.EventDispatcher;
22 import com.android.systemui.car.wm.scalableui.ScalableUIWMInitializer;
23 import com.android.systemui.car.wm.scalableui.panel.TaskPanelInfoRepository;
24 import com.android.systemui.car.wm.taskview.RemoteCarTaskViewTransitions;
25 import com.android.systemui.wm.DisplaySystemBarsController;
26 import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
27 import com.android.wm.shell.automotive.AutoDecorManager;
28 import com.android.wm.shell.automotive.AutoLayoutManager;
29 import com.android.wm.shell.automotive.AutoTaskStackController;
30 import com.android.wm.shell.dagger.WMComponent;
31 import com.android.wm.shell.dagger.WMSingleton;
32 
33 import dagger.Subcomponent;
34 
35 import java.util.Optional;
36 
37 /**
38  * Dagger Subcomponent for WindowManager.
39  */
40 @WMSingleton
41 @Subcomponent(modules = {CarWMShellModule.class})
42 public interface CarWMComponent extends WMComponent {
43 
44     /**
45      * Builder for a SysUIComponent.
46      */
47     @Subcomponent.Builder
48     interface Builder extends WMComponent.Builder {
build()49         CarWMComponent build();
50     }
51 
52     @WMSingleton
getRootTaskDisplayAreaOrganizer()53     RootTaskDisplayAreaOrganizer getRootTaskDisplayAreaOrganizer();
54 
55     @WMSingleton
getDisplaySystemBarsController()56     DisplaySystemBarsController getDisplaySystemBarsController();
57 
58     /**
59      * Returns the implementation of car system ui proxy which will be used by other apps to
60      * interact with the car system ui.
61      */
62     @WMSingleton
getCarSystemUIProxy()63     CarSystemUIProxyImpl getCarSystemUIProxy();
64 
65     /**
66      * Returns the RemoteCarTaskViewTransitions used for transitions stuff related to task views.
67      */
68     @WMSingleton
getRemoteCarTaskViewTransitions()69     RemoteCarTaskViewTransitions getRemoteCarTaskViewTransitions();
70 
71     /** Provides the {@link DaViewTransitions} used to animate DaViews. */
72     @WMSingleton
getDaViewTransitions()73     DaViewTransitions getDaViewTransitions();
74 
75     /**
76      * Provides the {@link AutoTaskStackController} used to implement custom
77      * windowing behavior.
78      */
79     @WMSingleton
getAutoTaskStackController()80     AutoTaskStackController getAutoTaskStackController();
81 
82     /**
83      * Optional {@link ScalableUIWMInitializer} component for initializing scalable ui
84      */
85     @WMSingleton
getScalableUIWMInitializer()86     Optional<ScalableUIWMInitializer> getScalableUIWMInitializer();
87 
88     /** Provides the {@link TaskPanelInfoRepository} used to dispatch ScalableUI task info. */
89     @WMSingleton
getTaskPanelInfoRepository()90     TaskPanelInfoRepository getTaskPanelInfoRepository();
91 
92     /** Provides the {@link EventDispatcher} used to dispatch ScalableUI events. */
93     @WMSingleton
getScalableUIEventDispatcher()94     EventDispatcher getScalableUIEventDispatcher();
95 
96     /** Provides the {@link AutoDecorManager} used to manage {@link AutoDecor}. */
97     @WMSingleton
getAutoDecorManager()98     AutoDecorManager getAutoDecorManager();
99 
100     /** Provides the {@link AutoLayoutManager} used to set ScalableUI Insets. */
101     @WMSingleton
getAutoLayoutManager()102     AutoLayoutManager getAutoLayoutManager();
103 }
104