Merge "Fix boot timeout and reduce boot time" into rvc-dev
This commit is contained in:
@@ -23,6 +23,7 @@ import android.view.WindowManager;
|
||||
import com.android.systemui.car.window.SystemUIOverlayWindowController;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
@@ -49,12 +50,14 @@ public class DummyNotificationShadeWindowController extends NotificationShadeWin
|
||||
DozeParameters dozeParameters,
|
||||
StatusBarStateController statusBarStateController,
|
||||
ConfigurationController configurationController,
|
||||
KeyguardViewMediator keyguardViewMediator,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
SysuiColorExtractor colorExtractor,
|
||||
DumpManager dumpManager,
|
||||
SystemUIOverlayWindowController overlayWindowController) {
|
||||
super(context, windowManager, activityManager, dozeParameters, statusBarStateController,
|
||||
configurationController, keyguardBypassController, colorExtractor, dumpManager);
|
||||
configurationController, keyguardViewMediator, keyguardBypassController,
|
||||
colorExtractor, dumpManager);
|
||||
mOverlayWindowController = overlayWindowController;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,6 +84,7 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
|
||||
private final boolean mKeyguardScreenRotation;
|
||||
private final long mLockScreenDisplayTimeout;
|
||||
private final Display.Mode mKeyguardDisplayMode;
|
||||
private final KeyguardViewMediator mKeyguardViewMediator;
|
||||
private final KeyguardBypassController mKeyguardBypassController;
|
||||
private ViewGroup mNotificationShadeView;
|
||||
private LayoutParams mLp;
|
||||
@@ -104,6 +105,7 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
|
||||
IActivityManager activityManager, DozeParameters dozeParameters,
|
||||
StatusBarStateController statusBarStateController,
|
||||
ConfigurationController configurationController,
|
||||
KeyguardViewMediator keyguardViewMediator,
|
||||
KeyguardBypassController keyguardBypassController, SysuiColorExtractor colorExtractor,
|
||||
DumpManager dumpManager) {
|
||||
mContext = context;
|
||||
@@ -113,6 +115,7 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
|
||||
mDozeParameters = dozeParameters;
|
||||
mScreenBrightnessDoze = mDozeParameters.getScreenBrightnessDoze();
|
||||
mLpChanged = new LayoutParams();
|
||||
mKeyguardViewMediator = keyguardViewMediator;
|
||||
mKeyguardBypassController = keyguardBypassController;
|
||||
mColorExtractor = colorExtractor;
|
||||
dumpManager.registerDumpable(getClass().getName(), this);
|
||||
@@ -202,6 +205,11 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
|
||||
mWindowManager.addView(mNotificationShadeView, mLp);
|
||||
mLpChanged.copyFrom(mLp);
|
||||
onThemeChanged();
|
||||
|
||||
// Make the state consistent with KeyguardViewMediator#setupLocked during initialization.
|
||||
if (mKeyguardViewMediator.isShowingAndNotOccluded()) {
|
||||
setKeyguardShowing(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void setNotificationShadeView(ViewGroup view) {
|
||||
|
||||
@@ -63,6 +63,7 @@ import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
@@ -135,6 +136,8 @@ public class BubbleControllerTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private SysuiStatusBarStateController mStatusBarStateController;
|
||||
@Mock
|
||||
private KeyguardViewMediator mKeyguardViewMediator;
|
||||
@Mock
|
||||
private KeyguardBypassController mKeyguardBypassController;
|
||||
@Mock
|
||||
private FloatingContentCoordinator mFloatingContentCoordinator;
|
||||
@@ -198,8 +201,8 @@ public class BubbleControllerTest extends SysuiTestCase {
|
||||
|
||||
mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
|
||||
mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||
mConfigurationController, mKeyguardBypassController, mColorExtractor,
|
||||
mDumpManager);
|
||||
mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController,
|
||||
mColorExtractor, mDumpManager);
|
||||
mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
|
||||
mNotificationShadeWindowController.attach();
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.FeatureFlags;
|
||||
@@ -132,6 +133,8 @@ public class NewNotifPipelineBubbleControllerTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private SysuiStatusBarStateController mStatusBarStateController;
|
||||
@Mock
|
||||
private KeyguardViewMediator mKeyguardViewMediator;
|
||||
@Mock
|
||||
private KeyguardBypassController mKeyguardBypassController;
|
||||
@Mock
|
||||
private FloatingContentCoordinator mFloatingContentCoordinator;
|
||||
@@ -194,8 +197,8 @@ public class NewNotifPipelineBubbleControllerTest extends SysuiTestCase {
|
||||
// Bubbles get added to status bar window view
|
||||
mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
|
||||
mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||
mConfigurationController, mKeyguardBypassController, mColorExtractor,
|
||||
mDumpManager);
|
||||
mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController,
|
||||
mColorExtractor, mDumpManager);
|
||||
mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
|
||||
mNotificationShadeWindowController.attach();
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone;
|
||||
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@@ -41,6 +42,7 @@ import com.android.internal.colorextraction.ColorExtractor;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
|
||||
@@ -63,6 +65,7 @@ public class NotificationShadeWindowControllerTest extends SysuiTestCase {
|
||||
@Mock private IActivityManager mActivityManager;
|
||||
@Mock private SysuiStatusBarStateController mStatusBarStateController;
|
||||
@Mock private ConfigurationController mConfigurationController;
|
||||
@Mock private KeyguardViewMediator mKeyguardViewMediator;
|
||||
@Mock private KeyguardBypassController mKeyguardBypassController;
|
||||
@Mock private SysuiColorExtractor mColorExtractor;
|
||||
@Mock ColorExtractor.GradientColors mGradientColors;
|
||||
@@ -79,8 +82,8 @@ public class NotificationShadeWindowControllerTest extends SysuiTestCase {
|
||||
|
||||
mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
|
||||
mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||
mConfigurationController, mKeyguardBypassController, mColorExtractor,
|
||||
mDumpManager);
|
||||
mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController,
|
||||
mColorExtractor, mDumpManager);
|
||||
mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
|
||||
|
||||
mNotificationShadeWindowController.attach();
|
||||
@@ -119,6 +122,17 @@ public class NotificationShadeWindowControllerTest extends SysuiTestCase {
|
||||
mNotificationShadeWindowController.setForcePluginOpen(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void attach_visibleWithWallpaper() {
|
||||
clearInvocations(mWindowManager);
|
||||
when(mKeyguardViewMediator.isShowingAndNotOccluded()).thenReturn(true);
|
||||
mNotificationShadeWindowController.attach();
|
||||
|
||||
verify(mNotificationShadeWindowView).setVisibility(eq(View.VISIBLE));
|
||||
verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
|
||||
assertThat((mLayoutParameters.getValue().flags & FLAG_SHOW_WALLPAPER) != 0).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setBackgroundBlurRadius_expandedWithBlurs() {
|
||||
mNotificationShadeWindowController.setBackgroundBlurRadius(10);
|
||||
|
||||
@@ -3719,12 +3719,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
|
||||
drawnWindowTypes.put(TYPE_NOTIFICATION_SHADE, true);
|
||||
|
||||
final WindowState visibleNotDrawnWindow = getWindow(w -> {
|
||||
boolean isVisible = w.mViewVisibility == View.VISIBLE && !w.mObscured;
|
||||
boolean hasDrawn = w.isDrawnLw() && w.hasDrawnLw();
|
||||
if (isVisible && !hasDrawn) {
|
||||
final boolean isVisible = w.isVisible() && !w.mObscured;
|
||||
final boolean isDrawn = w.isDrawnLw();
|
||||
if (isVisible && !isDrawn) {
|
||||
return true;
|
||||
}
|
||||
if (hasDrawn) {
|
||||
if (isDrawn) {
|
||||
switch (w.mAttrs.type) {
|
||||
case TYPE_BOOT_PROGRESS:
|
||||
case TYPE_BASE_APPLICATION:
|
||||
|
||||
@@ -482,12 +482,17 @@ public class DisplayContentTests extends WindowTestsBase {
|
||||
final DisplayContent defaultDisplay = mWm.getDefaultDisplayContentLocked();
|
||||
final WindowState[] windows = createNotDrawnWindowsOn(defaultDisplay,
|
||||
TYPE_WALLPAPER, TYPE_APPLICATION);
|
||||
final WindowState wallpaper = windows[0];
|
||||
assertTrue(wallpaper.mIsWallpaper);
|
||||
// By default WindowState#mWallpaperVisible is false.
|
||||
assertFalse(wallpaper.isVisible());
|
||||
|
||||
// Verify waiting for windows to be drawn.
|
||||
assertTrue(defaultDisplay.shouldWaitForSystemDecorWindowsOnBoot());
|
||||
|
||||
// Verify not waiting for drawn windows.
|
||||
makeWindowsDrawnState(windows, WindowStateAnimator.HAS_DRAWN);
|
||||
// Verify not waiting for drawn window and invisible wallpaper.
|
||||
setDrawnState(WindowStateAnimator.READY_TO_SHOW, wallpaper);
|
||||
setDrawnState(WindowStateAnimator.HAS_DRAWN, windows[1]);
|
||||
assertFalse(defaultDisplay.shouldWaitForSystemDecorWindowsOnBoot());
|
||||
}
|
||||
|
||||
@@ -508,26 +513,10 @@ public class DisplayContentTests extends WindowTestsBase {
|
||||
assertTrue(secondaryDisplay.shouldWaitForSystemDecorWindowsOnBoot());
|
||||
|
||||
// Verify not waiting for drawn windows on display with system decorations.
|
||||
makeWindowsDrawnState(windows, WindowStateAnimator.HAS_DRAWN);
|
||||
setDrawnState(WindowStateAnimator.HAS_DRAWN, windows);
|
||||
assertFalse(secondaryDisplay.shouldWaitForSystemDecorWindowsOnBoot());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShouldWaitForSystemDecorWindowsOnBoot_OnWindowReadyToShowAndDrawn() {
|
||||
mWm.mSystemBooted = true;
|
||||
final DisplayContent defaultDisplay = mWm.getDefaultDisplayContentLocked();
|
||||
final WindowState[] windows = createNotDrawnWindowsOn(defaultDisplay,
|
||||
TYPE_WALLPAPER, TYPE_APPLICATION);
|
||||
|
||||
// Verify waiting for windows to be drawn.
|
||||
makeWindowsDrawnState(windows, WindowStateAnimator.READY_TO_SHOW);
|
||||
assertTrue(defaultDisplay.shouldWaitForSystemDecorWindowsOnBoot());
|
||||
|
||||
// Verify not waiting for drawn windows.
|
||||
makeWindowsDrawnState(windows, WindowStateAnimator.HAS_DRAWN);
|
||||
assertFalse(defaultDisplay.shouldWaitForSystemDecorWindowsOnBoot());
|
||||
}
|
||||
|
||||
private WindowState[] createNotDrawnWindowsOn(DisplayContent displayContent, int... types) {
|
||||
final WindowState[] windows = new WindowState[types.length];
|
||||
for (int i = 0; i < types.length; i++) {
|
||||
@@ -538,9 +527,9 @@ public class DisplayContentTests extends WindowTestsBase {
|
||||
return windows;
|
||||
}
|
||||
|
||||
private static void makeWindowsDrawnState(WindowState[] windows, int state) {
|
||||
private static void setDrawnState(int state, WindowState... windows) {
|
||||
for (WindowState window : windows) {
|
||||
window.mHasSurface = true;
|
||||
window.mHasSurface = state != WindowStateAnimator.NO_SURFACE;
|
||||
window.mWinAnimator.mDrawState = state;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user