Remove CommandQueueCallbacks interface from StatusBar.
This is a big change, but relatively clean. It removes a lot of noisy code from StatusBar and starts to reveal some of the places that it should be split up in the future. Bug: 190746471 Test: atest SystemUITests Change-Id: Iba5afbe0fac42b96cdf02b5e859cc142e8038b7d
This commit is contained in:
@@ -1462,6 +1462,11 @@ public class NotificationStackScrollLayoutController {
|
||||
mView.setExtraTopInsetForFullShadeTransition(extraTopInset);
|
||||
}
|
||||
|
||||
/** */
|
||||
public void setWillExpand(boolean willExpand) {
|
||||
mView.setWillExpand(willExpand);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a listener to when scrolling changes.
|
||||
*/
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,690 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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.statusbar.phone;
|
||||
|
||||
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
|
||||
import static android.app.StatusBarManager.windowStateToString;
|
||||
import static android.view.InsetsState.ITYPE_STATUS_BAR;
|
||||
import static android.view.InsetsState.containsType;
|
||||
|
||||
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE;
|
||||
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.StatusBarManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.media.AudioAttributes;
|
||||
import android.os.Bundle;
|
||||
import android.os.PowerManager;
|
||||
import android.os.SystemClock;
|
||||
import android.os.UserHandle;
|
||||
import android.os.VibrationEffect;
|
||||
import android.os.Vibrator;
|
||||
import android.util.Log;
|
||||
import android.util.Slog;
|
||||
import android.view.InsetsState.InternalInsetsType;
|
||||
import android.view.InsetsVisibilities;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.WindowInsetsController.Appearance;
|
||||
import android.view.WindowInsetsController.Behavior;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.view.AppearanceRegion;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.camera.CameraIntents;
|
||||
import com.android.systemui.dagger.qualifiers.DisplayId;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||
import com.android.systemui.qs.QSPanelController;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.VibratorHelper;
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** */
|
||||
@StatusBarComponent.StatusBarScope
|
||||
public class StatusBarCommandQueueCallbacks implements CommandQueue.Callbacks {
|
||||
private final StatusBar mStatusBar;
|
||||
private final Context mContext;
|
||||
private final ShadeController mShadeController;
|
||||
private final CommandQueue mCommandQueue;
|
||||
private final NotificationPanelViewController mNotificationPanelViewController;
|
||||
private final Optional<LegacySplitScreen> mSplitScreenOptional;
|
||||
private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
|
||||
private final MetricsLogger mMetricsLogger;
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private final KeyguardStateController mKeyguardStateController;
|
||||
private final HeadsUpManager mHeadsUpManager;
|
||||
private final WakefulnessLifecycle mWakefulnessLifecycle;
|
||||
private final DeviceProvisionedController mDeviceProvisionedController;
|
||||
private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
|
||||
private final AssistManager mAssistManager;
|
||||
private final DozeServiceHost mDozeServiceHost;
|
||||
private final SysuiStatusBarStateController mStatusBarStateController;
|
||||
private final NotificationShadeWindowView mNotificationShadeWindowView;
|
||||
private final NotificationStackScrollLayoutController mNotificationStackScrollLayoutController;
|
||||
private final PowerManager mPowerManager;
|
||||
private final VibratorHelper mVibratorHelper;
|
||||
private final Optional<Vibrator> mVibratorOptional;
|
||||
private final LightBarController mLightBarController;
|
||||
private final int mDisplayId;
|
||||
private final boolean mVibrateOnOpening;
|
||||
private final VibrationEffect mCameraLaunchGestureVibrationEffect;
|
||||
|
||||
|
||||
private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
|
||||
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
|
||||
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
|
||||
.build();
|
||||
|
||||
@Inject
|
||||
StatusBarCommandQueueCallbacks(
|
||||
StatusBar statusBar,
|
||||
Context context,
|
||||
@Main Resources resources,
|
||||
ShadeController shadeController,
|
||||
CommandQueue commandQueue,
|
||||
NotificationPanelViewController notificationPanelViewController,
|
||||
Optional<LegacySplitScreen> splitScreenOptional,
|
||||
RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
|
||||
MetricsLogger metricsLogger,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
KeyguardStateController keyguardStateController,
|
||||
HeadsUpManager headsUpManager,
|
||||
WakefulnessLifecycle wakefulnessLifecycle,
|
||||
DeviceProvisionedController deviceProvisionedController,
|
||||
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
|
||||
AssistManager assistManager,
|
||||
DozeServiceHost dozeServiceHost,
|
||||
SysuiStatusBarStateController statusBarStateController,
|
||||
NotificationShadeWindowView notificationShadeWindowView,
|
||||
NotificationStackScrollLayoutController notificationStackScrollLayoutController,
|
||||
PowerManager powerManager,
|
||||
VibratorHelper vibratorHelper,
|
||||
Optional<Vibrator> vibratorOptional,
|
||||
LightBarController lightBarController,
|
||||
@DisplayId int displayId) {
|
||||
|
||||
mStatusBar = statusBar;
|
||||
mContext = context;
|
||||
mShadeController = shadeController;
|
||||
mCommandQueue = commandQueue;
|
||||
mNotificationPanelViewController = notificationPanelViewController;
|
||||
mSplitScreenOptional = splitScreenOptional;
|
||||
mRemoteInputQuickSettingsDisabler = remoteInputQuickSettingsDisabler;
|
||||
mMetricsLogger = metricsLogger;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mKeyguardStateController = keyguardStateController;
|
||||
mHeadsUpManager = headsUpManager;
|
||||
mWakefulnessLifecycle = wakefulnessLifecycle;
|
||||
mDeviceProvisionedController = deviceProvisionedController;
|
||||
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
|
||||
mAssistManager = assistManager;
|
||||
mDozeServiceHost = dozeServiceHost;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mNotificationShadeWindowView = notificationShadeWindowView;
|
||||
mNotificationStackScrollLayoutController = notificationStackScrollLayoutController;
|
||||
mPowerManager = powerManager;
|
||||
mVibratorHelper = vibratorHelper;
|
||||
mVibratorOptional = vibratorOptional;
|
||||
mLightBarController = lightBarController;
|
||||
mDisplayId = displayId;
|
||||
|
||||
mVibrateOnOpening = resources.getBoolean(R.bool.config_vibrateOnIconAnimation);
|
||||
mCameraLaunchGestureVibrationEffect = getCameraGestureVibrationEffect(
|
||||
mVibratorOptional, resources);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abortTransient(int displayId, @InternalInsetsType int[] types) {
|
||||
if (displayId != mDisplayId) {
|
||||
return;
|
||||
}
|
||||
if (!containsType(types, ITYPE_STATUS_BAR)) {
|
||||
return;
|
||||
}
|
||||
mStatusBar.clearTransient();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addQsTile(ComponentName tile) {
|
||||
QSPanelController qsPanelController = mStatusBar.getQSPanelController();
|
||||
if (qsPanelController != null && qsPanelController.getHost() != null) {
|
||||
qsPanelController.getHost().addTile(tile);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remQsTile(ComponentName tile) {
|
||||
QSPanelController qsPanelController = mStatusBar.getQSPanelController();
|
||||
if (qsPanelController != null && qsPanelController.getHost() != null) {
|
||||
qsPanelController.getHost().removeTile(tile);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clickTile(ComponentName tile) {
|
||||
QSPanelController qsPanelController = mStatusBar.getQSPanelController();
|
||||
if (qsPanelController != null) {
|
||||
qsPanelController.clickTile(tile);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void animateCollapsePanels(int flags, boolean force) {
|
||||
mShadeController.animateCollapsePanels(flags, force, false /* delayed */,
|
||||
1.0f /* speedUpFactor */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void animateExpandNotificationsPanel() {
|
||||
if (StatusBar.SPEW) {
|
||||
Log.d(StatusBar.TAG,
|
||||
"animateExpand: mExpandedVisible=" + mStatusBar.isExpandedVisible());
|
||||
}
|
||||
if (!mCommandQueue.panelsEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
mNotificationPanelViewController.expandWithoutQs();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void animateExpandSettingsPanel(@Nullable String subPanel) {
|
||||
if (StatusBar.SPEW) {
|
||||
Log.d(StatusBar.TAG,
|
||||
"animateExpand: mExpandedVisible=" + mStatusBar.isExpandedVisible());
|
||||
}
|
||||
if (!mCommandQueue.panelsEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Settings are not available in setup
|
||||
if (!mDeviceProvisionedController.isCurrentUserSetup()) return;
|
||||
|
||||
|
||||
QSPanelController qsPanelController = mStatusBar.getQSPanelController();
|
||||
if (subPanel != null && qsPanelController != null) {
|
||||
qsPanelController.openDetails(subPanel);
|
||||
}
|
||||
mNotificationPanelViewController.expandWithQs();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appTransitionCancelled(int displayId) {
|
||||
if (displayId == mDisplayId) {
|
||||
mSplitScreenOptional.ifPresent(LegacySplitScreen::onAppTransitionFinished);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appTransitionFinished(int displayId) {
|
||||
if (displayId == mDisplayId) {
|
||||
mSplitScreenOptional.ifPresent(LegacySplitScreen::onAppTransitionFinished);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preloadRecentApps() {
|
||||
mStatusBar.resetHandlerMsg(StatusBar.MSG_PRELOAD_RECENT_APPS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelPreloadRecentApps() {
|
||||
mStatusBar.resetHandlerMsg(StatusBar.MSG_CANCEL_PRELOAD_RECENT_APPS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dismissKeyboardShortcutsMenu() {
|
||||
mStatusBar.resetHandlerMsg(StatusBar.MSG_DISMISS_KEYBOARD_SHORTCUTS_MENU);
|
||||
}
|
||||
/**
|
||||
* State is one or more of the DISABLE constants from StatusBarManager.
|
||||
*/
|
||||
@Override
|
||||
public void disable(int displayId, int state1, int state2, boolean animate) {
|
||||
if (displayId != mDisplayId) {
|
||||
return;
|
||||
}
|
||||
state2 = mRemoteInputQuickSettingsDisabler.adjustDisableFlags(state2);
|
||||
|
||||
final int old1 = mStatusBar.getDisabled1();
|
||||
final int diff1 = state1 ^ old1;
|
||||
mStatusBar.setDisabled1(state1);
|
||||
|
||||
final int old2 = mStatusBar.getDisabled2();
|
||||
final int diff2 = state2 ^ old2;
|
||||
mStatusBar.setDisabled2(state2);
|
||||
|
||||
if (StatusBar.DEBUG) {
|
||||
Log.d(StatusBar.TAG, String.format("disable1: 0x%08x -> 0x%08x (diff1: 0x%08x)",
|
||||
old1, state1, diff1));
|
||||
Log.d(StatusBar.TAG, String.format("disable2: 0x%08x -> 0x%08x (diff2: 0x%08x)",
|
||||
old2, state2, diff2));
|
||||
}
|
||||
|
||||
StringBuilder flagdbg = new StringBuilder();
|
||||
flagdbg.append("disable<");
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_EXPAND)) ? 'E' : 'e');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_EXPAND)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_NOTIFICATION_ICONS)) ? 'I' : 'i');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_NOTIFICATION_ICONS)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_NOTIFICATION_ALERTS)) ? 'A' : 'a');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_NOTIFICATION_ALERTS)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_SYSTEM_INFO)) ? 'S' : 's');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_SYSTEM_INFO)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_BACK)) ? 'B' : 'b');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_BACK)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_HOME)) ? 'H' : 'h');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_HOME)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_RECENT)) ? 'R' : 'r');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_RECENT)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_CLOCK)) ? 'C' : 'c');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_CLOCK)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state1 & StatusBarManager.DISABLE_SEARCH)) ? 'S' : 's');
|
||||
flagdbg.append(0 != ((diff1 & StatusBarManager.DISABLE_SEARCH)) ? '!' : ' ');
|
||||
flagdbg.append("> disable2<");
|
||||
flagdbg.append(0 != ((state2 & StatusBarManager.DISABLE2_QUICK_SETTINGS)) ? 'Q' : 'q');
|
||||
flagdbg.append(0 != ((diff2 & StatusBarManager.DISABLE2_QUICK_SETTINGS)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state2 & StatusBarManager.DISABLE2_SYSTEM_ICONS)) ? 'I' : 'i');
|
||||
flagdbg.append(0 != ((diff2 & StatusBarManager.DISABLE2_SYSTEM_ICONS)) ? '!' : ' ');
|
||||
flagdbg.append(0 != ((state2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE)) ? 'N' : 'n');
|
||||
flagdbg.append(0 != ((diff2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE)) ? '!' : ' ');
|
||||
flagdbg.append('>');
|
||||
Log.d(StatusBar.TAG, flagdbg.toString());
|
||||
|
||||
if ((diff1 & StatusBarManager.DISABLE_EXPAND) != 0) {
|
||||
if ((state1 & StatusBarManager.DISABLE_EXPAND) != 0) {
|
||||
mShadeController.animateCollapsePanels();
|
||||
}
|
||||
}
|
||||
|
||||
if ((diff1 & StatusBarManager.DISABLE_RECENT) != 0) {
|
||||
if ((state1 & StatusBarManager.DISABLE_RECENT) != 0) {
|
||||
// close recents if it's visible
|
||||
mStatusBar.resetHandlerMsg(StatusBar.MSG_HIDE_RECENT_APPS);
|
||||
}
|
||||
}
|
||||
|
||||
if ((diff1 & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) != 0) {
|
||||
if (mStatusBar.areNotificationAlertsDisabled()) {
|
||||
mHeadsUpManager.releaseAllImmediately();
|
||||
}
|
||||
}
|
||||
|
||||
if ((diff2 & StatusBarManager.DISABLE2_QUICK_SETTINGS) != 0) {
|
||||
mStatusBar.updateQsExpansionEnabled();
|
||||
}
|
||||
|
||||
if ((diff2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) != 0) {
|
||||
mStatusBar.updateQsExpansionEnabled();
|
||||
if ((state2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) != 0) {
|
||||
mShadeController.animateCollapsePanels();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called for system navigation gestures. First action opens the panel, second opens
|
||||
* settings. Down action closes the entire panel.
|
||||
*/
|
||||
@Override
|
||||
public void handleSystemKey(int key) {
|
||||
if (StatusBar.SPEW) {
|
||||
Log.d(StatusBar.TAG, "handleNavigationKey: " + key);
|
||||
}
|
||||
if (!mCommandQueue.panelsEnabled() || !mKeyguardUpdateMonitor.isDeviceInteractive()
|
||||
|| mKeyguardStateController.isShowing() && !mKeyguardStateController.isOccluded()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Panels are not available in setup
|
||||
if (!mDeviceProvisionedController.isCurrentUserSetup()) return;
|
||||
|
||||
if (KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP == key) {
|
||||
mMetricsLogger.action(MetricsEvent.ACTION_SYSTEM_NAVIGATION_KEY_UP);
|
||||
mNotificationPanelViewController.collapse(
|
||||
false /* delayed */, 1.0f /* speedUpFactor */);
|
||||
} else if (KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN == key) {
|
||||
mMetricsLogger.action(MetricsEvent.ACTION_SYSTEM_NAVIGATION_KEY_DOWN);
|
||||
if (mNotificationPanelViewController.isFullyCollapsed()) {
|
||||
if (mVibrateOnOpening) {
|
||||
mVibratorHelper.vibrate(VibrationEffect.EFFECT_TICK);
|
||||
}
|
||||
mNotificationPanelViewController.expand(true /* animate */);
|
||||
mNotificationStackScrollLayoutController.setWillExpand(true);
|
||||
mHeadsUpManager.unpinAll(true /* userUnpinned */);
|
||||
mMetricsLogger.count(NotificationPanelView.COUNTER_PANEL_OPEN, 1);
|
||||
} else if (!mNotificationPanelViewController.isInSettings()
|
||||
&& !mNotificationPanelViewController.isExpanding()) {
|
||||
mNotificationPanelViewController.flingSettings(0 /* velocity */,
|
||||
NotificationPanelView.FLING_EXPAND);
|
||||
mMetricsLogger.count(NotificationPanelView.COUNTER_PANEL_OPEN_QS, 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCameraLaunchGestureDetected(int source) {
|
||||
mStatusBar.setLastCameraLaunchSource(source);
|
||||
if (mStatusBar.isGoingToSleep()) {
|
||||
if (StatusBar.DEBUG_CAMERA_LIFT) {
|
||||
Slog.d(StatusBar.TAG, "Finish going to sleep before launching camera");
|
||||
}
|
||||
mStatusBar.setLaunchCameraOnFinishedGoingToSleep(true);
|
||||
return;
|
||||
}
|
||||
if (!mNotificationPanelViewController.canCameraGestureBeLaunched()) {
|
||||
if (StatusBar.DEBUG_CAMERA_LIFT) {
|
||||
Slog.d(StatusBar.TAG, "Can't launch camera right now");
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!mStatusBar.isDeviceInteractive()) {
|
||||
mPowerManager.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_CAMERA_LAUNCH,
|
||||
"com.android.systemui:CAMERA_GESTURE");
|
||||
}
|
||||
vibrateForCameraGesture();
|
||||
|
||||
if (source == StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) {
|
||||
Log.v(StatusBar.TAG, "Camera launch");
|
||||
mKeyguardUpdateMonitor.onCameraLaunched();
|
||||
}
|
||||
|
||||
if (!mStatusBarKeyguardViewManager.isShowing()) {
|
||||
final Intent cameraIntent = CameraIntents.getInsecureCameraIntent(mContext);
|
||||
mStatusBar.startActivityDismissingKeyguard(cameraIntent,
|
||||
false /* onlyProvisioned */, true /* dismissShade */,
|
||||
true /* disallowEnterPictureInPictureWhileLaunching */, null /* callback */, 0,
|
||||
null /* animationController */);
|
||||
} else {
|
||||
if (!mStatusBar.isDeviceInteractive()) {
|
||||
// Avoid flickering of the scrim when we instant launch the camera and the bouncer
|
||||
// comes on.
|
||||
mStatusBar.acquireGestureWakeLock(StatusBar.LAUNCH_TRANSITION_TIMEOUT_MS + 1000L);
|
||||
}
|
||||
if (isWakingUpOrAwake()) {
|
||||
if (StatusBar.DEBUG_CAMERA_LIFT) {
|
||||
Slog.d(StatusBar.TAG, "Launching camera");
|
||||
}
|
||||
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
|
||||
mStatusBarKeyguardViewManager.reset(true /* hide */);
|
||||
}
|
||||
mNotificationPanelViewController.launchCamera(
|
||||
mStatusBar.isDeviceInteractive() /* animate */, source);
|
||||
mStatusBar.updateScrimController();
|
||||
} else {
|
||||
// We need to defer the camera launch until the screen comes on, since otherwise
|
||||
// we will dismiss us too early since we are waiting on an activity to be drawn and
|
||||
// incorrectly get notified because of the screen on event (which resumes and pauses
|
||||
// some activities)
|
||||
if (StatusBar.DEBUG_CAMERA_LIFT) {
|
||||
Slog.d(StatusBar.TAG, "Deferring until screen turns on");
|
||||
}
|
||||
mStatusBar.setLaunchCameraOnFinishedWaking(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEmergencyActionLaunchGestureDetected() {
|
||||
Intent emergencyIntent = mStatusBar.getEmergencyActionIntent();
|
||||
|
||||
if (emergencyIntent == null) {
|
||||
Log.wtf(StatusBar.TAG, "Couldn't find an app to process the emergency intent.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isGoingToSleep()) {
|
||||
mStatusBar.setLaunchEmergencyActionOnFinishedGoingToSleep(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mStatusBar.isDeviceInteractive()) {
|
||||
mPowerManager.wakeUp(SystemClock.uptimeMillis(),
|
||||
PowerManager.WAKE_REASON_GESTURE,
|
||||
"com.android.systemui:EMERGENCY_GESTURE");
|
||||
}
|
||||
// TODO(b/169087248) Possibly add haptics here for emergency action. Currently disabled for
|
||||
// app-side haptic experimentation.
|
||||
|
||||
if (!mStatusBarKeyguardViewManager.isShowing()) {
|
||||
mStatusBar.startActivityDismissingKeyguard(emergencyIntent,
|
||||
false /* onlyProvisioned */, true /* dismissShade */,
|
||||
true /* disallowEnterPictureInPictureWhileLaunching */, null /* callback */, 0,
|
||||
null /* animationController */);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mStatusBar.isDeviceInteractive()) {
|
||||
// Avoid flickering of the scrim when we instant launch the camera and the bouncer
|
||||
// comes on.
|
||||
mStatusBar.acquireGestureWakeLock(StatusBar.LAUNCH_TRANSITION_TIMEOUT_MS + 1000L);
|
||||
}
|
||||
|
||||
if (isWakingUpOrAwake()) {
|
||||
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
|
||||
mStatusBarKeyguardViewManager.reset(true /* hide */);
|
||||
}
|
||||
mContext.startActivityAsUser(emergencyIntent, UserHandle.CURRENT);
|
||||
return;
|
||||
}
|
||||
// We need to defer the emergency action launch until the screen comes on, since otherwise
|
||||
// we will dismiss us too early since we are waiting on an activity to be drawn and
|
||||
// incorrectly get notified because of the screen on event (which resumes and pauses
|
||||
// some activities)
|
||||
mStatusBar.setLaunchEmergencyActionOnFinishedWaking(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRecentsAnimationStateChanged(boolean running) {
|
||||
mStatusBar.setInteracting(StatusBarManager.WINDOW_NAVIGATION_BAR, running);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName) {
|
||||
if (displayId != mDisplayId) {
|
||||
return;
|
||||
}
|
||||
boolean barModeChanged = mStatusBar.setAppearance(appearance);
|
||||
|
||||
mLightBarController.onStatusBarAppearanceChanged(appearanceRegions, barModeChanged,
|
||||
mStatusBar.getBarMode(), navbarColorManagedByIme);
|
||||
|
||||
mStatusBar.updateBubblesVisibility();
|
||||
mStatusBarStateController.setSystemBarAttributes(
|
||||
appearance, behavior, requestedVisibilities, packageName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showTransient(int displayId, @InternalInsetsType int[] types) {
|
||||
if (displayId != mDisplayId) {
|
||||
return;
|
||||
}
|
||||
if (!containsType(types, ITYPE_STATUS_BAR)) {
|
||||
return;
|
||||
}
|
||||
mStatusBar.showTransientUnchecked();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toggleKeyboardShortcutsMenu(int deviceId) {
|
||||
int msg = StatusBar.MSG_TOGGLE_KEYBOARD_SHORTCUTS_MENU;
|
||||
mStatusBar.getHandler().removeMessages(msg);
|
||||
mStatusBar.getHandler().obtainMessage(msg, deviceId, 0).sendToTarget();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTopAppHidesStatusBar(boolean topAppHidesStatusBar) {
|
||||
mStatusBar.setTopHidesStatusBar(topAppHidesStatusBar);
|
||||
if (!topAppHidesStatusBar && mStatusBar.getWereIconsJustHidden()) {
|
||||
// Immediately update the icon hidden state, since that should only apply if we're
|
||||
// staying fullscreen.
|
||||
mStatusBar.setWereIconsJustHidden(false);
|
||||
mCommandQueue.recomputeDisableFlags(mDisplayId, true);
|
||||
}
|
||||
mStatusBar.updateHideIconsForBouncer(true /* animate */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWindowState(
|
||||
int displayId, @StatusBarManager.WindowType int window,
|
||||
@StatusBarManager.WindowVisibleState int state) {
|
||||
if (displayId != mDisplayId) {
|
||||
return;
|
||||
}
|
||||
boolean showing = state == WINDOW_STATE_SHOWING;
|
||||
if (mNotificationShadeWindowView != null
|
||||
&& window == StatusBarManager.WINDOW_STATUS_BAR
|
||||
&& !mStatusBar.isSameStatusBarState(state)) {
|
||||
mStatusBar.setWindowState(state);
|
||||
if (StatusBar.DEBUG_WINDOW_STATE) {
|
||||
Log.d(StatusBar.TAG, "Status bar " + windowStateToString(state));
|
||||
}
|
||||
if (mStatusBar.getStatusBarView() != null) {
|
||||
if (!showing && mStatusBarStateController.getState() == StatusBarState.SHADE) {
|
||||
mStatusBar.getStatusBarView().collapsePanel(
|
||||
false /* animate */, false /* delayed */, 1.0f /* speedUpFactor */);
|
||||
}
|
||||
|
||||
mStatusBar.updateHideIconsForBouncer(false /* animate */);
|
||||
}
|
||||
}
|
||||
|
||||
mStatusBar.updateBubblesVisibility();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showAssistDisclosure() {
|
||||
mAssistManager.showDisclosure();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPinningEnterExitToast(boolean entering) {
|
||||
if (mStatusBar.getNavigationBarView() != null) {
|
||||
mStatusBar.getNavigationBarView().showPinningEnterExitToast(entering);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPinningEscapeToast() {
|
||||
if (mStatusBar.getNavigationBarView() != null) {
|
||||
mStatusBar.getNavigationBarView().showPinningEscapeToast();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showScreenPinningRequest(int taskId) {
|
||||
if (mKeyguardStateController.isShowing()) {
|
||||
// Don't allow apps to trigger this from keyguard.
|
||||
return;
|
||||
}
|
||||
// Show screen pinning request, since this comes from an app, show 'no thanks', button.
|
||||
mStatusBar.showScreenPinningRequest(taskId, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showWirelessChargingAnimation(int batteryLevel) {
|
||||
mStatusBar.showWirelessChargingAnimation(batteryLevel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAssist(Bundle args) {
|
||||
mAssistManager.startAssist(args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void suppressAmbientDisplay(boolean suppressed) {
|
||||
mDozeServiceHost.setDozeSuppressed(suppressed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void togglePanel() {
|
||||
if (mStatusBar.isPanelExpanded()) {
|
||||
mShadeController.animateCollapsePanels();
|
||||
} else {
|
||||
animateExpandNotificationsPanel();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toggleSplitScreen() {
|
||||
mStatusBar.toggleSplitScreenMode(-1 /* metricsDockAction */, -1 /* metricsUndockAction */);
|
||||
}
|
||||
|
||||
private boolean isGoingToSleep() {
|
||||
return mWakefulnessLifecycle.getWakefulness()
|
||||
== WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP;
|
||||
}
|
||||
|
||||
private boolean isWakingUpOrAwake() {
|
||||
return mWakefulnessLifecycle.getWakefulness() == WAKEFULNESS_AWAKE
|
||||
|| mWakefulnessLifecycle.getWakefulness() == WAKEFULNESS_WAKING;
|
||||
}
|
||||
|
||||
private void vibrateForCameraGesture() {
|
||||
// Make sure to pass -1 for repeat so VibratorService doesn't stop us when going to sleep.
|
||||
mVibratorOptional.ifPresent(
|
||||
v -> v.vibrate(mCameraLaunchGestureVibrationEffect, VIBRATION_ATTRIBUTES));
|
||||
}
|
||||
|
||||
private static VibrationEffect getCameraGestureVibrationEffect(
|
||||
Optional<Vibrator> vibratorOptional, Resources resources) {
|
||||
if (vibratorOptional.isPresent() && vibratorOptional.get().areAllPrimitivesSupported(
|
||||
VibrationEffect.Composition.PRIMITIVE_QUICK_RISE,
|
||||
VibrationEffect.Composition.PRIMITIVE_CLICK)) {
|
||||
return VibrationEffect.startComposition()
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_QUICK_RISE)
|
||||
.addPrimitive(VibrationEffect.Composition.PRIMITIVE_CLICK, 1, 50)
|
||||
.compose();
|
||||
}
|
||||
if (vibratorOptional.isPresent() && vibratorOptional.get().hasAmplitudeControl()) {
|
||||
return VibrationEffect.createWaveform(
|
||||
StatusBar.CAMERA_LAUNCH_GESTURE_VIBRATION_TIMINGS,
|
||||
StatusBar.CAMERA_LAUNCH_GESTURE_VIBRATION_AMPLITUDES,
|
||||
/* repeat= */ -1);
|
||||
}
|
||||
|
||||
int[] pattern = resources.getIntArray(R.array.config_cameraLaunchGestureVibePattern);
|
||||
long[] timings = new long[pattern.length];
|
||||
for (int i = 0; i < pattern.length; i++) {
|
||||
timings[i] = pattern[i];
|
||||
}
|
||||
return VibrationEffect.createWaveform(timings, /* repeat= */ -1);
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import com.android.systemui.statusbar.phone.NotificationPanelViewController;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowView;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowViewController;
|
||||
import com.android.systemui.statusbar.phone.SplitShadeHeaderController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarCommandQueueCallbacks;
|
||||
import com.android.systemui.statusbar.phone.StatusBarDemoMode;
|
||||
import com.android.systemui.statusbar.phone.StatusBarHeadsUpChangeListener;
|
||||
import com.android.systemui.statusbar.phone.StatusBarWindowController;
|
||||
@@ -102,6 +103,12 @@ public interface StatusBarComponent {
|
||||
@StatusBarScope
|
||||
StatusBarHeadsUpChangeListener getStatusBarHeadsUpChangeListener();
|
||||
|
||||
/**
|
||||
* Creates a StatusBarCommandQueueCallbacks.
|
||||
*/
|
||||
@StatusBarScope
|
||||
StatusBarCommandQueueCallbacks getStatusBarCommandQueueCallbacks();
|
||||
|
||||
/**
|
||||
* Creates a SplitShadeHeaderController.
|
||||
*/
|
||||
|
||||
@@ -18,18 +18,16 @@ package com.android.systemui.statusbar.phone.dagger;
|
||||
|
||||
import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
|
||||
|
||||
import android.app.WallpaperManager;
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.PowerManager;
|
||||
import android.util.DisplayMetrics;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
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.accessibility.floatingmenu.AccessibilityFloatingMenuController;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.classifier.FalsingCollector;
|
||||
@@ -37,7 +35,6 @@ import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
||||
@@ -48,7 +45,6 @@ import com.android.systemui.plugins.PluginDependencyProvider;
|
||||
import com.android.systemui.recents.ScreenPinningRequest;
|
||||
import com.android.systemui.settings.brightness.BrightnessSlider;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.unfold.config.UnfoldTransitionConfig;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.FeatureFlags;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
@@ -62,8 +58,6 @@ 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.charging.WiredChargingRippleController;
|
||||
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
|
||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
||||
@@ -81,7 +75,6 @@ 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.KeyguardLiftController;
|
||||
import com.android.systemui.statusbar.phone.LightBarController;
|
||||
import com.android.systemui.statusbar.phone.LightsOutNotifController;
|
||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
||||
@@ -94,7 +87,6 @@ import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarLocationPublisher;
|
||||
import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
|
||||
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy;
|
||||
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
||||
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
|
||||
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
|
||||
@@ -104,12 +96,12 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
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.unfold.UnfoldLightRevealOverlayAnimation;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
import com.android.systemui.wmshell.BubblesManager;
|
||||
import com.android.unfold.config.UnfoldTransitionConfig;
|
||||
import com.android.wm.shell.bubbles.Bubbles;
|
||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
|
||||
import com.android.wm.shell.startingsurface.StartingSurface;
|
||||
@@ -140,7 +132,6 @@ public interface StatusBarPhoneModule {
|
||||
LightBarController lightBarController,
|
||||
AutoHideController autoHideController,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
StatusBarSignalPolicy signalPolicy,
|
||||
PulseExpansionHandler pulseExpansionHandler,
|
||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@@ -151,7 +142,6 @@ public interface StatusBarPhoneModule {
|
||||
FalsingManager falsingManager,
|
||||
FalsingCollector falsingCollector,
|
||||
BroadcastDispatcher broadcastDispatcher,
|
||||
RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
|
||||
NotificationGutsManager notificationGutsManager,
|
||||
NotificationLogger notificationLogger,
|
||||
NotificationInterruptStateProvider notificationInterruptStateProvider,
|
||||
@@ -170,19 +160,16 @@ public interface StatusBarPhoneModule {
|
||||
ScreenLifecycle screenLifecycle,
|
||||
WakefulnessLifecycle wakefulnessLifecycle,
|
||||
SysuiStatusBarStateController statusBarStateController,
|
||||
VibratorHelper vibratorHelper,
|
||||
Optional<BubblesManager> bubblesManagerOptional,
|
||||
Optional<Bubbles> bubblesOptional,
|
||||
VisualStabilityManager visualStabilityManager,
|
||||
DeviceProvisionedController deviceProvisionedController,
|
||||
NavigationBarController navigationBarController,
|
||||
AccessibilityFloatingMenuController accessibilityFloatingMenuController,
|
||||
Lazy<AssistManager> assistManagerLazy,
|
||||
ConfigurationController configurationController,
|
||||
NotificationShadeWindowController notificationShadeWindowController,
|
||||
DozeParameters dozeParameters,
|
||||
ScrimController scrimController,
|
||||
@Nullable KeyguardLiftController keyguardLiftController,
|
||||
Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
|
||||
Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
|
||||
DozeServiceHost dozeServiceHost,
|
||||
@@ -211,11 +198,9 @@ public interface StatusBarPhoneModule {
|
||||
KeyguardIndicationController keyguardIndicationController,
|
||||
DemoModeController demoModeController,
|
||||
Lazy<NotificationShadeDepthController> notificationShadeDepthController,
|
||||
DismissCallbackRegistry dismissCallbackRegistry,
|
||||
StatusBarTouchableRegionManager statusBarTouchableRegionManager,
|
||||
NotificationIconAreaController notificationIconAreaController,
|
||||
BrightnessSlider.Factory brightnessSliderFactory,
|
||||
WiredChargingRippleController chargingRippleAnimationController,
|
||||
UnfoldTransitionConfig unfoldTransitionConfig,
|
||||
Lazy<UnfoldLightRevealOverlayAnimation> unfoldLightRevealOverlayAnimation,
|
||||
OngoingCallController ongoingCallController,
|
||||
@@ -225,6 +210,7 @@ public interface StatusBarPhoneModule {
|
||||
LockscreenShadeTransitionController transitionController,
|
||||
FeatureFlags featureFlags,
|
||||
KeyguardUnlockAnimationController keyguardUnlockAnimationController,
|
||||
WallpaperManager wallpaperManager,
|
||||
UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
|
||||
Optional<StartingSurface> startingSurfaceOptional) {
|
||||
return new StatusBar(
|
||||
@@ -233,7 +219,6 @@ public interface StatusBarPhoneModule {
|
||||
lightBarController,
|
||||
autoHideController,
|
||||
keyguardUpdateMonitor,
|
||||
signalPolicy,
|
||||
pulseExpansionHandler,
|
||||
notificationWakeUpCoordinator,
|
||||
keyguardBypassController,
|
||||
@@ -244,7 +229,6 @@ public interface StatusBarPhoneModule {
|
||||
falsingManager,
|
||||
falsingCollector,
|
||||
broadcastDispatcher,
|
||||
remoteInputQuickSettingsDisabler,
|
||||
notificationGutsManager,
|
||||
notificationLogger,
|
||||
notificationInterruptStateProvider,
|
||||
@@ -263,19 +247,16 @@ public interface StatusBarPhoneModule {
|
||||
screenLifecycle,
|
||||
wakefulnessLifecycle,
|
||||
statusBarStateController,
|
||||
vibratorHelper,
|
||||
bubblesManagerOptional,
|
||||
bubblesOptional,
|
||||
visualStabilityManager,
|
||||
deviceProvisionedController,
|
||||
navigationBarController,
|
||||
accessibilityFloatingMenuController,
|
||||
assistManagerLazy,
|
||||
configurationController,
|
||||
notificationShadeWindowController,
|
||||
dozeParameters,
|
||||
scrimController,
|
||||
keyguardLiftController,
|
||||
lockscreenWallpaperLazy,
|
||||
biometricUnlockControllerLazy,
|
||||
dozeServiceHost,
|
||||
@@ -301,13 +282,11 @@ public interface StatusBarPhoneModule {
|
||||
userInfoControllerImpl,
|
||||
phoneStatusBarPolicy,
|
||||
keyguardIndicationController,
|
||||
dismissCallbackRegistry,
|
||||
demoModeController,
|
||||
notificationShadeDepthController,
|
||||
statusBarTouchableRegionManager,
|
||||
notificationIconAreaController,
|
||||
brightnessSliderFactory,
|
||||
chargingRippleAnimationController,
|
||||
unfoldTransitionConfig,
|
||||
unfoldLightRevealOverlayAnimation,
|
||||
ongoingCallController,
|
||||
@@ -317,6 +296,7 @@ public interface StatusBarPhoneModule {
|
||||
transitionController,
|
||||
featureFlags,
|
||||
keyguardUnlockAnimationController,
|
||||
wallpaperManager,
|
||||
unlockedScreenOffAnimationController,
|
||||
startingSurfaceOptional);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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.statusbar.phone;
|
||||
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.StatusBarManager;
|
||||
import android.os.PowerManager;
|
||||
import android.os.Vibrator;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.testing.FakeMetricsLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
|
||||
import com.android.systemui.statusbar.VibratorHelper;
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
public class StatusBarCommandQueueCallbacksTest extends SysuiTestCase {
|
||||
@Mock private StatusBar mStatusBar;
|
||||
@Mock private ShadeController mShadeController;
|
||||
@Mock private CommandQueue mCommandQueue;
|
||||
@Mock private NotificationPanelViewController mNotificationPanelViewController;
|
||||
@Mock private LegacySplitScreen mLegacySplitScreen;
|
||||
@Mock private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
|
||||
private final MetricsLogger mMetricsLogger = new FakeMetricsLogger();
|
||||
@Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
@Mock private KeyguardStateController mKeyguardStateController;
|
||||
@Mock private HeadsUpManagerPhone mHeadsUpManager;
|
||||
@Mock private WakefulnessLifecycle mWakefulnessLifecycle;
|
||||
@Mock private DeviceProvisionedController mDeviceProvisionedController;
|
||||
@Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
|
||||
@Mock private AssistManager mAssistManager;
|
||||
@Mock private DozeServiceHost mDozeServiceHost;
|
||||
@Mock private StatusBarStateControllerImpl mStatusBarStateController;
|
||||
@Mock private NotificationShadeWindowView mNotificationShadeWindowView;
|
||||
@Mock private NotificationStackScrollLayoutController mNotificationStackScrollLayoutController;
|
||||
@Mock private PowerManager mPowerManager;
|
||||
@Mock private VibratorHelper mVibratorHelper;
|
||||
@Mock private Vibrator mVibrator;
|
||||
@Mock private LightBarController mLightBarController;
|
||||
|
||||
StatusBarCommandQueueCallbacks mSbcqCallbacks;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mSbcqCallbacks = new StatusBarCommandQueueCallbacks(
|
||||
mStatusBar,
|
||||
mContext,
|
||||
mContext.getResources(),
|
||||
mShadeController,
|
||||
mCommandQueue,
|
||||
mNotificationPanelViewController,
|
||||
Optional.of(mLegacySplitScreen),
|
||||
mRemoteInputQuickSettingsDisabler,
|
||||
mMetricsLogger,
|
||||
mKeyguardUpdateMonitor,
|
||||
mKeyguardStateController,
|
||||
mHeadsUpManager,
|
||||
mWakefulnessLifecycle,
|
||||
mDeviceProvisionedController,
|
||||
mStatusBarKeyguardViewManager,
|
||||
mAssistManager,
|
||||
mDozeServiceHost,
|
||||
mStatusBarStateController,
|
||||
mNotificationShadeWindowView,
|
||||
mNotificationStackScrollLayoutController,
|
||||
mPowerManager,
|
||||
mVibratorHelper,
|
||||
Optional.of(mVibrator),
|
||||
mLightBarController,
|
||||
DEFAULT_DISPLAY);
|
||||
|
||||
when(mDeviceProvisionedController.isCurrentUserSetup()).thenReturn(true);
|
||||
when(mRemoteInputQuickSettingsDisabler.adjustDisableFlags(anyInt()))
|
||||
.thenAnswer((Answer<Integer>) invocation -> invocation.getArgument(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDisableNotificationShade() {
|
||||
when(mStatusBar.getDisabled1()).thenReturn(StatusBarManager.DISABLE_NONE);
|
||||
when(mStatusBar.getDisabled2()).thenReturn(StatusBarManager.DISABLE_NONE);
|
||||
when(mCommandQueue.panelsEnabled()).thenReturn(false);
|
||||
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||
StatusBarManager.DISABLE2_NOTIFICATION_SHADE, false);
|
||||
|
||||
verify(mStatusBar).updateQsExpansionEnabled();
|
||||
verify(mShadeController).animateCollapsePanels();
|
||||
|
||||
// Trying to open it does nothing.
|
||||
mSbcqCallbacks.animateExpandNotificationsPanel();
|
||||
verify(mNotificationPanelViewController, never()).expandWithoutQs();
|
||||
mSbcqCallbacks.animateExpandSettingsPanel(null);
|
||||
verify(mNotificationPanelViewController, never()).expand(anyBoolean());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEnableNotificationShade() {
|
||||
when(mStatusBar.getDisabled1()).thenReturn(StatusBarManager.DISABLE_NONE);
|
||||
when(mStatusBar.getDisabled2()).thenReturn(StatusBarManager.DISABLE2_NOTIFICATION_SHADE);
|
||||
when(mCommandQueue.panelsEnabled()).thenReturn(true);
|
||||
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||
StatusBarManager.DISABLE2_NONE, false);
|
||||
verify(mStatusBar).updateQsExpansionEnabled();
|
||||
verify(mShadeController, never()).animateCollapsePanels();
|
||||
|
||||
// Can now be opened.
|
||||
mSbcqCallbacks.animateExpandNotificationsPanel();
|
||||
verify(mNotificationPanelViewController).expandWithoutQs();
|
||||
mSbcqCallbacks.animateExpandSettingsPanel(null);
|
||||
verify(mNotificationPanelViewController).expandWithQs();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSuppressAmbientDisplay_suppress() {
|
||||
mSbcqCallbacks.suppressAmbientDisplay(true);
|
||||
verify(mDozeServiceHost).setDozeSuppressed(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSuppressAmbientDisplay_unsuppress() {
|
||||
mSbcqCallbacks.suppressAmbientDisplay(false);
|
||||
verify(mDozeServiceHost).setDozeSuppressed(false);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -18,7 +18,6 @@ package com.android.systemui.statusbar.phone;
|
||||
|
||||
import static android.app.NotificationManager.IMPORTANCE_HIGH;
|
||||
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
import static junit.framework.Assert.assertFalse;
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
@@ -40,7 +39,7 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.IWallpaperManager;
|
||||
import android.app.Notification;
|
||||
import android.app.StatusBarManager;
|
||||
import android.app.WallpaperManager;
|
||||
import android.app.trust.TrustManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ContentResolver;
|
||||
@@ -78,27 +77,23 @@ import com.android.keyguard.ViewMediatorCallback;
|
||||
import com.android.systemui.InitController;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.accessibility.floatingmenu.AccessibilityFloatingMenuController;
|
||||
import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.classifier.FalsingCollectorFake;
|
||||
import com.android.systemui.classifier.FalsingManagerFake;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.demomode.DemoModeController;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
||||
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||
import com.android.systemui.navigationbar.NavigationBarController;
|
||||
import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
|
||||
import com.android.systemui.plugins.DarkIconDispatcher;
|
||||
import com.android.systemui.plugins.PluginDependencyProvider;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.recents.ScreenPinningRequest;
|
||||
import com.android.systemui.settings.brightness.BrightnessSlider;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.unfold.config.UnfoldTransitionConfig;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.FeatureFlags;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
@@ -114,11 +109,8 @@ import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.VibratorHelper;
|
||||
import com.android.systemui.statusbar.charging.WiredChargingRippleController;
|
||||
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
|
||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
||||
import com.android.systemui.statusbar.notification.NotificationEntryListener;
|
||||
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||
import com.android.systemui.statusbar.notification.NotificationFilter;
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
||||
@@ -143,7 +135,6 @@ import com.android.systemui.statusbar.policy.ExtensionController;
|
||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||
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.unfold.UnfoldLightRevealOverlayAnimation;
|
||||
@@ -151,6 +142,7 @@ import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
import com.android.systemui.wmshell.BubblesManager;
|
||||
import com.android.unfold.config.UnfoldTransitionConfig;
|
||||
import com.android.wm.shell.bubbles.Bubbles;
|
||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
|
||||
import com.android.wm.shell.startingsurface.StartingSurface;
|
||||
@@ -181,7 +173,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
|
||||
@Mock private NotificationsController mNotificationsController;
|
||||
@Mock private LightBarController mLightBarController;
|
||||
@Mock private StatusBarSignalPolicy mStatusBarSignalPolicy;
|
||||
@Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
|
||||
@Mock private KeyguardStateController mKeyguardStateController;
|
||||
@Mock private KeyguardIndicationController mKeyguardIndicationController;
|
||||
@@ -206,7 +197,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private BatteryController mBatteryController;
|
||||
@Mock private DeviceProvisionedController mDeviceProvisionedController;
|
||||
@Mock private StatusBarNotificationPresenter mNotificationPresenter;
|
||||
@Mock private NotificationEntryListener mEntryListener;
|
||||
@Mock private NotificationFilter mNotificationFilter;
|
||||
@Mock private AmbientDisplayConfiguration mAmbientDisplayConfiguration;
|
||||
@Mock private NotificationLogger.ExpansionStateLogger mExpansionStateLogger;
|
||||
@@ -217,7 +207,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private NotificationGutsManager mNotificationGutsManager;
|
||||
@Mock private NotificationMediaManager mNotificationMediaManager;
|
||||
@Mock private NavigationBarController mNavigationBarController;
|
||||
@Mock private AccessibilityFloatingMenuController mAccessibilityFloatingMenuController;
|
||||
@Mock private BypassHeadsUpNotifier mBypassHeadsUpNotifier;
|
||||
@Mock private SysuiColorExtractor mColorExtractor;
|
||||
@Mock private ColorExtractor.GradientColors mGradientColors;
|
||||
@@ -229,7 +218,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private NotificationViewHierarchyManager mNotificationViewHierarchyManager;
|
||||
@Mock private UserSwitcherController mUserSwitcherController;
|
||||
@Mock private NetworkController mNetworkController;
|
||||
@Mock private VibratorHelper mVibratorHelper;
|
||||
@Mock private BubblesManager mBubblesManager;
|
||||
@Mock private Bubbles mBubbles;
|
||||
@Mock private NotificationShadeWindowController mNotificationShadeWindowController;
|
||||
@@ -240,7 +228,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private LockscreenWallpaper mLockscreenWallpaper;
|
||||
@Mock private DozeServiceHost mDozeServiceHost;
|
||||
@Mock private ViewMediatorCallback mKeyguardVieMediatorCallback;
|
||||
@Mock private KeyguardLiftController mKeyguardLiftController;
|
||||
@Mock private VolumeComponent mVolumeComponent;
|
||||
@Mock private CommandQueue mCommandQueue;
|
||||
@Mock private Provider<StatusBarComponent.Builder> mStatusBarComponentBuilderProvider;
|
||||
@@ -251,12 +238,10 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
@Mock private LightsOutNotifController mLightsOutNotifController;
|
||||
@Mock private ViewMediatorCallback mViewMediatorCallback;
|
||||
@Mock private DismissCallbackRegistry mDismissCallbackRegistry;
|
||||
@Mock private StatusBarTouchableRegionManager mStatusBarTouchableRegionManager;
|
||||
@Mock private ScreenPinningRequest mScreenPinningRequest;
|
||||
@Mock private StatusBarNotificationActivityStarter.Builder
|
||||
mStatusBarNotificationActivityStarterBuilder;
|
||||
@Mock private DarkIconDispatcher mDarkIconDispatcher;
|
||||
@Mock private PluginDependencyProvider mPluginDependencyProvider;
|
||||
@Mock private KeyguardDismissUtil mKeyguardDismissUtil;
|
||||
@Mock private ExtensionController mExtensionController;
|
||||
@@ -265,7 +250,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private DemoModeController mDemoModeController;
|
||||
@Mock private Lazy<NotificationShadeDepthController> mNotificationShadeDepthControllerLazy;
|
||||
@Mock private BrightnessSlider.Factory mBrightnessSliderFactory;
|
||||
@Mock private WiredChargingRippleController mWiredChargingRippleController;
|
||||
@Mock private UnfoldTransitionConfig mUnfoldTransitionConfig;
|
||||
@Mock private Lazy<UnfoldLightRevealOverlayAnimation> mUnfoldLightRevealOverlayAnimationLazy;
|
||||
@Mock private OngoingCallController mOngoingCallController;
|
||||
@@ -274,7 +258,8 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private StatusBarIconController mIconController;
|
||||
@Mock private LockscreenShadeTransitionController mLockscreenTransitionController;
|
||||
@Mock private FeatureFlags mFeatureFlags;
|
||||
@Mock private IWallpaperManager mWallpaperManager;
|
||||
@Mock private WallpaperManager mWallpaperManager;
|
||||
@Mock private IWallpaperManager mIWallpaperManager;
|
||||
@Mock private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
|
||||
@Mock private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
|
||||
@Mock private StartingSurface mStartingSurface;
|
||||
@@ -335,7 +320,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
}).when(mStatusBarKeyguardViewManager).addAfterKeyguardGoneRunnable(any());
|
||||
|
||||
WakefulnessLifecycle wakefulnessLifecycle =
|
||||
new WakefulnessLifecycle(mContext, mWallpaperManager);
|
||||
new WakefulnessLifecycle(mContext, mIWallpaperManager);
|
||||
wakefulnessLifecycle.dispatchStartedWakingUp(PowerManager.WAKE_REASON_UNKNOWN);
|
||||
wakefulnessLifecycle.dispatchFinishedWakingUp();
|
||||
|
||||
@@ -362,7 +347,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mLightBarController,
|
||||
mAutoHideController,
|
||||
mKeyguardUpdateMonitor,
|
||||
mStatusBarSignalPolicy,
|
||||
mPulseExpansionHandler,
|
||||
mNotificationWakeUpCoordinator,
|
||||
mKeyguardBypassController,
|
||||
@@ -373,11 +357,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
new FalsingManagerFake(),
|
||||
new FalsingCollectorFake(),
|
||||
mBroadcastDispatcher,
|
||||
new RemoteInputQuickSettingsDisabler(
|
||||
mContext,
|
||||
configurationController,
|
||||
mCommandQueue
|
||||
),
|
||||
mNotificationGutsManager,
|
||||
notificationLogger,
|
||||
mNotificationInterruptStateProvider,
|
||||
@@ -396,19 +375,16 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
new ScreenLifecycle(),
|
||||
wakefulnessLifecycle,
|
||||
mStatusBarStateController,
|
||||
mVibratorHelper,
|
||||
Optional.of(mBubblesManager),
|
||||
Optional.of(mBubbles),
|
||||
mVisualStabilityManager,
|
||||
mDeviceProvisionedController,
|
||||
mNavigationBarController,
|
||||
mAccessibilityFloatingMenuController,
|
||||
() -> mAssistManager,
|
||||
configurationController,
|
||||
mNotificationShadeWindowController,
|
||||
mDozeParameters,
|
||||
mScrimController,
|
||||
mKeyguardLiftController,
|
||||
mLockscreenWallpaperLazy,
|
||||
mBiometricUnlockControllerLazy,
|
||||
mDozeServiceHost,
|
||||
@@ -433,13 +409,11 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mUserInfoControllerImpl,
|
||||
mPhoneStatusBarPolicy,
|
||||
mKeyguardIndicationController,
|
||||
mDismissCallbackRegistry,
|
||||
mDemoModeController,
|
||||
mNotificationShadeDepthControllerLazy,
|
||||
mStatusBarTouchableRegionManager,
|
||||
mNotificationIconAreaController,
|
||||
mBrightnessSliderFactory,
|
||||
mWiredChargingRippleController,
|
||||
mUnfoldTransitionConfig,
|
||||
mUnfoldLightRevealOverlayAnimationLazy,
|
||||
mOngoingCallController,
|
||||
@@ -449,6 +423,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mLockscreenTransitionController,
|
||||
mFeatureFlags,
|
||||
mKeyguardUnlockAnimationController,
|
||||
mWallpaperManager,
|
||||
mUnlockedScreenOffAnimationController,
|
||||
Optional.of(mStartingSurface));
|
||||
when(mKeyguardViewMediator.registerStatusBar(any(StatusBar.class), any(ViewGroup.class),
|
||||
@@ -753,31 +728,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDisableExpandStatusBar() {
|
||||
mStatusBar.setBarStateForTest(StatusBarState.SHADE);
|
||||
mStatusBar.setUserSetupForTest(true);
|
||||
when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(true);
|
||||
|
||||
when(mCommandQueue.panelsEnabled()).thenReturn(false);
|
||||
mStatusBar.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||
StatusBarManager.DISABLE2_NOTIFICATION_SHADE, false);
|
||||
verify(mNotificationPanelViewController).setQsExpansionEnabledPolicy(false);
|
||||
mStatusBar.animateExpandNotificationsPanel();
|
||||
verify(mNotificationPanelViewController, never()).expand(anyBoolean());
|
||||
mStatusBar.animateExpandSettingsPanel(null);
|
||||
verify(mNotificationPanelViewController, never()).expand(anyBoolean());
|
||||
|
||||
when(mCommandQueue.panelsEnabled()).thenReturn(true);
|
||||
mStatusBar.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||
StatusBarManager.DISABLE2_NONE, false);
|
||||
verify(mNotificationPanelViewController).setQsExpansionEnabledPolicy(true);
|
||||
mStatusBar.animateExpandNotificationsPanel();
|
||||
verify(mNotificationPanelViewController).expandWithoutQs();
|
||||
mStatusBar.animateExpandSettingsPanel(null);
|
||||
verify(mNotificationPanelViewController).expandWithQs();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDump_DoesNotCrash() {
|
||||
mStatusBar.dump(null, new PrintWriter(new ByteArrayOutputStream()), null);
|
||||
@@ -904,18 +854,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
any(UserHandle.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSuppressAmbientDisplay_suppress() {
|
||||
mStatusBar.suppressAmbientDisplay(true);
|
||||
verify(mDozeServiceHost).setDozeSuppressed(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSuppressAmbientDisplay_unsuppress() {
|
||||
mStatusBar.suppressAmbientDisplay(false);
|
||||
verify(mDozeServiceHost).setDozeSuppressed(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateResources_updatesBouncer() {
|
||||
mStatusBar.updateResources();
|
||||
|
||||
Reference in New Issue
Block a user