mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-18 18:28:20 +00:00
Add log dumps for taskbar state
Test: created bugreport and checked logs Bug: - Change-Id: Ic0c2330b18c8daf181ae5b236e0c4b212d630fa3
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user