Merge "[DO NOT MERGE] Unfold refactor" into sc-v2-dev

This commit is contained in:
TreeHugger Robot
2021-11-06 18:49:41 +00:00
committed by Android (Google) Code Review
20 changed files with 259 additions and 126 deletions

View File

@@ -0,0 +1,49 @@
/*
* 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.keyguard
import android.view.ViewGroup
import com.android.systemui.unfold.SysUIUnfoldScope
import com.android.systemui.unfold.UnfoldTransitionProgressProvider
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
import javax.inject.Inject
/**
* Translates items away/towards the hinge when the device is opened/closed.
*/
@SysUIUnfoldScope
class KeyguardUnfoldTransition @Inject constructor(
val unfoldProgressProvider: UnfoldTransitionProgressProvider
) {
init {
unfoldProgressProvider.addCallback(
object : TransitionProgressListener {
override fun onTransitionStarted() {
}
override fun onTransitionProgress(progress: Float) {
}
override fun onTransitionFinished() {
}
}
)
}
fun setup(parent: ViewGroup) {
}
}

View File

@@ -25,6 +25,8 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardSliceProvider; import com.android.systemui.keyguard.KeyguardSliceProvider;
import com.android.systemui.people.PeopleProvider; import com.android.systemui.people.PeopleProvider;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
import com.android.wm.shell.ShellCommandHandler; import com.android.wm.shell.ShellCommandHandler;
import com.android.wm.shell.TaskViewFactory; import com.android.wm.shell.TaskViewFactory;
import com.android.wm.shell.apppairs.AppPairs; import com.android.wm.shell.apppairs.AppPairs;
@@ -112,7 +114,14 @@ public interface SysUIComponent {
* Initializes all the SysUI components. * Initializes all the SysUI components.
*/ */
default void init() { default void init() {
// Do nothing // Initialize components that have no direct tie to the dagger dependency graph,
// but are critical to this component's operation
// TODO(b/205034537): I think this is a good idea?
getSysUIUnfoldComponent().ifPresent(c -> {
c.getUnfoldLightRevealOverlayAnimation().init();
c.getUnfoldTransitionWallpaperController().init();
});
getNaturalRotationUnfoldProgressProvider().ifPresent(o -> o.init());
} }
/** /**
@@ -149,6 +158,16 @@ public interface SysUIComponent {
@SysUISingleton @SysUISingleton
InitController getInitController(); InitController getInitController();
/**
* For devices with a hinge: access objects within this component
*/
Optional<SysUIUnfoldComponent> getSysUIUnfoldComponent();
/**
* For devices with a hinge: the rotation animation
*/
Optional<NaturalRotationUnfoldProgressProvider> getNaturalRotationUnfoldProgressProvider();
/** /**
* Member injection into the supplied argument. * Member injection into the supplied argument.
*/ */

View File

@@ -73,6 +73,7 @@ import com.android.systemui.statusbar.policy.dagger.SmartRepliesInflationModule;
import com.android.systemui.statusbar.policy.dagger.StatusBarPolicyModule; import com.android.systemui.statusbar.policy.dagger.StatusBarPolicyModule;
import com.android.systemui.statusbar.window.StatusBarWindowModule; import com.android.systemui.statusbar.window.StatusBarWindowModule;
import com.android.systemui.tuner.dagger.TunerModule; import com.android.systemui.tuner.dagger.TunerModule;
import com.android.systemui.unfold.SysUIUnfoldModule;
import com.android.systemui.user.UserModule; import com.android.systemui.user.UserModule;
import com.android.systemui.util.concurrency.SysUIConcurrencyModule; import com.android.systemui.util.concurrency.SysUIConcurrencyModule;
import com.android.systemui.util.dagger.UtilModule; import com.android.systemui.util.dagger.UtilModule;
@@ -115,6 +116,7 @@ import dagger.Provides;
StatusBarPolicyModule.class, StatusBarPolicyModule.class,
StatusBarWindowModule.class, StatusBarWindowModule.class,
SysUIConcurrencyModule.class, SysUIConcurrencyModule.class,
SysUIUnfoldModule.class,
TunerModule.class, TunerModule.class,
UserModule.class, UserModule.class,
UtilModule.class, UtilModule.class,

View File

@@ -122,13 +122,14 @@ import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation; import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation;
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxy;
import java.io.FileDescriptor; import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Optional;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@@ -814,8 +815,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
private DeviceConfigProxy mDeviceConfig; private DeviceConfigProxy mDeviceConfig;
private DozeParameters mDozeParameters; private DozeParameters mDozeParameters;
private final UnfoldTransitionConfig mUnfoldTransitionConfig; private final Optional<UnfoldLightRevealOverlayAnimation> mUnfoldLightRevealAnimation;
private final Lazy<UnfoldLightRevealOverlayAnimation> mUnfoldLightRevealAnimation;
private final AtomicInteger mPendingDrawnTasks = new AtomicInteger(); private final AtomicInteger mPendingDrawnTasks = new AtomicInteger();
private final KeyguardStateController mKeyguardStateController; private final KeyguardStateController mKeyguardStateController;
@@ -840,8 +840,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
NavigationModeController navigationModeController, NavigationModeController navigationModeController,
KeyguardDisplayManager keyguardDisplayManager, KeyguardDisplayManager keyguardDisplayManager,
DozeParameters dozeParameters, DozeParameters dozeParameters,
UnfoldTransitionConfig unfoldTransitionConfig, Optional<SysUIUnfoldComponent> unfoldComponent,
Lazy<UnfoldLightRevealOverlayAnimation> unfoldLightRevealOverlayAnimation,
SysuiStatusBarStateController statusBarStateController, SysuiStatusBarStateController statusBarStateController,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationControllerLazy, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationControllerLazy,
@@ -875,8 +874,8 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
mInGestureNavigationMode = QuickStepContract.isGesturalMode(mode); mInGestureNavigationMode = QuickStepContract.isGesturalMode(mode);
})); }));
mDozeParameters = dozeParameters; mDozeParameters = dozeParameters;
mUnfoldTransitionConfig = unfoldTransitionConfig; mUnfoldLightRevealAnimation = unfoldComponent.map(
mUnfoldLightRevealAnimation = unfoldLightRevealOverlayAnimation; c -> c.getUnfoldLightRevealOverlayAnimation());
mStatusBarStateController = statusBarStateController; mStatusBarStateController = statusBarStateController;
statusBarStateController.addCallback(this); statusBarStateController.addCallback(this);
@@ -2560,7 +2559,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
synchronized (KeyguardViewMediator.this) { synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleNotifyScreenTurningOn"); if (DEBUG) Log.d(TAG, "handleNotifyScreenTurningOn");
if (mUnfoldTransitionConfig.isEnabled()) { if (mUnfoldLightRevealAnimation.isPresent()) {
mPendingDrawnTasks.set(2); // unfold overlay and keyguard drawn mPendingDrawnTasks.set(2); // unfold overlay and keyguard drawn
mUnfoldLightRevealAnimation.get() mUnfoldLightRevealAnimation.get()

View File

@@ -49,11 +49,11 @@ import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation; import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.sensors.AsyncSensorManager;
import java.util.Optional;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import dagger.Lazy; import dagger.Lazy;
@@ -92,8 +92,7 @@ public class KeyguardModule {
NavigationModeController navigationModeController, NavigationModeController navigationModeController,
KeyguardDisplayManager keyguardDisplayManager, KeyguardDisplayManager keyguardDisplayManager,
DozeParameters dozeParameters, DozeParameters dozeParameters,
UnfoldTransitionConfig unfoldTransitionConfig, Optional<SysUIUnfoldComponent> unfoldComponent,
Lazy<UnfoldLightRevealOverlayAnimation> unfoldLightRevealOverlayAnimation,
SysuiStatusBarStateController statusBarStateController, SysuiStatusBarStateController statusBarStateController,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController,
@@ -116,8 +115,7 @@ public class KeyguardModule {
navigationModeController, navigationModeController,
keyguardDisplayManager, keyguardDisplayManager,
dozeParameters, dozeParameters,
unfoldTransitionConfig, unfoldComponent,
unfoldLightRevealOverlayAnimation,
statusBarStateController, statusBarStateController,
keyguardStateController, keyguardStateController,
keyguardUnlockAnimationController, keyguardUnlockAnimationController,

View File

@@ -99,6 +99,7 @@ import com.android.internal.policy.SystemBarUtils;
import com.android.internal.util.LatencyTracker; import com.android.internal.util.LatencyTracker;
import com.android.keyguard.KeyguardStatusView; import com.android.keyguard.KeyguardStatusView;
import com.android.keyguard.KeyguardStatusViewController; import com.android.keyguard.KeyguardStatusViewController;
import com.android.keyguard.KeyguardUnfoldTransition;
import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.LockIconViewController; import com.android.keyguard.LockIconViewController;
import com.android.keyguard.dagger.KeyguardQsUserSwitchComponent; import com.android.keyguard.dagger.KeyguardQsUserSwitchComponent;
@@ -178,6 +179,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcherController; import com.android.systemui.statusbar.policy.KeyguardUserSwitcherController;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcherView; import com.android.systemui.statusbar.policy.KeyguardUserSwitcherView;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.util.Utils; import com.android.systemui.util.Utils;
import com.android.systemui.util.settings.SecureSettings; import com.android.systemui.util.settings.SecureSettings;
import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.android.systemui.wallet.controller.QuickAccessWalletController;
@@ -188,6 +190,7 @@ import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -605,6 +608,8 @@ public class NotificationPanelViewController extends PanelViewController {
private boolean mStatusViewCentered = true; private boolean mStatusViewCentered = true;
private Optional<KeyguardUnfoldTransition> mKeyguardUnfoldTransition;
private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() { private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() {
@Override @Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
@@ -694,6 +699,7 @@ public class NotificationPanelViewController extends PanelViewController {
LockscreenGestureLogger lockscreenGestureLogger, LockscreenGestureLogger lockscreenGestureLogger,
PanelExpansionStateManager panelExpansionStateManager, PanelExpansionStateManager panelExpansionStateManager,
NotificationRemoteInputManager remoteInputManager, NotificationRemoteInputManager remoteInputManager,
Optional<SysUIUnfoldComponent> unfoldComponent,
ControlsComponent controlsComponent, ControlsComponent controlsComponent,
FeatureFlags featureFlags) { FeatureFlags featureFlags) {
super(view, super(view,
@@ -809,6 +815,7 @@ public class NotificationPanelViewController extends PanelViewController {
} }
mMaxKeyguardNotifications = resources.getInteger(R.integer.keyguard_max_notification_count); mMaxKeyguardNotifications = resources.getInteger(R.integer.keyguard_max_notification_count);
mKeyguardUnfoldTransition = unfoldComponent.map(c -> c.getKeyguardUnfoldTransition());
updateUserSwitcherFlags(); updateUserSwitcherFlags();
onFinishInflate(); onFinishInflate();
@@ -839,11 +846,12 @@ public class NotificationPanelViewController extends PanelViewController {
.getKeyguardStatusBarViewController(); .getKeyguardStatusBarViewController();
mKeyguardStatusBarViewController.init(); mKeyguardStatusBarViewController.init();
mNotificationContainerParent = mView.findViewById(R.id.notification_container_parent);
updateViewControllers( updateViewControllers(
mView.findViewById(R.id.keyguard_status_view), mView.findViewById(R.id.keyguard_status_view),
userAvatarContainer, userAvatarContainer,
keyguardUserSwitcherView); keyguardUserSwitcherView);
mNotificationContainerParent = mView.findViewById(R.id.notification_container_parent);
NotificationStackScrollLayout stackScrollLayout = mView.findViewById( NotificationStackScrollLayout stackScrollLayout = mView.findViewById(
R.id.notification_stack_scroller); R.id.notification_stack_scroller);
mNotificationStackScrollLayoutController.attach(stackScrollLayout); mNotificationStackScrollLayoutController.attach(stackScrollLayout);
@@ -894,6 +902,7 @@ public class NotificationPanelViewController extends PanelViewController {
} }
mTapAgainViewController.init(); mTapAgainViewController.init();
mKeyguardUnfoldTransition.ifPresent(u -> u.setup(mNotificationContainerParent));
} }
@Override @Override
@@ -1137,6 +1146,8 @@ public class NotificationPanelViewController extends PanelViewController {
mBarState); mBarState);
} }
setKeyguardBottomAreaVisibility(mBarState, false); setKeyguardBottomAreaVisibility(mBarState, false);
mKeyguardUnfoldTransition.ifPresent(u -> u.setup(mNotificationContainerParent));
} }
private void attachSplitShadeMediaPlayerContainer(FrameLayout container) { private void attachSplitShadeMediaPlayerContainer(FrameLayout container) {

View File

@@ -21,21 +21,21 @@ import android.view.ViewGroup
import android.view.ViewTreeObserver import android.view.ViewTreeObserver
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator
import com.android.systemui.statusbar.CommandQueue import com.android.systemui.unfold.SysUIUnfoldComponent
import com.android.systemui.unfold.UNFOLD_STATUS_BAR import com.android.systemui.unfold.UNFOLD_STATUS_BAR
import com.android.systemui.unfold.config.UnfoldTransitionConfig
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider
import com.android.systemui.util.ViewController import com.android.systemui.util.ViewController
import com.android.systemui.util.kotlin.getOrNull
import java.util.Optional
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named import javax.inject.Named
import dagger.Lazy
/** Controller for [PhoneStatusBarView]. */ /** Controller for [PhoneStatusBarView]. */
class PhoneStatusBarViewController private constructor( class PhoneStatusBarViewController private constructor(
view: PhoneStatusBarView, view: PhoneStatusBarView,
@Named(UNFOLD_STATUS_BAR) private val progressProvider: ScopedUnfoldTransitionProgressProvider?, @Named(UNFOLD_STATUS_BAR) private val progressProvider: ScopedUnfoldTransitionProgressProvider?,
private val moveFromCenterAnimationController: StatusBarMoveFromCenterAnimationController?, private val moveFromCenterAnimationController: StatusBarMoveFromCenterAnimationController?,
touchEventHandler: PhoneStatusBarView.TouchEventHandler, touchEventHandler: PhoneStatusBarView.TouchEventHandler
) : ViewController<PhoneStatusBarView>(view) { ) : ViewController<PhoneStatusBarView>(view) {
override fun onViewAttached() { override fun onViewAttached() {
@@ -115,21 +115,21 @@ class PhoneStatusBarViewController private constructor(
} }
class Factory @Inject constructor( class Factory @Inject constructor(
private val unfoldComponent: Optional<SysUIUnfoldComponent>,
@Named(UNFOLD_STATUS_BAR) @Named(UNFOLD_STATUS_BAR)
private val progressProvider: Lazy<ScopedUnfoldTransitionProgressProvider>, private val progressProvider: Optional<ScopedUnfoldTransitionProgressProvider>
private val moveFromCenterController: Lazy<StatusBarMoveFromCenterAnimationController>,
private val unfoldConfig: UnfoldTransitionConfig,
) { ) {
fun create( fun create(
view: PhoneStatusBarView, view: PhoneStatusBarView,
touchEventHandler: PhoneStatusBarView.TouchEventHandler touchEventHandler: PhoneStatusBarView.TouchEventHandler
): PhoneStatusBarViewController { ) =
return PhoneStatusBarViewController( PhoneStatusBarViewController(
view, view,
if (unfoldConfig.isEnabled) progressProvider.get() else null, progressProvider.getOrNull(),
if (unfoldConfig.isEnabled) moveFromCenterController.get() else null, unfoldComponent.map {
it.getStatusBarMoveFromCenterAnimationController()
}.getOrNull(),
touchEventHandler touchEventHandler
) )
}
} }
} }

View File

@@ -232,10 +232,6 @@ import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.statusbar.window.StatusBarWindowController;
import com.android.systemui.statusbar.window.StatusBarWindowView; import com.android.systemui.statusbar.window.StatusBarWindowView;
import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService;
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation;
import com.android.systemui.unfold.UnfoldTransitionWallpaperController;
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
import com.android.systemui.util.DumpUtilsKt; import com.android.systemui.util.DumpUtilsKt;
import com.android.systemui.util.WallpaperController; import com.android.systemui.util.WallpaperController;
import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.concurrency.DelayableExecutor;
@@ -542,10 +538,7 @@ public class StatusBar extends SystemUI implements
protected final NotificationInterruptStateProvider mNotificationInterruptStateProvider; protected final NotificationInterruptStateProvider mNotificationInterruptStateProvider;
private final BrightnessSliderController.Factory mBrightnessSliderFactory; private final BrightnessSliderController.Factory mBrightnessSliderFactory;
private final FeatureFlags mFeatureFlags; private final FeatureFlags mFeatureFlags;
private final UnfoldTransitionConfig mUnfoldTransitionConfig;
private final Lazy<UnfoldLightRevealOverlayAnimation> mUnfoldLightRevealOverlayAnimation;
private final Lazy<NaturalRotationUnfoldProgressProvider> mNaturalUnfoldProgressProvider;
private final Lazy<UnfoldTransitionWallpaperController> mUnfoldWallpaperController;
private final WallpaperController mWallpaperController; private final WallpaperController mWallpaperController;
private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
private final MessageRouter mMessageRouter; private final MessageRouter mMessageRouter;
@@ -780,10 +773,6 @@ public class StatusBar extends SystemUI implements
StatusBarTouchableRegionManager statusBarTouchableRegionManager, StatusBarTouchableRegionManager statusBarTouchableRegionManager,
NotificationIconAreaController notificationIconAreaController, NotificationIconAreaController notificationIconAreaController,
BrightnessSliderController.Factory brightnessSliderFactory, BrightnessSliderController.Factory brightnessSliderFactory,
UnfoldTransitionConfig unfoldTransitionConfig,
Lazy<UnfoldLightRevealOverlayAnimation> unfoldLightRevealOverlayAnimation,
Lazy<UnfoldTransitionWallpaperController> unfoldTransitionWallpaperController,
Lazy<NaturalRotationUnfoldProgressProvider> naturalRotationUnfoldProgressProvider,
WallpaperController wallpaperController, WallpaperController wallpaperController,
OngoingCallController ongoingCallController, OngoingCallController ongoingCallController,
SystemStatusAnimationScheduler animationScheduler, SystemStatusAnimationScheduler animationScheduler,
@@ -880,10 +869,6 @@ public class StatusBar extends SystemUI implements
mDemoModeController = demoModeController; mDemoModeController = demoModeController;
mNotificationIconAreaController = notificationIconAreaController; mNotificationIconAreaController = notificationIconAreaController;
mBrightnessSliderFactory = brightnessSliderFactory; mBrightnessSliderFactory = brightnessSliderFactory;
mUnfoldTransitionConfig = unfoldTransitionConfig;
mUnfoldLightRevealOverlayAnimation = unfoldLightRevealOverlayAnimation;
mNaturalUnfoldProgressProvider = naturalRotationUnfoldProgressProvider;
mUnfoldWallpaperController = unfoldTransitionWallpaperController;
mWallpaperController = wallpaperController; mWallpaperController = wallpaperController;
mOngoingCallController = ongoingCallController; mOngoingCallController = ongoingCallController;
mAnimationScheduler = animationScheduler; mAnimationScheduler = animationScheduler;
@@ -1071,12 +1056,6 @@ public class StatusBar extends SystemUI implements
mFalsingManager.addFalsingBeliefListener(mFalsingBeliefListener); mFalsingManager.addFalsingBeliefListener(mFalsingBeliefListener);
if (mUnfoldTransitionConfig.isEnabled()) {
mUnfoldLightRevealOverlayAnimation.get().init();
mUnfoldWallpaperController.get().init();
mNaturalUnfoldProgressProvider.get().init();
}
mPluginManager.addPluginListener( mPluginManager.addPluginListener(
new PluginListener<OverlayPlugin>() { new PluginListener<OverlayPlugin>() {
private final ArraySet<OverlayPlugin> mOverlays = new ArraySet<>(); private final ArraySet<OverlayPlugin> mOverlays = new ArraySet<>();
@@ -4517,5 +4496,4 @@ public class StatusBar extends SystemUI implements
return mStartingSurfaceOptional.get().getBackgroundColor(task); return mStartingSurfaceOptional.get().getBackgroundColor(task);
} }
}; };
} }

View File

@@ -17,19 +17,17 @@ package com.android.systemui.statusbar.phone
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator
import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator.ViewCenterProvider import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator.ViewCenterProvider
import com.android.systemui.unfold.UNFOLD_STATUS_BAR import com.android.systemui.unfold.SysUIUnfoldScope
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named
@SysUISingleton @SysUIUnfoldScope
class StatusBarMoveFromCenterAnimationController @Inject constructor( class StatusBarMoveFromCenterAnimationController @Inject constructor(
@Named(UNFOLD_STATUS_BAR) private val progressProvider: ScopedUnfoldTransitionProgressProvider, private val progressProvider: ScopedUnfoldTransitionProgressProvider,
private val windowManager: WindowManager, private val windowManager: WindowManager
) { ) {
private val transitionListener = TransitionListener() private val transitionListener = TransitionListener()

View File

@@ -95,7 +95,6 @@ import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarLocationPublisher; import com.android.systemui.statusbar.phone.StatusBarLocationPublisher;
import com.android.systemui.statusbar.phone.StatusBarMoveFromCenterAnimationController;
import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager; import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
@@ -110,10 +109,6 @@ import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.statusbar.window.StatusBarWindowController;
import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService;
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation;
import com.android.systemui.unfold.UnfoldTransitionWallpaperController;
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
import com.android.systemui.util.WallpaperController; import com.android.systemui.util.WallpaperController;
import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.concurrency.MessageRouter; import com.android.systemui.util.concurrency.MessageRouter;
@@ -224,11 +219,6 @@ public interface StatusBarPhoneModule {
StatusBarTouchableRegionManager statusBarTouchableRegionManager, StatusBarTouchableRegionManager statusBarTouchableRegionManager,
NotificationIconAreaController notificationIconAreaController, NotificationIconAreaController notificationIconAreaController,
BrightnessSliderController.Factory brightnessSliderFactory, BrightnessSliderController.Factory brightnessSliderFactory,
UnfoldTransitionConfig unfoldTransitionConfig,
Lazy<UnfoldLightRevealOverlayAnimation> unfoldLightRevealOverlayAnimation,
Lazy<NaturalRotationUnfoldProgressProvider> naturalRotationUnfoldProgressProvider,
Lazy<UnfoldTransitionWallpaperController> unfoldTransitionWallpaperController,
Lazy<StatusBarMoveFromCenterAnimationController> statusBarMoveFromCenterAnimation,
WallpaperController wallpaperController, WallpaperController wallpaperController,
OngoingCallController ongoingCallController, OngoingCallController ongoingCallController,
SystemStatusAnimationScheduler animationScheduler, SystemStatusAnimationScheduler animationScheduler,
@@ -327,10 +317,6 @@ public interface StatusBarPhoneModule {
statusBarTouchableRegionManager, statusBarTouchableRegionManager,
notificationIconAreaController, notificationIconAreaController,
brightnessSliderFactory, brightnessSliderFactory,
unfoldTransitionConfig,
unfoldLightRevealOverlayAnimation,
unfoldTransitionWallpaperController,
naturalRotationUnfoldProgressProvider,
wallpaperController, wallpaperController,
ongoingCallController, ongoingCallController,
animationScheduler, animationScheduler,

View File

@@ -0,0 +1,76 @@
/*
* 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.unfold
import com.android.keyguard.KeyguardUnfoldTransition
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.phone.StatusBarMoveFromCenterAnimationController
import dagger.BindsInstance
import dagger.Module
import dagger.Provides
import dagger.Subcomponent
import java.util.Optional
import javax.inject.Named
import javax.inject.Scope
@Scope
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
annotation class SysUIUnfoldScope
/**
* Creates an injectable [SysUIUnfoldComponent] that provides objects that have been scoped with
* [@SysUIUnfoldScope]. Since [SysUIUnfoldComponent] depends upon:
* * [Optional<UnfoldTransitionProgressProvider>]
* * [Optional<ScopedUnfoldTransitionProgressProvider>]
* no objects will get constructed if these parameters are empty.
*/
@Module(subcomponents = [SysUIUnfoldComponent::class])
object SysUIUnfoldModule {
@Provides
@SysUISingleton
fun provideSysUIUnfoldComponent(
provider: Optional<UnfoldTransitionProgressProvider>,
@Named(UNFOLD_STATUS_BAR) scopedProvider: Optional<ScopedUnfoldTransitionProgressProvider>,
factory: SysUIUnfoldComponent.Factory
) =
provider.flatMap {
p -> scopedProvider.map { sp -> factory.create(p, sp) }
}
}
@SysUIUnfoldScope
@Subcomponent
interface SysUIUnfoldComponent {
@Subcomponent.Factory
interface Factory {
fun create(
@BindsInstance provider: UnfoldTransitionProgressProvider,
@BindsInstance scopedProvider: ScopedUnfoldTransitionProgressProvider
): SysUIUnfoldComponent
}
fun getKeyguardUnfoldTransition(): KeyguardUnfoldTransition
fun getStatusBarMoveFromCenterAnimationController(): StatusBarMoveFromCenterAnimationController
fun getUnfoldTransitionWallpaperController(): UnfoldTransitionWallpaperController
fun getUnfoldLightRevealOverlayAnimation(): UnfoldLightRevealOverlayAnimation
}

View File

@@ -31,7 +31,6 @@ import android.view.SurfaceControlViewHost
import android.view.SurfaceSession import android.view.SurfaceSession
import android.view.WindowManager import android.view.WindowManager
import android.view.WindowlessWindowManager import android.view.WindowlessWindowManager
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dagger.qualifiers.UiBackground import com.android.systemui.dagger.qualifiers.UiBackground
import com.android.systemui.statusbar.LightRevealEffect import com.android.systemui.statusbar.LightRevealEffect
@@ -44,7 +43,7 @@ import java.util.concurrent.Executor
import java.util.function.Consumer import java.util.function.Consumer
import javax.inject.Inject import javax.inject.Inject
@SysUISingleton @SysUIUnfoldScope
class UnfoldLightRevealOverlayAnimation @Inject constructor( class UnfoldLightRevealOverlayAnimation @Inject constructor(
private val context: Context, private val context: Context,
private val deviceStateManager: DeviceStateManager, private val deviceStateManager: DeviceStateManager,

View File

@@ -21,7 +21,7 @@ import com.android.wm.shell.unfold.ShellUnfoldProgressProvider
import com.android.wm.shell.unfold.ShellUnfoldProgressProvider.UnfoldListener import com.android.wm.shell.unfold.ShellUnfoldProgressProvider.UnfoldListener
import java.util.concurrent.Executor import java.util.concurrent.Executor
class ShellUnfoldProgressProvider( class UnfoldProgressProvider(
private val unfoldProgressProvider: UnfoldTransitionProgressProvider private val unfoldProgressProvider: UnfoldTransitionProgressProvider
) : ShellUnfoldProgressProvider { ) : ShellUnfoldProgressProvider {

View File

@@ -43,21 +43,27 @@ class UnfoldTransitionModule {
fun provideUnfoldTransitionProgressProvider( fun provideUnfoldTransitionProgressProvider(
context: Context, context: Context,
config: UnfoldTransitionConfig, config: UnfoldTransitionConfig,
screenStatusProvider: LifecycleScreenStatusProvider, screenStatusProvider: Lazy<LifecycleScreenStatusProvider>,
deviceStateManager: DeviceStateManager, deviceStateManager: DeviceStateManager,
sensorManager: SensorManager, sensorManager: SensorManager,
@Main executor: Executor, @Main executor: Executor,
@Main handler: Handler @Main handler: Handler
): UnfoldTransitionProgressProvider = ) =
createUnfoldTransitionProgressProvider( if (config.isEnabled) {
context, Optional.of(
config, createUnfoldTransitionProgressProvider(
screenStatusProvider, context,
deviceStateManager, config,
sensorManager, screenStatusProvider.get(),
handler, deviceStateManager,
executor sensorManager,
) handler,
executor
)
)
} else {
Optional.empty()
}
@Provides @Provides
@Singleton @Singleton
@@ -69,33 +75,37 @@ class UnfoldTransitionModule {
fun provideNaturalRotationProgressProvider( fun provideNaturalRotationProgressProvider(
context: Context, context: Context,
windowManager: IWindowManager, windowManager: IWindowManager,
unfoldTransitionProgressProvider: UnfoldTransitionProgressProvider unfoldTransitionProgressProvider: Optional<UnfoldTransitionProgressProvider>
): NaturalRotationUnfoldProgressProvider = ) =
NaturalRotationUnfoldProgressProvider( unfoldTransitionProgressProvider.map {
context, provider -> NaturalRotationUnfoldProgressProvider(
windowManager, context,
unfoldTransitionProgressProvider windowManager,
) provider
)
}
@Provides @Provides
@Named(UNFOLD_STATUS_BAR) @Named(UNFOLD_STATUS_BAR)
@Singleton @Singleton
fun provideStatusBarScopedTransitionProvider( fun provideStatusBarScopedTransitionProvider(
source: NaturalRotationUnfoldProgressProvider source: Optional<NaturalRotationUnfoldProgressProvider>
): ScopedUnfoldTransitionProgressProvider = ) =
ScopedUnfoldTransitionProgressProvider(source) source.map {
provider -> ScopedUnfoldTransitionProgressProvider(provider)
}
@Provides @Provides
@Singleton @Singleton
fun provideShellProgressProvider( fun provideShellProgressProvider(
config: UnfoldTransitionConfig, config: UnfoldTransitionConfig,
provider: Lazy<UnfoldTransitionProgressProvider> provider: Optional<UnfoldTransitionProgressProvider>
): Optional<ShellUnfoldProgressProvider> = ): Optional<ShellUnfoldProgressProvider> =
if (config.isEnabled) { if (config.isEnabled && provider.isPresent()) {
Optional.ofNullable(ShellUnfoldProgressProvider(provider.get())) Optional.of(UnfoldProgressProvider(provider.get()))
} else { } else {
Optional.empty() Optional.empty()
} }
} }
const val UNFOLD_STATUS_BAR = "unfold_status_bar" const val UNFOLD_STATUS_BAR = "unfold_status_bar"

View File

@@ -16,12 +16,11 @@
package com.android.systemui.unfold package com.android.systemui.unfold
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
import com.android.systemui.util.WallpaperController import com.android.systemui.util.WallpaperController
import javax.inject.Inject import javax.inject.Inject
@SysUISingleton @SysUIUnfoldScope
class UnfoldTransitionWallpaperController @Inject constructor( class UnfoldTransitionWallpaperController @Inject constructor(
private val unfoldTransitionProgressProvider: UnfoldTransitionProgressProvider, private val unfoldTransitionProgressProvider: UnfoldTransitionProgressProvider,
private val wallpaperController: WallpaperController private val wallpaperController: WallpaperController

View File

@@ -16,7 +16,14 @@
package com.android.systemui.util.kotlin package com.android.systemui.util.kotlin
import java.util.Optional
/** /**
* If [value] is not null, then returns block(value). Otherwise returns null. * If [value] is not null, then returns block(value). Otherwise returns null.
*/ */
inline fun <T : Any, R> transform(value: T?, block: (T) -> R): R? = value?.let(block) inline fun <T : Any, R> transform(value: T?, block: (T) -> R): R? = value?.let(block)
/**
* Assists type-checking to unpack a Java Optional into T?
*/
inline fun <T> Optional<T>.getOrNull(): T? = orElse(null)

View File

@@ -57,17 +57,21 @@ import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation; import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation;
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.DeviceConfigProxyFake; import com.android.systemui.util.DeviceConfigProxyFake;
import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock; import com.android.systemui.util.time.FakeSystemClock;
import java.util.Optional;
import java.util.function.Function;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
@@ -90,7 +94,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
private @Mock NavigationModeController mNavigationModeController; private @Mock NavigationModeController mNavigationModeController;
private @Mock KeyguardDisplayManager mKeyguardDisplayManager; private @Mock KeyguardDisplayManager mKeyguardDisplayManager;
private @Mock DozeParameters mDozeParameters; private @Mock DozeParameters mDozeParameters;
private @Mock UnfoldTransitionConfig mUnfoldTransitionConfig; private @Mock Optional<SysUIUnfoldComponent> mSysUIUnfoldComponent;
private @Mock Optional<UnfoldLightRevealOverlayAnimation> mUnfoldAnimationOptional;
private @Mock UnfoldLightRevealOverlayAnimation mUnfoldAnimation; private @Mock UnfoldLightRevealOverlayAnimation mUnfoldAnimation;
private @Mock SysuiStatusBarStateController mStatusBarStateController; private @Mock SysuiStatusBarStateController mStatusBarStateController;
private @Mock KeyguardStateController mKeyguardStateController; private @Mock KeyguardStateController mKeyguardStateController;
@@ -110,6 +115,12 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
when(mLockPatternUtils.getDevicePolicyManager()).thenReturn(mDevicePolicyManager); when(mLockPatternUtils.getDevicePolicyManager()).thenReturn(mDevicePolicyManager);
when(mPowerManager.newWakeLock(anyInt(), any())).thenReturn(mock(WakeLock.class)); when(mPowerManager.newWakeLock(anyInt(), any())).thenReturn(mock(WakeLock.class));
when(mSysUIUnfoldComponent.map(
ArgumentMatchers.<Function<SysUIUnfoldComponent, UnfoldLightRevealOverlayAnimation>>
any()))
.thenReturn(mUnfoldAnimationOptional);
when(mUnfoldAnimationOptional.isPresent()).thenReturn(true);
when(mUnfoldAnimationOptional.get()).thenReturn(mUnfoldAnimation);
mViewMediator = new KeyguardViewMediator( mViewMediator = new KeyguardViewMediator(
mContext, mContext,
@@ -128,8 +139,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
mNavigationModeController, mNavigationModeController,
mKeyguardDisplayManager, mKeyguardDisplayManager,
mDozeParameters, mDozeParameters,
mUnfoldTransitionConfig, mSysUIUnfoldComponent,
() -> mUnfoldAnimation,
mStatusBarStateController, mStatusBarStateController,
mKeyguardStateController, mKeyguardStateController,
() -> mKeyguardUnlockAnimationController, () -> mKeyguardUnlockAnimationController,
@@ -161,8 +171,6 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
@TestableLooper.RunWithLooper(setAsMainLooper = true) @TestableLooper.RunWithLooper(setAsMainLooper = true)
public void testUnfoldTransitionEnabledDrawnTasksReady_onScreenTurningOn_callsDrawnCallback() public void testUnfoldTransitionEnabledDrawnTasksReady_onScreenTurningOn_callsDrawnCallback()
throws RemoteException { throws RemoteException {
when(mUnfoldTransitionConfig.isEnabled()).thenReturn(true);
mViewMediator.onScreenTurningOn(mKeyguardDrawnCallback); mViewMediator.onScreenTurningOn(mKeyguardDrawnCallback);
TestableLooper.get(this).processAllMessages(); TestableLooper.get(this).processAllMessages();
onUnfoldOverlayReady(); onUnfoldOverlayReady();
@@ -175,7 +183,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
@TestableLooper.RunWithLooper(setAsMainLooper = true) @TestableLooper.RunWithLooper(setAsMainLooper = true)
public void testUnfoldTransitionDisabledDrawnTasksReady_onScreenTurningOn_callsDrawnCallback() public void testUnfoldTransitionDisabledDrawnTasksReady_onScreenTurningOn_callsDrawnCallback()
throws RemoteException { throws RemoteException {
when(mUnfoldTransitionConfig.isEnabled()).thenReturn(false); when(mUnfoldAnimationOptional.isPresent()).thenReturn(false);
mViewMediator.onScreenTurningOn(mKeyguardDrawnCallback); mViewMediator.onScreenTurningOn(mKeyguardDrawnCallback);
TestableLooper.get(this).processAllMessages(); TestableLooper.get(this).processAllMessages();

View File

@@ -125,6 +125,7 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.settings.SecureSettings; import com.android.systemui.util.settings.SecureSettings;
import com.android.systemui.util.time.FakeSystemClock; import com.android.systemui.util.time.FakeSystemClock;
@@ -140,6 +141,7 @@ import org.mockito.MockitoAnnotations;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import java.util.List; import java.util.List;
import java.util.Optional;
@SmallTest @SmallTest
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@@ -306,7 +308,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
private NotificationsQSContainerController mNotificationsQSContainerController; private NotificationsQSContainerController mNotificationsQSContainerController;
@Mock @Mock
private FeatureFlags mFeatureFlags; private FeatureFlags mFeatureFlags;
private Optional<SysUIUnfoldComponent> mSysUIUnfoldComponent;
private SysuiStatusBarStateController mStatusBarStateController; private SysuiStatusBarStateController mStatusBarStateController;
private NotificationPanelViewController mNotificationPanelViewController; private NotificationPanelViewController mNotificationPanelViewController;
private View.AccessibilityDelegate mAccessibiltyDelegate; private View.AccessibilityDelegate mAccessibiltyDelegate;
@@ -450,6 +452,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
mLockscreenGestureLogger, mLockscreenGestureLogger,
new PanelExpansionStateManager(), new PanelExpansionStateManager(),
mNotificationRemoteInputManager, mNotificationRemoteInputManager,
mSysUIUnfoldComponent,
mControlsComponent, mControlsComponent,
mFeatureFlags); mFeatureFlags);
mNotificationPanelViewController.initDependencies( mNotificationPanelViewController.initDependencies(

View File

@@ -26,6 +26,7 @@ import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.unfold.SysUIUnfoldComponent
import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.config.UnfoldTransitionConfig
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider
import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.any
@@ -39,6 +40,7 @@ import org.mockito.Mockito.mock
import org.mockito.Mockito.`when` import org.mockito.Mockito.`when`
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
import java.util.Optional
@SmallTest @SmallTest
class PhoneStatusBarViewControllerTest : SysuiTestCase() { class PhoneStatusBarViewControllerTest : SysuiTestCase() {
@@ -51,10 +53,11 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() {
private lateinit var panelView: ViewGroup private lateinit var panelView: ViewGroup
@Mock @Mock
private lateinit var scrimController: ScrimController private lateinit var scrimController: ScrimController
@Mock @Mock
private lateinit var moveFromCenterAnimation: StatusBarMoveFromCenterAnimationController private lateinit var moveFromCenterAnimation: StatusBarMoveFromCenterAnimationController
@Mock @Mock
private lateinit var sysuiUnfoldComponent: SysUIUnfoldComponent
@Mock
private lateinit var progressProvider: ScopedUnfoldTransitionProgressProvider private lateinit var progressProvider: ScopedUnfoldTransitionProgressProvider
private lateinit var view: PhoneStatusBarView private lateinit var view: PhoneStatusBarView
@@ -66,7 +69,8 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() {
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.initMocks(this)
`when`(panelViewController.view).thenReturn(panelView) `when`(panelViewController.view).thenReturn(panelView)
`when`(sysuiUnfoldComponent.getStatusBarMoveFromCenterAnimationController())
.thenReturn(moveFromCenterAnimation)
// create the view on main thread as it requires main looper // create the view on main thread as it requires main looper
InstrumentationRegistry.getInstrumentation().runOnMainSync { InstrumentationRegistry.getInstrumentation().runOnMainSync {
val parent = FrameLayout(mContext) // add parent to keep layout params val parent = FrameLayout(mContext) // add parent to keep layout params
@@ -112,9 +116,8 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() {
private fun createController(view: PhoneStatusBarView): PhoneStatusBarViewController { private fun createController(view: PhoneStatusBarView): PhoneStatusBarViewController {
return PhoneStatusBarViewController.Factory( return PhoneStatusBarViewController.Factory(
{ progressProvider }, Optional.of(sysuiUnfoldComponent),
{ moveFromCenterAnimation }, Optional.of(progressProvider)
unfoldConfig
).create(view, touchEventHandler) ).create(view, touchEventHandler)
} }

View File

@@ -143,10 +143,6 @@ import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.statusbar.window.StatusBarWindowController;
import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService;
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation;
import com.android.systemui.unfold.UnfoldTransitionWallpaperController;
import com.android.systemui.unfold.config.UnfoldTransitionConfig;
import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
import com.android.systemui.util.WallpaperController; import com.android.systemui.util.WallpaperController;
import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.concurrency.MessageRouterImpl; import com.android.systemui.util.concurrency.MessageRouterImpl;
@@ -261,10 +257,6 @@ public class StatusBarTest extends SysuiTestCase {
@Mock private DemoModeController mDemoModeController; @Mock private DemoModeController mDemoModeController;
@Mock private Lazy<NotificationShadeDepthController> mNotificationShadeDepthControllerLazy; @Mock private Lazy<NotificationShadeDepthController> mNotificationShadeDepthControllerLazy;
@Mock private BrightnessSliderController.Factory mBrightnessSliderFactory; @Mock private BrightnessSliderController.Factory mBrightnessSliderFactory;
@Mock private UnfoldTransitionConfig mUnfoldTransitionConfig;
@Mock private Lazy<UnfoldLightRevealOverlayAnimation> mUnfoldLightRevealOverlayAnimationLazy;
@Mock private Lazy<NaturalRotationUnfoldProgressProvider> mNaturalRotationProgressProvider;
@Mock private Lazy<UnfoldTransitionWallpaperController> mUnfoldWallpaperController;
@Mock private WallpaperController mWallpaperController; @Mock private WallpaperController mWallpaperController;
@Mock private OngoingCallController mOngoingCallController; @Mock private OngoingCallController mOngoingCallController;
@Mock private SystemStatusAnimationScheduler mAnimationScheduler; @Mock private SystemStatusAnimationScheduler mAnimationScheduler;
@@ -443,10 +435,6 @@ public class StatusBarTest extends SysuiTestCase {
mStatusBarTouchableRegionManager, mStatusBarTouchableRegionManager,
mNotificationIconAreaController, mNotificationIconAreaController,
mBrightnessSliderFactory, mBrightnessSliderFactory,
mUnfoldTransitionConfig,
mUnfoldLightRevealOverlayAnimationLazy,
mUnfoldWallpaperController,
mNaturalRotationProgressProvider,
mWallpaperController, mWallpaperController,
mOngoingCallController, mOngoingCallController,
mAnimationScheduler, mAnimationScheduler,