summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ibrahim Yilmaz <iyz@google.com> 2024-07-18 18:28:38 +0000
committer Ibrahim Yilmaz <iyz@google.com> 2024-07-22 16:00:43 +0000
commitd68aafa0a19e8b9df4283c8e04eabf1fcd69262f (patch)
treecb872ce60132f405f940419b2c68cc1c389766c6
parent800e1d63a78697b75c02e808cf3a8adbdc7ef7ad (diff)
[Minimal HUN] Log minimal HUN
This CL logs when minimal HUN treatment is applied. Bug: 270709257 Flag: android.app.compact_heads_up_notification Test: Presubmit Change-Id: I5add176869d5039efdebee701a8971dc99150af0
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationCompactHeadsUpEvent.kt26
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java23
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt4
8 files changed, 72 insertions, 9 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index 1cbb16e3983a..06af980010be 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -68,6 +68,7 @@ import androidx.annotation.Nullable;
import com.android.app.animation.Interpolators;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.ContrastColorUtil;
@@ -1873,7 +1874,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
SmartReplyConstants smartReplyConstants,
SmartReplyController smartReplyController,
FeatureFlags featureFlags,
- IStatusBarService statusBarService) {
+ IStatusBarService statusBarService,
+ UiEventLogger uiEventLogger) {
mEntry = entry;
mAppName = appName;
if (mMenuRow == null) {
@@ -1901,7 +1903,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
rivSubcomponentFactory,
smartReplyConstants,
smartReplyController,
- statusBarService);
+ statusBarService,
+ uiEventLogger
+ );
}
mOnUserInteractionCallback = onUserInteractionCallback;
mBubblesManagerOptional = bubblesManagerOptional;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
index e59829bf3c99..4c76e3284dbe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
@@ -33,6 +33,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.UiEventLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
@@ -112,6 +113,7 @@ public class ExpandableNotificationRowController implements NotifViewController
private final ExpandableNotificationRowDragController mDragController;
private final NotificationDismissibilityProvider mDismissibilityProvider;
private final IStatusBarService mStatusBarService;
+ private final UiEventLogger mUiEventLogger;
private final NotificationSettingsController mSettingsController;
@@ -230,7 +232,8 @@ public class ExpandableNotificationRowController implements NotifViewController
NotificationSettingsController settingsController,
ExpandableNotificationRowDragController dragController,
NotificationDismissibilityProvider dismissibilityProvider,
- IStatusBarService statusBarService) {
+ IStatusBarService statusBarService,
+ UiEventLogger uiEventLogger) {
mView = view;
mListContainer = listContainer;
mRemoteInputViewSubcomponentFactory = rivSubcomponentFactory;
@@ -265,6 +268,7 @@ public class ExpandableNotificationRowController implements NotifViewController
mSmartReplyController = smartReplyController;
mDismissibilityProvider = dismissibilityProvider;
mStatusBarService = statusBarService;
+ mUiEventLogger = uiEventLogger;
}
/**
@@ -298,7 +302,8 @@ public class ExpandableNotificationRowController implements NotifViewController
mSmartReplyConstants,
mSmartReplyController,
mFeatureFlags,
- mStatusBarService
+ mStatusBarService,
+ mUiEventLogger
);
mView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
if (mAllowLongPress) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationCompactHeadsUpEvent.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationCompactHeadsUpEvent.kt
new file mode 100644
index 000000000000..ab5731c181dc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationCompactHeadsUpEvent.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2024 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.systemui.statusbar.notification.row
+
+import com.android.internal.logging.UiEvent
+import com.android.internal.logging.UiEventLogger
+
+enum class NotificationCompactHeadsUpEvent(val eventId: Int) : UiEventLogger.UiEventEnum {
+ @UiEvent(doc = "Minimal HUN is shown to the user") NOTIFICATION_COMPACT_HUN_SHOWN(1857);
+
+ override fun getId(): Int = eventId
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
index 646d0b11221b..3f4690282771 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.notification.row;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.app.Flags;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
@@ -45,6 +46,7 @@ import android.widget.LinearLayout;
import androidx.annotation.MainThread;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.logging.UiEventLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.res.R;
@@ -58,6 +60,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation;
+import com.android.systemui.statusbar.notification.row.wrapper.NotificationCompactHeadsUpTemplateViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationCustomViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationHeaderViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
@@ -205,6 +208,7 @@ public class NotificationContentView extends FrameLayout implements Notification
private int mUnrestrictedContentHeight;
private boolean mContentAnimating;
+ private UiEventLogger mUiEventLogger;
public NotificationContentView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -217,12 +221,14 @@ public class NotificationContentView extends FrameLayout implements Notification
RemoteInputViewSubcomponent.Factory rivSubcomponentFactory,
SmartReplyConstants smartReplyConstants,
SmartReplyController smartReplyController,
- IStatusBarService statusBarService) {
+ IStatusBarService statusBarService,
+ UiEventLogger uiEventLogger) {
mPeopleIdentifier = peopleNotificationIdentifier;
mRemoteInputSubcomponentFactory = rivSubcomponentFactory;
mSmartReplyConstants = smartReplyConstants;
mSmartReplyController = smartReplyController;
mStatusBarService = statusBarService;
+ mUiEventLogger = uiEventLogger;
// We set root namespace so that we avoid searching children for id. Notification might
// contain custom view and their ids may clash with ids already existing in shade or
// notification panel
@@ -552,6 +558,12 @@ public class NotificationContentView extends FrameLayout implements Notification
mHeadsUpChild = child;
mHeadsUpWrapper = NotificationViewWrapper.wrap(getContext(), child,
mContainingNotification);
+
+ if (Flags.compactHeadsUpNotification()
+ && mHeadsUpWrapper instanceof NotificationCompactHeadsUpTemplateViewWrapper) {
+ logCompactHUNShownEvent();
+ }
+
if (mContainingNotification != null) {
applySystemActions(mHeadsUpChild, mContainingNotification.getEntry());
}
@@ -559,6 +571,15 @@ public class NotificationContentView extends FrameLayout implements Notification
updateShownWrapper(mVisibleType);
}
+ private void logCompactHUNShownEvent() {
+ if (mUiEventLogger == null) {
+ return;
+ }
+
+ mUiEventLogger.log(
+ NotificationCompactHeadsUpEvent.NOTIFICATION_COMPACT_HUN_SHOWN);
+ }
+
/**
* Sets the single-line view. Child may be null to remove the view.
* @param child single-line content view to set
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt
index e738b616d227..c0057431f536 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt
@@ -25,6 +25,7 @@ import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.logging.MetricsLogger
+import com.android.internal.logging.UiEventLogger
import com.android.internal.statusbar.IStatusBarService
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.FeatureFlags
@@ -108,6 +109,7 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
private val dragController: ExpandableNotificationRowDragController = mock()
private val dismissibilityProvider: NotificationDismissibilityProvider = mock()
private val statusBarService: IStatusBarService = mock()
+ private val uiEventLogger: UiEventLogger = mock()
private lateinit var controller: ExpandableNotificationRowController
@Before
@@ -147,7 +149,8 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
settingsController,
dragController,
dismissibilityProvider,
- statusBarService
+ statusBarService,
+ uiEventLogger
)
whenever(view.childrenContainer).thenReturn(childrenContainer)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.kt
index 2bb610ac4449..699e8c30afde 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.kt
@@ -642,7 +642,7 @@ class NotificationContentViewTest : SysuiTestCase() {
return spy(NotificationContentView(mContext, /* attrs= */ null))
.apply {
- initialize(mPeopleNotificationIdentifier, mock(), mock(), mock(), mock())
+ initialize(mPeopleNotificationIdentifier, mock(), mock(), mock(), mock(), mock())
setContainingNotification(row)
setHeights(
/* smallHeight= */ contractedHeight,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
index c74a04f1c3e0..d7fdce2958f7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
@@ -54,6 +54,7 @@ import android.widget.RemoteViews;
import androidx.annotation.NonNull;
import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.UiEventLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.keyguard.TestScopeProvider;
import com.android.systemui.TestableDependency;
@@ -671,7 +672,8 @@ public class NotificationTestHelper {
mock(SmartReplyConstants.class),
mock(SmartReplyController.class),
mFeatureFlags,
- mock(IStatusBarService.class));
+ mock(IStatusBarService.class),
+ mock(UiEventLogger.class));
row.setAboveShelfChangedListener(aboveShelf -> { });
mBindStage.getStageParams(entry).requireContentViews(extraInflationFlags);
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
index 16dc50f96676..b8dec3146a47 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowBuilder.kt
@@ -27,6 +27,7 @@ import android.provider.DeviceConfig
import androidx.core.os.bundleOf
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags
import com.android.internal.logging.MetricsLogger
+import com.android.internal.logging.UiEventLogger
import com.android.internal.statusbar.IStatusBarService
import com.android.systemui.TestableDependency
import com.android.systemui.classifier.FalsingManagerFake
@@ -357,7 +358,8 @@ class ExpandableNotificationRowBuilder(
mSmartReplyConstants,
mSmartReplyController,
featureFlags,
- Mockito.mock(IStatusBarService::class.java)
+ Mockito.mock(IStatusBarService::class.java),
+ Mockito.mock(UiEventLogger::class.java)
)
row.setAboveShelfChangedListener { aboveShelf: Boolean -> }
mBindStage.getStageParams(entry).requireContentViews(extraInflationFlags)