diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2018-10-25 14:09:50 -0700 |
---|---|---|
committer | Hyunyoung Song <hyunyoungs@google.com> | 2018-11-05 11:41:38 -0800 |
commit | fc007479090e3a64d6e24534605fe08e7dc5bc96 (patch) | |
tree | 2f7d21d2f7119167740157471d03faeeba4b3f13 /quickstep/src/com/android/quickstep | |
parent | f107c9ef6ddc59763c1b60507c6ea7b09ecee8f9 (diff) | |
download | android_packages_apps_Trebuchet-fc007479090e3a64d6e24534605fe08e7dc5bc96.tar.gz android_packages_apps_Trebuchet-fc007479090e3a64d6e24534605fe08e7dc5bc96.tar.bz2 android_packages_apps_Trebuchet-fc007479090e3a64d6e24534605fe08e7dc5bc96.zip |
Add StatsLog*Manager for logging.
Bug: 113043444
Verification: (19) is our event classifier number
11-05 11:24:28.188 932 994 I statsd : { 1541445868000000000 766293363001 (19)0x10000->1[I] 0x20000->0[I] 0x30000->0[I] 0x40000->[S] 0x50000->1[I] }
Change-Id: I75403837f9fa8e51efa012fb708bce7efc9c4488
Diffstat (limited to 'quickstep/src/com/android/quickstep')
3 files changed, 109 insertions, 0 deletions
diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java new file mode 100644 index 000000000..2f411efc7 --- /dev/null +++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2018 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.quickstep.logging; + +import android.content.Context; +import android.content.Intent; +import android.stats.launcher.nano.LauncherExtension; +import android.stats.launcher.nano.LauncherTarget; + +import static android.stats.launcher.nano.Launcher.ALLAPPS; +import static android.stats.launcher.nano.Launcher.HOME; +import static android.stats.launcher.nano.Launcher.LAUNCH_APP; +import static android.stats.launcher.nano.Launcher.LAUNCH_TASK; +import static android.stats.launcher.nano.Launcher.BACKGROUND; +import static android.stats.launcher.nano.Launcher.OVERVIEW; + +import android.view.View; + +import com.android.launcher3.ItemInfo; +import com.android.launcher3.logging.StatsLogManager; +import com.android.launcher3.logging.StatsLogUtils; +import com.android.launcher3.userevent.nano.LauncherLogProto.Target; +import com.android.launcher3.util.ComponentKey; +import com.android.systemui.shared.system.StatsLogCompat; +import com.google.protobuf.nano.MessageNano; + +import androidx.annotation.Nullable; + +/** + * This method calls the StatsLog hidden method until they are made available public. + * + * To see if the logs are properly sent to statsd, execute following command. + * $ adb root && adb shell statsd + * $ adb shell cmd stats print-logs + * $ adb logcat | grep statsd OR $ adb logcat -b stats + */ +public class StatsLogCompatManager extends StatsLogManager { + + private static final int SUPPORTED_TARGET_DEPTH = 2; + + public StatsLogCompatManager(Context context) { } + + @Override + public void logAppLaunch(View v, Intent intent) { + LauncherExtension ext = new LauncherExtension(); + ext.srcTarget = new LauncherTarget[SUPPORTED_TARGET_DEPTH]; + int srcState = mStateProvider.getCurrentState(); + fillInLauncherExtension(v, ext); + StatsLogCompat.write(LAUNCH_APP, srcState, BACKGROUND /* dstState */, + MessageNano.toByteArray(ext), true); + } + + @Override + public void logTaskLaunch(View v, ComponentKey componentKey) { + LauncherExtension ext = new LauncherExtension(); + ext.srcTarget = new LauncherTarget[SUPPORTED_TARGET_DEPTH]; + int srcState = OVERVIEW; + fillInLauncherExtension(v, ext); + StatsLogCompat.write(LAUNCH_TASK, srcState, BACKGROUND /* dstState */, + MessageNano.toByteArray(ext), true); + } + + public static boolean fillInLauncherExtension(View v, LauncherExtension extension) { + StatsLogUtils.LogContainerProvider provider = StatsLogUtils.getLaunchProviderRecursive(v); + if (v == null || !(v.getTag() instanceof ItemInfo) || provider == null) { + return false; + } + ItemInfo itemInfo = (ItemInfo) v.getTag(); + Target child = new Target(); + Target parent = new Target(); + provider.fillInLogContainerData(v, itemInfo, child, parent); + copy(child, extension.srcTarget[0]); + copy(parent, extension.srcTarget[1]); + return true; + } + + private static void copy(Target src, LauncherTarget dst) { + // fill in + } + + @Override + public void verify() { + if(!(StatsLogUtils.LAUNCHER_STATE_ALLAPPS == ALLAPPS && + StatsLogUtils.LAUNCHER_STATE_BACKGROUND == BACKGROUND && + StatsLogUtils.LAUNCHER_STATE_OVERVIEW == OVERVIEW && + StatsLogUtils.LAUNCHER_STATE_HOME == HOME)) { + throw new IllegalStateException( + "StatsLogUtil constants doesn't match enums in launcher.proto"); + } + } +} diff --git a/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java b/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java index 6dff187ea..4392851c0 100644 --- a/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java +++ b/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java @@ -34,6 +34,7 @@ import com.android.systemui.shared.system.MetricsLoggerCompat; * quickstep interactions. */ @SuppressWarnings("unused") +@Deprecated public class UserEventDispatcherExtension extends UserEventDispatcher { private static final String TAG = "UserEventDispatcher"; diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index 2a4226faa..d34dc5b81 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -167,9 +167,12 @@ public class TaskView extends FrameLayout implements PageCallbacks { return; } launchTask(true /* animate */); + fromContext(context).getUserEventDispatcher().logTaskLaunchOrDismiss( Touch.TAP, Direction.NONE, getRecentsView().indexOfChild(this), TaskUtils.getLaunchComponentKeyForTask(getTask().key)); + fromContext(context).getStatsLogManager().logTaskLaunch(getRecentsView(), + TaskUtils.getLaunchComponentKeyForTask(getTask().key)); }); setOutlineProvider(new TaskOutlineProvider(getResources())); } |