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

Commit d538d28e authored by Justin Weir's avatar Justin Weir
Browse files

Delete ShadeStateEvents

Replaces the last remaining ShadeStateEvents method with a new flow in
ShadeAnimationInteractor that handles the data formerly owned by NPVC.
Removes ShadeEventsModule and moves its only remaining binding to
ShadeModule. Also removed some dead code that I encountered.

Test: updated and ran affected tests
Test: added new tests
Test: manually ran through basic shade CUJs
Fixes: 300245110
Flag: ACONFIG com.android.systemui.scene_container DEVELOPMENT
Change-Id: I92315a282fe2711c63d36e80775edef91a719301
parent f957aaba
Loading
Loading
Loading
Loading
+9 −13
Original line number Diff line number Diff line
@@ -61,7 +61,6 @@ import android.graphics.Rect;
import android.graphics.Region;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
import android.os.Trace;
import android.os.UserManager;
import android.os.VibrationEffect;
@@ -164,6 +163,7 @@ import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.power.shared.model.WakefulnessModel;
import com.android.systemui.res.R;
import com.android.systemui.shade.data.repository.ShadeRepository;
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor;
import com.android.systemui.shade.transition.ShadeTransitionController;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.CommandQueue;
@@ -352,6 +352,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
    private final NotificationShadeWindowController mNotificationShadeWindowController;
    private final ShadeExpansionStateManager mShadeExpansionStateManager;
    private final ShadeRepository mShadeRepository;
    private final ShadeAnimationInteractor mShadeAnimationInteractor;
    private final FalsingTapListener mFalsingTapListener = this::falsingAdditionalTapRequired;
    private final AccessibilityDelegate mAccessibilityDelegate = new ShadeAccessibilityDelegate();
    private final NotificationGutsManager mGutsManager;
@@ -362,7 +363,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump

    private long mDownTime;
    private boolean mTouchSlopExceededBeforeDown;
    private boolean mIsLaunchAnimationRunning;
    private float mOverExpansion;
    private CentralSurfaces mCentralSurfaces;
    private HeadsUpManager mHeadsUpManager;
@@ -707,7 +707,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
            CommandQueue commandQueue,
            VibratorHelper vibratorHelper,
            LatencyTracker latencyTracker,
            PowerManager powerManager,
            AccessibilityManager accessibilityManager,
            @DisplayId int displayId,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -776,6 +775,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
            ActivityStarter activityStarter,
            SharedNotificationContainerInteractor sharedNotificationContainerInteractor,
            ActiveNotificationsInteractor activeNotificationsInteractor,
            ShadeAnimationInteractor shadeAnimationInteractor,
            KeyguardViewConfigurator keyguardViewConfigurator,
            KeyguardFaceAuthInteractor keyguardFaceAuthInteractor,
            SplitShadeStateController splitShadeStateController,
@@ -794,6 +794,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        mLockscreenGestureLogger = lockscreenGestureLogger;
        mShadeExpansionStateManager = shadeExpansionStateManager;
        mShadeRepository = shadeRepository;
        mShadeAnimationInteractor = shadeAnimationInteractor;
        mShadeLog = shadeLogger;
        mGutsManager = gutsManager;
        mDreamingToLockscreenTransitionViewModel = dreamingToLockscreenTransitionViewModel;
