blob: 3f00f41b0717d3b01529040aa94099050ad8e487 [file] [log] [blame]
Dave Mankoff2ea5a832019-07-03 13:26:55 -04001/*
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
Dave Mankofff4736812019-10-18 17:25:50 -040017package com.android.systemui.dagger;
Dave Mankoff2ea5a832019-07-03 13:26:55 -040018
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040019import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
20
Hyunyoung Song8f9d34c2019-08-30 14:47:43 -070021import android.content.ContentProvider;
22
Dave Mankofff4736812019-10-18 17:25:50 -040023import com.android.systemui.Dependency;
24import com.android.systemui.SystemUIAppComponentFactory;
25import com.android.systemui.SystemUIFactory;
Dave Mankoff2ea5a832019-07-03 13:26:55 -040026import com.android.systemui.fragments.FragmentService;
27import com.android.systemui.statusbar.phone.StatusBar;
Dave Mankoffbba732d2019-11-20 13:04:54 -050028import com.android.systemui.statusbar.policy.ConfigurationController;
Dave Mankoff2ea5a832019-07-03 13:26:55 -040029import com.android.systemui.util.InjectionInflationController;
Dave Mankoff2ea5a832019-07-03 13:26:55 -040030
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040031import javax.inject.Named;
Dave Mankoff2ea5a832019-07-03 13:26:55 -040032import javax.inject.Singleton;
33
34import dagger.Component;
35
36/**
37 * Root component for Dagger injection.
38 */
39@Singleton
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040040@Component(modules = {
Dave Mankoffae8ec452019-10-29 15:50:02 -040041 DefaultComponentBinder.class,
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040042 DependencyProvider.class,
43 DependencyBinder.class,
Dave Mankofff4736812019-10-18 17:25:50 -040044 SystemServicesModule.class,
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040045 SystemUIFactory.ContextHolder.class,
46 SystemUIModule.class,
47 SystemUIDefaultModule.class})
Dave Mankoff2ea5a832019-07-03 13:26:55 -040048public interface SystemUIRootComponent {
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -040049
50 /**
Robert Snoeberger81d76152019-09-30 15:43:34 -040051 * Creates a ContextComponentHelper.
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -040052 */
53 @Singleton
Dave Mankoffbba732d2019-11-20 13:04:54 -050054 ConfigurationController getConfigurationController();
55
56 /**
57 * Creates a ContextComponentHelper.
58 */
59 @Singleton
Dave Mankoffaa8b7ae2019-09-04 18:03:21 -040060 ContextComponentHelper getContextComponentHelper();
61
Dave Mankoff2ea5a832019-07-03 13:26:55 -040062 /**
63 * Main dependency providing module.
64 */
65 @Singleton
66 Dependency.DependencyInjector createDependency();
67
68 /**
69 * Injects the StatusBar.
70 */
71 @Singleton
72 StatusBar.StatusBarInjector getStatusBarInjector();
73
74 /**
75 * FragmentCreator generates all Fragments that need injection.
76 */
77 @Singleton
78 FragmentService.FragmentCreator createFragmentCreator();
79
80 /**
81 * ViewCreator generates all Views that need injection.
82 */
83 InjectionInflationController.ViewCreator createViewCreator();
84
85 /**
Govinda Wasserman2e86fb62019-08-13 11:35:44 -040086 * Whether notification long press is allowed.
87 */
88 @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
89 boolean allowNotificationLongPressName();
90
91 /**
Dave Mankoffa4a71362019-08-27 14:40:05 -040092 * Member injection into the supplied argument.
Dave Mankoff2ea5a832019-07-03 13:26:55 -040093 */
94 void inject(SystemUIAppComponentFactory factory);
Dave Mankoffa4a71362019-08-27 14:40:05 -040095
96 /**
97 * Member injection into the supplied argument.
98 */
99 void inject(ContentProvider contentProvider);
Dave Mankoff2ea5a832019-07-03 13:26:55 -0400100}