diff options
12 files changed, 164 insertions, 91 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java index 210ea54baf58..ddcd4bd3a8e3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java @@ -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); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index 1eb9501ac076..f9ec88659eea 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -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(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java index f01457bc4c95..4cab6d336892 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java @@ -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; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java index da6d9804b29d..d7b69adf1241 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java @@ -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); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java index 71cff025a7a8..c4dadf1f739a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java @@ -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); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java index d3dc91515921..5b6c95eef561 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java @@ -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); } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java index 6e3a20d5f2b2..e57abc28bd0a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java @@ -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; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java index 225305bd5178..c0fa8c0a8898 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java @@ -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); } }); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java index 96fd59f0c911..f3789fd5a3d6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java @@ -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. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java index 350f2856e2bc..147a272f4645 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java @@ -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(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchState.java index 53303ff2b679..d7d69f27f9f8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchState.java @@ -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; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java b/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java index 1ddc0e7abeaf..64017e176fc3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/protolog/ShellProtoLogGroup.java @@ -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; |