Add log dumps for taskbar state

Test: created bugreport and checked logs
Bug: -
Change-Id: Ic0c2330b18c8daf181ae5b236e0c4b212d630fa3
This commit is contained in:
Schneider Victor-tulias
2021-12-15 13:09:39 -08:00
parent 47007fccce
commit fa0bfee97a
18 changed files with 290 additions and 13 deletions

View File

@@ -77,15 +77,18 @@ import com.android.quickstep.AnimatedFloat;
import com.android.systemui.shared.rotation.FloatingRotationButton;
import com.android.systemui.shared.rotation.RotationButton;
import com.android.systemui.shared.rotation.RotationButtonController;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.ViewTreeObserverWrapper;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.StringJoiner;
import java.util.function.IntPredicate;
/**
* Controller for managing nav bar buttons in taskbar
*/
public class NavbarButtonsViewController {
public class NavbarButtonsViewController implements TaskbarControllers.LoggableTaskbarController {
private final Rect mTempRect = new Rect();
@@ -645,6 +648,42 @@ public class NavbarButtonsViewController {
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "NavbarButtonsViewController:");
pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
pw.println(String.format(
"%s\tmLightIconColor=0x%s", prefix, Integer.toHexString(mLightIconColor)));
pw.println(String.format(
"%s\tmDarkIconColor=0x%s", prefix, Integer.toHexString(mDarkIconColor)));
pw.println(String.format(
"%s\tmFloatingRotationButtonBounds=%s", prefix, mFloatingRotationButtonBounds));
pw.println(String.format(
"%s\tmSysuiStateFlags=%s",
prefix,
QuickStepContract.getSystemUiStateString(mSysuiStateFlags)));
}
private static String getStateString(int flags) {
StringJoiner str = new StringJoiner("|");
str.add((flags & FLAG_SWITCHER_SUPPORTED) != 0 ? "FLAG_SWITCHER_SUPPORTED" : "");
str.add((flags & FLAG_IME_VISIBLE) != 0 ? "FLAG_IME_VISIBLE" : "");
str.add((flags & FLAG_ROTATION_BUTTON_VISIBLE) != 0 ? "FLAG_ROTATION_BUTTON_VISIBLE" : "");
str.add((flags & FLAG_A11Y_VISIBLE) != 0 ? "FLAG_A11Y_VISIBLE" : "");
str.add((flags & FLAG_ONLY_BACK_FOR_BOUNCER_VISIBLE) != 0
? "FLAG_ONLY_BACK_FOR_BOUNCER_VISIBLE" : "");
str.add((flags & FLAG_KEYGUARD_VISIBLE) != 0 ? "FLAG_KEYGUARD_VISIBLE" : "");
str.add((flags & FLAG_KEYGUARD_OCCLUDED) != 0 ? "FLAG_KEYGUARD_OCCLUDED" : "");
str.add((flags & FLAG_DISABLE_HOME) != 0 ? "FLAG_DISABLE_HOME" : "");
str.add((flags & FLAG_DISABLE_RECENTS) != 0 ? "FLAG_DISABLE_RECENTS" : "");
str.add((flags & FLAG_DISABLE_BACK) != 0 ? "FLAG_DISABLE_BACK" : "");
str.add((flags & FLAG_NOTIFICATION_SHADE_EXPANDED) != 0
? "FLAG_NOTIFICATION_SHADE_EXPANDED" : "");
str.add((flags & FLAG_SCREEN_PINNING_ACTIVE) != 0 ? "FLAG_SCREEN_PINNING_ACTIVE" : "");
return str.toString();
}
private class RotationButtonListener implements RotationButton.RotationButtonUpdatesCallback {
@Override
public void onVisibilityChanged(boolean isVisible) {

View File

@@ -34,10 +34,12 @@ import com.android.launcher3.util.MultiValueAlpha;
import com.android.quickstep.AnimatedFloat;
import com.android.systemui.shared.navigationbar.RegionSamplingHelper;
import java.io.PrintWriter;
/**
* Handles properties/data collection, then passes the results to our stashed handle View to render.
*/
public class StashedHandleViewController {
public class StashedHandleViewController implements TaskbarControllers.LoggableTaskbarController {
public static final int ALPHA_INDEX_STASHED = 0;
public static final int ALPHA_INDEX_HOME_DISABLED = 1;
@@ -200,4 +202,15 @@ public class StashedHandleViewController {
public boolean isStashedHandleVisible() {
return mStashedHandleView.getVisibility() == View.VISIBLE;
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "StashedHandleViewController:");
pw.println(String.format(
"%s\tisStashedHandleVisible=%b", prefix, isStashedHandleVisible()));
pw.println(String.format("%s\tmStashedHandleWidth=%dpx", prefix, mStashedHandleWidth));
pw.println(String.format("%s\tmStashedHandleHeight=%dpx", prefix, mStashedHandleHeight));
mRegionSamplingHelper.dump(prefix, pw);
}
}

View File

@@ -82,6 +82,8 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.WindowManagerWrapper;
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
import java.io.PrintWriter;
/**
* The {@link ActivityContext} with which we inflate Taskbar-related Views. This allows UI elements
* that are used by both Launcher and Taskbar (such as Folder) to reference a generic
@@ -656,4 +658,16 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
setTaskbarWindowFullscreen(true);
btv.post(() -> mControllers.taskbarPopupController.showForIcon(btv));
}
protected void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarActivityContext:");
pw.println(String.format(
"%s\tmNavMode=%s", prefix, mNavMode));
pw.println(String.format(
"%s\tmIsUserSetupComplete=%b", prefix, mIsUserSetupComplete));
pw.println(String.format(
"%s\tmWindowLayoutParams.height=%dpx", prefix, mWindowLayoutParams.height));
mControllers.dumpLogs(prefix + "\t", pw);
}
}

View File

@@ -19,17 +19,21 @@ import androidx.annotation.IntDef;
import com.android.quickstep.SystemUiProxy;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.StringJoiner;
/**
* Normally Taskbar will auto-hide when entering immersive (fullscreen) apps. This controller allows
* us to suspend that behavior in certain cases (e.g. opening a Folder or dragging an icon).
*/
public class TaskbarAutohideSuspendController {
public class TaskbarAutohideSuspendController implements
TaskbarControllers.LoggableTaskbarController {
public static final int FLAG_AUTOHIDE_SUSPEND_FULLSCREEN = 1 << 0;
public static final int FLAG_AUTOHIDE_SUSPEND_DRAGGING = 1 << 1;
@IntDef(flag = true, value = {
FLAG_AUTOHIDE_SUSPEND_FULLSCREEN,
FLAG_AUTOHIDE_SUSPEND_DRAGGING,
@@ -60,4 +64,21 @@ public class TaskbarAutohideSuspendController {
}
mSystemUiProxy.notifyTaskbarAutohideSuspend(mAutohideSuspendFlags != 0);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarAutohideSuspendController:");
pw.println(String.format(
"%s\tmAutohideSuspendFlags=%s", prefix, getStateString(mAutohideSuspendFlags)));
}
private static String getStateString(int flags) {
StringJoiner str = new StringJoiner("|");
str.add((flags & FLAG_AUTOHIDE_SUSPEND_FULLSCREEN) != 0
? "FLAG_AUTOHIDE_SUSPEND_FULLSCREEN" : "");
str.add((flags & FLAG_AUTOHIDE_SUSPEND_DRAGGING) != 0
? "FLAG_AUTOHIDE_SUSPEND_DRAGGING" : "");
return str.toString();
}
}

View File

@@ -18,9 +18,11 @@ package com.android.launcher3.taskbar;
import android.content.pm.ActivityInfo.Config;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.systemui.shared.rotation.RotationButtonController;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +32,7 @@ import java.util.List;
public class TaskbarControllers {
public final TaskbarActivityContext taskbarActivityContext;
public final TaskbarDragController taskbarDragController;
public final TaskbarNavButtonController navButtonController;
public final NavbarButtonsViewController navbarButtonsViewController;
@@ -45,6 +48,8 @@ public class TaskbarControllers {
public final TaskbarAutohideSuspendController taskbarAutohideSuspendController;
public final TaskbarPopupController taskbarPopupController;
@Nullable private LoggableTaskbarController[] mControllersToLog = null;
/** Do not store this controller, as it may change at runtime. */
@NonNull public TaskbarUIController uiController = TaskbarUIController.DEFAULT;
@@ -104,6 +109,14 @@ public class TaskbarControllers {
taskbarEduController.init(this);
taskbarPopupController.init(this);
mControllersToLog = new LoggableTaskbarController[] {
taskbarDragController, navButtonController, navbarButtonsViewController,
taskbarDragLayerController, taskbarScrimViewController, taskbarViewController,
taskbarUnfoldAnimationController, taskbarKeyguardController,
stashedHandleViewController, taskbarStashController, taskbarEduController,
taskbarAutohideSuspendController, taskbarPopupController
};
mAreAllControllersInitialized = true;
for (Runnable postInitCallback : mPostInitCallbacks) {
postInitCallback.run();
@@ -129,6 +142,8 @@ public class TaskbarControllers {
stashedHandleViewController.onDestroy();
taskbarAutohideSuspendController.onDestroy();
taskbarPopupController.onDestroy();
mControllersToLog = null;
}
/**
@@ -143,4 +158,23 @@ public class TaskbarControllers {
mPostInitCallbacks.add(callback);
}
}
protected void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarControllers:");
if (mControllersToLog == null) {
pw.println(String.format(
"%s\t%s", prefix, "All taskbar controllers have already been destroyed."));
return;
}
for (LoggableTaskbarController controller : mControllersToLog) {
controller.dumpLogs(prefix + "\t", pw);
}
rotationButtonController.dumpLogs(prefix + "\t", pw);
}
protected interface LoggableTaskbarController {
void dumpLogs(String prefix, PrintWriter pw);
}
}

View File

@@ -57,10 +57,14 @@ import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.ClipDescriptionCompat;
import com.android.systemui.shared.system.LauncherAppsCompat;
import java.io.PrintWriter;
import java.util.Arrays;
/**
* Handles long click on Taskbar items to start a system drag and drop operation.
*/
public class TaskbarDragController extends DragController<TaskbarActivityContext> {
public class TaskbarDragController extends DragController<TaskbarActivityContext> implements
TaskbarControllers.LoggableTaskbarController {
private final int mDragIconSize;
private final int[] mTempXY = new int[2];
@@ -415,4 +419,18 @@ public class TaskbarDragController extends DragController<TaskbarActivityContext
protected DropTarget getDefaultDropTarget(int[] dropCoordinates) {
return null;
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarDragController:");
pw.println(String.format("%s\tmDragIconSize=%dpx", prefix, mDragIconSize));
pw.println(String.format("%s\tmTempXY=%s", prefix, Arrays.toString(mTempXY)));
pw.println(String.format("%s\tmRegistrationX=%d", prefix, mRegistrationX));
pw.println(String.format("%s\tmRegistrationY=%d", prefix, mRegistrationY));
pw.println(String.format(
"%s\tmIsSystemDragInProgress=%b", prefix, mIsSystemDragInProgress));
pw.println(String.format(
"%s\tisInternalDragInProgess=%b", prefix, super.isDragging()));
}
}

View File

@@ -29,10 +29,12 @@ import com.android.launcher3.anim.AlphaUpdateListener;
import com.android.quickstep.AnimatedFloat;
import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
import java.io.PrintWriter;
/**
* Handles properties/data collection, then passes the results to TaskbarDragLayer to render.
*/
public class TaskbarDragLayerController {
public class TaskbarDragLayerController implements TaskbarControllers.LoggableTaskbarController {
private final TaskbarActivityContext mActivity;
private final TaskbarDragLayer mTaskbarDragLayer;
@@ -144,6 +146,16 @@ public class TaskbarDragLayerController {
mNavButtonDarkIntensityMultiplier.updateValue(1 - effectiveBgAlpha);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarDragLayerController:");
pw.println(String.format("%s\tmBgOffset=%.2f", prefix, mBgOffset.value));
pw.println(String.format("%s\tmFolderMargin=%dpx", prefix, mFolderMargin));
pw.println(String.format(
"%s\tmLastSetBackgroundAlpha=%.2f", prefix, mLastSetBackgroundAlpha));
}
/**
* Callbacks for {@link TaskbarDragLayer} to interact with its controller.
*/

View File

@@ -37,12 +37,13 @@ import com.android.launcher3.icons.BitmapInfo;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.uioverrides.PredictedAppIcon;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/** Handles the Taskbar Education flow. */
public class TaskbarEduController {
public class TaskbarEduController implements TaskbarControllers.LoggableTaskbarController {
private static final long WAVE_ANIM_DELAY = 250;
private static final long WAVE_ANIM_STAGGER = 50;
@@ -186,6 +187,18 @@ public class TaskbarEduController {
return waveAnim;
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarEduController:");
pw.println(String.format("%s\tisShowingEdu=%b", prefix, mTaskbarEduView != null));
pw.println(String.format("%s\tmWaveAnimTranslationY=%.2f", prefix, mWaveAnimTranslationY));
pw.println(String.format(
"%s\tmWaveAnimTranslationYReturnOvershoot=%.2f",
prefix,
mWaveAnimTranslationYReturnOvershoot));
}
/**
* Callbacks for {@link TaskbarEduView} to interact with its controller.
*/

View File

@@ -14,10 +14,14 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import com.android.systemui.shared.system.QuickStepContract;
import java.io.PrintWriter;
/**
* Controller for managing keyguard state for taskbar
*/
public class TaskbarKeyguardController {
public class TaskbarKeyguardController implements TaskbarControllers.LoggableTaskbarController {
private static final int KEYGUARD_SYSUI_FLAGS = SYSUI_STATE_BOUNCER_SHOWING |
SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_DEVICE_DOZING |
@@ -95,4 +99,16 @@ public class TaskbarKeyguardController {
public void onDestroy() {
mContext.unregisterReceiver(mScreenOffReceiver);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarKeyguardController:");
pw.println(String.format(
"%s\tmKeyguardSysuiFlags=%s",
prefix,
QuickStepContract.getSystemUiStateString(mKeyguardSysuiFlags)));
pw.println(String.format("%s\tmBouncerShowing=%b", prefix, mBouncerShowing));
pw.println(String.format("%s\tmIsScreenOff=%b", prefix, mIsScreenOff));
}
}

View File

@@ -54,6 +54,8 @@ import com.android.quickstep.TouchInteractionService;
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
import java.io.PrintWriter;
/**
* Class to manage taskbar lifecycle
*/
@@ -305,4 +307,13 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
public @Nullable TaskbarActivityContext getCurrentActivityContext() {
return mTaskbarActivityContext;
}
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarManager:");
if (mTaskbarActivityContext == null) {
pw.println(prefix + "\tTaskbarActivityContext: null");
} else {
mTaskbarActivityContext.dumpLogs(prefix + "\t", pw);
}
}
}

View File

@@ -29,6 +29,7 @@ import com.android.launcher3.util.IntSet;
import com.android.launcher3.util.ItemInfoMatcher;
import com.android.launcher3.util.LauncherBindableItemsContainer;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -196,4 +197,15 @@ public class TaskbarModelCallbacks implements
public void bindDeepShortcutMap(HashMap<ComponentKey, Integer> deepShortcutMapCopy) {
mControllers.taskbarPopupController.setDeepShortcutMap(deepShortcutMapCopy);
}
protected void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarModelCallbacks:");
pw.println(String.format("%s\thotseat items count=%s", prefix, mHotseatItems.size()));
if (mPredictedItems != null) {
pw.println(
String.format("%s\tpredicted items count=%s", prefix, mPredictedItems.size()));
}
pw.println(String.format("%s\tmBindInProgress=%b", prefix, mBindInProgress));
}
}

View File

@@ -33,6 +33,7 @@ import com.android.quickstep.OverviewCommandHelper;
import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.TouchInteractionService;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -41,7 +42,7 @@ import java.lang.annotation.RetentionPolicy;
* Handles all the functionality of the various buttons, making/routing the right calls into
* launcher or sysui/system.
*/
public class TaskbarNavButtonController {
public class TaskbarNavButtonController implements TaskbarControllers.LoggableTaskbarController {
/** Allow some time in between the long press for back and recents. */
static final int SCREEN_PIN_LONG_PRESS_THRESHOLD = 200;
@@ -50,6 +51,15 @@ public class TaskbarNavButtonController {
private long mLastScreenPinLongPress;
private boolean mScreenPinned;
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarNavButtonController:");
pw.println(String.format(
"%s\tmLastScreenPinLongPress=%dms", prefix, mLastScreenPinLongPress));
pw.println(String.format("%s\tmScreenPinned=%b", prefix, mScreenPinned));
}
@Retention(RetentionPolicy.SOURCE)
@IntDef(value = {
BUTTON_BACK,

View File

@@ -40,6 +40,7 @@ import com.android.launcher3.util.LauncherBindableItemsContainer;
import com.android.launcher3.util.PackageUserKey;
import com.android.launcher3.views.ActivityContext;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Objects;
import java.util.function.Predicate;
@@ -49,7 +50,7 @@ import java.util.stream.Stream;
/**
* Implements interfaces required to show and allow interacting with a PopupContainerWithArrow.
*/
public class TaskbarPopupController {
public class TaskbarPopupController implements TaskbarControllers.LoggableTaskbarController {
private static final SystemShortcut.Factory<TaskbarActivityContext>
APP_INFO = SystemShortcut.AppInfo::new;
@@ -157,6 +158,13 @@ public class TaskbarPopupController {
return container;
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarPopupController:");
mPopupDataProvider.dump(prefix + "\t", pw);
}
private class TaskbarPopupItemDragHandler implements
PopupContainerWithArrow.PopupItemDragHandler {

View File

@@ -25,10 +25,12 @@ import android.view.animation.PathInterpolator;
import com.android.quickstep.AnimatedFloat;
import com.android.quickstep.SystemUiProxy;
import java.io.PrintWriter;
/**
* Handles properties/data collection, and passes the results to {@link TaskbarScrimView} to render.
*/
public class TaskbarScrimViewController {
public class TaskbarScrimViewController implements TaskbarControllers.LoggableTaskbarController {
private static final float SCRIM_ALPHA = 0.6f;
@@ -94,4 +96,11 @@ public class TaskbarScrimViewController {
private void onClick() {
SystemUiProxy.INSTANCE.get(mActivity).onBackPressed();
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarScrimViewController:");
pw.println(String.format("%s\tmScrimAlpha.value=%.2f", prefix, mScrimAlpha.value));
}
}

View File

@@ -36,13 +36,15 @@ import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
import com.android.quickstep.AnimatedFloat;
import com.android.quickstep.SystemUiProxy;
import java.io.PrintWriter;
import java.util.StringJoiner;
import java.util.function.IntPredicate;
/**
* Coordinates between controllers such as TaskbarViewController and StashedHandleViewController to
* create a cohesive animation between stashed/unstashed states.
*/
public class TaskbarStashController {
public class TaskbarStashController implements TaskbarControllers.LoggableTaskbarController {
public static final int FLAG_IN_APP = 1 << 0;
public static final int FLAG_STASHED_IN_APP_MANUAL = 1 << 1; // long press, persisted
@@ -544,6 +546,34 @@ public class TaskbarStashController {
mControllers.rotationButtonController.onTaskbarStateChange(visible, stashed);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarStashController:");
pw.println(String.format("%s\tmStashedHeight=%dpx", prefix, mStashedHeight));
pw.println(String.format("%s\tmUnstashedHeight=%dpx", prefix, mUnstashedHeight));
pw.println(String.format("%s\tmIsStashed=%b", prefix, mIsStashed));
pw.println(String.format(
"%s\tappliedState=%s", prefix, getStateString(mStatePropertyHolder.mPrevFlags)));
pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
pw.println(String.format(
"%s\tmIsSystemGestureInProgress=%b", prefix, mIsSystemGestureInProgress));
pw.println(String.format("%s\tmIsImeShowing=%b", prefix, mIsImeShowing));
}
private static String getStateString(int flags) {
StringJoiner str = new StringJoiner("|");
str.add((flags & FLAG_IN_APP) != 0 ? "FLAG_IN_APP" : "");
str.add((flags & FLAG_STASHED_IN_APP_MANUAL) != 0 ? "FLAG_STASHED_IN_APP_MANUAL" : "");
str.add((flags & FLAG_STASHED_IN_APP_PINNED) != 0 ? "FLAG_STASHED_IN_APP_PINNED" : "");
str.add((flags & FLAG_STASHED_IN_APP_EMPTY) != 0 ? "FLAG_STASHED_IN_APP_EMPTY" : "");
str.add((flags & FLAG_STASHED_IN_APP_SETUP) != 0 ? "FLAG_STASHED_IN_APP_SETUP" : "");
str.add((flags & FLAG_STASHED_IN_APP_IME) != 0 ? "FLAG_STASHED_IN_APP_IME" : "");
str.add((flags & FLAG_IN_STASHED_LAUNCHER_STATE) != 0
? "FLAG_IN_STASHED_LAUNCHER_STATE" : "");
return str.toString();
}
private class StatePropertyHolder {
private final IntPredicate mStashCondition;

View File

@@ -23,10 +23,13 @@ import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator;
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener;
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
import java.io.PrintWriter;
/**
* Controls animation of taskbar icons when unfolding foldable devices
*/
public class TaskbarUnfoldAnimationController {
public class TaskbarUnfoldAnimationController implements
TaskbarControllers.LoggableTaskbarController {
private final ScopedUnfoldTransitionProgressProvider mUnfoldTransitionProgressProvider;
private final UnfoldMoveFromCenterAnimator mMoveFromCenterAnimator;
@@ -59,6 +62,11 @@ public class TaskbarUnfoldAnimationController {
mUnfoldTransitionProgressProvider.removeCallback(mTransitionListener);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarUnfoldAnimationController:");
}
private class TransitionListener implements TransitionProgressListener {
@Override

View File

@@ -39,10 +39,12 @@ import com.android.launcher3.util.LauncherBindableItemsContainer;
import com.android.launcher3.util.MultiValueAlpha;
import com.android.quickstep.AnimatedFloat;
import java.io.PrintWriter;
/**
* Handles properties/data collection, then passes the results to TaskbarView to render.
*/
public class TaskbarViewController {
public class TaskbarViewController implements TaskbarControllers.LoggableTaskbarController {
private static final Runnable NO_OP = () -> { };
public static final int ALPHA_INDEX_HOME = 0;
@@ -258,6 +260,12 @@ public class TaskbarViewController {
return mTaskbarView.isEventOverAnyItem(ev);
}
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "TaskbarViewController:");
mModelCallbacks.dumpLogs(prefix + "\t", pw);
}
/**
* Callbacks for {@link TaskbarView} to interact with its controller.
*/

View File

@@ -951,6 +951,7 @@ public class TouchInteractionService extends Service
RecentsModel.INSTANCE.get(this).dump("", pw);
pw.println("ProtoTrace:");
pw.println(" file=" + ProtoTracer.INSTANCE.get(this).getTraceFile());
mTaskbarManager.dumpLogs("", pw);
}
}