Loading libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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, Loading @@ -65,6 +68,7 @@ public class ShellInitImpl { mDisplayImeController = displayImeController; mDragAndDropController = dragAndDropController; mShellTaskOrganizer = shellTaskOrganizer; mBubblesOptional = bubblesOptional; mLegacySplitScreenOptional = legacySplitScreenOptional; mSplitScreenOptional = splitScreenOptional; mAppPairsOptional = appPairsOptional; Loading @@ -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); Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +29 −33 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading @@ -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; Loading Loading @@ -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. Loading @@ -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) {} Loading Loading @@ -318,7 +318,7 @@ public class BubbleController { mBubbleData.removeBubblesWithInvalidShortcuts( packageName, validShortcuts, DISMISS_SHORTCUT_REMOVED); } }, mainHandler); }, mMainHandler); } @VisibleForTesting Loading Loading @@ -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) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +0 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java +2 −0 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -427,6 +428,7 @@ public abstract class WMShellBaseModule { return new ShellInitImpl(displayImeController, dragAndDropController, shellTaskOrganizer, bubblesOptional, legacySplitScreenOptional, splitScreenOptional, appPairsOptional, Loading packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java +1 −0 Original line number Diff line number Diff line Loading @@ -55,5 +55,6 @@ public class TestableBubbleController extends BubbleController { statusBarService, windowManager, windowManagerShellWrapper, launcherApps, bubbleLogger, shellTaskOrganizer, positioner, shellMainExecutor, shellMainHandler); setInflateSynchronously(true); initialize(); } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java +5 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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, Loading @@ -65,6 +68,7 @@ public class ShellInitImpl { mDisplayImeController = displayImeController; mDragAndDropController = dragAndDropController; mShellTaskOrganizer = shellTaskOrganizer; mBubblesOptional = bubblesOptional; mLegacySplitScreenOptional = legacySplitScreenOptional; mSplitScreenOptional = splitScreenOptional; mAppPairsOptional = appPairsOptional; Loading @@ -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); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +29 −33 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading @@ -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; Loading Loading @@ -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. Loading @@ -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) {} Loading Loading @@ -318,7 +318,7 @@ public class BubbleController { mBubbleData.removeBubblesWithInvalidShortcuts( packageName, validShortcuts, DISMISS_SHORTCUT_REMOVED); } }, mainHandler); }, mMainHandler); } @VisibleForTesting Loading Loading @@ -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) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +0 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading
packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java +2 −0 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -427,6 +428,7 @@ public abstract class WMShellBaseModule { return new ShellInitImpl(displayImeController, dragAndDropController, shellTaskOrganizer, bubblesOptional, legacySplitScreenOptional, splitScreenOptional, appPairsOptional, Loading
packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java +1 −0 Original line number Diff line number Diff line Loading @@ -55,5 +55,6 @@ public class TestableBubbleController extends BubbleController { statusBarService, windowManager, windowManagerShellWrapper, launcherApps, bubbleLogger, shellTaskOrganizer, positioner, shellMainExecutor, shellMainHandler); setInflateSynchronously(true); initialize(); } }