Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java +5 −1 Original line number Diff line number Diff line Loading @@ -123,11 +123,15 @@ public abstract class Pip1Module { static PhonePipMenuController providesPipPhoneMenuController(Context context, PipBoundsState pipBoundsState, PipMediaController pipMediaController, SystemWindows systemWindows, DisplayController displayController, DisplayInsetsController displayInsetsController, PipDisplayLayoutState pipDisplayLayoutState, PipUiEventLogger pipUiEventLogger, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler) { return new PhonePipMenuController(context, pipBoundsState, pipMediaController, systemWindows, pipUiEventLogger, mainExecutor, mainHandler); systemWindows, displayController, displayInsetsController, pipDisplayLayoutState, pipUiEventLogger, mainExecutor, mainHandler); } @WMSingleton Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java +4 −1 Original line number Diff line number Diff line Loading @@ -183,12 +183,15 @@ public abstract class Pip2Module { PipUiEventLogger pipUiEventLogger, PipTaskListener pipTaskListener, @NonNull PipTransitionState pipTransitionState, @NonNull DisplayController displayController, @NonNull DisplayInsetsController displayInsetsController, @NonNull PipDisplayLayoutState pipDisplayLayoutState, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler) { return new PhonePipMenuController(context, pipBoundsState, pipMediaController, systemWindows, pipUiEventLogger, pipTaskListener, pipTransitionState, pipDisplayLayoutState, mainExecutor, mainHandler); displayController, displayInsetsController, pipDisplayLayoutState, mainExecutor, mainHandler); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java +23 −2 Original line number Diff line number Diff line Loading @@ -33,9 +33,13 @@ import android.view.ViewRootImpl; import android.view.WindowManagerGlobal; import com.android.internal.protolog.ProtoLog; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.ImeListener; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.common.pip.PipBoundsState; import com.android.wm.shell.common.pip.PipDisplayLayoutState; import com.android.wm.shell.common.pip.PipMediaController; import com.android.wm.shell.common.pip.PipMediaController.ActionListener; import com.android.wm.shell.common.pip.PipMenuController; Loading Loading @@ -106,6 +110,7 @@ public class PhonePipMenuController implements PipMenuController { private final ArrayList<Listener> mListeners = new ArrayList<>(); private final SystemWindows mSystemWindows; private final PipUiEventLogger mPipUiEventLogger; private final PipDisplayLayoutState mPipDisplayLayoutState; private List<RemoteAction> mAppActions; private RemoteAction mCloseAction; Loading @@ -117,6 +122,8 @@ public class PhonePipMenuController implements PipMenuController { private SurfaceControl mLeash; private boolean mIsImeVisible; private ActionListener mMediaActionListener = new ActionListener() { @Override public void onMediaActionsChanged(List<RemoteAction> mediaActions) { Loading @@ -127,15 +134,27 @@ public class PhonePipMenuController implements PipMenuController { public PhonePipMenuController(Context context, PipBoundsState pipBoundsState, PipMediaController mediaController, SystemWindows systemWindows, DisplayController displayController, DisplayInsetsController displayInsetsController, PipDisplayLayoutState pipDisplayLayoutState, PipUiEventLogger pipUiEventLogger, ShellExecutor mainExecutor, Handler mainHandler) { mContext = context; mPipBoundsState = pipBoundsState; mMediaController = mediaController; mSystemWindows = systemWindows; mPipDisplayLayoutState = pipDisplayLayoutState; mMainExecutor = mainExecutor; mMainHandler = mainHandler; mPipUiEventLogger = pipUiEventLogger; displayInsetsController.addInsetsChangedListener(mPipDisplayLayoutState.getDisplayId(), new ImeListener(displayController, mPipDisplayLayoutState.getDisplayId()) { @Override protected void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { mIsImeVisible = imeVisible; } }); } public boolean isMenuVisible() { Loading Loading @@ -506,10 +525,12 @@ public class PhonePipMenuController implements PipMenuController { mMediaController.removeActionListener(mMediaActionListener); } // Do not grant focus if IME is visible, which can cause the focus being granted // back and forth in between the IME and PiP menu, and causes flicker. final boolean grantFocus = !mIsImeVisible && (menuState != MENU_STATE_NONE); try { WindowManagerGlobal.getWindowSession().grantEmbeddedWindowFocus(null /* window */, mSystemWindows.getFocusGrantToken(mPipMenuView), menuState != MENU_STATE_NONE /* grantFocus */); mSystemWindows.getFocusGrantToken(mPipMenuView), grantFocus); } catch (RemoteException e) { ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s: Unable to update focus as menu appears/disappears, %s", TAG, e); Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PhonePipMenuController.java +19 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ import android.view.ViewRootImpl; import android.view.WindowManagerGlobal; import com.android.internal.protolog.ProtoLog; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.ImeListener; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.common.pip.PipBoundsState; Loading Loading @@ -128,6 +131,8 @@ public class PhonePipMenuController implements PipMenuController, private SurfaceControl mLeash; private boolean mIsImeVisible; private ActionListener mMediaActionListener = new ActionListener() { @Override public void onMediaActionsChanged(List<RemoteAction> mediaActions) { Loading @@ -140,6 +145,8 @@ public class PhonePipMenuController implements PipMenuController, PipMediaController mediaController, SystemWindows systemWindows, PipUiEventLogger pipUiEventLogger, PipTaskListener pipTaskListener, @NonNull PipTransitionState pipTransitionState, @NonNull DisplayController displayController, @NonNull DisplayInsetsController displayInsetsController, @NonNull PipDisplayLayoutState pipDisplayLayoutState, ShellExecutor mainExecutor, Handler mainHandler) { mContext = context; Loading @@ -166,6 +173,13 @@ public class PhonePipMenuController implements PipMenuController, setAppActions(actions, closeAction); } }); displayInsetsController.addInsetsChangedListener(mPipDisplayLayoutState.getDisplayId(), new ImeListener(displayController, mPipDisplayLayoutState.getDisplayId()) { @Override protected void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { mIsImeVisible = imeVisible; } }); } public boolean isMenuVisible() { Loading Loading @@ -541,10 +555,13 @@ public class PhonePipMenuController implements PipMenuController, mMediaController.removeActionListener(mMediaActionListener); } // Do not grant focus if IME is visible, which can cause the focus being granted // back and forth in between the IME and PiP menu, and causes flicker. final boolean grantFocus = !mIsImeVisible && (menuState != MENU_STATE_NONE); if (mIsImeVisible) return; try { WindowManagerGlobal.getWindowSession().grantEmbeddedWindowFocus(null /* window */, mSystemWindows.getFocusGrantToken(mPipMenuView), menuState != MENU_STATE_NONE /* grantFocus */); mSystemWindows.getFocusGrantToken(mPipMenuView), grantFocus); } catch (RemoteException e) { ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s: Unable to update focus as menu appears/disappears, %s", TAG, e); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java +5 −1 Original line number Diff line number Diff line Loading @@ -123,11 +123,15 @@ public abstract class Pip1Module { static PhonePipMenuController providesPipPhoneMenuController(Context context, PipBoundsState pipBoundsState, PipMediaController pipMediaController, SystemWindows systemWindows, DisplayController displayController, DisplayInsetsController displayInsetsController, PipDisplayLayoutState pipDisplayLayoutState, PipUiEventLogger pipUiEventLogger, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler) { return new PhonePipMenuController(context, pipBoundsState, pipMediaController, systemWindows, pipUiEventLogger, mainExecutor, mainHandler); systemWindows, displayController, displayInsetsController, pipDisplayLayoutState, pipUiEventLogger, mainExecutor, mainHandler); } @WMSingleton Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java +4 −1 Original line number Diff line number Diff line Loading @@ -183,12 +183,15 @@ public abstract class Pip2Module { PipUiEventLogger pipUiEventLogger, PipTaskListener pipTaskListener, @NonNull PipTransitionState pipTransitionState, @NonNull DisplayController displayController, @NonNull DisplayInsetsController displayInsetsController, @NonNull PipDisplayLayoutState pipDisplayLayoutState, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler) { return new PhonePipMenuController(context, pipBoundsState, pipMediaController, systemWindows, pipUiEventLogger, pipTaskListener, pipTransitionState, pipDisplayLayoutState, mainExecutor, mainHandler); displayController, displayInsetsController, pipDisplayLayoutState, mainExecutor, mainHandler); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java +23 −2 Original line number Diff line number Diff line Loading @@ -33,9 +33,13 @@ import android.view.ViewRootImpl; import android.view.WindowManagerGlobal; import com.android.internal.protolog.ProtoLog; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.ImeListener; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.common.pip.PipBoundsState; import com.android.wm.shell.common.pip.PipDisplayLayoutState; import com.android.wm.shell.common.pip.PipMediaController; import com.android.wm.shell.common.pip.PipMediaController.ActionListener; import com.android.wm.shell.common.pip.PipMenuController; Loading Loading @@ -106,6 +110,7 @@ public class PhonePipMenuController implements PipMenuController { private final ArrayList<Listener> mListeners = new ArrayList<>(); private final SystemWindows mSystemWindows; private final PipUiEventLogger mPipUiEventLogger; private final PipDisplayLayoutState mPipDisplayLayoutState; private List<RemoteAction> mAppActions; private RemoteAction mCloseAction; Loading @@ -117,6 +122,8 @@ public class PhonePipMenuController implements PipMenuController { private SurfaceControl mLeash; private boolean mIsImeVisible; private ActionListener mMediaActionListener = new ActionListener() { @Override public void onMediaActionsChanged(List<RemoteAction> mediaActions) { Loading @@ -127,15 +134,27 @@ public class PhonePipMenuController implements PipMenuController { public PhonePipMenuController(Context context, PipBoundsState pipBoundsState, PipMediaController mediaController, SystemWindows systemWindows, DisplayController displayController, DisplayInsetsController displayInsetsController, PipDisplayLayoutState pipDisplayLayoutState, PipUiEventLogger pipUiEventLogger, ShellExecutor mainExecutor, Handler mainHandler) { mContext = context; mPipBoundsState = pipBoundsState; mMediaController = mediaController; mSystemWindows = systemWindows; mPipDisplayLayoutState = pipDisplayLayoutState; mMainExecutor = mainExecutor; mMainHandler = mainHandler; mPipUiEventLogger = pipUiEventLogger; displayInsetsController.addInsetsChangedListener(mPipDisplayLayoutState.getDisplayId(), new ImeListener(displayController, mPipDisplayLayoutState.getDisplayId()) { @Override protected void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { mIsImeVisible = imeVisible; } }); } public boolean isMenuVisible() { Loading Loading @@ -506,10 +525,12 @@ public class PhonePipMenuController implements PipMenuController { mMediaController.removeActionListener(mMediaActionListener); } // Do not grant focus if IME is visible, which can cause the focus being granted // back and forth in between the IME and PiP menu, and causes flicker. final boolean grantFocus = !mIsImeVisible && (menuState != MENU_STATE_NONE); try { WindowManagerGlobal.getWindowSession().grantEmbeddedWindowFocus(null /* window */, mSystemWindows.getFocusGrantToken(mPipMenuView), menuState != MENU_STATE_NONE /* grantFocus */); mSystemWindows.getFocusGrantToken(mPipMenuView), grantFocus); } catch (RemoteException e) { ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s: Unable to update focus as menu appears/disappears, %s", TAG, e); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PhonePipMenuController.java +19 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ import android.view.ViewRootImpl; import android.view.WindowManagerGlobal; import com.android.internal.protolog.ProtoLog; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayInsetsController; import com.android.wm.shell.common.ImeListener; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.common.pip.PipBoundsState; Loading Loading @@ -128,6 +131,8 @@ public class PhonePipMenuController implements PipMenuController, private SurfaceControl mLeash; private boolean mIsImeVisible; private ActionListener mMediaActionListener = new ActionListener() { @Override public void onMediaActionsChanged(List<RemoteAction> mediaActions) { Loading @@ -140,6 +145,8 @@ public class PhonePipMenuController implements PipMenuController, PipMediaController mediaController, SystemWindows systemWindows, PipUiEventLogger pipUiEventLogger, PipTaskListener pipTaskListener, @NonNull PipTransitionState pipTransitionState, @NonNull DisplayController displayController, @NonNull DisplayInsetsController displayInsetsController, @NonNull PipDisplayLayoutState pipDisplayLayoutState, ShellExecutor mainExecutor, Handler mainHandler) { mContext = context; Loading @@ -166,6 +173,13 @@ public class PhonePipMenuController implements PipMenuController, setAppActions(actions, closeAction); } }); displayInsetsController.addInsetsChangedListener(mPipDisplayLayoutState.getDisplayId(), new ImeListener(displayController, mPipDisplayLayoutState.getDisplayId()) { @Override protected void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { mIsImeVisible = imeVisible; } }); } public boolean isMenuVisible() { Loading Loading @@ -541,10 +555,13 @@ public class PhonePipMenuController implements PipMenuController, mMediaController.removeActionListener(mMediaActionListener); } // Do not grant focus if IME is visible, which can cause the focus being granted // back and forth in between the IME and PiP menu, and causes flicker. final boolean grantFocus = !mIsImeVisible && (menuState != MENU_STATE_NONE); if (mIsImeVisible) return; try { WindowManagerGlobal.getWindowSession().grantEmbeddedWindowFocus(null /* window */, mSystemWindows.getFocusGrantToken(mPipMenuView), menuState != MENU_STATE_NONE /* grantFocus */); mSystemWindows.getFocusGrantToken(mPipMenuView), grantFocus); } catch (RemoteException e) { ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s: Unable to update focus as menu appears/disappears, %s", TAG, e); Loading