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

Commit 11866a42 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Hide activities when AOD comes in" into pi-dev

parents 1c73370d 47a65c79
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -322,12 +322,14 @@ interface IActivityManager {
    /**
     * Informs ActivityManagerService that the keyguard is showing.
     *
     * @param showing True if the keyguard is showing, false otherwise.
     * @param showingKeyguard True if the keyguard is showing, false otherwise.
     * @param showingAod True if AOD is showing, false otherwise.
     * @param secondaryDisplayShowing The displayId of the secondary display on which the keyguard
     *        is showing, or INVALID_DISPLAY if there is no such display. Only meaningful if
     *        showing is true.
     */
    void setLockScreenShown(boolean showing, int secondaryDisplayShowing);
    void setLockScreenShown(boolean showingKeyguard, boolean showingAod,
            int secondaryDisplayShowing);
    boolean finishActivityAffinity(in IBinder token);
    // This is not public because you need to be very careful in how you
    // manage your activity to make sure it is always the uid you expect.
+27 −16
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR

import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.StatusBarManager;
import android.app.trust.TrustManager;
@@ -235,6 +234,9 @@ public class KeyguardViewMediator extends SystemUI {
    // answer whether the input should be restricted)
    private boolean mShowing;

    // AOD is enabled and status bar is in AOD state.
    private boolean mAodShowing;

    // display id of the secondary display on which we have put a keyguard window
    private int mSecondaryDisplayShowing = INVALID_DISPLAY;

@@ -664,7 +666,7 @@ public class KeyguardViewMediator extends SystemUI {
        @Override
        public void onSecondaryDisplayShowingChanged(int displayId) {
            synchronized (KeyguardViewMediator.this) {
                setShowingLocked(mShowing, displayId, false);
                setShowingLocked(mShowing, mAodShowing, displayId, false);
            }
        }
    };
@@ -707,10 +709,10 @@ public class KeyguardViewMediator extends SystemUI {
            setShowingLocked(!shouldWaitForProvisioning()
                    && !mLockPatternUtils.isLockScreenDisabled(
                            KeyguardUpdateMonitor.getCurrentUser()),
                    mSecondaryDisplayShowing, true /* forceCallbacks */);
                    mAodShowing, mSecondaryDisplayShowing, true /* forceCallbacks */);
        } else {
            // The system's keyguard is disabled or missing.
            setShowingLocked(false, mSecondaryDisplayShowing, true);
            setShowingLocked(false, mAodShowing, mSecondaryDisplayShowing, true);
        }

        mStatusBarKeyguardViewManager =
@@ -1311,7 +1313,7 @@ public class KeyguardViewMediator extends SystemUI {
            if (mLockPatternUtils.checkVoldPassword(KeyguardUpdateMonitor.getCurrentUser())) {
                if (DEBUG) Log.d(TAG, "Not showing lock screen since just decrypted");
                // Without this, settings is not enabled until the lock screen first appears
                setShowingLocked(false);
                setShowingLocked(false, mAodShowing);
                hideLocked();
                return;
            }
@@ -1713,10 +1715,12 @@ public class KeyguardViewMediator extends SystemUI {
        playSound(mTrustedSoundId);
    }

    private void updateActivityLockScreenState(boolean showing, int secondaryDisplayShowing) {
    private void updateActivityLockScreenState(boolean showing, boolean aodShowing,
            int secondaryDisplayShowing) {
        mUiOffloadThread.submit(() -> {
            try {
                ActivityManager.getService().setLockScreenShown(showing, secondaryDisplayShowing);
                ActivityManager.getService().setLockScreenShown(showing, aodShowing,
                        secondaryDisplayShowing);
            } catch (RemoteException e) {
            }
        });
@@ -1740,7 +1744,7 @@ public class KeyguardViewMediator extends SystemUI {
                if (DEBUG) Log.d(TAG, "handleShow");
            }

            setShowingLocked(true);
            setShowingLocked(true, mAodShowing);
            mStatusBarKeyguardViewManager.show(options);
            mHiding = false;
            mWakeAndUnlocking = false;
@@ -1849,7 +1853,7 @@ public class KeyguardViewMediator extends SystemUI {
            }

            mWakeAndUnlocking = false;
            setShowingLocked(false);
            setShowingLocked(false, mAodShowing);
            mDismissCallbackRegistry.notifyDismissSucceeded();
            mStatusBarKeyguardViewManager.hide(startTime, fadeoutDuration);
            resetKeyguardDonePendingLocked();
@@ -1909,7 +1913,7 @@ public class KeyguardViewMediator extends SystemUI {
        Trace.beginSection("KeyguardViewMediator#handleVerifyUnlock");
        synchronized (KeyguardViewMediator.this) {
            if (DEBUG) Log.d(TAG, "handleVerifyUnlock");
            setShowingLocked(true);
            setShowingLocked(true, mAodShowing);
            mStatusBarKeyguardViewManager.dismissAndCollapse();
        }
        Trace.endSection();
@@ -2064,6 +2068,10 @@ public class KeyguardViewMediator extends SystemUI {
        pw.print("  mDrawnCallback: "); pw.println(mDrawnCallback);
    }

    public void setAodShowing(boolean aodShowing) {
        setShowingLocked(mShowing, aodShowing);
    }

    private static class StartKeyguardExitAnimParams {

        long startTime;
@@ -2075,20 +2083,23 @@ public class KeyguardViewMediator extends SystemUI {
        }
    }

    private void setShowingLocked(boolean showing) {
        setShowingLocked(showing, mSecondaryDisplayShowing, false /* forceCallbacks */);
    private void setShowingLocked(boolean showing, boolean aodShowing) {
        setShowingLocked(showing, aodShowing, mSecondaryDisplayShowing,
                false /* forceCallbacks */);
    }

    private void setShowingLocked(
            boolean showing, int secondaryDisplayShowing, boolean forceCallbacks) {
        final boolean notifyDefaultDisplayCallbacks = showing != mShowing || forceCallbacks;
    private void setShowingLocked(boolean showing, boolean aodShowing, int secondaryDisplayShowing,
            boolean forceCallbacks) {
        final boolean notifyDefaultDisplayCallbacks = showing != mShowing
                || aodShowing != mAodShowing || forceCallbacks;
        if (notifyDefaultDisplayCallbacks || secondaryDisplayShowing != mSecondaryDisplayShowing) {
            mShowing = showing;
            mAodShowing = aodShowing;
            mSecondaryDisplayShowing = secondaryDisplayShowing;
            if (notifyDefaultDisplayCallbacks) {
                notifyDefaultDisplayCallbacks(showing);
            }
            updateActivityLockScreenState(showing, secondaryDisplayShowing);
            updateActivityLockScreenState(showing, aodShowing, secondaryDisplayShowing);
        }
    }

+4 −0
Original line number Diff line number Diff line
@@ -408,6 +408,7 @@ public class StatusBar extends SystemUI implements DemoMode,
    protected NotificationEntryManager mEntryManager;
    protected NotificationViewHierarchyManager mViewHierarchyManager;
    protected AppOpsListener mAppOpsListener;
    protected KeyguardViewMediator mKeyguardViewMediator;
    private ZenModeController mZenController;

    /**
@@ -632,6 +633,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        mAppOpsListener = Dependency.get(AppOpsListener.class);
        mAppOpsListener.setUpWithPresenter(this, mEntryManager);
        mZenController = Dependency.get(ZenModeController.class);
        mKeyguardViewMediator = getComponent(KeyguardViewMediator.class);

        mColorExtractor = Dependency.get(SysuiColorExtractor.class);
        mColorExtractor.addOnColorsChangedListener(this);
@@ -4628,6 +4630,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        boolean dozing = mDozingRequested && mState == StatusBarState.KEYGUARD
                || mFingerprintUnlockController.getMode()
                        == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING;
        final boolean alwaysOn = DozeParameters.getInstance(mContext).getAlwaysOn();
        // When in wake-and-unlock we may not have received a change to mState
        // but we still should not be dozing, manually set to false.
        if (mFingerprintUnlockController.getMode() ==
@@ -4635,6 +4638,7 @@ public class StatusBar extends SystemUI implements DemoMode,
            dozing = false;
        }
        mDozing = dozing;
        mKeyguardViewMediator.setAodShowing(mDozing && alwaysOn);
        mStatusBarWindowManager.setDozing(mDozing);
        mStatusBarKeyguardViewManager.setDozing(mDozing);
        if (mAmbientIndicationContainer instanceof DozeReceiver) {
+3 −1
Original line number Diff line number Diff line
@@ -143,7 +143,9 @@ public class StatusBarWindowManager implements RemoteInputController.Callback, D

        final boolean scrimsOccludingWallpaper =
                state.scrimsVisibility == ScrimController.VISIBILITY_FULLY_OPAQUE;
        if (state.keyguardShowing && !state.backdropShowing && !scrimsOccludingWallpaper) {
        final boolean keyguardOrAod = state.keyguardShowing
                || (state.dozing && mDozeParameters.getAlwaysOn());
        if (keyguardOrAod && !state.backdropShowing && !scrimsOccludingWallpaper) {
            mLpChanged.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
        } else {
            mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
+5 −2
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import com.android.systemui.ForegroundServiceController;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.statusbar.ActivatableNotificationView;
@@ -132,6 +133,7 @@ public class StatusBarTest extends SysuiTestCase {
    @Mock private NotificationViewHierarchyManager mViewHierarchyManager;
    @Mock private VisualStabilityManager mVisualStabilityManager;
    @Mock private NotificationListener mNotificationListener;
    @Mock private KeyguardViewMediator mKeyguardViewMediator;

    private TestableStatusBar mStatusBar;
    private FakeMetricsLogger mMetricsLogger;
@@ -200,7 +202,7 @@ public class StatusBarTest extends SysuiTestCase {
                mPowerManager, mNotificationPanelView, mBarService, mNotificationListener,
                mNotificationLogger, mVisualStabilityManager, mViewHierarchyManager,
                mEntryManager, mScrimController, mFingerprintUnlockController,
                mock(ActivityLaunchAnimator.class));
                mock(ActivityLaunchAnimator.class), mKeyguardViewMediator);
        mStatusBar.mContext = mContext;
        mStatusBar.mComponents = mContext.getComponents();
        mEntryManager.setUpForTest(mStatusBar, mStackScroller, mStatusBar, mHeadsUpManager,
@@ -638,7 +640,7 @@ public class StatusBarTest extends SysuiTestCase {
                NotificationViewHierarchyManager viewHierarchyManager,
                TestableNotificationEntryManager entryManager, ScrimController scrimController,
                FingerprintUnlockController fingerprintUnlockController,
                ActivityLaunchAnimator launchAnimator) {
                ActivityLaunchAnimator launchAnimator, KeyguardViewMediator keyguardViewMediator) {
            mStatusBarKeyguardViewManager = man;
            mUnlockMethodCache = unlock;
            mKeyguardIndicationController = key;
@@ -656,6 +658,7 @@ public class StatusBarTest extends SysuiTestCase {
            mScrimController = scrimController;
            mFingerprintUnlockController = fingerprintUnlockController;
            mActivityLaunchAnimator = launchAnimator;
            mKeyguardViewMediator = keyguardViewMediator;
            mClearAllEnabled = true;
        }

Loading