diff options
| author | 2024-07-18 18:28:38 +0000 | |
|---|---|---|
| committer | 2024-07-22 16:00:43 +0000 | |
| commit | d68aafa0a19e8b9df4283c8e04eabf1fcd69262f (patch) | |
| tree | cb872ce60132f405f940419b2c68cc1c389766c6 | |
| parent | 800e1d63a78697b75c02e808cf3a8adbdc7ef7ad (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
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) |