Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86a624c0 authored by András Kurucz's avatar András Kurucz
Browse files

[Flexiglass] Wire in LockScreenShadeTransitionController

Wire in the parts of LockScreenShadeTransitionController, that are
updating the Notification's height as the user drags on it on the LS.

Bug: 359957196
Test: Drag down on a Notification on the LS -> Check if its actual
height is changing
Flag: com.android.systemui.scene_container

Change-Id: I3ba88d2bd9d8af09f8445bfda315fc3c9189eb5b
parent dac6f5f7
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.scene.ui.view.WindowRootView;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.statusbar.DragDownHelper;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationLockscreenUserManager.UserChangedListener;
@@ -80,7 +81,6 @@ import com.android.systemui.statusbar.notification.collection.provider.Notificat
import com.android.systemui.statusbar.notification.collection.provider.VisibilityLocationProviderDelegator;
import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager;
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager;
import com.android.systemui.statusbar.notification.headsup.HeadsUpTouchHelper;
import com.android.systemui.statusbar.notification.init.NotificationsController;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
@@ -149,6 +149,7 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
    @Mock private NotifCollection mNotifCollection;
    @Mock private UiEventLogger mUiEventLogger;
    @Mock private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    @Mock private DragDownHelper mDragDownHelper;
    @Mock private VisibilityLocationProviderDelegator mVisibilityLocationProviderDelegator;
    @Mock private ShadeController mShadeController;
    @Mock private Provider<WindowRootView> mWindowRootView;
@@ -777,6 +778,7 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
        when(mNotificationStackScrollLayout.getContext()).thenReturn(getContext());
        when(mNotificationStackScrollLayout.getHeadsUpCallback()).thenReturn(mHeadsUpCallback);
        when(mHeadsUpCallback.getContext()).thenReturn(getContext());
        when(mLockscreenShadeTransitionController.getTouchHelper()).thenReturn(mDragDownHelper);
        mController = new NotificationStackScrollLayoutController(
                mNotificationStackScrollLayout,
                true,
+6 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import com.android.systemui.plugins.qs.QS
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.ui.adapter.QSSceneAdapter
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -412,7 +413,11 @@ constructor(
        set(value) {
            if (field != value || forceApplyAmount) {
                field = value
                if (!nsslController.isInLockedDownShade() || field == 0f || forceApplyAmount) {
                if (SceneContainerFlag.isEnabled) {
                    // TODO(b/359957196) do we need to do anything here?
                } else if (
                    !nsslController.isInLockedDownShade() || field == 0f || forceApplyAmount
                ) {
                    fractionToShade =
                        MathUtils.saturate(dragDownAmount / notificationShelfTransitionDistance)
                    shadeRepository.setLockscreenShadeExpansion(fractionToShade)
+25 −2
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import com.android.systemui.shade.ShadeController;
import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.shade.ShadeViewController;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.DragDownHelper;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationLockscreenUserManager.UserChangedListener;
@@ -2083,6 +2084,11 @@ public class NotificationStackScrollLayoutController implements Dumpable {
                    && !mView.isExpandingNotification() && !skipForDragging) {
                scrollWantsIt = mView.onInterceptTouchEventScroll(ev);
            }
            boolean lockscreenExpandWantsIt = false;
            if (shouldLockscreenExpandHandleTouch()) {
                lockscreenExpandWantsIt =
                        getLockscreenExpandTouchHelper().onInterceptTouchEvent(ev);
            }
            boolean hunWantsIt = false;
            if (shouldHeadsUpHandleTouch()) {
                hunWantsIt = mHeadsUpTouchHelper.onInterceptTouchEvent(ev);
@@ -2117,7 +2123,8 @@ public class NotificationStackScrollLayoutController implements Dumpable {
                    && ev.getActionMasked() != MotionEvent.ACTION_DOWN) {
                mJankMonitor.begin(mView, CUJ_NOTIFICATION_SHADE_SCROLL_FLING);
            }
            return swipeWantsIt || scrollWantsIt || expandWantsIt || longPressWantsIt || hunWantsIt;
            return swipeWantsIt || scrollWantsIt || expandWantsIt || longPressWantsIt || hunWantsIt
                    || lockscreenExpandWantsIt;
        }

        @Override
@@ -2168,6 +2175,11 @@ public class NotificationStackScrollLayoutController implements Dumpable {
                    && !expandingNotification && !mView.getDisallowScrollingInThisMotion()) {
                scrollerWantsIt = mView.onScrollTouch(ev);
            }
            boolean lockscreenExpandWantsIt = false;
            if (shouldLockscreenExpandHandleTouch()) {
                lockscreenExpandWantsIt =
                        getLockscreenExpandTouchHelper().onTouchEvent(ev);
            }
            boolean hunWantsIt = false;
            if (shouldHeadsUpHandleTouch()) {
                hunWantsIt = mHeadsUpTouchHelper.onTouchEvent(ev);
@@ -2198,9 +2210,15 @@ public class NotificationStackScrollLayoutController implements Dumpable {
                traceJankOnTouchEvent(ev.getActionMasked(), scrollerWantsIt);
            }
            return horizontalSwipeWantsIt || scrollerWantsIt || expandWantsIt || longPressWantsIt
                    || hunWantsIt;
                    || hunWantsIt || lockscreenExpandWantsIt;
        }

        @NonNull
        private DragDownHelper getLockscreenExpandTouchHelper() {
            return mLockscreenShadeTransitionController.getTouchHelper();
        }


        private void traceJankOnTouchEvent(int action, boolean scrollerWantsIt) {
            if (mJankMonitor == null) {
                Log.w(TAG, "traceJankOnTouchEvent, mJankMonitor is null");
@@ -2226,6 +2244,11 @@ public class NotificationStackScrollLayoutController implements Dumpable {
            }
        }

        private boolean shouldLockscreenExpandHandleTouch() {
            return SceneContainerFlag.isEnabled() && mLongPressedView == null
                    && !mSwipeHelper.isSwiping();
        }

        private boolean shouldHeadsUpHandleTouch() {
            return SceneContainerFlag.isEnabled() && mLongPressedView == null
                    && !mSwipeHelper.isSwiping();