Collapse EventLogArray into ActiveGesture log.
EventLogArray is never used directly, only used as a super class of ActiveGestureLog. Simplifying the hierarchy to simplify follow-up changes.
Test: manually tried gestures in 3 button and gesture nav and checked logs
Bug: 227514916
Change-Id: I0916f969a776953ddc4886846ad2f4936566e7d7
diff --git a/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java b/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java
index fabfc4b..064395f 100644
--- a/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java
+++ b/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java
@@ -15,15 +15,17 @@
*/
package com.android.quickstep.util;
-import android.content.Context;
-
-import com.android.launcher3.logging.EventLogArray;
-import com.android.launcher3.util.MainThreadInitializedObject;
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Random;
/**
* A log to keep track of the active gesture.
*/
-public class ActiveGestureLog extends EventLogArray {
+public class ActiveGestureLog {
public static final ActiveGestureLog INSTANCE = new ActiveGestureLog();
@@ -33,7 +35,121 @@
*/
public static final String INTENT_EXTRA_LOG_TRACE_ID = "INTENT_EXTRA_LOG_TRACE_ID";
+ private static final int TYPE_ONE_OFF = 0;
+ private static final int TYPE_FLOAT = 1;
+ private static final int TYPE_INTEGER = 2;
+ private static final int TYPE_BOOL_TRUE = 3;
+ private static final int TYPE_BOOL_FALSE = 4;
+
+ private final String name;
+ private final EventEntry[] logs;
+ private int nextIndex;
+ private int mLogId;
+
private ActiveGestureLog() {
- super("touch_interaction_log", 40);
+ this.name = "touch_interaction_log";
+ this.logs = new EventEntry[40];
+ this.nextIndex = 0;
+ }
+
+ public void addLog(String event) {
+ addLog(TYPE_ONE_OFF, event, 0);
+ }
+
+ public void addLog(String event, int extras) {
+ addLog(TYPE_INTEGER, event, extras);
+ }
+
+ public void addLog(String event, boolean extras) {
+ addLog(extras ? TYPE_BOOL_TRUE : TYPE_BOOL_FALSE, event, 0);
+ }
+
+ private void addLog(int type, String event, float extras) {
+ // Merge the logs if it's a duplicate
+ int last = (nextIndex + logs.length - 1) % logs.length;
+ int secondLast = (nextIndex + logs.length - 2) % logs.length;
+ if (isEntrySame(logs[last], type, event) && isEntrySame(logs[secondLast], type, event)) {
+ logs[last].update(type, event, extras, mLogId);
+ logs[secondLast].duplicateCount++;
+ return;
+ }
+
+ if (logs[nextIndex] == null) {
+ logs[nextIndex] = new EventEntry();
+ }
+ logs[nextIndex].update(type, event, extras, mLogId);
+ nextIndex = (nextIndex + 1) % logs.length;
+ }
+
+ public void clear() {
+ Arrays.setAll(logs, (i) -> null);
+ }
+
+ public void dump(String prefix, PrintWriter writer) {
+ writer.println(prefix + "EventLog (" + name + ") history:");
+ SimpleDateFormat sdf = new SimpleDateFormat(" HH:mm:ss.SSSZ ", Locale.US);
+ Date date = new Date();
+
+ for (int i = 0; i < logs.length; i++) {
+ EventEntry log = logs[(nextIndex + logs.length - i - 1) % logs.length];
+ if (log == null) {
+ continue;
+ }
+ date.setTime(log.time);
+
+ StringBuilder msg = new StringBuilder(prefix).append(sdf.format(date))
+ .append(log.event);
+ switch (log.type) {
+ case TYPE_BOOL_FALSE:
+ msg.append(": false");
+ break;
+ case TYPE_BOOL_TRUE:
+ msg.append(": true");
+ break;
+ case TYPE_FLOAT:
+ msg.append(": ").append(log.extras);
+ break;
+ case TYPE_INTEGER:
+ msg.append(": ").append((int) log.extras);
+ break;
+ default: // fall out
+ }
+ if (log.duplicateCount > 0) {
+ msg.append(" & ").append(log.duplicateCount).append(" similar events");
+ }
+ msg.append(" traceId: ").append(log.traceId);
+ writer.println(msg);
+ }
+ }
+
+ /** Returns a 3 digit random number between 100-999 */
+ public int generateAndSetLogId() {
+ Random r = new Random();
+ mLogId = r.nextInt(900) + 100;
+ return mLogId;
+ }
+
+ private boolean isEntrySame(EventEntry entry, int type, String event) {
+ return entry != null && entry.type == type && entry.event.equals(event);
+ }
+
+ /** A single event entry. */
+ private static class EventEntry {
+
+ private int type;
+ private String event;
+ private float extras;
+ private long time;
+ private int duplicateCount;
+ private int traceId;
+
+ public void update(int type, String event, float extras, int traceId) {
+ this.type = type;
+ this.event = event;
+ this.extras = extras;
+ this.traceId = traceId;
+ time = System.currentTimeMillis();
+ duplicateCount = 0;
+ }
}
}
diff --git a/src/com/android/launcher3/logging/EventLogArray.java b/src/com/android/launcher3/logging/EventLogArray.java
deleted file mode 100644
index 3ecfb23..0000000
--- a/src/com/android/launcher3/logging/EventLogArray.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2019 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.logging;
-
-
-import android.util.Log;
-import java.io.PrintWriter;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Locale;
-import java.util.Random;
-
-/**
- * A utility class to record and log events. Events are stored in a fixed size array and old logs
- * are purged as new events come.
- */
-public class EventLogArray {
-
- private static final int TYPE_ONE_OFF = 0;
- private static final int TYPE_FLOAT = 1;
- private static final int TYPE_INTEGER = 2;
- private static final int TYPE_BOOL_TRUE = 3;
- private static final int TYPE_BOOL_FALSE = 4;
-
- private final String name;
- private final EventEntry[] logs;
- private int nextIndex;
- private int mLogId;
-
- public EventLogArray(String name, int size) {
- this.name = name;
- logs = new EventEntry[size];
- nextIndex = 0;
- }
-
- public void addLog(String event) {
- addLog(TYPE_ONE_OFF, event, 0);
- }
-
- public void addLog(String event, int extras) {
- addLog(TYPE_INTEGER, event, extras);
- }
-
- public void addLog(String event, boolean extras) {
- addLog(extras ? TYPE_BOOL_TRUE : TYPE_BOOL_FALSE, event, 0);
- }
-
- private void addLog(int type, String event, float extras) {
- // Merge the logs if its a duplicate
- int last = (nextIndex + logs.length - 1) % logs.length;
- int secondLast = (nextIndex + logs.length - 2) % logs.length;
- if (isEntrySame(logs[last], type, event) && isEntrySame(logs[secondLast], type, event)) {
- logs[last].update(type, event, extras, mLogId);
- logs[secondLast].duplicateCount++;
- return;
- }
-
- if (logs[nextIndex] == null) {
- logs[nextIndex] = new EventEntry();
- }
- logs[nextIndex].update(type, event, extras, mLogId);
- nextIndex = (nextIndex + 1) % logs.length;
- }
-
- public void clear() {
- Arrays.setAll(logs, (i) -> null);
- }
-
- public void dump(String prefix, PrintWriter writer) {
- writer.println(prefix + "EventLog (" + name + ") history:");
- SimpleDateFormat sdf = new SimpleDateFormat(" HH:mm:ss.SSSZ ", Locale.US);
- Date date = new Date();
-
- for (int i = 0; i < logs.length; i++) {
- EventEntry log = logs[(nextIndex + logs.length - i - 1) % logs.length];
- if (log == null) {
- continue;
- }
- date.setTime(log.time);
-
- StringBuilder msg = new StringBuilder(prefix).append(sdf.format(date))
- .append(log.event);
- switch (log.type) {
- case TYPE_BOOL_FALSE:
- msg.append(": false");
- break;
- case TYPE_BOOL_TRUE:
- msg.append(": true");
- break;
- case TYPE_FLOAT:
- msg.append(": ").append(log.extras);
- break;
- case TYPE_INTEGER:
- msg.append(": ").append((int) log.extras);
- break;
- default: // fall out
- }
- if (log.duplicateCount > 0) {
- msg.append(" & ").append(log.duplicateCount).append(" similar events");
- }
- msg.append(" traceId: ").append(log.traceId);
- writer.println(msg);
- }
- }
-
- /** Returns a 3 digit random number between 100-999 */
- public int generateAndSetLogId() {
- Random r = new Random();
- mLogId = r.nextInt(900) + 100;
- return mLogId;
- }
-
- private boolean isEntrySame(EventEntry entry, int type, String event) {
- return entry != null && entry.type == type && entry.event.equals(event);
- }
-
- /** A single event entry. */
- private static class EventEntry {
-
- private int type;
- private String event;
- private float extras;
- private long time;
- private int duplicateCount;
- private int traceId;
-
- public void update(int type, String event, float extras, int traceId) {
- this.type = type;
- this.event = event;
- this.extras = extras;
- this.traceId = traceId;
- time = System.currentTimeMillis();
- duplicateCount = 0;
- }
- }
-}