Merge "TvPiP: Move focus changes to pip controller" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-02-23 02:49:58 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 27 deletions

View File

@@ -33,6 +33,7 @@ import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import android.view.SurfaceControl; import android.view.SurfaceControl;
import android.view.SyncRtSurfaceTransactionApplier; import android.view.SyncRtSurfaceTransactionApplier;
import android.view.WindowManagerGlobal;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -143,7 +144,6 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
mSystemWindows.addView(mPipMenuView, mSystemWindows.addView(mPipMenuView,
getPipMenuLayoutParams(MENU_WINDOW_TITLE, 0 /* width */, 0 /* height */), getPipMenuLayoutParams(MENU_WINDOW_TITLE, 0 /* width */, 0 /* height */),
0, SHELL_ROOT_LAYER_PIP); 0, SHELL_ROOT_LAYER_PIP);
mPipMenuView.setFocusGrantToken(mSystemWindows.getFocusGrantToken(mPipMenuView));
} }
@Override @Override
@@ -164,6 +164,7 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
t.setPosition(menuSurfaceControl, menuBounds.left, menuBounds.top); t.setPosition(menuSurfaceControl, menuBounds.left, menuBounds.top);
t.apply(); t.apply();
} }
grantPipMenuFocus(true);
mPipMenuView.show(mInMoveMode, mDelegate.getPipGravity()); mPipMenuView.show(mInMoveMode, mDelegate.getPipGravity());
} }
} }
@@ -194,8 +195,9 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
if (DEBUG) Log.d(TAG, "hideMenu()"); if (DEBUG) Log.d(TAG, "hideMenu()");
} }
mPipMenuView.hide(mInMoveMode); mPipMenuView.hide();
if (!mInMoveMode) { if (!mInMoveMode) {
grantPipMenuFocus(false);
mDelegate.closeMenu(); mDelegate.closeMenu();
} }
} }
@@ -453,4 +455,15 @@ public class TvPipMenuController implements PipMenuController, TvPipMenuView.Lis
void closePip(); void closePip();
} }
private void grantPipMenuFocus(boolean grantFocus) {
if (DEBUG) Log.d(TAG, "grantWindowFocus(" + grantFocus + ")");
try {
WindowManagerGlobal.getWindowSession().grantEmbeddedWindowFocus(null /* window */,
mSystemWindows.getFocusGrantToken(mPipMenuView), grantFocus);
} catch (Exception e) {
Log.e(TAG, "Unable to update focus", e);
}
}
} }

View File

@@ -30,7 +30,6 @@ import android.app.RemoteAction;
import android.content.Context; import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Handler; import android.os.Handler;
import android.os.IBinder;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
@@ -39,7 +38,6 @@ import android.view.SurfaceControl;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewRootImpl; import android.view.ViewRootImpl;
import android.view.WindowManagerGlobal;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@@ -72,7 +70,6 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener {
private final ImageView mArrowRight; private final ImageView mArrowRight;
private final ImageView mArrowDown; private final ImageView mArrowDown;
private final ImageView mArrowLeft; private final ImageView mArrowLeft;
private IBinder mFocusGrantToken = null;
private final ViewGroup mScrollView; private final ViewGroup mScrollView;
private final ViewGroup mHorizontalScrollView; private final ViewGroup mHorizontalScrollView;
@@ -152,10 +149,6 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener {
mListener = listener; mListener = listener;
} }
void setFocusGrantToken(IBinder token) {
mFocusGrantToken = token;
}
void setExpandedModeEnabled(boolean enabled) { void setExpandedModeEnabled(boolean enabled) {
mExpandButton.setVisibility(enabled ? VISIBLE : GONE); mExpandButton.setVisibility(enabled ? VISIBLE : GONE);
} }
@@ -170,8 +163,6 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener {
void show(boolean inMoveMode, int gravity) { void show(boolean inMoveMode, int gravity) {
if (DEBUG) Log.d(TAG, "show(), inMoveMode: " + inMoveMode); if (DEBUG) Log.d(TAG, "show(), inMoveMode: " + inMoveMode);
grantWindowFocus(true);
if (inMoveMode) { if (inMoveMode) {
showMovementHints(gravity); showMovementHints(gravity);
} else { } else {
@@ -180,15 +171,11 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener {
animateAlphaTo(1, mMenuFrameView); animateAlphaTo(1, mMenuFrameView);
} }
void hide(boolean isInMoveMode) { void hide() {
if (DEBUG) Log.d(TAG, "hide()"); if (DEBUG) Log.d(TAG, "hide()");
animateAlphaTo(0, mActionButtonsContainer); animateAlphaTo(0, mActionButtonsContainer);
animateAlphaTo(0, mMenuFrameView); animateAlphaTo(0, mMenuFrameView);
hideMovementHints(); hideMovementHints();
if (!isInMoveMode) {
grantWindowFocus(false);
}
} }
private void animateAlphaTo(float alpha, View view) { private void animateAlphaTo(float alpha, View view) {
@@ -217,17 +204,6 @@ public class TvPipMenuView extends FrameLayout implements View.OnClickListener {
|| mArrowLeft.getAlpha() != 0f; || mArrowLeft.getAlpha() != 0f;
} }
private void grantWindowFocus(boolean grantFocus) {
if (DEBUG) Log.d(TAG, "grantWindowFocus(" + grantFocus + ")");
try {
WindowManagerGlobal.getWindowSession().grantEmbeddedWindowFocus(null /* window */,
mFocusGrantToken, grantFocus);
} catch (Exception e) {
Log.e(TAG, "Unable to update focus", e);
}
}
void setAdditionalActions(List<RemoteAction> actions, Handler mainHandler) { void setAdditionalActions(List<RemoteAction> actions, Handler mainHandler) {
if (DEBUG) Log.d(TAG, "setAdditionalActions()"); if (DEBUG) Log.d(TAG, "setAdditionalActions()");