Merge "Add ShellProtoLogGroup for Picture-In-Picture. Update the code for PIP and phone PIP to use ProtoLog instead of Log." into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a61c47ff37
@@ -29,14 +29,15 @@ import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.RemoteException;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
import android.util.Size;
|
||||
import android.view.Display;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.internal.util.function.TriConsumer;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.common.DisplayLayout;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -223,7 +224,8 @@ public class PipBoundsState {
|
||||
new PictureInPictureUiState(stashedState != STASH_TYPE_NONE /* isStashed */)
|
||||
);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Unable to set alert PiP state change.");
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Unable to set alert PiP state change.", TAG);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@ import android.content.res.Configuration;
|
||||
import android.graphics.Rect;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
import android.util.Rational;
|
||||
import android.view.Display;
|
||||
import android.view.Surface;
|
||||
@@ -73,6 +72,7 @@ import android.window.WindowContainerToken;
|
||||
import android.window.WindowContainerTransaction;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.animation.Interpolators;
|
||||
@@ -83,6 +83,7 @@ import com.android.wm.shell.common.SyncTransactionQueue;
|
||||
import com.android.wm.shell.common.annotations.ShellMainThread;
|
||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreenController;
|
||||
import com.android.wm.shell.pip.phone.PipMotionHelper;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||
import com.android.wm.shell.transition.Transitions;
|
||||
|
||||
@@ -395,8 +396,10 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
if (!mPipTransitionState.isInPip()
|
||||
|| mPipTransitionState.getTransitionState() == PipTransitionState.EXITING_PIP
|
||||
|| mToken == null) {
|
||||
Log.wtf(TAG, "Not allowed to exitPip in current state"
|
||||
+ " mState=" + mPipTransitionState.getTransitionState() + " mToken=" + mToken);
|
||||
ProtoLog.wtf(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Not allowed to exitPip in current state"
|
||||
+ " mState=%d mToken=%s", TAG, mPipTransitionState.getTransitionState(),
|
||||
mToken);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -500,9 +503,11 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
* Removes PiP immediately.
|
||||
*/
|
||||
public void removePip() {
|
||||
if (!mPipTransitionState.isInPip() || mToken == null) {
|
||||
Log.wtf(TAG, "Not allowed to removePip in current state"
|
||||
+ " mState=" + mPipTransitionState.getTransitionState() + " mToken=" + mToken);
|
||||
if (!mPipTransitionState.isInPip() || mToken == null) {
|
||||
ProtoLog.wtf(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Not allowed to removePip in current state"
|
||||
+ " mState=%d mToken=%s", TAG, mPipTransitionState.getTransitionState(),
|
||||
mToken);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -539,7 +544,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
ActivityTaskManager.getService().removeRootTasksInWindowingModes(
|
||||
new int[]{ WINDOWING_MODE_PINNED });
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to remove PiP", e);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to remove PiP, %s",
|
||||
TAG, e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -568,7 +575,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
if (!mWaitForFixedRotation) {
|
||||
onEndOfSwipePipToHomeTransition();
|
||||
} else {
|
||||
Log.d(TAG, "Defer onTaskAppeared-SwipePipToHome until end of fixed rotation.");
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Defer onTaskAppeared-SwipePipToHome until end of fixed rotation.",
|
||||
TAG);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -576,7 +585,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
if (mOneShotAnimationType == ANIM_TYPE_ALPHA
|
||||
&& SystemClock.uptimeMillis() - mLastOneShotAlphaAnimationTime
|
||||
> ONE_SHOT_ALPHA_ANIMATION_TIMEOUT_MS) {
|
||||
Log.d(TAG, "Alpha animation is expired. Use bounds animation.");
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Alpha animation is expired. Use bounds animation.", TAG);
|
||||
mOneShotAnimationType = ANIM_TYPE_BOUNDS;
|
||||
}
|
||||
|
||||
@@ -613,8 +623,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
|
||||
private void onTaskAppearedWithFixedRotation() {
|
||||
if (mOneShotAnimationType == ANIM_TYPE_ALPHA) {
|
||||
Log.d(TAG, "Defer entering PiP alpha animation, fixed rotation is ongoing");
|
||||
// If deferred, hide the surface till fixed rotation is completed.
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Defer entering PiP alpha animation, fixed rotation is ongoing", TAG);
|
||||
// If deferred, hside the surface till fixed rotation is completed.
|
||||
final SurfaceControl.Transaction tx =
|
||||
mSurfaceControlTransactionFactory.getTransaction();
|
||||
tx.setAlpha(mLeash, 0f);
|
||||
@@ -763,7 +774,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
final WindowContainerToken token = info.token;
|
||||
Objects.requireNonNull(token, "Requires valid WindowContainerToken");
|
||||
if (token.asBinder() != mToken.asBinder()) {
|
||||
Log.wtf(TAG, "Unrecognized token: " + token);
|
||||
ProtoLog.wtf(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Unrecognized token: %s", TAG, token);
|
||||
return;
|
||||
}
|
||||
onExitPipFinished(info);
|
||||
@@ -788,8 +800,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
Objects.requireNonNull(mToken, "onTaskInfoChanged requires valid existing mToken");
|
||||
if (mPipTransitionState.getTransitionState() != PipTransitionState.ENTERED_PIP
|
||||
&& mPipTransitionState.getTransitionState() != PipTransitionState.EXITING_PIP) {
|
||||
Log.d(TAG, "Defer onTaskInfoChange in current state: "
|
||||
+ mPipTransitionState.getTransitionState());
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Defer onTaskInfoChange in current state: %d", TAG,
|
||||
mPipTransitionState.getTransitionState());
|
||||
// Defer applying PiP parameters if the task is entering PiP to avoid disturbing
|
||||
// the animation.
|
||||
mDeferredTaskInfo = info;
|
||||
@@ -800,7 +813,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
mPipBoundsAlgorithm.getMinimalSize(info.topActivityInfo));
|
||||
final PictureInPictureParams newParams = info.pictureInPictureParams;
|
||||
if (newParams == null || !applyPictureInPictureParams(newParams)) {
|
||||
Log.d(TAG, "Ignored onTaskInfoChanged with PiP param: " + newParams);
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Ignored onTaskInfoChanged with PiP param: %s", TAG, newParams);
|
||||
return;
|
||||
}
|
||||
// Aspect ratio changed, re-calculate bounds if valid.
|
||||
@@ -895,7 +909,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
|
||||
private void fadeExistingPip(boolean show) {
|
||||
if (mLeash == null || !mLeash.isValid()) {
|
||||
Log.w(TAG, "Invalid leash on fadeExistingPip: " + mLeash);
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Invalid leash on fadeExistingPip: %s", TAG, mLeash);
|
||||
return;
|
||||
}
|
||||
final float alphaStart = show ? 0 : 1;
|
||||
@@ -942,11 +957,13 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
if ((mPipTransitionState.getInSwipePipToHomeTransition()
|
||||
|| waitForFixedRotationOnEnteringPip) && fromRotation) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "Skip onMovementBoundsChanged on rotation change"
|
||||
+ " InSwipePipToHomeTransition="
|
||||
+ mPipTransitionState.getInSwipePipToHomeTransition()
|
||||
+ " mWaitForFixedRotation=" + mWaitForFixedRotation
|
||||
+ " getTransitionState=" + mPipTransitionState.getTransitionState());
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Skip onMovementBoundsChanged on rotation change"
|
||||
+ " InSwipePipToHomeTransition=%b"
|
||||
+ " mWaitForFixedRotation=%b"
|
||||
+ " getTransitionState=%d", TAG,
|
||||
mPipTransitionState.getInSwipePipToHomeTransition(), mWaitForFixedRotation,
|
||||
mPipTransitionState.getTransitionState());
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -1061,7 +1078,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
@PipAnimationController.TransitionDirection int direction,
|
||||
Consumer<Rect> updateBoundsCallback) {
|
||||
if (mWaitForFixedRotation) {
|
||||
Log.d(TAG, "skip scheduleAnimateResizePip, entering pip deferred");
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: skip scheduleAnimateResizePip, entering pip deferred", TAG);
|
||||
return;
|
||||
}
|
||||
scheduleAnimateResizePip(mPipBoundsState.getBounds(), toBounds, 0 /* startingAngle */,
|
||||
@@ -1075,7 +1093,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
public void scheduleAnimateResizePip(Rect fromBounds, Rect toBounds, int duration,
|
||||
float startingAngle, Consumer<Rect> updateBoundsCallback) {
|
||||
if (mWaitForFixedRotation) {
|
||||
Log.d(TAG, "skip scheduleAnimateResizePip, entering pip deferred");
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: skip scheduleAnimateResizePip, entering pip deferred", TAG);
|
||||
return;
|
||||
}
|
||||
scheduleAnimateResizePip(fromBounds, toBounds, startingAngle, null /* sourceHintRect */,
|
||||
@@ -1113,7 +1132,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
public void scheduleResizePip(Rect toBounds, Consumer<Rect> updateBoundsCallback) {
|
||||
// Could happen when exitPip
|
||||
if (mToken == null || mLeash == null) {
|
||||
Log.w(TAG, "Abort animation, invalid leash");
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Abort animation, invalid leash", TAG);
|
||||
return;
|
||||
}
|
||||
mPipBoundsState.setBounds(toBounds);
|
||||
@@ -1148,12 +1168,14 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
Consumer<Rect> updateBoundsCallback) {
|
||||
// Could happen when exitPip
|
||||
if (mToken == null || mLeash == null) {
|
||||
Log.w(TAG, "Abort animation, invalid leash");
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Abort animation, invalid leash", TAG);
|
||||
return;
|
||||
}
|
||||
|
||||
if (startBounds.isEmpty() || toBounds.isEmpty()) {
|
||||
Log.w(TAG, "Attempted to user resize PIP to or from empty bounds, aborting.");
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Attempted to user resize PIP to or from empty bounds, aborting.", TAG);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1228,7 +1250,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
return;
|
||||
}
|
||||
if (mWaitForFixedRotation) {
|
||||
Log.d(TAG, "skip scheduleOffsetPip, entering pip deferred");
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: skip scheduleOffsetPip, entering pip deferred", TAG);
|
||||
return;
|
||||
}
|
||||
offsetPip(originalBounds, 0 /* xOffset */, offset, duration);
|
||||
@@ -1241,7 +1264,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
|
||||
private void offsetPip(Rect originalBounds, int xOffset, int yOffset, int durationMs) {
|
||||
if (mTaskInfo == null) {
|
||||
Log.w(TAG, "mTaskInfo is not set");
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, "%s: mTaskInfo is not set",
|
||||
TAG);
|
||||
return;
|
||||
}
|
||||
final Rect destinationBounds = new Rect(originalBounds);
|
||||
@@ -1386,7 +1410,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
float startingAngle) {
|
||||
// Could happen when exitPip
|
||||
if (mToken == null || mLeash == null) {
|
||||
Log.w(TAG, "Abort animation, invalid leash");
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Abort animation, invalid leash", TAG);
|
||||
return null;
|
||||
}
|
||||
final int rotationDelta = mWaitForFixedRotation
|
||||
@@ -1501,7 +1526,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
|
||||
if (mPipTransitionState.getTransitionState() == PipTransitionState.UNDEFINED) {
|
||||
// Could happen if onTaskVanished happens during the animation since we may have
|
||||
// set a start delay on this animation.
|
||||
Log.d(TAG, "Task vanished, skip fadeOutAndRemoveOverlay");
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Task vanished, skip fadeOutAndRemoveOverlay", TAG);
|
||||
animation.removeAllListeners();
|
||||
animation.removeAllUpdateListeners();
|
||||
animation.cancel();
|
||||
|
||||
@@ -50,7 +50,6 @@ import android.graphics.Matrix;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.IBinder;
|
||||
import android.util.Log;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceControl;
|
||||
import android.window.TransitionInfo;
|
||||
@@ -61,8 +60,10 @@ import android.window.WindowContainerTransaction;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||
import com.android.wm.shell.transition.CounterRotatorHelper;
|
||||
import com.android.wm.shell.transition.Transitions;
|
||||
@@ -757,7 +758,8 @@ public class PipTransition extends PipTransitionController {
|
||||
final SurfaceControl leash = mPipOrganizer.getSurfaceControl();
|
||||
final TaskInfo taskInfo = mPipOrganizer.getTaskInfo();
|
||||
if (leash == null || !leash.isValid() || taskInfo == null) {
|
||||
Log.w(TAG, "Invalid leash on fadeExistingPip: " + leash);
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Invalid leash on fadeExistingPip: %s", TAG, leash);
|
||||
return;
|
||||
}
|
||||
final float alphaStart = show ? 0 : 1;
|
||||
|
||||
@@ -24,9 +24,11 @@ import android.app.ActivityTaskManager.RootTaskInfo;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
|
||||
/** A class that includes convenience methods. */
|
||||
public class PipUtils {
|
||||
private static final String TAG = "PipUtils";
|
||||
@@ -51,7 +53,8 @@ public class PipUtils {
|
||||
}
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Unable to get pinned stack.");
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Unable to get pinned stack.", TAG);
|
||||
}
|
||||
return new Pair<>(null, 0);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import android.graphics.RectF;
|
||||
import android.os.Debug;
|
||||
import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
import android.util.Size;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SurfaceControl;
|
||||
@@ -37,6 +36,7 @@ import android.view.SyncRtSurfaceTransactionApplier;
|
||||
import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams;
|
||||
import android.view.WindowManagerGlobal;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.common.ShellExecutor;
|
||||
import com.android.wm.shell.common.SystemWindows;
|
||||
import com.android.wm.shell.pip.PipBoundsState;
|
||||
@@ -44,6 +44,7 @@ import com.android.wm.shell.pip.PipMediaController;
|
||||
import com.android.wm.shell.pip.PipMediaController.ActionListener;
|
||||
import com.android.wm.shell.pip.PipMenuController;
|
||||
import com.android.wm.shell.pip.PipUiEventLogger;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -285,13 +286,15 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
private void showMenuInternal(int menuState, Rect stackBounds, boolean allowMenuTimeout,
|
||||
boolean willResizeMenu, boolean withDelay, boolean showResizeHandle) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "showMenu() state=" + menuState
|
||||
+ " isMenuVisible=" + isMenuVisible()
|
||||
+ " allowMenuTimeout=" + allowMenuTimeout
|
||||
+ " willResizeMenu=" + willResizeMenu
|
||||
+ " withDelay=" + withDelay
|
||||
+ " showResizeHandle=" + showResizeHandle
|
||||
+ " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: showMenu() state=%s"
|
||||
+ " isMenuVisible=%s"
|
||||
+ " allowMenuTimeout=%s"
|
||||
+ " willResizeMenu=%s"
|
||||
+ " withDelay=%s"
|
||||
+ " showResizeHandle=%s"
|
||||
+ " callers=\n%s", TAG, menuState, isMenuVisible(), allowMenuTimeout,
|
||||
willResizeMenu, withDelay, showResizeHandle, Debug.getCallers(5, " "));
|
||||
}
|
||||
|
||||
if (!maybeCreateSyncApplier()) {
|
||||
@@ -383,7 +386,8 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
|
||||
private boolean maybeCreateSyncApplier() {
|
||||
if (mPipMenuView == null || mPipMenuView.getViewRootImpl() == null) {
|
||||
Log.v(TAG, "Not going to move PiP, either menu or its parent is not created.");
|
||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Not going to move PiP, either menu or its parent is not created.", TAG);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -400,7 +404,8 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
public void pokeMenu() {
|
||||
final boolean isMenuVisible = isMenuVisible();
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "pokeMenu() isMenuVisible=" + isMenuVisible);
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: pokeMenu() isMenuVisible=%b", TAG, isMenuVisible);
|
||||
}
|
||||
if (isMenuVisible) {
|
||||
mPipMenuView.pokeMenu();
|
||||
@@ -410,7 +415,8 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
private void fadeOutMenu() {
|
||||
final boolean isMenuVisible = isMenuVisible();
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "fadeOutMenu() isMenuVisible=" + isMenuVisible);
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: fadeOutMenu() isMenuVisible=%b", TAG, isMenuVisible);
|
||||
}
|
||||
if (isMenuVisible) {
|
||||
mPipMenuView.fadeOutMenu();
|
||||
@@ -436,11 +442,14 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
public void hideMenu(@PipMenuView.AnimationType int animationType, boolean resize) {
|
||||
final boolean isMenuVisible = isMenuVisible();
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "hideMenu() state=" + mMenuState
|
||||
+ " isMenuVisible=" + isMenuVisible
|
||||
+ " animationType=" + animationType
|
||||
+ " resize=" + resize
|
||||
+ " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: hideMenu() state=%s"
|
||||
+ " isMenuVisible=%s"
|
||||
+ " animationType=%s"
|
||||
+ " resize=%s"
|
||||
+ " callers=\n%s", TAG, mMenuState, isMenuVisible,
|
||||
animationType, resize,
|
||||
Debug.getCallers(5, " "));
|
||||
}
|
||||
if (isMenuVisible) {
|
||||
mPipMenuView.hideMenu(resize, animationType);
|
||||
@@ -516,9 +525,11 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
*/
|
||||
void onMenuStateChangeStart(int menuState, boolean resize, Runnable callback) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onMenuStateChangeStart() mMenuState=" + mMenuState
|
||||
+ " menuState=" + menuState + " resize=" + resize
|
||||
+ " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: onMenuStateChangeStart() mMenuState=%s"
|
||||
+ " menuState=%s resize=%s"
|
||||
+ " callers=\n%s", TAG, mMenuState, menuState, resize,
|
||||
Debug.getCallers(5, " "));
|
||||
}
|
||||
|
||||
if (menuState != mMenuState) {
|
||||
@@ -538,7 +549,8 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
mSystemWindows.getFocusGrantToken(mPipMenuView),
|
||||
menuState != MENU_STATE_NONE /* grantFocus */);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Unable to update focus as menu appears/disappears", e);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Unable to update focus as menu appears/disappears, %s", TAG, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -584,9 +596,11 @@ public class PhonePipMenuController implements PipMenuController {
|
||||
public void updateMenuLayout(Rect bounds) {
|
||||
final boolean isMenuVisible = isMenuVisible();
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "updateMenuLayout() state=" + mMenuState
|
||||
+ " isMenuVisible=" + isMenuVisible
|
||||
+ " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: updateMenuLayout() state=%s"
|
||||
+ " isMenuVisible=%s"
|
||||
+ " callers=\n%s", TAG, mMenuState, isMenuVisible,
|
||||
Debug.getCallers(5, " "));
|
||||
}
|
||||
if (isMenuVisible) {
|
||||
mPipMenuView.updateMenuLayout(bounds);
|
||||
|
||||
@@ -46,10 +46,8 @@ import android.graphics.Rect;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.util.Size;
|
||||
import android.util.Slog;
|
||||
import android.view.DisplayInfo;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.WindowManagerGlobal;
|
||||
@@ -61,6 +59,7 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.jank.InteractionJankMonitor;
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.WindowManagerShellWrapper;
|
||||
import com.android.wm.shell.common.DisplayChangeController;
|
||||
@@ -85,6 +84,7 @@ import com.android.wm.shell.pip.PipSnapAlgorithm;
|
||||
import com.android.wm.shell.pip.PipTaskOrganizer;
|
||||
import com.android.wm.shell.pip.PipTransitionController;
|
||||
import com.android.wm.shell.pip.PipUtils;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
import com.android.wm.shell.transition.Transitions;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -282,7 +282,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb
|
||||
Optional<OneHandedController> oneHandedController,
|
||||
ShellExecutor mainExecutor) {
|
||||
if (!context.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE)) {
|
||||
Slog.w(TAG, "Device doesn't support Pip feature");
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Device doesn't support Pip feature", TAG);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -375,7 +376,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb
|
||||
try {
|
||||
mWindowManagerShellWrapper.addPinnedStackListener(mPinnedTaskListener);
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Failed to register pinned stack listener", e);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to register pinned stack listener, %s", TAG, e);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -387,7 +389,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb
|
||||
mPipInputConsumer.registerInputConsumer();
|
||||
}
|
||||
} catch (RemoteException | UnsupportedOperationException e) {
|
||||
Log.e(TAG, "Failed to register pinned stack listener", e);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to register pinned stack listener, %s", TAG, e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -724,7 +727,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb
|
||||
.getRootTaskInfo(WINDOWING_MODE_PINNED, ACTIVITY_TYPE_UNDEFINED);
|
||||
if (pinnedTaskInfo == null) return false;
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to get RootTaskInfo for pinned task", e);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to get RootTaskInfo for pinned task, %s", TAG, e);
|
||||
return false;
|
||||
}
|
||||
final PipSnapAlgorithm pipSnapAlgorithm = mPipBoundsAlgorithm.getSnapAlgorithm();
|
||||
@@ -870,7 +874,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb
|
||||
PipController.this.dump(pw);
|
||||
});
|
||||
} catch (InterruptedException e) {
|
||||
Slog.e(TAG, "Failed to dump PipController in 2s");
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to dump PipController in 2s", TAG);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,14 +22,15 @@ import android.os.Binder;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
import android.view.BatchedInputEventReceiver;
|
||||
import android.view.Choreographer;
|
||||
import android.view.IWindowManager;
|
||||
import android.view.InputChannel;
|
||||
import android.view.InputEvent;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.common.ShellExecutor;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -141,7 +142,8 @@ public class PipInputConsumer {
|
||||
mWindowManager.destroyInputConsumer(mName, DEFAULT_DISPLAY);
|
||||
mWindowManager.createInputConsumer(mToken, mName, DEFAULT_DISPLAY, inputChannel);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to create input consumer", e);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to create input consumer, %s", TAG, e);
|
||||
}
|
||||
mMainExecutor.execute(() -> {
|
||||
// Choreographer.getSfInstance() must be called on the thread that the input event
|
||||
@@ -165,7 +167,8 @@ public class PipInputConsumer {
|
||||
// TODO(b/113087003): Support Picture-in-picture in multi-display.
|
||||
mWindowManager.destroyInputConsumer(mName, DEFAULT_DISPLAY);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Failed to destroy input consumer", e);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to destroy input consumer, %s", TAG, e);
|
||||
}
|
||||
mInputEventReceiver.dispose();
|
||||
mInputEventReceiver = null;
|
||||
|
||||
@@ -47,7 +47,6 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.util.Size;
|
||||
import android.view.KeyEvent;
|
||||
@@ -60,11 +59,13 @@ import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.Interpolators;
|
||||
import com.android.wm.shell.common.ShellExecutor;
|
||||
import com.android.wm.shell.pip.PipUiEventLogger;
|
||||
import com.android.wm.shell.pip.PipUtils;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -423,7 +424,7 @@ public class PipMenuView extends FrameLayout {
|
||||
|
||||
/**
|
||||
* @return Estimated minimum {@link Size} to hold the actions.
|
||||
* See also {@link #updateActionViews(Rect)}
|
||||
* See also {@link #updateActionViews(Rect)}
|
||||
*/
|
||||
Size getEstimatedMinMenuSize() {
|
||||
final int pipActionSize = getResources().getDimensionPixelSize(R.dimen.pip_action_size);
|
||||
@@ -505,7 +506,8 @@ public class PipMenuView extends FrameLayout {
|
||||
try {
|
||||
action.getActionIntent().send();
|
||||
} catch (CanceledException e) {
|
||||
Log.w(TAG, "Failed to send action", e);
|
||||
ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to send action, %s", TAG, e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -34,12 +34,12 @@ import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Debug;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
import android.view.Choreographer;
|
||||
|
||||
import androidx.dynamicanimation.animation.AnimationHandler;
|
||||
import androidx.dynamicanimation.animation.AnimationHandler.FrameCallbackScheduler;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.FloatProperties;
|
||||
import com.android.wm.shell.animation.PhysicsAnimator;
|
||||
@@ -49,6 +49,7 @@ import com.android.wm.shell.pip.PipBoundsState;
|
||||
import com.android.wm.shell.pip.PipSnapAlgorithm;
|
||||
import com.android.wm.shell.pip.PipTaskOrganizer;
|
||||
import com.android.wm.shell.pip.PipTransitionController;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -354,8 +355,9 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
|
||||
*/
|
||||
private void expandLeavePip(boolean skipAnimation, boolean enterSplit) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "exitPip: skipAnimation=" + skipAnimation
|
||||
+ " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: exitPip: skipAnimation=%s"
|
||||
+ " callers=\n%s", TAG, skipAnimation, Debug.getCallers(5, " "));
|
||||
}
|
||||
cancelPhysicsAnimation();
|
||||
mMenuController.hideMenu(ANIM_TYPE_NONE, false /* resize */);
|
||||
@@ -368,7 +370,8 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
|
||||
@Override
|
||||
public void dismissPip() {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "removePip: callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: removePip: callers=\n%s", TAG, Debug.getCallers(5, " "));
|
||||
}
|
||||
cancelPhysicsAnimation();
|
||||
mMenuController.hideMenu(ANIM_TYPE_DISMISS, false /* resize */);
|
||||
@@ -552,8 +555,10 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
|
||||
*/
|
||||
void animateToOffset(Rect originalBounds, int offset) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "animateToOffset: originalBounds=" + originalBounds + " offset=" + offset
|
||||
+ " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: animateToOffset: originalBounds=%s offset=%s"
|
||||
+ " callers=\n%s", TAG, originalBounds, offset,
|
||||
Debug.getCallers(5, " "));
|
||||
}
|
||||
cancelPhysicsAnimation();
|
||||
mPipTaskOrganizer.scheduleOffsetPip(originalBounds, offset, SHIFT_DURATION,
|
||||
@@ -671,8 +676,9 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
|
||||
*/
|
||||
private void resizePipUnchecked(Rect toBounds) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "resizePipUnchecked: toBounds=" + toBounds
|
||||
+ " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: resizePipUnchecked: toBounds=%s"
|
||||
+ " callers=\n%s", TAG, toBounds, Debug.getCallers(5, " "));
|
||||
}
|
||||
if (!toBounds.equals(getBounds())) {
|
||||
mPipTaskOrganizer.scheduleResizePip(toBounds, mUpdateBoundsCallback);
|
||||
@@ -684,8 +690,10 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
|
||||
*/
|
||||
private void resizeAndAnimatePipUnchecked(Rect toBounds, int duration) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "resizeAndAnimatePipUnchecked: toBounds=" + toBounds
|
||||
+ " duration=" + duration + " callers=\n" + Debug.getCallers(5, " "));
|
||||
ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: resizeAndAnimatePipUnchecked: toBounds=%s"
|
||||
+ " duration=%s callers=\n%s", TAG, toBounds, duration,
|
||||
Debug.getCallers(5, " "));
|
||||
}
|
||||
|
||||
// Intentionally resize here even if the current bounds match the destination bounds.
|
||||
|
||||
@@ -35,7 +35,6 @@ import android.graphics.Point;
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.util.Log;
|
||||
import android.util.Size;
|
||||
import android.view.InputEvent;
|
||||
import android.view.MotionEvent;
|
||||
@@ -46,6 +45,7 @@ import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.view.accessibility.AccessibilityWindowInfo;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.common.FloatingContentCoordinator;
|
||||
import com.android.wm.shell.common.ShellExecutor;
|
||||
@@ -54,6 +54,7 @@ import com.android.wm.shell.pip.PipBoundsAlgorithm;
|
||||
import com.android.wm.shell.pip.PipBoundsState;
|
||||
import com.android.wm.shell.pip.PipTaskOrganizer;
|
||||
import com.android.wm.shell.pip.PipUiEventLogger;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -1010,7 +1011,8 @@ public class PipTouchHandler {
|
||||
}
|
||||
final Size estimatedMinMenuSize = mMenuController.getEstimatedMinMenuSize();
|
||||
if (estimatedMinMenuSize == null) {
|
||||
Log.wtf(TAG, "Failed to get estimated menu size");
|
||||
ProtoLog.wtf(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Failed to get estimated menu size", TAG);
|
||||
return false;
|
||||
}
|
||||
final Rect currentBounds = mPipBoundsState.getBounds();
|
||||
|
||||
@@ -17,15 +17,15 @@
|
||||
package com.android.wm.shell.pip.phone;
|
||||
|
||||
import android.graphics.PointF;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.Display;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.VelocityTracker;
|
||||
import android.view.ViewConfiguration;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.common.ShellExecutor;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogGroup;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -104,7 +104,8 @@ public class PipTouchState {
|
||||
|
||||
mActivePointerId = ev.getPointerId(0);
|
||||
if (DEBUG) {
|
||||
Log.e(TAG, "Setting active pointer id on DOWN: " + mActivePointerId);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Setting active pointer id on DOWN: %d", TAG, mActivePointerId);
|
||||
}
|
||||
mLastTouch.set(ev.getRawX(), ev.getRawY());
|
||||
mDownTouch.set(mLastTouch);
|
||||
@@ -131,7 +132,8 @@ public class PipTouchState {
|
||||
addMovementToVelocityTracker(ev);
|
||||
int pointerIndex = ev.findPointerIndex(mActivePointerId);
|
||||
if (pointerIndex == -1) {
|
||||
Log.e(TAG, "Invalid active pointer id on MOVE: " + mActivePointerId);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Invalid active pointer id on MOVE: %d", TAG, mActivePointerId);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -168,8 +170,9 @@ public class PipTouchState {
|
||||
final int newPointerIndex = (pointerIndex == 0) ? 1 : 0;
|
||||
mActivePointerId = ev.getPointerId(newPointerIndex);
|
||||
if (DEBUG) {
|
||||
Log.e(TAG,
|
||||
"Relinquish active pointer id on POINTER_UP: " + mActivePointerId);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Relinquish active pointer id on POINTER_UP: %d",
|
||||
TAG, mActivePointerId);
|
||||
}
|
||||
mLastTouch.set(ev.getRawX(newPointerIndex), ev.getRawY(newPointerIndex));
|
||||
}
|
||||
@@ -189,7 +192,8 @@ public class PipTouchState {
|
||||
|
||||
int pointerIndex = ev.findPointerIndex(mActivePointerId);
|
||||
if (pointerIndex == -1) {
|
||||
Log.e(TAG, "Invalid active pointer id on UP: " + mActivePointerId);
|
||||
ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
|
||||
"%s: Invalid active pointer id on UP: %d", TAG, mActivePointerId);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@ public enum ShellProtoLogGroup implements IProtoLogGroup {
|
||||
"ShellBackPreview"),
|
||||
WM_SHELL_RECENT_TASKS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
|
||||
Consts.TAG_WM_SHELL),
|
||||
WM_SHELL_PICTURE_IN_PICTURE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG,
|
||||
false, Consts.TAG_WM_SHELL),
|
||||
TEST_GROUP(true, true, false, "WindowManagerShellProtoLogTest");
|
||||
|
||||
private final boolean mEnabled;
|
||||
|
||||
Reference in New Issue
Block a user