Merge "Delete dead code related to CarStatusBar" into rvc-qpr-dev am: fd6589ba55
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12213004 Change-Id: I9fd36374ee8ad089c334b4b0d717665f4811e007
This commit is contained in:
@@ -1,80 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
**
|
|
||||||
** Copyright 2020, 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.
|
|
||||||
*/
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- This is the notification shade window. -->
|
|
||||||
<com.android.systemui.statusbar.phone.NotificationShadeWindowView
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:fitsSystemWindows="true">
|
|
||||||
|
|
||||||
<com.android.systemui.statusbar.BackDropView
|
|
||||||
android:id="@+id/backdrop"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:visibility="gone"
|
|
||||||
sysui:ignoreRightInset="true"
|
|
||||||
>
|
|
||||||
<ImageView android:id="@+id/backdrop_back"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:scaleType="centerCrop"/>
|
|
||||||
<ImageView android:id="@+id/backdrop_front"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
android:visibility="invisible"/>
|
|
||||||
</com.android.systemui.statusbar.BackDropView>
|
|
||||||
|
|
||||||
<com.android.systemui.statusbar.ScrimView
|
|
||||||
android:id="@+id/scrim_behind"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:importantForAccessibility="no"
|
|
||||||
sysui:ignoreRightInset="true"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<include layout="@layout/brightness_mirror"/>
|
|
||||||
|
|
||||||
<ViewStub android:id="@+id/fullscreen_user_switcher_stub"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout="@layout/car_fullscreen_user_switcher"/>
|
|
||||||
|
|
||||||
<include layout="@layout/notification_center_activity"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_marginBottom="@dimen/navigation_bar_height"
|
|
||||||
android:visibility="invisible"/>
|
|
||||||
|
|
||||||
<include layout="@layout/status_bar_expanded"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:visibility="invisible"/>
|
|
||||||
|
|
||||||
<com.android.systemui.statusbar.ScrimView
|
|
||||||
android:id="@+id/scrim_in_front"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:importantForAccessibility="no"
|
|
||||||
sysui:ignoreRightInset="true"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</com.android.systemui.statusbar.phone.NotificationShadeWindowView>
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
**
|
|
||||||
** Copyright 2020, 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.
|
|
||||||
*/
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- This is the status bar window. -->
|
|
||||||
<com.android.systemui.statusbar.phone.StatusBarWindowView
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:fitsSystemWindows="true">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
>
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/status_bar_container"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:visibility="gone"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/car_top_navigation_bar_container"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</com.android.systemui.statusbar.phone.StatusBarWindowView>
|
|
||||||
@@ -21,8 +21,6 @@ import com.android.systemui.bubbles.dagger.BubbleModule;
|
|||||||
import com.android.systemui.car.navigationbar.CarNavigationBar;
|
import com.android.systemui.car.navigationbar.CarNavigationBar;
|
||||||
import com.android.systemui.car.notification.CarNotificationModule;
|
import com.android.systemui.car.notification.CarNotificationModule;
|
||||||
import com.android.systemui.car.sideloaded.SideLoadedAppController;
|
import com.android.systemui.car.sideloaded.SideLoadedAppController;
|
||||||
import com.android.systemui.car.statusbar.CarStatusBar;
|
|
||||||
import com.android.systemui.car.statusbar.CarStatusBarModule;
|
|
||||||
import com.android.systemui.car.voicerecognition.ConnectedDeviceVoiceRecognitionNotifier;
|
import com.android.systemui.car.voicerecognition.ConnectedDeviceVoiceRecognitionNotifier;
|
||||||
import com.android.systemui.car.volume.VolumeUI;
|
import com.android.systemui.car.volume.VolumeUI;
|
||||||
import com.android.systemui.car.window.OverlayWindowModule;
|
import com.android.systemui.car.window.OverlayWindowModule;
|
||||||
@@ -36,10 +34,10 @@ import com.android.systemui.recents.Recents;
|
|||||||
import com.android.systemui.recents.RecentsModule;
|
import com.android.systemui.recents.RecentsModule;
|
||||||
import com.android.systemui.shortcut.ShortcutKeyDispatcher;
|
import com.android.systemui.shortcut.ShortcutKeyDispatcher;
|
||||||
import com.android.systemui.stackdivider.Divider;
|
import com.android.systemui.stackdivider.Divider;
|
||||||
|
import com.android.systemui.statusbar.dagger.StatusBarModule;
|
||||||
import com.android.systemui.statusbar.notification.InstantAppNotifier;
|
import com.android.systemui.statusbar.notification.InstantAppNotifier;
|
||||||
import com.android.systemui.statusbar.notification.dagger.NotificationsModule;
|
import com.android.systemui.statusbar.notification.dagger.NotificationsModule;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
import com.android.systemui.statusbar.tv.TvStatusBar;
|
|
||||||
import com.android.systemui.theme.ThemeOverlayController;
|
import com.android.systemui.theme.ThemeOverlayController;
|
||||||
import com.android.systemui.toast.ToastUI;
|
import com.android.systemui.toast.ToastUI;
|
||||||
import com.android.systemui.util.leak.GarbageMonitor;
|
import com.android.systemui.util.leak.GarbageMonitor;
|
||||||
@@ -50,7 +48,7 @@ import dagger.multibindings.ClassKey;
|
|||||||
import dagger.multibindings.IntoMap;
|
import dagger.multibindings.IntoMap;
|
||||||
|
|
||||||
/** Binder for car specific {@link SystemUI} modules. */
|
/** Binder for car specific {@link SystemUI} modules. */
|
||||||
@Module(includes = {RecentsModule.class, CarStatusBarModule.class, NotificationsModule.class,
|
@Module(includes = {RecentsModule.class, StatusBarModule.class, NotificationsModule.class,
|
||||||
BubbleModule.class, KeyguardModule.class, OverlayWindowModule.class,
|
BubbleModule.class, KeyguardModule.class, OverlayWindowModule.class,
|
||||||
CarNotificationModule.class})
|
CarNotificationModule.class})
|
||||||
public abstract class CarSystemUIBinder {
|
public abstract class CarSystemUIBinder {
|
||||||
@@ -155,19 +153,7 @@ public abstract class CarSystemUIBinder {
|
|||||||
@Binds
|
@Binds
|
||||||
@IntoMap
|
@IntoMap
|
||||||
@ClassKey(StatusBar.class)
|
@ClassKey(StatusBar.class)
|
||||||
public abstract SystemUI bindsStatusBar(CarStatusBar sysui);
|
public abstract SystemUI bindsStatusBar(StatusBar sysui);
|
||||||
|
|
||||||
/** Inject into TvStatusBar. */
|
|
||||||
@Binds
|
|
||||||
@IntoMap
|
|
||||||
@ClassKey(TvStatusBar.class)
|
|
||||||
public abstract SystemUI bindsTvStatusBar(TvStatusBar sysui);
|
|
||||||
|
|
||||||
/** Inject into StatusBarGoogle. */
|
|
||||||
@Binds
|
|
||||||
@IntoMap
|
|
||||||
@ClassKey(CarStatusBar.class)
|
|
||||||
public abstract SystemUI bindsCarStatusBar(CarStatusBar sysui);
|
|
||||||
|
|
||||||
/** Inject into VolumeUI. */
|
/** Inject into VolumeUI. */
|
||||||
@Binds
|
@Binds
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ import com.android.systemui.broadcast.BroadcastDispatcher;
|
|||||||
import com.android.systemui.car.CarDeviceProvisionedController;
|
import com.android.systemui.car.CarDeviceProvisionedController;
|
||||||
import com.android.systemui.car.CarDeviceProvisionedControllerImpl;
|
import com.android.systemui.car.CarDeviceProvisionedControllerImpl;
|
||||||
import com.android.systemui.car.keyguard.CarKeyguardViewController;
|
import com.android.systemui.car.keyguard.CarKeyguardViewController;
|
||||||
import com.android.systemui.car.statusbar.CarStatusBar;
|
|
||||||
import com.android.systemui.car.statusbar.CarStatusBarKeyguardViewManager;
|
|
||||||
import com.android.systemui.car.statusbar.DozeServiceHost;
|
import com.android.systemui.car.statusbar.DozeServiceHost;
|
||||||
import com.android.systemui.car.statusbar.DummyNotificationShadeWindowController;
|
import com.android.systemui.car.statusbar.DummyNotificationShadeWindowController;
|
||||||
import com.android.systemui.car.volume.CarVolumeDialogComponent;
|
import com.android.systemui.car.volume.CarVolumeDialogComponent;
|
||||||
@@ -59,8 +57,6 @@ import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
|||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.phone.ShadeControllerImpl;
|
import com.android.systemui.statusbar.phone.ShadeControllerImpl;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
|
||||||
import com.android.systemui.statusbar.policy.BatteryController;
|
import com.android.systemui.statusbar.policy.BatteryController;
|
||||||
import com.android.systemui.statusbar.policy.BatteryControllerImpl;
|
import com.android.systemui.statusbar.policy.BatteryControllerImpl;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
@@ -157,17 +153,10 @@ public abstract class CarSystemUIModule {
|
|||||||
abstract SystemUIRootComponent bindSystemUIRootComponent(
|
abstract SystemUIRootComponent bindSystemUIRootComponent(
|
||||||
CarSystemUIRootComponent systemUIRootComponent);
|
CarSystemUIRootComponent systemUIRootComponent);
|
||||||
|
|
||||||
@Binds
|
|
||||||
public abstract StatusBar bindStatusBar(CarStatusBar statusBar);
|
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
abstract VolumeDialogComponent bindVolumeDialogComponent(
|
abstract VolumeDialogComponent bindVolumeDialogComponent(
|
||||||
CarVolumeDialogComponent carVolumeDialogComponent);
|
CarVolumeDialogComponent carVolumeDialogComponent);
|
||||||
|
|
||||||
@Binds
|
|
||||||
abstract StatusBarKeyguardViewManager bindStatusBarKeyguardViewManager(
|
|
||||||
CarStatusBarKeyguardViewManager keyguardViewManager);
|
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
abstract KeyguardViewController bindKeyguardViewController(
|
abstract KeyguardViewController bindKeyguardViewController(
|
||||||
CarKeyguardViewController carKeyguardViewController);
|
CarKeyguardViewController carKeyguardViewController);
|
||||||
|
|||||||
@@ -1,519 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2020 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.car.statusbar;
|
|
||||||
|
|
||||||
import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
|
|
||||||
|
|
||||||
import android.annotation.Nullable;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.PowerManager;
|
|
||||||
import android.util.DisplayMetrics;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import com.android.internal.logging.MetricsLogger;
|
|
||||||
import com.android.internal.statusbar.RegisterStatusBarResult;
|
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
|
||||||
import com.android.keyguard.ViewMediatorCallback;
|
|
||||||
import com.android.systemui.BatteryMeterView;
|
|
||||||
import com.android.systemui.Dependency;
|
|
||||||
import com.android.systemui.InitController;
|
|
||||||
import com.android.systemui.Prefs;
|
|
||||||
import com.android.systemui.R;
|
|
||||||
import com.android.systemui.assist.AssistManager;
|
|
||||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
|
||||||
import com.android.systemui.bubbles.BubbleController;
|
|
||||||
import com.android.systemui.car.CarDeviceProvisionedController;
|
|
||||||
import com.android.systemui.car.CarDeviceProvisionedListener;
|
|
||||||
import com.android.systemui.car.bluetooth.CarBatteryController;
|
|
||||||
import com.android.systemui.car.navigationbar.CarNavigationBarController;
|
|
||||||
import com.android.systemui.classifier.FalsingLog;
|
|
||||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
|
||||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
|
||||||
import com.android.systemui.fragments.FragmentHostManager;
|
|
||||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
|
||||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
|
||||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
|
||||||
import com.android.systemui.plugins.DarkIconDispatcher;
|
|
||||||
import com.android.systemui.plugins.FalsingManager;
|
|
||||||
import com.android.systemui.plugins.PluginDependencyProvider;
|
|
||||||
import com.android.systemui.plugins.qs.QS;
|
|
||||||
import com.android.systemui.recents.Recents;
|
|
||||||
import com.android.systemui.recents.ScreenPinningRequest;
|
|
||||||
import com.android.systemui.shared.plugins.PluginManager;
|
|
||||||
import com.android.systemui.stackdivider.Divider;
|
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
|
||||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
|
||||||
import com.android.systemui.statusbar.NavigationBarController;
|
|
||||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
|
||||||
import com.android.systemui.statusbar.NotificationMediaManager;
|
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
|
||||||
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
|
||||||
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
|
|
||||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
|
||||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
|
||||||
import com.android.systemui.statusbar.VibratorHelper;
|
|
||||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
|
||||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
|
||||||
import com.android.systemui.statusbar.notification.VisualStabilityManager;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
|
||||||
import com.android.systemui.statusbar.notification.init.NotificationsController;
|
|
||||||
import com.android.systemui.statusbar.notification.interruption.BypassHeadsUpNotifier;
|
|
||||||
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
|
|
||||||
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptSuppressor;
|
|
||||||
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
|
|
||||||
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
|
||||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
|
||||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
|
||||||
import com.android.systemui.statusbar.phone.CollapsedStatusBarFragment;
|
|
||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
|
||||||
import com.android.systemui.statusbar.phone.DozeScrimController;
|
|
||||||
import com.android.systemui.statusbar.phone.DozeServiceHost;
|
|
||||||
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
|
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
|
||||||
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
|
|
||||||
import com.android.systemui.statusbar.phone.LightBarController;
|
|
||||||
import com.android.systemui.statusbar.phone.LightsOutNotifController;
|
|
||||||
import com.android.systemui.statusbar.phone.LockscreenLockIconController;
|
|
||||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
|
||||||
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
|
||||||
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
|
|
||||||
import com.android.systemui.statusbar.phone.ScrimController;
|
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
|
||||||
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
|
|
||||||
import com.android.systemui.statusbar.policy.BatteryController;
|
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
|
||||||
import com.android.systemui.statusbar.policy.ExtensionController;
|
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
|
||||||
import com.android.systemui.statusbar.policy.NetworkController;
|
|
||||||
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
|
||||||
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
|
|
||||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
|
||||||
import com.android.systemui.volume.VolumeComponent;
|
|
||||||
|
|
||||||
import java.io.FileDescriptor;
|
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.inject.Provider;
|
|
||||||
|
|
||||||
import dagger.Lazy;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A status bar tailored for the automotive use case.
|
|
||||||
*/
|
|
||||||
public class CarStatusBar extends StatusBar implements CarBatteryController.BatteryViewHandler {
|
|
||||||
private static final String TAG = "CarStatusBar";
|
|
||||||
|
|
||||||
private final UserSwitcherController mUserSwitcherController;
|
|
||||||
private final ScrimController mScrimController;
|
|
||||||
|
|
||||||
private CarBatteryController mCarBatteryController;
|
|
||||||
private BatteryMeterView mBatteryMeterView;
|
|
||||||
private Drawable mNotificationPanelBackground;
|
|
||||||
|
|
||||||
private final Object mQueueLock = new Object();
|
|
||||||
private final CarNavigationBarController mCarNavigationBarController;
|
|
||||||
private final CarDeviceProvisionedController mCarDeviceProvisionedController;
|
|
||||||
private final ScreenLifecycle mScreenLifecycle;
|
|
||||||
|
|
||||||
private boolean mDeviceIsSetUpForUser = true;
|
|
||||||
private boolean mIsUserSetupInProgress = false;
|
|
||||||
|
|
||||||
public CarStatusBar(
|
|
||||||
Context context,
|
|
||||||
NotificationsController notificationsController,
|
|
||||||
LightBarController lightBarController,
|
|
||||||
AutoHideController autoHideController,
|
|
||||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
|
||||||
StatusBarIconController statusBarIconController,
|
|
||||||
PulseExpansionHandler pulseExpansionHandler,
|
|
||||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
|
||||||
KeyguardBypassController keyguardBypassController,
|
|
||||||
KeyguardStateController keyguardStateController,
|
|
||||||
HeadsUpManagerPhone headsUpManagerPhone,
|
|
||||||
DynamicPrivacyController dynamicPrivacyController,
|
|
||||||
BypassHeadsUpNotifier bypassHeadsUpNotifier,
|
|
||||||
FalsingManager falsingManager,
|
|
||||||
BroadcastDispatcher broadcastDispatcher,
|
|
||||||
RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
|
|
||||||
NotificationGutsManager notificationGutsManager,
|
|
||||||
NotificationLogger notificationLogger,
|
|
||||||
NotificationInterruptStateProvider notificationInterruptStateProvider,
|
|
||||||
NotificationViewHierarchyManager notificationViewHierarchyManager,
|
|
||||||
KeyguardViewMediator keyguardViewMediator,
|
|
||||||
DisplayMetrics displayMetrics,
|
|
||||||
MetricsLogger metricsLogger,
|
|
||||||
@UiBackground Executor uiBgExecutor,
|
|
||||||
NotificationMediaManager notificationMediaManager,
|
|
||||||
NotificationLockscreenUserManager lockScreenUserManager,
|
|
||||||
NotificationRemoteInputManager remoteInputManager,
|
|
||||||
UserSwitcherController userSwitcherController,
|
|
||||||
NetworkController networkController,
|
|
||||||
BatteryController batteryController,
|
|
||||||
SysuiColorExtractor colorExtractor,
|
|
||||||
ScreenLifecycle screenLifecycle,
|
|
||||||
WakefulnessLifecycle wakefulnessLifecycle,
|
|
||||||
SysuiStatusBarStateController statusBarStateController,
|
|
||||||
VibratorHelper vibratorHelper,
|
|
||||||
BubbleController bubbleController,
|
|
||||||
NotificationGroupManager groupManager,
|
|
||||||
VisualStabilityManager visualStabilityManager,
|
|
||||||
CarDeviceProvisionedController carDeviceProvisionedController,
|
|
||||||
NavigationBarController navigationBarController,
|
|
||||||
Lazy<AssistManager> assistManagerLazy,
|
|
||||||
ConfigurationController configurationController,
|
|
||||||
NotificationShadeWindowController notificationShadeWindowController,
|
|
||||||
LockscreenLockIconController lockscreenLockIconController,
|
|
||||||
DozeParameters dozeParameters,
|
|
||||||
ScrimController scrimController,
|
|
||||||
Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
|
|
||||||
Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
|
|
||||||
DozeServiceHost dozeServiceHost,
|
|
||||||
PowerManager powerManager,
|
|
||||||
ScreenPinningRequest screenPinningRequest,
|
|
||||||
DozeScrimController dozeScrimController,
|
|
||||||
VolumeComponent volumeComponent,
|
|
||||||
CommandQueue commandQueue,
|
|
||||||
Optional<Recents> recents,
|
|
||||||
Provider<StatusBarComponent.Builder> statusBarComponentBuilder,
|
|
||||||
PluginManager pluginManager,
|
|
||||||
Optional<Divider> dividerOptional,
|
|
||||||
SuperStatusBarViewFactory superStatusBarViewFactory,
|
|
||||||
LightsOutNotifController lightsOutNotifController,
|
|
||||||
StatusBarNotificationActivityStarter.Builder
|
|
||||||
statusBarNotificationActivityStarterBuilder,
|
|
||||||
ShadeController shadeController,
|
|
||||||
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
|
|
||||||
ViewMediatorCallback viewMediatorCallback,
|
|
||||||
InitController initController,
|
|
||||||
DarkIconDispatcher darkIconDispatcher,
|
|
||||||
@Named(TIME_TICK_HANDLER_NAME) Handler timeTickHandler,
|
|
||||||
PluginDependencyProvider pluginDependencyProvider,
|
|
||||||
KeyguardDismissUtil keyguardDismissUtil,
|
|
||||||
ExtensionController extensionController,
|
|
||||||
UserInfoControllerImpl userInfoControllerImpl,
|
|
||||||
PhoneStatusBarPolicy phoneStatusBarPolicy,
|
|
||||||
KeyguardIndicationController keyguardIndicationController,
|
|
||||||
DismissCallbackRegistry dismissCallbackRegistry,
|
|
||||||
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
|
|
||||||
Lazy<NotificationShadeDepthController> depthControllerLazy,
|
|
||||||
/* Car Settings injected components. */
|
|
||||||
CarNavigationBarController carNavigationBarController) {
|
|
||||||
super(
|
|
||||||
context,
|
|
||||||
notificationsController,
|
|
||||||
lightBarController,
|
|
||||||
autoHideController,
|
|
||||||
keyguardUpdateMonitor,
|
|
||||||
statusBarIconController,
|
|
||||||
pulseExpansionHandler,
|
|
||||||
notificationWakeUpCoordinator,
|
|
||||||
keyguardBypassController,
|
|
||||||
keyguardStateController,
|
|
||||||
headsUpManagerPhone,
|
|
||||||
dynamicPrivacyController,
|
|
||||||
bypassHeadsUpNotifier,
|
|
||||||
falsingManager,
|
|
||||||
broadcastDispatcher,
|
|
||||||
remoteInputQuickSettingsDisabler,
|
|
||||||
notificationGutsManager,
|
|
||||||
notificationLogger,
|
|
||||||
notificationInterruptStateProvider,
|
|
||||||
notificationViewHierarchyManager,
|
|
||||||
keyguardViewMediator,
|
|
||||||
displayMetrics,
|
|
||||||
metricsLogger,
|
|
||||||
uiBgExecutor,
|
|
||||||
notificationMediaManager,
|
|
||||||
lockScreenUserManager,
|
|
||||||
remoteInputManager,
|
|
||||||
userSwitcherController,
|
|
||||||
networkController,
|
|
||||||
batteryController,
|
|
||||||
colorExtractor,
|
|
||||||
screenLifecycle,
|
|
||||||
wakefulnessLifecycle,
|
|
||||||
statusBarStateController,
|
|
||||||
vibratorHelper,
|
|
||||||
bubbleController,
|
|
||||||
groupManager,
|
|
||||||
visualStabilityManager,
|
|
||||||
carDeviceProvisionedController,
|
|
||||||
navigationBarController,
|
|
||||||
assistManagerLazy,
|
|
||||||
configurationController,
|
|
||||||
notificationShadeWindowController,
|
|
||||||
lockscreenLockIconController,
|
|
||||||
dozeParameters,
|
|
||||||
scrimController,
|
|
||||||
null /* keyguardLiftController */,
|
|
||||||
lockscreenWallpaperLazy,
|
|
||||||
biometricUnlockControllerLazy,
|
|
||||||
dozeServiceHost,
|
|
||||||
powerManager,
|
|
||||||
screenPinningRequest,
|
|
||||||
dozeScrimController,
|
|
||||||
volumeComponent,
|
|
||||||
commandQueue,
|
|
||||||
recents,
|
|
||||||
statusBarComponentBuilder,
|
|
||||||
pluginManager,
|
|
||||||
dividerOptional,
|
|
||||||
lightsOutNotifController,
|
|
||||||
statusBarNotificationActivityStarterBuilder,
|
|
||||||
shadeController,
|
|
||||||
superStatusBarViewFactory,
|
|
||||||
statusBarKeyguardViewManager,
|
|
||||||
viewMediatorCallback,
|
|
||||||
initController,
|
|
||||||
darkIconDispatcher,
|
|
||||||
timeTickHandler,
|
|
||||||
pluginDependencyProvider,
|
|
||||||
keyguardDismissUtil,
|
|
||||||
extensionController,
|
|
||||||
userInfoControllerImpl,
|
|
||||||
phoneStatusBarPolicy,
|
|
||||||
keyguardIndicationController,
|
|
||||||
dismissCallbackRegistry,
|
|
||||||
depthControllerLazy,
|
|
||||||
statusBarTouchableRegionManager);
|
|
||||||
mUserSwitcherController = userSwitcherController;
|
|
||||||
mScrimController = scrimController;
|
|
||||||
mCarDeviceProvisionedController = carDeviceProvisionedController;
|
|
||||||
mCarNavigationBarController = carNavigationBarController;
|
|
||||||
mScreenLifecycle = screenLifecycle;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void start() {
|
|
||||||
mDeviceIsSetUpForUser = mCarDeviceProvisionedController.isCurrentUserSetup();
|
|
||||||
mIsUserSetupInProgress = mCarDeviceProvisionedController.isCurrentUserSetupInProgress();
|
|
||||||
|
|
||||||
super.start();
|
|
||||||
|
|
||||||
createBatteryController();
|
|
||||||
mCarBatteryController.startListening();
|
|
||||||
|
|
||||||
mCarDeviceProvisionedController.addCallback(
|
|
||||||
new CarDeviceProvisionedListener() {
|
|
||||||
@Override
|
|
||||||
public void onUserSetupInProgressChanged() {
|
|
||||||
mDeviceIsSetUpForUser = mCarDeviceProvisionedController
|
|
||||||
.isCurrentUserSetup();
|
|
||||||
mIsUserSetupInProgress = mCarDeviceProvisionedController
|
|
||||||
.isCurrentUserSetupInProgress();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onUserSetupChanged() {
|
|
||||||
mDeviceIsSetUpForUser = mCarDeviceProvisionedController
|
|
||||||
.isCurrentUserSetup();
|
|
||||||
mIsUserSetupInProgress = mCarDeviceProvisionedController
|
|
||||||
.isCurrentUserSetupInProgress();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onUserSwitched() {
|
|
||||||
mDeviceIsSetUpForUser = mCarDeviceProvisionedController
|
|
||||||
.isCurrentUserSetup();
|
|
||||||
mIsUserSetupInProgress = mCarDeviceProvisionedController
|
|
||||||
.isCurrentUserSetupInProgress();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
mNotificationInterruptStateProvider.addSuppressor(new NotificationInterruptSuppressor() {
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return TAG;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean suppressInterruptions(NotificationEntry entry) {
|
|
||||||
// Because space is usually constrained in the auto use-case, there should not be a
|
|
||||||
// pinned notification when the shade has been expanded.
|
|
||||||
// Ensure this by not allowing any interruptions (ie: pinning any notifications) if
|
|
||||||
// the shade is already opened.
|
|
||||||
return !getPresenter().isPresenterFullyCollapsed();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hideKeyguard() {
|
|
||||||
boolean result = super.hideKeyguard();
|
|
||||||
mCarNavigationBarController.hideAllKeyguardButtons(isDeviceSetupForUser());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void showKeyguard() {
|
|
||||||
super.showKeyguard();
|
|
||||||
mCarNavigationBarController.showAllKeyguardButtons(isDeviceSetupForUser());
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isDeviceSetupForUser() {
|
|
||||||
return mDeviceIsSetUpForUser && !mIsUserSetupInProgress;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void makeStatusBarView(@Nullable RegisterStatusBarResult result) {
|
|
||||||
super.makeStatusBarView(result);
|
|
||||||
|
|
||||||
mNotificationPanelBackground = getDefaultWallpaper();
|
|
||||||
mScrimController.setScrimBehindDrawable(mNotificationPanelBackground);
|
|
||||||
|
|
||||||
FragmentHostManager manager = FragmentHostManager.get(mPhoneStatusBarWindow);
|
|
||||||
manager.addTagListener(CollapsedStatusBarFragment.TAG, (tag, fragment) -> {
|
|
||||||
mBatteryMeterView = fragment.getView().findViewById(R.id.battery);
|
|
||||||
|
|
||||||
// By default, the BatteryMeterView should not be visible. It will be toggled
|
|
||||||
// when a device has connected by bluetooth.
|
|
||||||
mBatteryMeterView.setVisibility(View.GONE);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void animateExpandNotificationsPanel() {
|
|
||||||
// No op.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected QS createDefaultQSFragment() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private BatteryController createBatteryController() {
|
|
||||||
mCarBatteryController = new CarBatteryController(mContext);
|
|
||||||
mCarBatteryController.addBatteryViewHandler(this);
|
|
||||||
return mCarBatteryController;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void createNavigationBar(@Nullable RegisterStatusBarResult result) {
|
|
||||||
// No op.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void notifyBiometricAuthModeChanged() {
|
|
||||||
// No op.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
|
||||||
//When executing dump() function simultaneously, we need to serialize them
|
|
||||||
//to get mStackScroller's position correctly.
|
|
||||||
synchronized (mQueueLock) {
|
|
||||||
pw.println(" mStackScroller: " + viewInfo(mStackScroller));
|
|
||||||
pw.println(" mStackScroller: " + viewInfo(mStackScroller)
|
|
||||||
+ " scroll " + mStackScroller.getScrollX()
|
|
||||||
+ "," + mStackScroller.getScrollY());
|
|
||||||
}
|
|
||||||
pw.print(" mCarBatteryController=");
|
|
||||||
pw.println(mCarBatteryController);
|
|
||||||
pw.print(" mBatteryMeterView=");
|
|
||||||
pw.println(mBatteryMeterView);
|
|
||||||
|
|
||||||
if (Dependency.get(KeyguardUpdateMonitor.class) != null) {
|
|
||||||
Dependency.get(KeyguardUpdateMonitor.class).dump(fd, pw, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
FalsingLog.dump(pw);
|
|
||||||
|
|
||||||
pw.println("SharedPreferences:");
|
|
||||||
for (Map.Entry<String, ?> entry : Prefs.getAll(mContext).entrySet()) {
|
|
||||||
pw.print(" ");
|
|
||||||
pw.print(entry.getKey());
|
|
||||||
pw.print("=");
|
|
||||||
pw.println(entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void showBatteryView() {
|
|
||||||
if (Log.isLoggable(TAG, Log.DEBUG)) {
|
|
||||||
Log.d(TAG, "showBatteryView(). mBatteryMeterView: " + mBatteryMeterView);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mBatteryMeterView != null) {
|
|
||||||
mBatteryMeterView.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void hideBatteryView() {
|
|
||||||
if (Log.isLoggable(TAG, Log.DEBUG)) {
|
|
||||||
Log.d(TAG, "hideBatteryView(). mBatteryMeterView: " + mBatteryMeterView);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mBatteryMeterView != null) {
|
|
||||||
mBatteryMeterView.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void createUserSwitcher() {
|
|
||||||
if (!mUserSwitcherController.useFullscreenUserSwitcher()) {
|
|
||||||
super.createUserSwitcher();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dismisses the keyguard and shows bouncer if authentication is necessary.
|
|
||||||
*/
|
|
||||||
public void dismissKeyguard() {
|
|
||||||
// Don't dismiss keyguard when the screen is off.
|
|
||||||
if (mScreenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_OFF) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
executeRunnableDismissingKeyguard(null/* runnable */, null /* cancelAction */,
|
|
||||||
true /* dismissShade */, true /* afterKeyguardGone */, true /* deferred */);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ensures that relevant child views are appropriately recreated when the device's density
|
|
||||||
* changes.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onDensityOrFontScaleChanged() {
|
|
||||||
super.onDensityOrFontScaleChanged();
|
|
||||||
// Need to update the background on density changed in case the change was due to night
|
|
||||||
// mode.
|
|
||||||
mNotificationPanelBackground = getDefaultWallpaper();
|
|
||||||
mScrimController.setScrimBehindDrawable(mNotificationPanelBackground);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the {@link Drawable} that represents the wallpaper that the user has currently set.
|
|
||||||
*/
|
|
||||||
private Drawable getDefaultWallpaper() {
|
|
||||||
return mContext.getDrawable(com.android.internal.R.drawable.default_wallpaper);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2020 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.car.statusbar;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
|
||||||
import com.android.keyguard.ViewMediatorCallback;
|
|
||||||
import com.android.systemui.R;
|
|
||||||
import com.android.systemui.car.navigationbar.CarNavigationBarController;
|
|
||||||
import com.android.systemui.dock.DockManager;
|
|
||||||
import com.android.systemui.statusbar.NotificationMediaManager;
|
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
|
||||||
import com.android.systemui.statusbar.phone.NavigationModeController;
|
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
|
|
||||||
/** Car implementation of the {@link StatusBarKeyguardViewManager}. */
|
|
||||||
@Singleton
|
|
||||||
public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManager {
|
|
||||||
|
|
||||||
protected boolean mShouldHideNavBar;
|
|
||||||
private final CarNavigationBarController mCarNavigationBarController;
|
|
||||||
private Set<OnKeyguardCancelClickedListener> mKeygaurdCancelClickedListenerSet;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public CarStatusBarKeyguardViewManager(Context context,
|
|
||||||
ViewMediatorCallback callback,
|
|
||||||
LockPatternUtils lockPatternUtils,
|
|
||||||
SysuiStatusBarStateController sysuiStatusBarStateController,
|
|
||||||
ConfigurationController configurationController,
|
|
||||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
|
||||||
NavigationModeController navigationModeController,
|
|
||||||
DockManager dockManager,
|
|
||||||
NotificationShadeWindowController notificationShadeWindowController,
|
|
||||||
KeyguardStateController keyguardStateController,
|
|
||||||
NotificationMediaManager notificationMediaManager,
|
|
||||||
CarNavigationBarController carNavigationBarController) {
|
|
||||||
super(context, callback, lockPatternUtils, sysuiStatusBarStateController,
|
|
||||||
configurationController, keyguardUpdateMonitor, navigationModeController,
|
|
||||||
dockManager, notificationShadeWindowController, keyguardStateController,
|
|
||||||
notificationMediaManager);
|
|
||||||
mShouldHideNavBar = context.getResources()
|
|
||||||
.getBoolean(R.bool.config_hideNavWhenKeyguardBouncerShown);
|
|
||||||
mCarNavigationBarController = carNavigationBarController;
|
|
||||||
mKeygaurdCancelClickedListenerSet = new HashSet<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void updateNavigationBarVisibility(boolean navBarVisible) {
|
|
||||||
if (!mShouldHideNavBar) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int visibility = navBarVisible ? View.VISIBLE : View.GONE;
|
|
||||||
mCarNavigationBarController.setBottomWindowVisibility(visibility);
|
|
||||||
mCarNavigationBarController.setLeftWindowVisibility(visibility);
|
|
||||||
mCarNavigationBarController.setRightWindowVisibility(visibility);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Car is a multi-user system. There's a cancel button on the bouncer that allows the user to
|
|
||||||
* go back to the user switcher and select another user. Different user may have different
|
|
||||||
* security mode which requires bouncer container to be resized. For this reason, the bouncer
|
|
||||||
* view is destroyed on cancel.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected boolean shouldDestroyViewOnReset() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when cancel button in bouncer is pressed.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onCancelClicked() {
|
|
||||||
mKeygaurdCancelClickedListenerSet.forEach(OnKeyguardCancelClickedListener::onCancelClicked);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Do nothing on this change.
|
|
||||||
* The base class hides the keyguard which for automotive we want to avoid b/c this would happen
|
|
||||||
* on a configuration change due to day/night (headlight state).
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onDensityOrFontScaleChanged() { }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add listener for keyguard cancel clicked.
|
|
||||||
*/
|
|
||||||
public void addOnKeyguardCancelClickedListener(
|
|
||||||
OnKeyguardCancelClickedListener keyguardCancelClickedListener) {
|
|
||||||
mKeygaurdCancelClickedListenerSet.add(keyguardCancelClickedListener);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove listener for keyguard cancel clicked.
|
|
||||||
*/
|
|
||||||
public void removeOnKeyguardCancelClickedListener(
|
|
||||||
OnKeyguardCancelClickedListener keyguardCancelClickedListener) {
|
|
||||||
mKeygaurdCancelClickedListenerSet.remove(keyguardCancelClickedListener);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Defines a callback for keyguard cancel button clicked listeners.
|
|
||||||
*/
|
|
||||||
public interface OnKeyguardCancelClickedListener {
|
|
||||||
/**
|
|
||||||
* Called when keyguard cancel button is clicked.
|
|
||||||
*/
|
|
||||||
void onCancelClicked();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,283 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2020 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.car.statusbar;
|
|
||||||
|
|
||||||
import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.PowerManager;
|
|
||||||
import android.util.DisplayMetrics;
|
|
||||||
|
|
||||||
import com.android.internal.logging.MetricsLogger;
|
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
|
||||||
import com.android.keyguard.ViewMediatorCallback;
|
|
||||||
import com.android.systemui.InitController;
|
|
||||||
import com.android.systemui.assist.AssistManager;
|
|
||||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
|
||||||
import com.android.systemui.bubbles.BubbleController;
|
|
||||||
import com.android.systemui.car.CarDeviceProvisionedController;
|
|
||||||
import com.android.systemui.car.navigationbar.CarNavigationBarController;
|
|
||||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
|
||||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
|
||||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
|
||||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
|
||||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
|
||||||
import com.android.systemui.plugins.DarkIconDispatcher;
|
|
||||||
import com.android.systemui.plugins.FalsingManager;
|
|
||||||
import com.android.systemui.plugins.PluginDependencyProvider;
|
|
||||||
import com.android.systemui.recents.Recents;
|
|
||||||
import com.android.systemui.recents.ScreenPinningRequest;
|
|
||||||
import com.android.systemui.shared.plugins.PluginManager;
|
|
||||||
import com.android.systemui.stackdivider.Divider;
|
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
|
||||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
|
||||||
import com.android.systemui.statusbar.NavigationBarController;
|
|
||||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
|
||||||
import com.android.systemui.statusbar.NotificationMediaManager;
|
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
|
||||||
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
|
||||||
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
|
|
||||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
|
||||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
|
||||||
import com.android.systemui.statusbar.VibratorHelper;
|
|
||||||
import com.android.systemui.statusbar.dagger.StatusBarDependenciesModule;
|
|
||||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
|
||||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
|
||||||
import com.android.systemui.statusbar.notification.VisualStabilityManager;
|
|
||||||
import com.android.systemui.statusbar.notification.init.NotificationsController;
|
|
||||||
import com.android.systemui.statusbar.notification.interruption.BypassHeadsUpNotifier;
|
|
||||||
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
|
|
||||||
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
|
|
||||||
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
|
||||||
import com.android.systemui.statusbar.notification.row.NotificationRowModule;
|
|
||||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
|
||||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
|
||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
|
||||||
import com.android.systemui.statusbar.phone.DozeScrimController;
|
|
||||||
import com.android.systemui.statusbar.phone.DozeServiceHost;
|
|
||||||
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
|
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
|
||||||
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
|
|
||||||
import com.android.systemui.statusbar.phone.LightBarController;
|
|
||||||
import com.android.systemui.statusbar.phone.LightsOutNotifController;
|
|
||||||
import com.android.systemui.statusbar.phone.LockscreenLockIconController;
|
|
||||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
|
||||||
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
|
||||||
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
|
|
||||||
import com.android.systemui.statusbar.phone.ScrimController;
|
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
|
||||||
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
|
|
||||||
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneDependenciesModule;
|
|
||||||
import com.android.systemui.statusbar.policy.BatteryController;
|
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
|
||||||
import com.android.systemui.statusbar.policy.ExtensionController;
|
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
|
||||||
import com.android.systemui.statusbar.policy.NetworkController;
|
|
||||||
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
|
||||||
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
|
|
||||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
|
||||||
import com.android.systemui.volume.VolumeComponent;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
|
|
||||||
import javax.inject.Named;
|
|
||||||
import javax.inject.Provider;
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
|
|
||||||
import dagger.Lazy;
|
|
||||||
import dagger.Module;
|
|
||||||
import dagger.Provides;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dagger Module providing {@link CarStatusBar}.
|
|
||||||
*/
|
|
||||||
@Module(includes = {StatusBarDependenciesModule.class, StatusBarPhoneDependenciesModule.class,
|
|
||||||
NotificationRowModule.class})
|
|
||||||
public class CarStatusBarModule {
|
|
||||||
/**
|
|
||||||
* Provides our instance of StatusBar which is considered optional.
|
|
||||||
*/
|
|
||||||
@Provides
|
|
||||||
@Singleton
|
|
||||||
static CarStatusBar provideStatusBar(
|
|
||||||
Context context,
|
|
||||||
NotificationsController notificationsController,
|
|
||||||
LightBarController lightBarController,
|
|
||||||
AutoHideController autoHideController,
|
|
||||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
|
||||||
StatusBarIconController statusBarIconController,
|
|
||||||
PulseExpansionHandler pulseExpansionHandler,
|
|
||||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
|
||||||
KeyguardBypassController keyguardBypassController,
|
|
||||||
KeyguardStateController keyguardStateController,
|
|
||||||
HeadsUpManagerPhone headsUpManagerPhone,
|
|
||||||
DynamicPrivacyController dynamicPrivacyController,
|
|
||||||
BypassHeadsUpNotifier bypassHeadsUpNotifier,
|
|
||||||
FalsingManager falsingManager,
|
|
||||||
BroadcastDispatcher broadcastDispatcher,
|
|
||||||
RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
|
|
||||||
NotificationGutsManager notificationGutsManager,
|
|
||||||
NotificationLogger notificationLogger,
|
|
||||||
NotificationInterruptStateProvider notificationInterruptionStateProvider,
|
|
||||||
NotificationViewHierarchyManager notificationViewHierarchyManager,
|
|
||||||
KeyguardViewMediator keyguardViewMediator,
|
|
||||||
DisplayMetrics displayMetrics,
|
|
||||||
MetricsLogger metricsLogger,
|
|
||||||
@UiBackground Executor uiBgExecutor,
|
|
||||||
NotificationMediaManager notificationMediaManager,
|
|
||||||
NotificationLockscreenUserManager lockScreenUserManager,
|
|
||||||
NotificationRemoteInputManager remoteInputManager,
|
|
||||||
UserSwitcherController userSwitcherController,
|
|
||||||
NetworkController networkController,
|
|
||||||
BatteryController batteryController,
|
|
||||||
SysuiColorExtractor colorExtractor,
|
|
||||||
ScreenLifecycle screenLifecycle,
|
|
||||||
WakefulnessLifecycle wakefulnessLifecycle,
|
|
||||||
SysuiStatusBarStateController statusBarStateController,
|
|
||||||
VibratorHelper vibratorHelper,
|
|
||||||
BubbleController bubbleController,
|
|
||||||
NotificationGroupManager groupManager,
|
|
||||||
VisualStabilityManager visualStabilityManager,
|
|
||||||
CarDeviceProvisionedController carDeviceProvisionedController,
|
|
||||||
NavigationBarController navigationBarController,
|
|
||||||
Lazy<AssistManager> assistManagerLazy,
|
|
||||||
ConfigurationController configurationController,
|
|
||||||
NotificationShadeWindowController notificationShadeWindowController,
|
|
||||||
LockscreenLockIconController lockscreenLockIconController,
|
|
||||||
DozeParameters dozeParameters,
|
|
||||||
ScrimController scrimController,
|
|
||||||
Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
|
|
||||||
Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
|
|
||||||
DozeServiceHost dozeServiceHost,
|
|
||||||
PowerManager powerManager,
|
|
||||||
ScreenPinningRequest screenPinningRequest,
|
|
||||||
DozeScrimController dozeScrimController,
|
|
||||||
VolumeComponent volumeComponent,
|
|
||||||
CommandQueue commandQueue,
|
|
||||||
Optional<Recents> recentsOptional,
|
|
||||||
Provider<StatusBarComponent.Builder> statusBarComponentBuilder,
|
|
||||||
PluginManager pluginManager,
|
|
||||||
Optional<Divider> dividerOptional,
|
|
||||||
SuperStatusBarViewFactory superStatusBarViewFactory,
|
|
||||||
LightsOutNotifController lightsOutNotifController,
|
|
||||||
StatusBarNotificationActivityStarter.Builder
|
|
||||||
statusBarNotificationActivityStarterBuilder,
|
|
||||||
ShadeController shadeController,
|
|
||||||
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
|
|
||||||
ViewMediatorCallback viewMediatorCallback,
|
|
||||||
InitController initController,
|
|
||||||
DarkIconDispatcher darkIconDispatcher,
|
|
||||||
@Named(TIME_TICK_HANDLER_NAME) Handler timeTickHandler,
|
|
||||||
PluginDependencyProvider pluginDependencyProvider,
|
|
||||||
KeyguardDismissUtil keyguardDismissUtil,
|
|
||||||
ExtensionController extensionController,
|
|
||||||
UserInfoControllerImpl userInfoControllerImpl,
|
|
||||||
PhoneStatusBarPolicy phoneStatusBarPolicy,
|
|
||||||
KeyguardIndicationController keyguardIndicationController,
|
|
||||||
DismissCallbackRegistry dismissCallbackRegistry,
|
|
||||||
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
|
|
||||||
Lazy<NotificationShadeDepthController> notificationShadeDepthControllerLazy,
|
|
||||||
CarNavigationBarController carNavigationBarController) {
|
|
||||||
return new CarStatusBar(
|
|
||||||
context,
|
|
||||||
notificationsController,
|
|
||||||
lightBarController,
|
|
||||||
autoHideController,
|
|
||||||
keyguardUpdateMonitor,
|
|
||||||
statusBarIconController,
|
|
||||||
pulseExpansionHandler,
|
|
||||||
notificationWakeUpCoordinator,
|
|
||||||
keyguardBypassController,
|
|
||||||
keyguardStateController,
|
|
||||||
headsUpManagerPhone,
|
|
||||||
dynamicPrivacyController,
|
|
||||||
bypassHeadsUpNotifier,
|
|
||||||
falsingManager,
|
|
||||||
broadcastDispatcher,
|
|
||||||
remoteInputQuickSettingsDisabler,
|
|
||||||
notificationGutsManager,
|
|
||||||
notificationLogger,
|
|
||||||
notificationInterruptionStateProvider,
|
|
||||||
notificationViewHierarchyManager,
|
|
||||||
keyguardViewMediator,
|
|
||||||
displayMetrics,
|
|
||||||
metricsLogger,
|
|
||||||
uiBgExecutor,
|
|
||||||
notificationMediaManager,
|
|
||||||
lockScreenUserManager,
|
|
||||||
remoteInputManager,
|
|
||||||
userSwitcherController,
|
|
||||||
networkController,
|
|
||||||
batteryController,
|
|
||||||
colorExtractor,
|
|
||||||
screenLifecycle,
|
|
||||||
wakefulnessLifecycle,
|
|
||||||
statusBarStateController,
|
|
||||||
vibratorHelper,
|
|
||||||
bubbleController,
|
|
||||||
groupManager,
|
|
||||||
visualStabilityManager,
|
|
||||||
carDeviceProvisionedController,
|
|
||||||
navigationBarController,
|
|
||||||
assistManagerLazy,
|
|
||||||
configurationController,
|
|
||||||
notificationShadeWindowController,
|
|
||||||
lockscreenLockIconController,
|
|
||||||
dozeParameters,
|
|
||||||
scrimController,
|
|
||||||
lockscreenWallpaperLazy,
|
|
||||||
biometricUnlockControllerLazy,
|
|
||||||
dozeServiceHost,
|
|
||||||
powerManager,
|
|
||||||
screenPinningRequest,
|
|
||||||
dozeScrimController,
|
|
||||||
volumeComponent,
|
|
||||||
commandQueue,
|
|
||||||
recentsOptional,
|
|
||||||
statusBarComponentBuilder,
|
|
||||||
pluginManager,
|
|
||||||
dividerOptional,
|
|
||||||
superStatusBarViewFactory,
|
|
||||||
lightsOutNotifController,
|
|
||||||
statusBarNotificationActivityStarterBuilder,
|
|
||||||
shadeController,
|
|
||||||
statusBarKeyguardViewManager,
|
|
||||||
viewMediatorCallback,
|
|
||||||
initController,
|
|
||||||
darkIconDispatcher,
|
|
||||||
timeTickHandler,
|
|
||||||
pluginDependencyProvider,
|
|
||||||
keyguardDismissUtil,
|
|
||||||
extensionController,
|
|
||||||
userInfoControllerImpl,
|
|
||||||
phoneStatusBarPolicy,
|
|
||||||
keyguardIndicationController,
|
|
||||||
dismissCallbackRegistry,
|
|
||||||
statusBarTouchableRegionManager,
|
|
||||||
notificationShadeDepthControllerLazy,
|
|
||||||
carNavigationBarController);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user