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

Commit b50a3b46 authored by Winson Chung's avatar Winson Chung
Browse files

Add keyguard callbacks to ShellInterface

- Currently multiple shell feature interfaces expose the same
  keyguard visibility callback, instead we can pipe this signal
  to the shell for controllers to register for events.

Bug: 238217847
Test: atest WMShellUnitTests
Test: atest SystemUITests
Change-Id: I96125e9f3796c8303683c9314f13884121ded39d
parent 126b3b41
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -23,13 +23,4 @@ import com.android.wm.shell.common.annotations.ExternalThread;
 */
@ExternalThread
public interface CompatUI {
    /**
     * Called when the keyguard showing state changes. Removes all compat UIs if the
     * keyguard is now showing.
     *
     * <p>Note that if the keyguard is occluded it will also be considered showing.
     *
     * @param showing indicates if the keyguard is now showing.
     */
    void onKeyguardShowingChanged(boolean showing);
}
+11 −10
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@ import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.annotations.ExternalThread;
import com.android.wm.shell.compatui.CompatUIWindowManager.CompatUIHintsState;
import com.android.wm.shell.compatui.letterboxedu.LetterboxEduWindowManager;
import com.android.wm.shell.sysui.KeyguardChangeListener;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.transition.Transitions;

import java.lang.ref.WeakReference;
@@ -58,7 +60,7 @@ import dagger.Lazy;
 * activities are in compatibility mode.
 */
public class CompatUIController implements OnDisplaysChangedListener,
        DisplayImeController.ImePositionProcessor {
        DisplayImeController.ImePositionProcessor, KeyguardChangeListener {

    /** Callback for compat UI interaction. */
    public interface CompatUICallback {
@@ -100,6 +102,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
    private final SparseArray<WeakReference<Context>> mDisplayContextCache = new SparseArray<>(0);

    private final Context mContext;
    private final ShellController mShellController;
    private final DisplayController mDisplayController;
    private final DisplayInsetsController mDisplayInsetsController;
    private final DisplayImeController mImeController;
@@ -118,6 +121,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
    private boolean mKeyguardShowing;

    public CompatUIController(Context context,
            ShellController shellController,
            DisplayController displayController,
            DisplayInsetsController displayInsetsController,
            DisplayImeController imeController,
@@ -125,6 +129,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
            ShellExecutor mainExecutor,
            Lazy<Transitions> transitionsLazy) {
        mContext = context;
        mShellController = shellController;
        mDisplayController = displayController;
        mDisplayInsetsController = displayInsetsController;
        mImeController = imeController;
@@ -134,6 +139,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
        mDisplayController.addDisplayWindowListener(this);
        mImeController.addPositionProcessor(this);
        mCompatUIHintsState = new CompatUIHintsState();
        shellController.addKeyguardChangeListener(this);
    }

    /** Returns implementation of {@link CompatUI}. */
@@ -223,9 +229,10 @@ public class CompatUIController implements OnDisplaysChangedListener,
                layout -> layout.updateVisibility(showOnDisplay(displayId)));
    }

    @VisibleForTesting
    void onKeyguardShowingChanged(boolean showing) {
        mKeyguardShowing = showing;
    @Override
    public void onKeyguardVisibilityChanged(boolean visible, boolean occluded,
            boolean animatingDismiss) {
        mKeyguardShowing = visible;
        // Hide the compat UIs when keyguard is showing.
        forAllLayouts(layout -> layout.updateVisibility(showOnDisplay(layout.getDisplayId())));
    }
@@ -378,12 +385,6 @@ public class CompatUIController implements OnDisplaysChangedListener,
     */
    @ExternalThread
    private class CompatUIImpl implements CompatUI {
        @Override
        public void onKeyguardShowingChanged(boolean showing) {
            mMainExecutor.execute(() -> {
                CompatUIController.this.onKeyguardShowingChanged(showing);
            });
        }
    }

    /** An implementation of {@link OnInsetsChangedListener} for a given display id. */
+3 −2
Original line number Diff line number Diff line
@@ -214,11 +214,12 @@ public abstract class WMShellBaseModule {
    @WMSingleton
    @Provides
    static CompatUIController provideCompatUIController(Context context,
            ShellController shellController,
            DisplayController displayController, DisplayInsetsController displayInsetsController,
            DisplayImeController imeController, SyncTransactionQueue syncQueue,
            @ShellMainThread ShellExecutor mainExecutor, Lazy<Transitions> transitionsLazy) {
        return new CompatUIController(context, displayController, displayInsetsController,
                imeController, syncQueue, mainExecutor, transitionsLazy);
        return new CompatUIController(context, shellController, displayController,
                displayInsetsController, imeController, syncQueue, mainExecutor, transitionsLazy);
    }

    @WMSingleton
+2 −1
Original line number Diff line number Diff line
@@ -225,6 +225,7 @@ public abstract class WMShellModule {
    @Provides
    @DynamicOverride
    static SplitScreenController provideSplitScreenController(
            ShellController shellController,
            ShellTaskOrganizer shellTaskOrganizer,
            SyncTransactionQueue syncQueue, Context context,
            RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer,
@@ -234,7 +235,7 @@ public abstract class WMShellModule {
            DisplayInsetsController displayInsetsController, Transitions transitions,
            TransactionPool transactionPool, IconProvider iconProvider,
            Optional<RecentTasksController> recentTasks) {
        return new SplitScreenController(shellTaskOrganizer, syncQueue, context,
        return new SplitScreenController(shellController, shellTaskOrganizer, syncQueue, context,
                rootTaskDisplayAreaOrganizer, mainExecutor, displayController, displayImeController,
                displayInsetsController, transitions, transactionPool, iconProvider,
                recentTasks);
+0 −5
Original line number Diff line number Diff line
@@ -85,9 +85,4 @@ public interface OneHanded {
     * Notifies when user switch complete
     */
    void onUserSwitch(int userId);

    /**
     * Notifies when keyguard visibility changed
     */
    void onKeyguardVisibilityChanged(boolean showing);
}
Loading