diff options
author | 2019-08-22 16:51:48 -0400 | |
---|---|---|
committer | 2019-08-23 14:14:25 +0000 | |
commit | 8d49d0d63f663716cf758c45674de4f4fd8262a9 (patch) | |
tree | b6171e2ff51525ee099a52ef6924a33ba63b863a | |
parent | 8247b5f5a6cdcb791f62d9dfbc96be509f22cb54 (diff) |
[DO NOT MERGE]Daggerize Android Auto
Test: tested locally
BUG:139865326
Change-Id: I38c6f3bf8a8c43997251b1f13b3f2fb4533d15f2
Merged-In: I38c6f3bf8a8c43997251b1f13b3f2fb4533d15f2
8 files changed, 159 insertions, 51 deletions
diff --git a/packages/CarSystemUI/Android.bp b/packages/CarSystemUI/Android.bp index 61cab73c226a..bbae9ff51615 100644 --- a/packages/CarSystemUI/Android.bp +++ b/packages/CarSystemUI/Android.bp @@ -47,6 +47,8 @@ android_app { "androidx.lifecycle_lifecycle-extensions", "SystemUI-tags", "SystemUI-proto", + "dagger2-2.19", + "//external/kotlinc:kotlin-annotations", ], libs: [ diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java index 3b278b40acea..c7654e81e0b1 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java @@ -20,12 +20,8 @@ import android.content.Context; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.ViewMediatorCallback; -import com.android.systemui.car.CarNotificationEntryManager; -import com.android.systemui.car.CarNotificationInterruptionStateProvider; import com.android.systemui.statusbar.car.CarFacetButtonController; import com.android.systemui.statusbar.car.CarStatusBarKeyguardViewManager; -import com.android.systemui.statusbar.notification.NotificationEntryManager; -import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.volume.CarVolumeDialogComponent; import com.android.systemui.volume.VolumeDialogComponent; @@ -33,8 +29,6 @@ import com.android.systemui.volume.VolumeDialogComponent; import javax.inject.Singleton; import dagger.Component; -import dagger.Module; -import dagger.Provides; /** * Class factory to provide car specific SystemUI components. @@ -44,11 +38,14 @@ public class CarSystemUIFactory extends SystemUIFactory { private CarDependencyComponent mCarDependencyComponent; @Override - protected void init(Context context) { - super.init(context); + protected SystemUIRootComponent buildSystemUIRootComponent(Context context) { mCarDependencyComponent = DaggerCarSystemUIFactory_CarDependencyComponent.builder() .contextHolder(new ContextHolder(context)) .build(); + return DaggerCarSystemUIRootComponent.builder() + .dependencyProvider(new com.android.systemui.DependencyProvider()) + .contextHolder(new ContextHolder(context)) + .build(); } public CarDependencyComponent getCarDependencyComponent() { @@ -64,42 +61,9 @@ public class CarSystemUIFactory extends SystemUIFactory { return new CarVolumeDialogComponent(systemUi, context); } - @Override - public NotificationInterruptionStateProvider provideNotificationInterruptionStateProvider( - Context context) { - return new CarNotificationInterruptionStateProvider(context); - } - - @Override - public boolean provideAllowNotificationLongPress() { - return false; - } - - @Module - protected static class ContextHolder { - private Context mContext; - - public ContextHolder(Context context) { - mContext = context; - } - - @Provides - public Context provideContext() { - return mContext; - } - } - @Singleton @Component(modules = ContextHolder.class) public interface CarDependencyComponent { CarFacetButtonController getCarFacetButtonController(); } - - /** - * Use {@link CarNotificationEntryManager}, which does nothing when adding a notification. - */ - @Singleton - public NotificationEntryManager provideNotificationEntryManager(Context context) { - return new CarNotificationEntryManager(context); - } } diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java new file mode 100644 index 000000000000..9a063aa7b791 --- /dev/null +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui; + +import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME; +import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; + +import android.content.Context; + +import com.android.systemui.car.CarNotificationEntryManager; +import com.android.systemui.car.CarNotificationInterruptionStateProvider; +import com.android.systemui.dock.DockManager; +import com.android.systemui.dock.DockManagerImpl; +import com.android.systemui.power.EnhancedEstimates; +import com.android.systemui.power.EnhancedEstimatesImpl; +import com.android.systemui.statusbar.NotificationLockscreenUserManager; +import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl; +import com.android.systemui.statusbar.notification.NotificationEntryManager; +import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider; +import com.android.systemui.statusbar.notification.collection.NotificationData; +import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl; +import com.android.systemui.statusbar.phone.ShadeController; +import com.android.systemui.statusbar.phone.StatusBar; + +import javax.inject.Named; +import javax.inject.Singleton; + +import dagger.Binds; +import dagger.Module; +import dagger.Provides; + +@Module +abstract class CarSystemUIModule { + + @Binds + abstract NotificationInterruptionStateProvider bindNotificationInterruptionStateProvider( + CarNotificationInterruptionStateProvider notificationInterruptionStateProvider); + + @Singleton + @Provides + @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) + static boolean provideAllowNotificationLongPress() { + return false; + } + + /** + * Use {@link CarNotificationEntryManager}, which does nothing when adding a notification. + */ + @Binds + abstract NotificationEntryManager bindNotificationEntryManager( + CarNotificationEntryManager notificationEntryManager); + + @Singleton + @Provides + @Named(LEAK_REPORT_EMAIL_NAME) + static String provideLeakReportEmail() { + return "buganizer-system+181579@google.com"; + } + + @Binds + abstract EnhancedEstimates bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates); + + @Binds + abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager( + NotificationLockscreenUserManagerImpl notificationLockscreenUserManager); + + @Binds + abstract DockManager bindDockManager(DockManagerImpl dockManager); + + @Binds + abstract NotificationData.KeyguardEnvironment bindKeyguardEnvironment( + KeyguardEnvironmentImpl keyguardEnvironment); + + @Singleton + @Provides + static ShadeController provideShadeController(Context context) { + return SysUiServiceProvider.getComponent(context, StatusBar.class); + } + + @Binds + abstract SystemUIRootComponent bindSystemUIRootComponent( + CarSystemUIRootComponent systemUIRootComponent); +} diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIRootComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIRootComponent.java new file mode 100644 index 000000000000..d6b766b80939 --- /dev/null +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIRootComponent.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui; + +import javax.inject.Singleton; + +import dagger.Component; + +@Singleton +@Component( + modules = { + DependencyProvider.class, + DependencyBinder.class, + ServiceBinder.class, + SystemUIFactory.ContextHolder.class, + SystemUIModule.class, + CarSystemUIModule.class + }) +interface CarSystemUIRootComponent extends SystemUIRootComponent { + +} diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java index 6d9c7bafb2b2..a107dd793551 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java @@ -21,13 +21,19 @@ import android.service.notification.StatusBarNotification; import com.android.systemui.statusbar.notification.NotificationEntryManager; +import javax.inject.Inject; +import javax.inject.Singleton; + /** * Car specific notification entry manager that does nothing when adding a notification. * * <p> This is because system UI notifications are disabled and we have a different implementation. * Please see {@link com.android.car.notification}. */ +@Singleton public class CarNotificationEntryManager extends NotificationEntryManager { + + @Inject public CarNotificationEntryManager(Context context) { super(context); } diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java index 6d960d7b9e21..ec40cc377594 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java @@ -21,9 +21,15 @@ import android.content.Context; import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider; import com.android.systemui.statusbar.notification.collection.NotificationEntry; +import javax.inject.Inject; +import javax.inject.Singleton; + /** Auto-specific implementation of {@link NotificationInterruptionStateProvider}. */ +@Singleton public class CarNotificationInterruptionStateProvider extends NotificationInterruptionStateProvider { + + @Inject public CarNotificationInterruptionStateProvider(Context context) { super(context); } diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIDefaultModule.java b/packages/SystemUI/src/com/android/systemui/SystemUIDefaultModule.java index 7f3159131f96..262b5ec50d83 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIDefaultModule.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIDefaultModule.java @@ -16,6 +16,7 @@ package com.android.systemui; +import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME; import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; import android.content.Context; @@ -74,4 +75,11 @@ abstract class SystemUIDefaultModule { static ShadeController provideShadeController(Context context) { return SysUiServiceProvider.getComponent(context, StatusBar.class); } + + @Singleton + @Provides + @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) + static boolean provideAllowNotificationLongPress() { + return true; + } } diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/SystemUIModule.java index e1baf9fcf9bc..edd2463984c8 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIModule.java @@ -16,8 +16,6 @@ package com.android.systemui; -import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME; - import android.annotation.Nullable; import android.content.Context; import android.content.pm.PackageManager; @@ -26,7 +24,6 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.KeyguardLiftController; import com.android.systemui.util.AsyncSensorManager; -import javax.inject.Named; import javax.inject.Singleton; import dagger.Module; @@ -50,11 +47,4 @@ public abstract class SystemUIModule { } return new KeyguardLiftController(context, statusBarStateController, asyncSensorManager); } - - @Singleton - @Provides - @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) - static boolean provideAllowNotificationLongPress() { - return true; - } } |