Refactor UserEventDispatcher (1/2)
b/28269657
Change-Id: I1083e6f73f42ac1986428a39c6b532050e595ac6
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index 1af7668..bb70be6 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -27,12 +27,12 @@
import android.widget.FrameLayout;
import android.widget.TextView;
-import com.android.launcher3.logging.UserEventLogger;
+import com.android.launcher3.logging.UserEventDispatcher;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
public class Hotseat extends FrameLayout
- implements UserEventLogger.LaunchSourceProvider{
+ implements UserEventDispatcher.LaunchSourceProvider{
private CellLayout mContent;
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index f3f19e0..50b3d49 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -109,7 +109,7 @@
import com.android.launcher3.folder.Folder;
import com.android.launcher3.folder.FolderIcon;
import com.android.launcher3.logging.LoggerUtils;
-import com.android.launcher3.logging.UserEventLogger;
+import com.android.launcher3.logging.UserEventDispatcher;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.util.ComponentKey;
@@ -360,7 +360,7 @@
int appWidgetId;
}
- private UserEventLogger mUserEventLogger;
+ private UserEventDispatcher mUserEventDispatcher;
public FocusIndicatorView mFocusHandler;
private boolean mRotationEnabled = false;
@@ -419,8 +419,6 @@
mDragController = new DragController(this);
mStateTransitionAnimation = new LauncherStateTransitionAnimation(this);
- initLogger();
-
mAppWidgetManager = AppWidgetManagerCompat.getInstance(this);
mAppWidgetHost = new LauncherAppWidgetHost(this, APPWIDGET_HOST_ID);
@@ -636,31 +634,36 @@
* Since most user event logging is done on the UI, the object is retrieved from the
* callback for convenience.
*/
- private void initLogger() {
- if (mLauncherCallbacks != null) {
- mUserEventLogger = mLauncherCallbacks.getLogger();
- }
- if (mUserEventLogger == null) {
- mUserEventLogger = new UserEventLogger() {
- @Override
- public void processEvent(LauncherLogProto.LauncherEvent ev) {
- if (!DEBUG_LOGGING) {
- return;
- }
- Log.d("UserEvent", String.format(Locale.US,
- "action:%s\nchild:%s\nparent:%s\nelapsed container %d ms session %d ms",
- LoggerUtils.getActionStr(ev.action),
- LoggerUtils.getTargetStr(ev.srcTarget[0]),
- LoggerUtils.getTargetStr(ev.srcTarget[1]),
- ev.elapsedContainerMillis,
- ev.elapsedSessionMillis));
+ private UserEventDispatcher createUserEventDispatcher() {
+ return new UserEventDispatcher() {
+ @Override
+ public void dispatchUserEvent(LauncherLogProto.LauncherEvent ev, Intent intent) {
+ if (!DEBUG_LOGGING) {
+ return;
}
- };
- }
+ Log.d("UserEvent", String.format(Locale.US,
+ "action:%s\nchild:%s\nparent:%s\nelapsed container %d ms session %d ms",
+ LoggerUtils.getActionStr(ev.action),
+ LoggerUtils.getTargetStr(ev.srcTarget[0]),
+ LoggerUtils.getTargetStr(ev.srcTarget[1]),
+ ev.elapsedContainerMillis,
+ ev.elapsedSessionMillis));
+ }
+ };
}
- public UserEventLogger getLogger() {
- return mUserEventLogger;
+ public UserEventDispatcher getUserEventDispatcher() {
+ if (mLauncherCallbacks != null) {
+ UserEventDispatcher dispatcher = mLauncherCallbacks.getUserEventDispatcher();
+ if (dispatcher != null) {
+ return dispatcher;
+ }
+ }
+
+ if (mUserEventDispatcher == null) {
+ mUserEventDispatcher = createUserEventDispatcher();
+ }
+ return mUserEventDispatcher;
}
public boolean isDraggingEnabled() {
@@ -990,7 +993,7 @@
}
super.onResume();
- mUserEventLogger.resetElapsedSessionMillis();
+ getUserEventDispatcher().resetElapsedSessionMillis();
// Restore the previous launcher state
if (mOnResumeState == State.WORKSPACE) {
@@ -2688,7 +2691,7 @@
}
boolean success = startActivitySafely(v, intent, tag);
- mUserEventLogger.logLaunch(v, intent);
+ getUserEventDispatcher().logAppLaunch(v, intent);
if (success && v instanceof BubbleTextView) {
mWaitingForResume = (BubbleTextView) v;
@@ -3460,7 +3463,7 @@
List<ComponentKey> apps = mLauncherCallbacks.getPredictedApps();
if (apps != null) {
mAppsView.setPredictedApps(apps);
- mUserEventLogger.setPredictedApps(apps);
+ getUserEventDispatcher().setPredictedApps(apps);
}
}
}
diff --git a/src/com/android/launcher3/LauncherCallbacks.java b/src/com/android/launcher3/LauncherCallbacks.java
index 32ecdf6..89eef60 100644
--- a/src/com/android/launcher3/LauncherCallbacks.java
+++ b/src/com/android/launcher3/LauncherCallbacks.java
@@ -7,7 +7,7 @@
import android.view.View;
import com.android.launcher3.allapps.AllAppsSearchBarController;
-import com.android.launcher3.logging.UserEventLogger;
+import com.android.launcher3.logging.UserEventDispatcher;
import com.android.launcher3.util.ComponentKey;
import java.io.FileDescriptor;
@@ -76,7 +76,7 @@
/*
* Extensions points for adding / replacing some other aspects of the Launcher experience.
*/
- public UserEventLogger getLogger();
+ public UserEventDispatcher getUserEventDispatcher();
public Intent getFirstRunActivity();
public boolean hasFirstRunActivity();
public boolean hasDismissableIntroScreen();
diff --git a/src/com/android/launcher3/LauncherStateTransitionAnimation.java b/src/com/android/launcher3/LauncherStateTransitionAnimation.java
index c5ae9da..5692046 100644
--- a/src/com/android/launcher3/LauncherStateTransitionAnimation.java
+++ b/src/com/android/launcher3/LauncherStateTransitionAnimation.java
@@ -148,7 +148,7 @@
}
@Override
void onTransitionComplete() {
- mLauncher.getLogger().resetElapsedContainerMillis();
+ mLauncher.getUserEventDispatcher().resetElapsedContainerMillis();
if (startSearchAfterTransition) {
toView.startAppsSearch();
}
@@ -171,7 +171,7 @@
new PrivateTransitionCallbacks(FINAL_REVEAL_ALPHA_FOR_WIDGETS){
@Override
void onTransitionComplete() {
- mLauncher.getLogger().resetElapsedContainerMillis();
+ mLauncher.getUserEventDispatcher().resetElapsedContainerMillis();
}
});
}
@@ -470,7 +470,7 @@
}
@Override
void onTransitionComplete() {
- mLauncher.getLogger().resetElapsedContainerMillis();
+ mLauncher.getUserEventDispatcher().resetElapsedContainerMillis();
}
};
// Only animate the search bar if animating to spring loaded mode from all apps
@@ -500,7 +500,7 @@
}
@Override
void onTransitionComplete() {
- mLauncher.getLogger().resetElapsedContainerMillis();
+ mLauncher.getUserEventDispatcher().resetElapsedContainerMillis();
}
};
mCurrentAnimation = startAnimationToWorkspaceFromOverlay(
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 6b38f64..d55e124 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -72,7 +72,7 @@
import com.android.launcher3.dragndrop.SpringLoadedDragController;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.folder.FolderIcon;
-import com.android.launcher3.logging.UserEventLogger;
+import com.android.launcher3.logging.UserEventDispatcher;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import com.android.launcher3.util.LongArrayMap;
@@ -94,7 +94,7 @@
public class Workspace extends PagedView
implements DropTarget, DragSource, DragScroller, View.OnTouchListener,
DragController.DragListener, LauncherTransitionable, ViewGroup.OnHierarchyChangeListener,
- Insettable, DropTargetSource, AccessibilityDragSource, UserEventLogger.LaunchSourceProvider {
+ Insettable, DropTargetSource, AccessibilityDragSource, UserEventDispatcher.LaunchSourceProvider {
private static final String TAG = "Launcher.Workspace";
private static boolean ENFORCE_DRAG_EVENT_ORDER = false;
diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
index 32d444d..8d5ade3 100644
--- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
@@ -29,7 +29,7 @@
import com.android.launcher3.ItemInfo;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
-import com.android.launcher3.logging.UserEventLogger.LaunchSourceProvider;
+import com.android.launcher3.logging.UserEventDispatcher.LaunchSourceProvider;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import java.util.List;
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index b6be8e0..7dc8155 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -77,7 +77,7 @@
import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragController.DragListener;
import com.android.launcher3.dragndrop.DragLayer;
-import com.android.launcher3.logging.UserEventLogger.LaunchSourceProvider;
+import com.android.launcher3.logging.UserEventDispatcher.LaunchSourceProvider;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import com.android.launcher3.util.Thunk;
diff --git a/src/com/android/launcher3/logging/UserEventLogger.java b/src/com/android/launcher3/logging/UserEventDispatcher.java
similarity index 92%
rename from src/com/android/launcher3/logging/UserEventLogger.java
rename to src/com/android/launcher3/logging/UserEventDispatcher.java
index 606d343..89ad075 100644
--- a/src/com/android/launcher3/logging/UserEventLogger.java
+++ b/src/com/android/launcher3/logging/UserEventDispatcher.java
@@ -21,7 +21,6 @@
import android.view.ViewParent;
import com.android.launcher3.ItemInfo;
-import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
import com.android.launcher3.userevent.nano.LauncherLogProto.LauncherEvent;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
@@ -29,7 +28,10 @@
import java.util.List;
-public abstract class UserEventLogger {
+/**
+ * Manages the creation of {@link LauncherEvent}.
+ */
+public abstract class UserEventDispatcher {
private final static int MAXIMUM_VIEW_HIERARCHY_LEVEL = 5;
/**
@@ -70,7 +72,7 @@
return null;
}
- private String TAG = "UserEventLogger";
+ private String TAG = "UserEvent";
private long mElapsedContainerMillis;
private long mElapsedSessionMillis;
@@ -86,7 +88,7 @@
// intentHash required
// --------------------------------------------------------------
- protected LauncherEvent createLogEvent(View v) {
+ protected LauncherEvent createLauncherEvent(View v) {
LauncherEvent event = LoggerUtils.initLauncherEvent(
Action.TOUCH, Target.ITEM, Target.CONTAINER);
event.action.touch = Action.TAP;
@@ -105,8 +107,8 @@
return event;
}
- public void logLaunch(View v, Intent intent) {
- processEvent(createLogEvent(v));
+ public void logAppLaunch(View v, Intent intent) {
+ dispatchUserEvent(createLauncherEvent(v), intent);
}
public void logTap(View v) {
@@ -142,7 +144,7 @@
mActionDurationMillis = System.currentTimeMillis();
}
- public abstract void processEvent(LauncherLogProto.LauncherEvent ev);
+ public abstract void dispatchUserEvent(LauncherEvent ev, Intent intent);
public int getPredictedRank(ComponentKey key) {
if (mPredictedApps == null) return -1;
diff --git a/src/com/android/launcher3/testing/LauncherExtension.java b/src/com/android/launcher3/testing/LauncherExtension.java
index 0f8391c..8b6f5cd 100644
--- a/src/com/android/launcher3/testing/LauncherExtension.java
+++ b/src/com/android/launcher3/testing/LauncherExtension.java
@@ -12,7 +12,7 @@
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherCallbacks;
import com.android.launcher3.allapps.AllAppsSearchBarController;
-import com.android.launcher3.logging.UserEventLogger;
+import com.android.launcher3.logging.UserEventDispatcher;
import com.android.launcher3.util.ComponentKey;
import java.io.FileDescriptor;
@@ -189,7 +189,7 @@
}
@Override
- public UserEventLogger getLogger() { return null; }
+ public UserEventDispatcher getUserEventDispatcher() { return null; }
@Override
public View getQsbBar() {