Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d4a89bf authored by Ibrahim Yilmaz's avatar Ibrahim Yilmaz Committed by Android (Google) Code Review
Browse files

Merge "[Minimal HUN] Log minimal HUN" into main

parents 10d1fca8 d68aafa0
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -68,6 +68,7 @@ import androidx.annotation.Nullable;
import com.android.app.animation.Interpolators;
import com.android.app.animation.Interpolators;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.ContrastColorUtil;
import com.android.internal.util.ContrastColorUtil;
@@ -1873,7 +1874,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
            SmartReplyConstants smartReplyConstants,
            SmartReplyConstants smartReplyConstants,
            SmartReplyController smartReplyController,
            SmartReplyController smartReplyController,
            FeatureFlags featureFlags,
            FeatureFlags featureFlags,
            IStatusBarService statusBarService) {
            IStatusBarService statusBarService,
            UiEventLogger uiEventLogger) {
        mEntry = entry;
        mEntry = entry;
        mAppName = appName;
        mAppName = appName;
        if (mMenuRow == null) {
        if (mMenuRow == null) {
@@ -1901,7 +1903,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
                    rivSubcomponentFactory,
                    rivSubcomponentFactory,
                    smartReplyConstants,
                    smartReplyConstants,
                    smartReplyController,
                    smartReplyController,
                    statusBarService);
                    statusBarService,
                    uiEventLogger
            );
        }
        }
        mOnUserInteractionCallback = onUserInteractionCallback;
        mOnUserInteractionCallback = onUserInteractionCallback;
        mBubblesManagerOptional = bubblesManagerOptional;
        mBubblesManagerOptional = bubblesManagerOptional;
+7 −2
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.VisibleForTesting;


import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.flags.Flags;
@@ -112,6 +113,7 @@ public class ExpandableNotificationRowController implements NotifViewController
    private final ExpandableNotificationRowDragController mDragController;
    private final ExpandableNotificationRowDragController mDragController;
    private final NotificationDismissibilityProvider mDismissibilityProvider;
    private final NotificationDismissibilityProvider mDismissibilityProvider;
    private final IStatusBarService mStatusBarService;
    private final IStatusBarService mStatusBarService;
    private final UiEventLogger mUiEventLogger;


    private final NotificationSettingsController mSettingsController;
    private final NotificationSettingsController mSettingsController;


