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

Commit 3cc20a4e authored by Will Brockman's avatar Will Brockman
Browse files

Revert "Notification statsd logs: Notification panel."

This reverts commit 626f043a.

Reason for revert: Frequent sysui crashes - https://buganizer.corp.google.com/issues/150566246

Bug: 150566246
Bug: 146488473
Change-Id: I124127553d8b69201d990c12da1e49218292b5ff
parent 626f043a
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -48,17 +48,6 @@ public final class InstanceId implements Parcelable {
        return mId;
    }

    /**
     * Create a fake instance ID for testing purposes.  Not for production use. See also
     * InstanceIdSequenceFake, which is a testing replacement for InstanceIdSequence.
     * @param id The ID you want to assign.
     * @return new InstanceId.
     */
    @VisibleForTesting
    public static InstanceId fakeInstanceId(int id) {
        return new InstanceId(id);
    }

    @Override
    public int hashCode() {
        return mId;
+2 −13
Original line number Diff line number Diff line
@@ -43,8 +43,6 @@ import com.android.systemui.statusbar.notification.init.NotificationsController;
import com.android.systemui.statusbar.notification.init.NotificationsControllerImpl;
import com.android.systemui.statusbar.notification.init.NotificationsControllerStub;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.logging.NotificationPanelLogger;
import com.android.systemui.statusbar.notification.logging.NotificationPanelLoggerImpl;
import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager;
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
@@ -146,22 +144,13 @@ public interface NotificationsModule {
            @UiBackground Executor uiBgExecutor,
            NotificationEntryManager entryManager,
            StatusBarStateController statusBarStateController,
            NotificationLogger.ExpansionStateLogger expansionStateLogger,
            NotificationPanelLogger notificationPanelLogger) {
            NotificationLogger.ExpansionStateLogger expansionStateLogger) {
        return new NotificationLogger(
                notificationListener,
                uiBgExecutor,
                entryManager,
                statusBarStateController,
                expansionStateLogger,
                notificationPanelLogger);
    }

    /** Provides an instance of {@link NotificationPanelLogger} */
    @Singleton
    @Provides
    static NotificationPanelLogger provideNotificationPanelLogger() {
        return new NotificationPanelLoggerImpl();
                expansionStateLogger);
    }

    /** Provides an instance of {@link NotificationBlockingHelperManager} */
+1 −7
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ public class NotificationLogger implements StateListener {
    private final NotificationListenerService mNotificationListener;
    private final Executor mUiBgExecutor;
    private final NotificationEntryManager mEntryManager;
    private final NotificationPanelLogger mNotificationPanelLogger;
    private HeadsUpManager mHeadsUpManager;
    private final ExpansionStateLogger mExpansionStateLogger;

@@ -199,15 +198,13 @@ public class NotificationLogger implements StateListener {
            @UiBackground Executor uiBgExecutor,
            NotificationEntryManager entryManager,
            StatusBarStateController statusBarStateController,
            ExpansionStateLogger expansionStateLogger,
            NotificationPanelLogger notificationPanelLogger) {
            ExpansionStateLogger expansionStateLogger) {
        mNotificationListener = notificationListener;
        mUiBgExecutor = uiBgExecutor;
        mEntryManager = entryManager;
        mBarService = IStatusBarService.Stub.asInterface(
                ServiceManager.getService(Context.STATUS_BAR_SERVICE));
        mExpansionStateLogger = expansionStateLogger;
        mNotificationPanelLogger = notificationPanelLogger;
        // Not expected to be destroyed, don't need to unsubscribe
        statusBarStateController.addCallback(this);

@@ -267,9 +264,6 @@ public class NotificationLogger implements StateListener {
        // (Note that in cases where the scroller does emit events, this
        // additional event doesn't break anything.)
        mNotificationLocationsChangedListener.onChildLocationsChanged();
        // TODO - determine if this work needs to be put on mUiBgExecutor
        mNotificationPanelLogger.logPanelShown(mListContainer.hasPulsingNotifications(),
                mEntryManager.getVisibleNotifications());
    }

    private void setDozing(boolean dozing) {
+0 −91
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 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.logging;

import android.annotation.Nullable;
import android.service.notification.StatusBarNotification;

import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;

import java.util.List;

import nano.Notifications;

/**
 * Statsd logging for notification panel.
 */
public interface NotificationPanelLogger {

    /**
     * Log a NOTIFICATION_PANEL_REPORTED statsd event.
     * @param visibleNotifications as provided by NotificationEntryManager.getVisibleNotifications()
     */
    void logPanelShown(boolean isLockscreen,
            @Nullable List<NotificationEntry> visibleNotifications);

    enum NotificationPanelEvent implements UiEventLogger.UiEventEnum {
        @UiEvent(doc = "Notification panel shown from status bar.")
        NOTIFICATION_PANEL_OPEN_STATUS_BAR(200),
        @UiEvent(doc = "Notification panel shown from lockscreen.")
        NOTIFICATION_PANEL_OPEN_LOCKSCREEN(201);

        private final int mId;
        NotificationPanelEvent(int id) {
            mId = id;
        }
        @Override public int getId() {
            return mId;
        }

        public static NotificationPanelEvent fromLockscreen(boolean isLockscreen) {
            return isLockscreen ? NOTIFICATION_PANEL_OPEN_LOCKSCREEN :
                    NOTIFICATION_PANEL_OPEN_STATUS_BAR;
        }
    }

    /**
     * Composes a NotificationsList proto from the list of visible notifications.
     * @param visibleNotifications as provided by NotificationEntryManager.getVisibleNotifications()
     * @return NotificationList proto suitable for SysUiStatsLog.write(NOTIFICATION_PANEL_REPORTED)
     */
    static Notifications.NotificationList toNotificationProto(
            @Nullable List<NotificationEntry> visibleNotifications) {
        Notifications.NotificationList notificationList = new Notifications.NotificationList();
        if (visibleNotifications == null) {
            return notificationList;
        }
        final Notifications.Notification[] nn =
                new Notifications.Notification[visibleNotifications.size()];
        int i = 0;
        for (NotificationEntry ne : visibleNotifications) {
            StatusBarNotification n = ne.getSbn();
            Notifications.Notification np = new Notifications.Notification();
            np.uid = n.getUid();
            np.packageName = n.getPackageName();
            np.instanceId = n.getInstanceId().getId();
            // TODO set np.groupInstanceId
            np.isGroupSummary = n.getNotification().isGroupSummary();
            np.section = 1 + ne.getBucket();  // We want 0 to mean not set / unknown
            nn[i] = np;
            ++i;
        }
        notificationList.notifications = nn;
        return notificationList;
    }
}
+0 −42
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 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.logging;

import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;

import com.google.protobuf.nano.MessageNano;

import java.util.List;

import nano.Notifications;

/**
 * Normal implementation of NotificationPanelLogger.
 */
public class NotificationPanelLoggerImpl implements NotificationPanelLogger {
    @Override
    public void logPanelShown(boolean isLockscreen,
            List<NotificationEntry> visibleNotifications) {
        final Notifications.NotificationList proto = NotificationPanelLogger.toNotificationProto(
                visibleNotifications);
        SysUiStatsLog.write(SysUiStatsLog.NOTIFICATION_PANEL_REPORTED,
                /* int event_id */ NotificationPanelEvent.fromLockscreen(isLockscreen).getId(),
                /* int num_notifications*/ proto.notifications.length,
                /* byte[] notifications*/ MessageNano.toByteArray(proto));
    }
}
Loading