Loading aconfig/launcher.aconfig +6 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,12 @@ flag { bug: "292269949" } flag { name: "enable_state_manager_proto_log" namespace: "launcher" description: "Enables tracking state manager logs in ProtoLog" bug: "292269949" } flag { name: "coordinate_workspace_scale" Loading quickstep/src_protolog/com/android/launcher3/util/StateManagerProtoLogProxy.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.util; import static com.android.launcher3.Flags.enableStateManagerProtoLog; import static com.android.quickstep.util.QuickstepProtoLogGroup.LAUNCHER_STATE_MANAGER; import androidx.annotation.NonNull; import com.android.internal.protolog.ProtoLog; /** * Proxy class used for StateManager ProtoLog support. */ public class StateManagerProtoLogProxy { public static void logGoToState( @NonNull Object fromState, @NonNull Object toState, @NonNull String trace) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.goToState: fromState: %s, toState: %s, partial trace:\n%s", fromState, toState, trace); } public static void logCreateAtomicAnimation( @NonNull Object fromState, @NonNull Object toState, @NonNull String trace) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.createAtomicAnimation: " + "fromState: %s, toState: %s, partial trace:\n%s", fromState, toState, trace); } public static void logOnStateTransitionStart(@NonNull Object state) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.onStateTransitionStart: state: %s", state); } public static void logOnStateTransitionEnd(@NonNull Object state) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.onStateTransitionEnd: state: %s", state); } public static void logCancelAnimation(boolean animationOngoing, @NonNull String trace) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.cancelAnimation: animation ongoing: %b, partial trace:\n%s", animationOngoing, trace); } } quickstep/src_protolog/com/android/quickstep/util/QuickstepProtoLogGroup.java +3 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,8 @@ import java.util.UUID; public enum QuickstepProtoLogGroup implements IProtoLogGroup { ACTIVE_GESTURE_LOG(true, true, false, "ActiveGestureLog"), RECENTS_WINDOW(true, true, Constants.DEBUG_RECENTS_WINDOW, "RecentsWindow"); RECENTS_WINDOW(true, true, Constants.DEBUG_RECENTS_WINDOW, "RecentsWindow"), LAUNCHER_STATE_MANAGER(true, true, Constants.DEBUG_STATE_MANAGER, "LauncherStateManager"); private final boolean mEnabled; private volatile boolean mLogToProto; Loading Loading @@ -97,6 +98,7 @@ public enum QuickstepProtoLogGroup implements IProtoLogGroup { private static final class Constants { private static final boolean DEBUG_RECENTS_WINDOW = false; private static final boolean DEBUG_STATE_MANAGER = true; // b/279059025, b/325463989 private static final int LOG_START_ID = (int) (UUID.nameUUIDFromBytes(QuickstepProtoLogGroup.class.getName().getBytes()) Loading src/com/android/launcher3/statemanager/StateManager.java +21 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3.statemanager; import static android.animation.ValueAnimator.areAnimatorsEnabled; import static com.android.launcher3.Flags.enableStateManagerProtoLog; import static com.android.launcher3.anim.AnimatorPlaybackController.callListenerCommandRecursively; import static com.android.launcher3.states.StateAnimationConfig.HANDLE_STATE_APPLY; import static com.android.launcher3.states.StateAnimationConfig.SKIP_ALL_ANIMATIONS; Loading @@ -39,6 +40,7 @@ import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.states.StateAnimationConfig.AnimationFlags; import com.android.launcher3.states.StateAnimationConfig.AnimationPropertyFlags; import com.android.launcher3.util.StateManagerProtoLogProxy; import java.io.PrintWriter; import java.util.ArrayList; Loading Loading @@ -243,7 +245,10 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, private void goToState( STATE_TYPE state, boolean animated, long delay, AnimatorListener listener) { if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logGoToState( mState, state, getTrimmedStackTrace("StateManager.goToState")); } else if (DEBUG) { Log.d(TAG, "goToState - fromState: " + mState + ", toState: " + state + ", partial trace:\n" + getTrimmedStackTrace("StateManager.goToState")); } Loading Loading @@ -331,7 +336,10 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, */ public AnimatorSet createAtomicAnimation( STATE_TYPE fromState, STATE_TYPE toState, StateAnimationConfig config) { if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logCreateAtomicAnimation( mState, toState, getTrimmedStackTrace("StateManager.createAtomicAnimation")); } else if (DEBUG) { Log.d(TAG, "createAtomicAnimation - fromState: " + fromState + ", toState: " + toState + ", partial trace:\n" + getTrimmedStackTrace( "StateManager.createAtomicAnimation")); Loading Loading @@ -408,7 +416,9 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, mState = state; mStatefulContainer.onStateSetStart(mState); if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logOnStateTransitionStart(state); } else if (DEBUG) { Log.d(TAG, "onStateTransitionStart - state: " + state); } for (int i = mListeners.size() - 1; i >= 0; i--) { Loading @@ -428,7 +438,9 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, setRestState(null); } if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logOnStateTransitionEnd(state); } else if (DEBUG) { Log.d(TAG, "onStateTransitionEnd - state: " + state); } for (int i = mListeners.size() - 1; i >= 0; i--) { Loading Loading @@ -468,7 +480,11 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, * Cancels the current animation. */ public void cancelAnimation() { if (DEBUG && mConfig.currentAnimation != null) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logCancelAnimation( mConfig.currentAnimation != null, getTrimmedStackTrace("StateManager.cancelAnimation")); } else if (DEBUG && mConfig.currentAnimation != null) { Log.d(TAG, "cancelAnimation - with ongoing animation" + ", partial trace:\n" + getTrimmedStackTrace("StateManager.cancelAnimation")); } Loading src_no_quickstep/com/android/launcher3/util/StateManagerProtoLogProxy.java 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.util; /** * Proxy class used for StateManager ProtoLog support. */ public class StateManagerProtoLogProxy { public static void logGoToState(Object fromState, Object toState, String trace) { } public static void logCreateAtomicAnimation(Object fromState, Object toState, String trace) { } public static void logOnStateTransitionStart(Object state) { } public static void logOnStateTransitionEnd(Object state) { } public static void logCancelAnimation(boolean animationOngoing, String trace) { } } Loading
aconfig/launcher.aconfig +6 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,12 @@ flag { bug: "292269949" } flag { name: "enable_state_manager_proto_log" namespace: "launcher" description: "Enables tracking state manager logs in ProtoLog" bug: "292269949" } flag { name: "coordinate_workspace_scale" Loading
quickstep/src_protolog/com/android/launcher3/util/StateManagerProtoLogProxy.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.util; import static com.android.launcher3.Flags.enableStateManagerProtoLog; import static com.android.quickstep.util.QuickstepProtoLogGroup.LAUNCHER_STATE_MANAGER; import androidx.annotation.NonNull; import com.android.internal.protolog.ProtoLog; /** * Proxy class used for StateManager ProtoLog support. */ public class StateManagerProtoLogProxy { public static void logGoToState( @NonNull Object fromState, @NonNull Object toState, @NonNull String trace) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.goToState: fromState: %s, toState: %s, partial trace:\n%s", fromState, toState, trace); } public static void logCreateAtomicAnimation( @NonNull Object fromState, @NonNull Object toState, @NonNull String trace) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.createAtomicAnimation: " + "fromState: %s, toState: %s, partial trace:\n%s", fromState, toState, trace); } public static void logOnStateTransitionStart(@NonNull Object state) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.onStateTransitionStart: state: %s", state); } public static void logOnStateTransitionEnd(@NonNull Object state) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.onStateTransitionEnd: state: %s", state); } public static void logCancelAnimation(boolean animationOngoing, @NonNull String trace) { if (!enableStateManagerProtoLog()) return; ProtoLog.d(LAUNCHER_STATE_MANAGER, "StateManager.cancelAnimation: animation ongoing: %b, partial trace:\n%s", animationOngoing, trace); } }
quickstep/src_protolog/com/android/quickstep/util/QuickstepProtoLogGroup.java +3 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,8 @@ import java.util.UUID; public enum QuickstepProtoLogGroup implements IProtoLogGroup { ACTIVE_GESTURE_LOG(true, true, false, "ActiveGestureLog"), RECENTS_WINDOW(true, true, Constants.DEBUG_RECENTS_WINDOW, "RecentsWindow"); RECENTS_WINDOW(true, true, Constants.DEBUG_RECENTS_WINDOW, "RecentsWindow"), LAUNCHER_STATE_MANAGER(true, true, Constants.DEBUG_STATE_MANAGER, "LauncherStateManager"); private final boolean mEnabled; private volatile boolean mLogToProto; Loading Loading @@ -97,6 +98,7 @@ public enum QuickstepProtoLogGroup implements IProtoLogGroup { private static final class Constants { private static final boolean DEBUG_RECENTS_WINDOW = false; private static final boolean DEBUG_STATE_MANAGER = true; // b/279059025, b/325463989 private static final int LOG_START_ID = (int) (UUID.nameUUIDFromBytes(QuickstepProtoLogGroup.class.getName().getBytes()) Loading
src/com/android/launcher3/statemanager/StateManager.java +21 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3.statemanager; import static android.animation.ValueAnimator.areAnimatorsEnabled; import static com.android.launcher3.Flags.enableStateManagerProtoLog; import static com.android.launcher3.anim.AnimatorPlaybackController.callListenerCommandRecursively; import static com.android.launcher3.states.StateAnimationConfig.HANDLE_STATE_APPLY; import static com.android.launcher3.states.StateAnimationConfig.SKIP_ALL_ANIMATIONS; Loading @@ -39,6 +40,7 @@ import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.states.StateAnimationConfig.AnimationFlags; import com.android.launcher3.states.StateAnimationConfig.AnimationPropertyFlags; import com.android.launcher3.util.StateManagerProtoLogProxy; import java.io.PrintWriter; import java.util.ArrayList; Loading Loading @@ -243,7 +245,10 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, private void goToState( STATE_TYPE state, boolean animated, long delay, AnimatorListener listener) { if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logGoToState( mState, state, getTrimmedStackTrace("StateManager.goToState")); } else if (DEBUG) { Log.d(TAG, "goToState - fromState: " + mState + ", toState: " + state + ", partial trace:\n" + getTrimmedStackTrace("StateManager.goToState")); } Loading Loading @@ -331,7 +336,10 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, */ public AnimatorSet createAtomicAnimation( STATE_TYPE fromState, STATE_TYPE toState, StateAnimationConfig config) { if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logCreateAtomicAnimation( mState, toState, getTrimmedStackTrace("StateManager.createAtomicAnimation")); } else if (DEBUG) { Log.d(TAG, "createAtomicAnimation - fromState: " + fromState + ", toState: " + toState + ", partial trace:\n" + getTrimmedStackTrace( "StateManager.createAtomicAnimation")); Loading Loading @@ -408,7 +416,9 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, mState = state; mStatefulContainer.onStateSetStart(mState); if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logOnStateTransitionStart(state); } else if (DEBUG) { Log.d(TAG, "onStateTransitionStart - state: " + state); } for (int i = mListeners.size() - 1; i >= 0; i--) { Loading @@ -428,7 +438,9 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, setRestState(null); } if (DEBUG) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logOnStateTransitionEnd(state); } else if (DEBUG) { Log.d(TAG, "onStateTransitionEnd - state: " + state); } for (int i = mListeners.size() - 1; i >= 0; i--) { Loading Loading @@ -468,7 +480,11 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>, * Cancels the current animation. */ public void cancelAnimation() { if (DEBUG && mConfig.currentAnimation != null) { if (enableStateManagerProtoLog()) { StateManagerProtoLogProxy.logCancelAnimation( mConfig.currentAnimation != null, getTrimmedStackTrace("StateManager.cancelAnimation")); } else if (DEBUG && mConfig.currentAnimation != null) { Log.d(TAG, "cancelAnimation - with ongoing animation" + ", partial trace:\n" + getTrimmedStackTrace("StateManager.cancelAnimation")); } Loading
src_no_quickstep/com/android/launcher3/util/StateManagerProtoLogProxy.java 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.util; /** * Proxy class used for StateManager ProtoLog support. */ public class StateManagerProtoLogProxy { public static void logGoToState(Object fromState, Object toState, String trace) { } public static void logCreateAtomicAnimation(Object fromState, Object toState, String trace) { } public static void logOnStateTransitionStart(Object state) { } public static void logOnStateTransitionEnd(Object state) { } public static void logCancelAnimation(boolean animationOngoing, String trace) { } }