diff options
5 files changed, 37 insertions, 35 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java index 6f4550c2a89e..d1fbf31e2b99 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java @@ -19,6 +19,7 @@ package com.android.wm.shell; import static com.android.wm.shell.ShellTaskOrganizer.TASK_LISTENER_TYPE_FULLSCREEN; import com.android.wm.shell.apppairs.AppPairsController; +import com.android.wm.shell.bubbles.BubbleController; import com.android.wm.shell.common.DisplayImeController; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.annotations.ExternalThread; @@ -40,6 +41,7 @@ public class ShellInitImpl { private final DisplayImeController mDisplayImeController; private final DragAndDropController mDragAndDropController; private final ShellTaskOrganizer mShellTaskOrganizer; + private final Optional<BubbleController> mBubblesOptional; private final Optional<LegacySplitScreenController> mLegacySplitScreenOptional; private final Optional<SplitScreenController> mSplitScreenOptional; private final Optional<AppPairsController> mAppPairsOptional; @@ -54,6 +56,7 @@ public class ShellInitImpl { public ShellInitImpl(DisplayImeController displayImeController, DragAndDropController dragAndDropController, ShellTaskOrganizer shellTaskOrganizer, + Optional<BubbleController> bubblesOptional, Optional<LegacySplitScreenController> legacySplitScreenOptional, Optional<SplitScreenController> splitScreenOptional, Optional<AppPairsController> appPairsOptional, @@ -65,6 +68,7 @@ public class ShellInitImpl { mDisplayImeController = displayImeController; mDragAndDropController = dragAndDropController; mShellTaskOrganizer = shellTaskOrganizer; + mBubblesOptional = bubblesOptional; mLegacySplitScreenOptional = legacySplitScreenOptional; mSplitScreenOptional = splitScreenOptional; mAppPairsOptional = appPairsOptional; @@ -91,6 +95,7 @@ public class ShellInitImpl { mAppPairsOptional.ifPresent(AppPairsController::onOrganizerRegistered); mSplitScreenOptional.ifPresent(SplitScreenController::onOrganizerRegistered); + mBubblesOptional.ifPresent(BubbleController::initialize); // Bind the splitscreen impl to the drag drop controller mDragAndDropController.initialize(mSplitScreenOptional); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java index 620c382ef183..4ff1ce97ba3c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java @@ -120,6 +120,16 @@ public class BubbleController { @Nullable private BubbleStackView.SurfaceSynchronizer mSurfaceSynchronizer; private final FloatingContentCoordinator mFloatingContentCoordinator; private final BubbleDataRepository mDataRepository; + private final WindowManagerShellWrapper mWindowManagerShellWrapper; + private final LauncherApps mLauncherApps; + private final IStatusBarService mBarService; + private final WindowManager mWindowManager; + private final ShellTaskOrganizer mTaskOrganizer; + + // Used to post to main UI thread + private final ShellExecutor mMainExecutor; + private final Handler mMainHandler; + private BubbleLogger mLogger; private BubbleData mBubbleData; private View mBubbleScrim; @@ -148,12 +158,6 @@ public class BubbleController { */ @Nullable private BubbleEntry mNotifEntryToExpandOnShadeUnlock; - private IStatusBarService mBarService; - private WindowManager mWindowManager; - - // Used to post to main UI thread - private final ShellExecutor mMainExecutor; - /** LayoutParams used to add the BubbleStackView to the window manager. */ private WindowManager.LayoutParams mWmLayoutParams; /** Whether or not the BubbleStackView has been added to the WindowManager. */ @@ -177,15 +181,6 @@ public class BubbleController { private boolean mInflateSynchronously; - private ShellTaskOrganizer mTaskOrganizer; - - /** - * Whether the IME is visible, as reported by the BubbleStackView. If it is, we'll make the - * Bubbles window NOT_FOCUSABLE so that touches on the Bubbles UI doesn't steal focus from the - * ActivityView and hide the IME. - */ - private boolean mImeVisible = false; - /** true when user is in status bar unlock shade. */ private boolean mIsStatusBarShade = true; @@ -231,13 +226,28 @@ public class BubbleController { ShellExecutor mainExecutor, Handler mainHandler) { mContext = context; + mLauncherApps = launcherApps; + mBarService = statusBarService == null + ? IStatusBarService.Stub.asInterface( + ServiceManager.getService(Context.STATUS_BAR_SERVICE)) + : statusBarService; + mWindowManager = windowManager; + mWindowManagerShellWrapper = windowManagerShellWrapper; mFloatingContentCoordinator = floatingContentCoordinator; mDataRepository = dataRepository; mLogger = bubbleLogger; mMainExecutor = mainExecutor; - + mMainHandler = mainHandler; + mTaskOrganizer = organizer; + mSurfaceSynchronizer = synchronizer; + mCurrentUserId = ActivityManager.getCurrentUser(); mBubblePositioner = positioner; mBubbleData = data; + mSavedBubbleKeysPerUser = new SparseSetArray<>(); + mBubbleIconFactory = new BubbleIconFactory(context); + } + + public void initialize() { mBubbleData.setListener(mBubbleDataListener); mBubbleData.setSuppressionChangedListener(bubble -> { // Make sure NoMan knows suppression state so that anyone querying it can tell. @@ -261,28 +271,18 @@ public class BubbleController { }); try { - windowManagerShellWrapper.addPinnedStackListener(new BubblesImeListener()); + mWindowManagerShellWrapper.addPinnedStackListener(new BubblesImeListener()); } catch (RemoteException e) { e.printStackTrace(); } - mSurfaceSynchronizer = synchronizer; - mWindowManager = windowManager; - mBarService = statusBarService == null - ? IStatusBarService.Stub.asInterface( - ServiceManager.getService(Context.STATUS_BAR_SERVICE)) - : statusBarService; - mSavedBubbleKeysPerUser = new SparseSetArray<>(); - mCurrentUserId = ActivityManager.getCurrentUser(); mBubbleData.setCurrentUserId(mCurrentUserId); - mBubbleIconFactory = new BubbleIconFactory(context); - mTaskOrganizer = organizer; mTaskOrganizer.addLocusIdListener((taskId, locus, visible) -> mBubbleData.onLocusVisibilityChanged(taskId, locus, visible)); - launcherApps.registerCallback(new LauncherApps.Callback() { + mLauncherApps.registerCallback(new LauncherApps.Callback() { @Override public void onPackageAdded(String s, UserHandle userHandle) {} @@ -318,7 +318,7 @@ public class BubbleController { mBubbleData.removeBubblesWithInvalidShortcuts( packageName, validShortcuts, DISMISS_SHORTCUT_REMOVED); } - }, mainHandler); + }, mMainHandler); } @VisibleForTesting @@ -527,10 +527,6 @@ public class BubbleController { } } - void onImeVisibilityChanged(boolean imeVisible) { - mImeVisible = imeVisible; - } - /** Removes the BubbleStackView from the WindowManager if it's there. */ private void removeFromWindowManagerMaybe() { if (!mAddedToWindowManager) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index e5c9e2567ec5..9eec48c02306 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -876,8 +876,6 @@ public class BubbleStackView extends FrameLayout mTaskbarScrim.setVisibility(GONE); setOnApplyWindowInsetsListener((View view, WindowInsets insets) -> { - mBubbleController.onImeVisibilityChanged( - insets.getInsets(WindowInsets.Type.ime()).bottom > 0); if (!mIsExpanded || mIsExpansionAnimating) { return view.onApplyWindowInsets(insets); } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java index e403cfaee34a..45b0b59cd1d9 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java @@ -416,6 +416,7 @@ public abstract class WMShellBaseModule { static ShellInitImpl provideShellInitImpl(DisplayImeController displayImeController, DragAndDropController dragAndDropController, ShellTaskOrganizer shellTaskOrganizer, + Optional<BubbleController> bubblesOptional, Optional<LegacySplitScreenController> legacySplitScreenOptional, Optional<SplitScreenController> splitScreenOptional, Optional<AppPairsController> appPairsOptional, @@ -427,6 +428,7 @@ public abstract class WMShellBaseModule { return new ShellInitImpl(displayImeController, dragAndDropController, shellTaskOrganizer, + bubblesOptional, legacySplitScreenOptional, splitScreenOptional, appPairsOptional, diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java index cdf47b82561e..a1adb2c6922f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java @@ -55,5 +55,6 @@ public class TestableBubbleController extends BubbleController { statusBarService, windowManager, windowManagerShellWrapper, launcherApps, bubbleLogger, shellTaskOrganizer, positioner, shellMainExecutor, shellMainHandler); setInflateSynchronously(true); + initialize(); } } |