@@ -2923,13 +2924,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        }
    }

    @Override
    public void setIsLaunchAnimationRunning(boolean running) {
        boolean wasRunning = mIsLaunchAnimationRunning;
        mIsLaunchAnimationRunning = running;
        if (wasRunning != mIsLaunchAnimationRunning) {
            mShadeExpansionStateManager.notifyLaunchingActivityChanged(running);
        }
    private boolean isLaunchingActivity() {
        return mShadeAnimationInteractor.isLaunchingActivity().getValue();
    }

    @VisibleForTesting
@@ -3117,7 +3113,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump

    @Override
    public boolean shouldHideStatusBarIconsWhenExpanded() {
        if (mIsLaunchAnimationRunning) {
        if (isLaunchingActivity()) {
            return mHideIconsDuringLaunchAnimation;
        }
        if (mHeadsUpAppearanceController != null
@@ -3383,7 +3379,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump

        ipw.print("mDownTime="); ipw.println(mDownTime);
        ipw.print("mTouchSlopExceededBeforeDown="); ipw.println(mTouchSlopExceededBeforeDown);
        ipw.print("mIsLaunchAnimationRunning="); ipw.println(mIsLaunchAnimationRunning);
        ipw.print("mIsLaunchAnimationRunning="); ipw.println(isLaunchingActivity());
        ipw.print("mOverExpansion="); ipw.println(mOverExpansion);
        ipw.print("mExpandedHeight="); ipw.println(mExpandedHeight);
        ipw.print("isTracking()="); ipw.println(isTracking());
@@ -3999,7 +3995,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump

    @Override
    public boolean isCollapsing() {
        return isClosing() || mIsLaunchAnimationRunning;
        return isClosing() || isLaunchingActivity();
    }

    public boolean isTracking() {
+6 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.systemui.shade

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.shade.data.repository.ShadeRepositoryImpl
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorEmptyImpl
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -39,6 +41,10 @@ abstract class ShadeEmptyImplModule {
    @SysUISingleton
    abstract fun bindsShadeInteractor(si: ShadeInteractorEmptyImpl): ShadeInteractor

    @Binds
    @SysUISingleton
    abstract fun bindsShadeRepository(impl: ShadeRepositoryImpl): ShadeRepository

    @Binds
    @SysUISingleton
    abstract fun bindsShadeAnimationInteractor(
+1 −17
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.os.Trace.TRACE_TAG_APP as TRACE_TAG
import android.util.Log
import androidx.annotation.FloatRange
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.shade.ShadeStateEvents.ShadeStateEventsListener
import com.android.systemui.util.Compile
import java.util.concurrent.CopyOnWriteArrayList
import javax.inject.Inject
@@ -33,11 +32,10 @@ import javax.inject.Inject
 * TODO(b/200063118): Make this class the one source of truth for the state of panel expansion.
 */
@SysUISingleton
class ShadeExpansionStateManager @Inject constructor() : ShadeStateEvents {
class ShadeExpansionStateManager @Inject constructor() {

    private val expansionListeners = CopyOnWriteArrayList<ShadeExpansionListener>()
    private val stateListeners = CopyOnWriteArrayList<ShadeStateListener>()
    private val shadeStateEventsListeners = CopyOnWriteArrayList<ShadeStateEventsListener>()

    @PanelState private var state: Int = STATE_CLOSED
    @FloatRange(from = 0.0, to = 1.0) private var fraction: Float = 0f
@@ -66,14 +64,6 @@ class ShadeExpansionStateManager @Inject constructor() : ShadeStateEvents {
        stateListeners.add(listener)
    }

    override fun addShadeStateEventsListener(listener: ShadeStateEventsListener) {
        shadeStateEventsListeners.addIfAbsent(listener)
    }

    override fun removeShadeStateEventsListener(listener: ShadeStateEventsListener) {
        shadeStateEventsListeners.remove(listener)
    }

    /** Returns true if the panel is currently closed and false otherwise. */
    fun isClosed(): Boolean = state == STATE_CLOSED

@@ -157,12 +147,6 @@ class ShadeExpansionStateManager @Inject constructor() : ShadeStateEvents {
        stateListeners.forEach { it.onPanelStateChanged(state) }
    }

    fun notifyLaunchingActivityChanged(isLaunchingActivity: Boolean) {
        for (cb in shadeStateEventsListeners) {
            cb.onLaunchingActivityChanged(isLaunchingActivity)
        }
    }

    private fun debugLog(msg: String) {
        if (!DEBUG) return
        Log.v(TAG, msg)
+6 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.systemui.shade

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.shared.flag.SceneContainerFlags
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.shade.data.repository.ShadeRepositoryImpl
import com.android.systemui.shade.domain.interactor.BaseShadeInteractor
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorLegacyImpl
@@ -64,6 +66,10 @@ abstract class ShadeModule {
        }
    }

    @Binds
    @SysUISingleton
    abstract fun bindsShadeRepository(impl: ShadeRepositoryImpl): ShadeRepository

    @Binds
    @SysUISingleton
    abstract fun bindsShadeInteractor(si: ShadeInteractorImpl): ShadeInteractor
+0 −35
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 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.shade

/** Provides certain notification panel events. */
interface ShadeStateEvents {

    /** Registers callbacks to be invoked when notification panel events occur. */
    fun addShadeStateEventsListener(listener: ShadeStateEventsListener)

    /** Unregisters callbacks previously registered via [addShadeStateEventsListener] */
    fun removeShadeStateEventsListener(listener: ShadeStateEventsListener)

    /** Callbacks for certain notification panel events. */
    interface ShadeStateEventsListener {
        /**
         * Invoked when the notification panel starts or stops launching an [android.app.Activity].
         */
        fun onLaunchingActivityChanged(isLaunchingActivity: Boolean) {}
    }
}
Loading