• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2019 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.dagger;
18 
19 import com.android.systemui.BootCompleteCacheImpl;
20 import com.android.systemui.CoreStartable;
21 import com.android.systemui.Dependency;
22 import com.android.systemui.InitController;
23 import com.android.systemui.SystemUIAppComponentFactoryBase;
24 import com.android.systemui.dagger.qualifiers.Main;
25 import com.android.systemui.dagger.qualifiers.PerUser;
26 import com.android.systemui.dump.DumpManager;
27 import com.android.systemui.keyguard.KeyguardSliceProvider;
28 import com.android.systemui.people.PeopleProvider;
29 import com.android.systemui.startable.Dependencies;
30 import com.android.systemui.statusbar.NotificationInsetsModule;
31 import com.android.systemui.statusbar.QsFrameTranslateModule;
32 import com.android.systemui.statusbar.phone.ConfigurationForwarder;
33 import com.android.systemui.statusbar.policy.ConfigurationController;
34 import com.android.wm.shell.appzoomout.AppZoomOut;
35 import com.android.wm.shell.back.BackAnimation;
36 import com.android.wm.shell.bubbles.Bubbles;
37 import com.android.wm.shell.desktopmode.DesktopMode;
38 import com.android.wm.shell.displayareahelper.DisplayAreaHelper;
39 import com.android.wm.shell.keyguard.KeyguardTransitions;
40 import com.android.wm.shell.onehanded.OneHanded;
41 import com.android.wm.shell.pip.Pip;
42 import com.android.wm.shell.recents.RecentTasks;
43 import com.android.wm.shell.shared.ShellTransitions;
44 import com.android.wm.shell.splitscreen.SplitScreen;
45 import com.android.wm.shell.startingsurface.StartingSurface;
46 import com.android.wm.shell.sysui.ShellInterface;
47 import com.android.wm.shell.taskview.TaskViewFactory;
48 
49 import dagger.BindsInstance;
50 import dagger.Subcomponent;
51 
52 import java.util.Map;
53 import java.util.Optional;
54 import java.util.Set;
55 
56 import javax.inject.Provider;
57 
58 /**
59  * An example Dagger Subcomponent for Core SysUI.
60  * <p>
61  * See {@link ReferenceSysUIComponent} for the one actually used by AOSP.
62  */
63 @SysUISingleton
64 @Subcomponent(modules = {
65         DefaultComponentBinder.class,
66         DependencyProvider.class,
67         NotificationInsetsModule.class,
68         QsFrameTranslateModule.class,
69         SystemUIModule.class,
70         SystemUICoreStartableModule.class,
71         ReferenceSystemUIModule.class})
72 public interface SysUIComponent {
73 
74     /**
75      * Builder for a SysUIComponent.
76      */
77     @SysUISingleton
78     @Subcomponent.Builder
79     interface Builder {
80         @BindsInstance
setShell(ShellInterface s)81         Builder setShell(ShellInterface s);
82 
83         @BindsInstance
setPip(Optional<Pip> p)84         Builder setPip(Optional<Pip> p);
85 
86         @BindsInstance
setSplitScreen(Optional<SplitScreen> s)87         Builder setSplitScreen(Optional<SplitScreen> s);
88 
89         @BindsInstance
setOneHanded(Optional<OneHanded> o)90         Builder setOneHanded(Optional<OneHanded> o);
91 
92         @BindsInstance
setBubbles(Optional<Bubbles> b)93         Builder setBubbles(Optional<Bubbles> b);
94 
95         @BindsInstance
setTaskViewFactory(Optional<TaskViewFactory> t)96         Builder setTaskViewFactory(Optional<TaskViewFactory> t);
97 
98         @BindsInstance
setShellTransitions(ShellTransitions t)99         Builder setShellTransitions(ShellTransitions t);
100 
101         @BindsInstance
setKeyguardTransitions(KeyguardTransitions k)102         Builder setKeyguardTransitions(KeyguardTransitions k);
103 
104         @BindsInstance
setStartingSurface(Optional<StartingSurface> s)105         Builder setStartingSurface(Optional<StartingSurface> s);
106 
107         @BindsInstance
setDisplayAreaHelper(Optional<DisplayAreaHelper> h)108         Builder setDisplayAreaHelper(Optional<DisplayAreaHelper> h);
109 
110         @BindsInstance
setRecentTasks(Optional<RecentTasks> r)111         Builder setRecentTasks(Optional<RecentTasks> r);
112 
113         @BindsInstance
setBackAnimation(Optional<BackAnimation> b)114         Builder setBackAnimation(Optional<BackAnimation> b);
115 
116         @BindsInstance
setDesktopMode(Optional<DesktopMode> d)117         Builder setDesktopMode(Optional<DesktopMode> d);
118 
119         @BindsInstance
setAppZoomOut(Optional<AppZoomOut> a)120         Builder setAppZoomOut(Optional<AppZoomOut> a);
121 
build()122         SysUIComponent build();
123     }
124 
125     /**
126      * Provides a BootCompleteCache.
127      */
128     @SysUISingleton
provideBootCacheImpl()129     BootCompleteCacheImpl provideBootCacheImpl();
130 
131     /**
132      * Creates a ConfigurationController.
133      */
134     @SysUISingleton
135     @Main
getConfigurationController()136     ConfigurationController getConfigurationController();
137 
138     /**
139      * Creates a ConfigurationForwarder.
140      */
141     @SysUISingleton
142     @Main
getConfigurationForwarder()143     ConfigurationForwarder getConfigurationForwarder();
144 
145     /**
146      * Creates a ContextComponentHelper.
147      */
148     @SysUISingleton
getContextComponentHelper()149     ContextComponentHelper getContextComponentHelper();
150 
151     /**
152      * Main dependency providing module.
153      */
154     @SysUISingleton
createDependency()155     Dependency createDependency();
156 
157     /** */
158     @SysUISingleton
createDumpManager()159     DumpManager createDumpManager();
160 
161     /**
162      * Creates a InitController.
163      */
164     @SysUISingleton
getInitController()165     InitController getInitController();
166 
167     /**
168      * Returns {@link CoreStartable}s that should be started with the application.
169      */
getStartables()170     Map<Class<?>, Provider<CoreStartable>> getStartables();
171 
172     /**
173      * Returns {@link CoreStartable}s that should be started for every user.
174      */
getPerUserStartables()175     @PerUser Map<Class<?>, Provider<CoreStartable>> getPerUserStartables();
176 
177     /**
178      * Returns {@link CoreStartable} dependencies if there are any.
179      */
getStartableDependencies()180     @Dependencies Map<Class<?>, Set<Class<? extends CoreStartable>>> getStartableDependencies();
181 
182     /**
183      * Member injection into the supplied argument.
184      */
inject(SystemUIAppComponentFactoryBase factory)185     void inject(SystemUIAppComponentFactoryBase factory);
186 
187     /**
188      * Member injection into the supplied argument.
189      */
inject(KeyguardSliceProvider keyguardSliceProvider)190     void inject(KeyguardSliceProvider keyguardSliceProvider);
191 
192     /**
193      * Member injection into the supplied argument.
194      */
inject(PeopleProvider peopleProvider)195     void inject(PeopleProvider peopleProvider);
196 }
197