From e83189593a661d8098bbb7f82faa2e594f360443 Mon Sep 17 00:00:00 2001 From: Hilary Huo Date: Tue, 22 Jun 2021 13:03:44 -0700 Subject: [PATCH] [settings-pixel-search] Add ww logging to track slice fetching timeout Test: https://paste.googleplex.com/6310936320147456 Bug: 191297465 Change-Id: I0a4a65295e7290b55dccdb63830ff60c6838fbb2 --- .../logging/StatsLogCompatManager.java | 30 ++++++++++++++----- .../launcher3/logging/StatsLogManager.java | 8 +++++ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java index 719cb0a032..b1c9ed0361 100644 --- a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java +++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java @@ -151,6 +151,7 @@ public class StatsLogCompatManager extends StatsLogManager { private Optional mToState = Optional.empty(); private Optional mEditText = Optional.empty(); private SliceItem mSliceItem; + private LauncherAtom.Slice mSlice; StatsCompatLogger(Context context) { mContext = context; @@ -193,7 +194,7 @@ public class StatsLogCompatManager extends StatsLogManager { @Override public StatsLogger withContainerInfo(ContainerInfo containerInfo) { checkState(mItemInfo == DEFAULT_ITEM_INFO, - "ItemInfo and ContainerInfo are mutual exclusive; cannot log both."); + "ItemInfo and ContainerInfo are mutual exclusive; cannot log both."); this.mContainerInfo = Optional.of(containerInfo); return this; } @@ -218,9 +219,21 @@ public class StatsLogCompatManager extends StatsLogManager { @Override public StatsLogger withSliceItem(@NonNull SliceItem sliceItem) { + checkState(mItemInfo == DEFAULT_ITEM_INFO && mSlice == null, + "ItemInfo, Slice and SliceItem are mutual exclusive; cannot set more than one" + + " of them."); this.mSliceItem = checkNotNull(sliceItem, "expected valid sliceItem but received null"); - checkState(mItemInfo == DEFAULT_ITEM_INFO, - "ItemInfo and SliceItem are mutual exclusive; cannot log both."); + return this; + } + + @Override + public StatsLogger withSlice(LauncherAtom.Slice slice) { + checkState(mItemInfo == DEFAULT_ITEM_INFO && mSliceItem == null, + "ItemInfo, Slice and SliceItem are mutual exclusive; cannot set more than one" + + " of them."); + checkNotNull(slice, "expected valid slice but received null"); + checkNotNull(slice.getUri(), "expected valid slice uri but received null"); + this.mSlice = slice; return this; } @@ -231,13 +244,16 @@ public class StatsLogCompatManager extends StatsLogManager { } LauncherAppState appState = LauncherAppState.getInstanceNoCreate(); - if (mSliceItem != null) { + if (mSlice == null && mSliceItem != null) { + mSlice = LauncherAtom.Slice.newBuilder().setUri( + mSliceItem.getSlice().getUri().toString()).build(); + } + + if (mSlice != null) { Executors.MODEL_EXECUTOR.execute( () -> { LauncherAtom.ItemInfo.Builder itemInfoBuilder = - LauncherAtom.ItemInfo.newBuilder().setSlice( - LauncherAtom.Slice.newBuilder().setUri( - mSliceItem.getSlice().getUri().toString())); + LauncherAtom.ItemInfo.newBuilder().setSlice(mSlice); mContainerInfo.ifPresent(itemInfoBuilder::setContainerInfo); write(event, applyOverwrites(itemInfoBuilder.build())); }); diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java index ddff338510..79e5b5d04c 100644 --- a/src/com/android/launcher3/logging/StatsLogManager.java +++ b/src/com/android/launcher3/logging/StatsLogManager.java @@ -27,6 +27,7 @@ import androidx.annotation.Nullable; import androidx.slice.SliceItem; import com.android.launcher3.R; +import com.android.launcher3.logger.LauncherAtom; import com.android.launcher3.logger.LauncherAtom.ContainerInfo; import com.android.launcher3.logger.LauncherAtom.FromState; import com.android.launcher3.logger.LauncherAtom.ToState; @@ -599,6 +600,13 @@ public class StatsLogManager implements ResourceBasedOverride { return this; } + /** + * Sets logging fields from provided {@link LauncherAtom.Slice}. + */ + default StatsLogger withSlice(LauncherAtom.Slice slice) { + return this; + } + /** * Builds the final message and logs it as {@link EventEnum}. */