@@ -230,7 +232,8 @@ public class ExpandableNotificationRowController implements NotifViewController
            NotificationSettingsController settingsController,
            NotificationSettingsController settingsController,
            ExpandableNotificationRowDragController dragController,
            ExpandableNotificationRowDragController dragController,
            NotificationDismissibilityProvider dismissibilityProvider,
            NotificationDismissibilityProvider dismissibilityProvider,
            IStatusBarService statusBarService) {
            IStatusBarService statusBarService,
            UiEventLogger uiEventLogger) {
        mView = view;
        mView = view;
        mListContainer = listContainer;
        mListContainer = listContainer;
        mRemoteInputViewSubcomponentFactory = rivSubcomponentFactory;
        mRemoteInputViewSubcomponentFactory = rivSubcomponentFactory;
@@ -265,6 +268,7 @@ public class ExpandableNotificationRowController implements NotifViewController
        mSmartReplyController = smartReplyController;
        mSmartReplyController = smartReplyController;
        mDismissibilityProvider = dismissibilityProvider;
        mDismissibilityProvider = dismissibilityProvider;
        mStatusBarService = statusBarService;
        mStatusBarService = statusBarService;
        mUiEventLogger = uiEventLogger;
    }
    }


    /**
    /**
@@ -298,7 +302,8 @@ public class ExpandableNotificationRowController implements NotifViewController
                mSmartReplyConstants,
                mSmartReplyConstants,
                mSmartReplyController,
                mSmartReplyController,
                mFeatureFlags,
                mFeatureFlags,
                mStatusBarService
                mStatusBarService,
                mUiEventLogger
        );
        );
        mView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
        mView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
        if (mAllowLongPress) {
        if (mAllowLongPress) {
+26 −0
Original line number Original line Diff line number Diff line
/*
 * 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
}
+22 −1
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.notification.row;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.app.Flags;
import android.app.Notification;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Context;
@@ -45,6 +46,7 @@ import android.widget.LinearLayout;
import androidx.annotation.MainThread;
import androidx.annotation.MainThread;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.res.R;
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.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation;
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.NotificationCustomViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationHeaderViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationHeaderViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
@@ -205,6 +208,7 @@ public class NotificationContentView extends FrameLayout implements Notification
    private int mUnrestrictedContentHeight;
    private int mUnrestrictedContentHeight;


    private boolean mContentAnimating;
    private boolean mContentAnimating;
    private UiEventLogger mUiEventLogger;


    public NotificationContentView(Context context, AttributeSet attrs) {
    public NotificationContentView(Context context, AttributeSet attrs) {
        super(context, attrs);
        super(context, attrs);
@@ -217,12 +221,14 @@ public class NotificationContentView extends FrameLayout implements Notification
            RemoteInputViewSubcomponent.Factory rivSubcomponentFactory,
            RemoteInputViewSubcomponent.Factory rivSubcomponentFactory,
            SmartReplyConstants smartReplyConstants,
            SmartReplyConstants smartReplyConstants,
            SmartReplyController smartReplyController,
            SmartReplyController smartReplyController,
            IStatusBarService statusBarService) {
            IStatusBarService statusBarService,
            UiEventLogger uiEventLogger) {
        mPeopleIdentifier = peopleNotificationIdentifier;
        mPeopleIdentifier = peopleNotificationIdentifier;
        mRemoteInputSubcomponentFactory = rivSubcomponentFactory;
        mRemoteInputSubcomponentFactory = rivSubcomponentFactory;
        mSmartReplyConstants = smartReplyConstants;
        mSmartReplyConstants = smartReplyConstants;
        mSmartReplyController = smartReplyController;
        mSmartReplyController = smartReplyController;
        mStatusBarService = statusBarService;
        mStatusBarService = statusBarService;
        mUiEventLogger = uiEventLogger;
        // We set root namespace so that we avoid searching children for id. Notification  might
        // 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
        // contain custom view and their ids may clash with ids already existing in shade or
        // notification panel
        // notification panel
@@ -552,6 +558,12 @@ public class NotificationContentView extends FrameLayout implements Notification
        mHeadsUpChild = child;
        mHeadsUpChild = child;
        mHeadsUpWrapper = NotificationViewWrapper.wrap(getContext(), child,
        mHeadsUpWrapper = NotificationViewWrapper.wrap(getContext(), child,
                mContainingNotification);
                mContainingNotification);

        if (Flags.compactHeadsUpNotification()
                && mHeadsUpWrapper instanceof NotificationCompactHeadsUpTemplateViewWrapper) {
            logCompactHUNShownEvent();
        }

        if (mContainingNotification != null) {
        if (mContainingNotification != null) {
            applySystemActions(mHeadsUpChild, mContainingNotification.getEntry());
            applySystemActions(mHeadsUpChild, mContainingNotification.getEntry());
        }
        }
@@ -559,6 +571,15 @@ public class NotificationContentView extends FrameLayout implements Notification
        updateShownWrapper(mVisibleType);
        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.
     * Sets the single-line view. Child may be null to remove the view.
     * @param child single-line content view to set
     * @param child single-line content view to set
+4 −1
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.internal.logging.MetricsLogger
import com.android.internal.logging.MetricsLogger
import com.android.internal.logging.UiEventLogger
import com.android.internal.statusbar.IStatusBarService
import com.android.internal.statusbar.IStatusBarService
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.FeatureFlags
@@ -108,6 +109,7 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
    private val dragController: ExpandableNotificationRowDragController = mock()
    private val dragController: ExpandableNotificationRowDragController = mock()
    private val dismissibilityProvider: NotificationDismissibilityProvider = mock()
    private val dismissibilityProvider: NotificationDismissibilityProvider = mock()
    private val statusBarService: IStatusBarService = mock()
    private val statusBarService: IStatusBarService = mock()
    private val uiEventLogger: UiEventLogger = mock()
    private lateinit var controller: ExpandableNotificationRowController
    private lateinit var controller: ExpandableNotificationRowController


    @Before
    @Before
@@ -147,7 +149,8 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() {
                settingsController,
                settingsController,
                dragController,
                dragController,
                dismissibilityProvider,
                dismissibilityProvider,
                statusBarService
                statusBarService,
                uiEventLogger
            )
            )
        whenever(view.childrenContainer).thenReturn(childrenContainer)
        whenever(view.childrenContainer).thenReturn(childrenContainer)


Loading