Adding more logging of the state to the bug report.

Bug: 28009206
Change-Id: I0efc513bb6fc5ea4c9724b0a411ca5d60a71f27e
This commit is contained in:
Winson
2016-04-05 15:33:35 -07:00
parent b20247636b
commit d72c315d5e
9 changed files with 212 additions and 13 deletions

View File

@@ -78,6 +78,9 @@ import com.android.systemui.recents.views.RecentsView;
import com.android.systemui.recents.views.SystemBarScrimViews;
import com.android.systemui.statusbar.BaseStatusBar;
import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
* The main Recents activity that is started from AlternateRecentsComponent.
*/
@@ -733,4 +736,20 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD
});
return true;
}
@Override
public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
super.dump(prefix, fd, writer, args);
String id = Integer.toHexString(System.identityHashCode(this));
writer.print(prefix); writer.print(TAG);
writer.print(" visible="); writer.print(mIsVisible ? "Y" : "N");
writer.print(" [0x"); writer.print(id); writer.print("]");
writer.println();
if (mRecentsView != null) {
mRecentsView.dump(prefix, writer);
}
EventBus.getDefault().dump(prefix, writer);
}
}

View File

@@ -30,6 +30,7 @@ import android.util.MutableBoolean;
import com.android.systemui.recents.misc.ReferenceCountedTrigger;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
@@ -652,19 +653,43 @@ public class EventBus extends BroadcastReceiver {
/**
* @return a dump of the current state of the EventBus
*/
public String dump() {
public void dump(String prefix, PrintWriter writer) {
writer.println(dumpInternal(prefix));
}
public String dumpInternal(String prefix) {
String innerPrefix = prefix + " ";
String innerInnerPrefix = innerPrefix + " ";
StringBuilder output = new StringBuilder();
output.append(prefix);
output.append("Registered class types:");
output.append("\n");
for (Class<?> clz : mSubscriberTypeMap.keySet()) {
output.append("\t");
ArrayList<Class<?>> subsciberTypes = new ArrayList<>(mSubscriberTypeMap.keySet());
Collections.sort(subsciberTypes, new Comparator<Class<?>>() {
@Override
public int compare(Class<?> o1, Class<?> o2) {
return o1.getSimpleName().compareTo(o2.getSimpleName());
}
});
for (int i = 0; i < subsciberTypes.size(); i++) {
Class<?> clz = subsciberTypes.get(i);
output.append(innerPrefix);
output.append(clz.getSimpleName());
output.append("\n");
}
output.append(prefix);
output.append("Event map:");
output.append("\n");
for (Class<?> clz : mEventTypeMap.keySet()) {
output.append("\t");
ArrayList<Class<?>> classes = new ArrayList<>(mEventTypeMap.keySet());
Collections.sort(classes, new Comparator<Class<?>>() {
@Override
public int compare(Class<?> o1, Class<?> o2) {
return o1.getSimpleName().compareTo(o2.getSimpleName());
}
});
for (int i = 0; i < classes.size(); i++) {
Class<?> clz = classes.get(i);
output.append(innerPrefix);
output.append(clz.getSimpleName());
output.append(" -> ");
output.append("\n");
@@ -673,7 +698,7 @@ public class EventBus extends BroadcastReceiver {
Object subscriber = handler.subscriber.getReference();
if (subscriber != null) {
String id = Integer.toHexString(System.identityHashCode(subscriber));
output.append("\t\t");
output.append(innerInnerPrefix);
output.append(subscriber.getClass().getSimpleName());
output.append(" [0x" + id + ", #" + handler.priority + "]");
output.append("\n");

View File

@@ -243,4 +243,14 @@ public class Utilities {
public static float dpToPx(Resources res, float dp) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, res.getDisplayMetrics());
}
/**
* Returns a lightweight dump of a rect.
*/
public static String dumpRect(Rect r) {
if (r == null) {
return "N:0,0-0,0";
}
return r.left + "," + r.top + "-" + r.right + "," + r.bottom;
}
}

View File

@@ -29,6 +29,7 @@ import com.android.systemui.recents.Recents;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.recents.misc.Utilities;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Objects;
@@ -37,6 +38,9 @@ import java.util.Objects;
* A task represents the top most task in the system's task stack.
*/
public class Task {
public static final String TAG = "Task";
/* Task callbacks */
public interface TaskCallbacks {
/* Notifies when a task has been bound */
@@ -100,7 +104,8 @@ public class Task {
@Override
public String toString() {
return "t" + id + ", s" + stackId + ", u" + userId;
return "id=" + id + " stackId=" + stackId + " user=" + userId + " lastActiveTime=" +
lastActiveTime;
}
private void updateHashCode() {
@@ -306,4 +311,13 @@ public class Task {
public String toString() {
return "[" + key.toString() + "] " + title;
}
public void dump(String prefix, PrintWriter writer) {
writer.print(prefix); writer.print(key);
if (affiliationTaskId != key.id) {
writer.print(" "); writer.print("affTaskId=" + affiliationTaskId);
}
writer.print(" "); writer.print(title);
writer.println();
}
}

View File

@@ -55,6 +55,7 @@ import com.android.systemui.recents.views.AnimationProps;
import com.android.systemui.recents.views.DropTarget;
import com.android.systemui.recents.views.TaskStackLayoutAlgorithm;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -208,6 +209,8 @@ class FilteredTaskList {
*/
public class TaskStack {
private static final String TAG = "TaskStack";
/** Task stack callbacks */
public interface TaskStackCallbacks {
/**
@@ -725,7 +728,9 @@ public class TaskStack {
/** Finds the task with the specified task id. */
public Task findTaskWithId(int taskId) {
ArrayList<Task> tasks = computeAllTasksList();
for (Task task : tasks) {
int taskCount = tasks.size();
for (int i = 0; i < taskCount; i++) {
Task task = tasks.get(i);
if (task.key.id == taskId) {
return task;
}
@@ -880,7 +885,10 @@ public class TaskStack {
ArraySet<ComponentName> existingComponents = new ArraySet<>();
ArraySet<ComponentName> removedComponents = new ArraySet<>();
ArrayList<Task.TaskKey> taskKeys = getTaskKeys();
for (Task.TaskKey t : taskKeys) {
int taskKeyCount = taskKeys.size();
for (int i = 0; i < taskKeyCount; i++) {
Task.TaskKey t = taskKeys.get(i);
// Skip if this doesn't apply to the current user
if (t.userId != userId) continue;
@@ -903,8 +911,10 @@ public class TaskStack {
@Override
public String toString() {
String str = "Stack Tasks (" + mStackTaskList.size() + "):\n";
for (Task t : mStackTaskList.getTasks()) {
str += " " + t.toString() + "\n";
ArrayList<Task> tasks = mStackTaskList.getTasks();
int taskCount = tasks.size();
for (int i = 0; i < taskCount; i++) {
str += " " + tasks.get(i).toString() + "\n";
}
return str;
}
@@ -921,4 +931,17 @@ public class TaskStack {
}
return map;
}
public void dump(String prefix, PrintWriter writer) {
String innerPrefix = prefix + " ";
writer.print(prefix); writer.print(TAG);
writer.print(" numStackTasks="); writer.print(mStackTaskList.size());
writer.println();
ArrayList<Task> tasks = mStackTaskList.getTasks();
int taskCount = tasks.size();
for (int i = 0; i < taskCount; i++) {
tasks.get(i).dump(innerPrefix, writer);
}
}
}

View File

@@ -74,6 +74,8 @@ import com.android.systemui.recents.views.RecentsTransitionHelper.AnimationSpecC
import com.android.systemui.stackdivider.WindowManagerProxy;
import com.android.systemui.statusbar.FlingAnimationUtils;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -83,6 +85,8 @@ import java.util.List;
*/
public class RecentsView extends FrameLayout {
private static final String TAG = "RecentsView";
private static final int DOCK_AREA_OVERLAY_TRANSITION_DURATION = 135;
private static final int DEFAULT_UPDATE_SCRIM_DURATION = 200;
private static final float DEFAULT_SCRIM_ALPHA = 0.33f;
@@ -758,4 +762,22 @@ public class RecentsView extends FrameLayout {
top + mStackActionButton.getMeasuredHeight());
return actionButtonRect;
}
public void dump(String prefix, PrintWriter writer) {
String innerPrefix = prefix + " ";
String id = Integer.toHexString(System.identityHashCode(this));
writer.print(prefix); writer.print(TAG);
writer.print(" awaitingFirstLayout="); writer.print(mAwaitingFirstLayout ? "Y" : "N");
writer.print(" insets="); writer.print(Utilities.dumpRect(mSystemInsets));
writer.print(" [0x"); writer.print(id); writer.print("]");
writer.println();
if (mStack != null) {
mStack.dump(innerPrefix, writer);
}
if (mTaskStackView != null) {
mTaskStackView.dump(innerPrefix, writer);
}
}
}

View File

@@ -39,6 +39,7 @@ import com.android.systemui.recents.misc.Utilities;
import com.android.systemui.recents.model.Task;
import com.android.systemui.recents.model.TaskStack;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -109,6 +110,8 @@ class Range {
*/
public class TaskStackLayoutAlgorithm {
private static final String TAG = "TaskStackLayoutAlgorithm";
// The distribution of view bounds alpha
// XXX: This is a hack because you can currently set the max alpha to be > 1f
public static final float OUTLINE_ALPHA_MIN_VALUE = 0f;
@@ -684,7 +687,6 @@ public class TaskStackLayoutAlgorithm {
}
/**
*
* Returns the current stack state.
*/
public StackState getStackState() {
@@ -1157,4 +1159,44 @@ public class TaskStackLayoutAlgorithm {
mBackOfStackTransform.visible = true;
mFrontOfStackTransform.visible = true;
}
}
public void dump(String prefix, PrintWriter writer) {
String innerPrefix = prefix + " ";
writer.print(prefix); writer.print(TAG);
writer.write(" numStackTasks="); writer.write(mNumStackTasks);
writer.println();
writer.print(innerPrefix);
writer.print("insets="); writer.print(Utilities.dumpRect(mSystemInsets));
writer.print(" stack="); writer.print(Utilities.dumpRect(mStackRect));
writer.print(" task="); writer.print(Utilities.dumpRect(mTaskRect));
writer.print(" freeform="); writer.print(Utilities.dumpRect(mFreeformRect));
writer.print(" actionButton="); writer.print(Utilities.dumpRect(mStackActionButtonRect));
writer.println();
writer.print(innerPrefix);
writer.print("minScroll="); writer.print(mMinScrollP);
writer.print(" maxScroll="); writer.print(mMaxScrollP);
writer.print(" initialScroll="); writer.print(mInitialScrollP);
writer.println();
writer.print(innerPrefix);
writer.print("focusState="); writer.print(mFocusState);
writer.println();
if (mTaskIndexOverrideMap.size() > 0) {
for (int i = mTaskIndexOverrideMap.size() - 1; i >= 0; i--) {
int taskId = mTaskIndexOverrideMap.keyAt(i);
float x = mTaskIndexMap.get(taskId);
float overrideX = mTaskIndexOverrideMap.get(taskId, 0f);
writer.print(innerPrefix);
writer.print("taskId= "); writer.print(taskId);
writer.print(" x= "); writer.print(x);
writer.print(" overrideX= "); writer.print(overrideX);
writer.println();
}
}
}
}

View File

@@ -90,6 +90,7 @@ import com.android.systemui.recents.misc.Utilities;
import com.android.systemui.recents.model.Task;
import com.android.systemui.recents.model.TaskStack;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -102,6 +103,8 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
TaskStackLayoutAlgorithm.TaskStackLayoutAlgorithmCallbacks,
ViewPool.ViewPoolConsumer<TaskView, Task> {
private static final String TAG = "TaskStackView";
private final static String KEY_SAVED_STATE_SUPER = "saved_instance_state_super";
private final static String KEY_SAVED_STATE_LAYOUT_FOCUSED_STATE =
"saved_instance_state_layout_focused_state";
@@ -2067,4 +2070,37 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
mScreenPinningEnabled = ssp.getSystemSetting(getContext(),
Settings.System.LOCK_TO_APP_ENABLED) != 0;
}
public void dump(String prefix, PrintWriter writer) {
String innerPrefix = prefix + " ";
String id = Integer.toHexString(System.identityHashCode(this));
writer.print(prefix); writer.print(TAG);
writer.print(" hasDefRelayout=");
writer.print(mDeferredTaskViewLayoutAnimation != null ? "Y" : "N");
writer.print(" clipDirty="); writer.print(mTaskViewsClipDirty ? "Y" : "N");
writer.print(" awaitingFirstLayout="); writer.print(mAwaitingFirstLayout ? "Y" : "N");
writer.print(" initialState="); writer.print(mInitialState);
writer.print(" inMeasureLayout="); writer.print(mInMeasureLayout ? "Y" : "N");
writer.print(" enterAnimCompleted="); writer.print(mEnterAnimationComplete ? "Y" : "N");
writer.print(" touchExplorationOn="); writer.print(mTouchExplorationEnabled ? "Y" : "N");
writer.print(" screenPinningOn="); writer.print(mScreenPinningEnabled ? "Y" : "N");
writer.print(" numIgnoreTasks="); writer.print(mIgnoreTasks.size());
writer.print(" numViewPool="); writer.print(mViewPool.getViews().size());
writer.print(" stableStackBounds="); writer.print(Utilities.dumpRect(mStableStackBounds));
writer.print(" stackBounds="); writer.print(Utilities.dumpRect(mStackBounds));
writer.print(" stableWindow="); writer.print(Utilities.dumpRect(mStableWindowRect));
writer.print(" window="); writer.print(Utilities.dumpRect(mWindowRect));
writer.print(" [0x"); writer.print(id); writer.print("]");
writer.println();
if (mFocusedTask != null) {
writer.print(innerPrefix);
writer.print("Focused task: ");
mFocusedTask.dump(innerPrefix, writer);
}
mLayoutAlgorithm.dump(innerPrefix, writer);
mStackScroller.dump(innerPrefix, writer);
}
}

View File

@@ -30,6 +30,8 @@ import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.recents.misc.Utilities;
import java.io.PrintWriter;
/* The scrolling logic for a TaskStackView */
public class TaskStackViewScroller {
@@ -246,4 +248,10 @@ public class TaskStackViewScroller {
mScroller.abortAnimation();
}
}
public void dump(String prefix, PrintWriter writer) {
writer.print(prefix); writer.print(TAG);
writer.print(" stackScroll:"); writer.print(mStackScrollP);
writer.println();
}
}