Merge "Inline notif pipeline flag in NotificationsModule" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
65fa9cd02f
@@ -23,6 +23,7 @@ import android.service.notification.NotificationStats;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifCollection;
|
import com.android.systemui.statusbar.notification.collection.NotifCollection;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifCollection.CancellationReason;
|
import com.android.systemui.statusbar.notification.collection.NotifCollection.CancellationReason;
|
||||||
@@ -33,10 +34,13 @@ import com.android.systemui.statusbar.notification.collection.render.Notificatio
|
|||||||
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback;
|
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback;
|
||||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback for when a user interacts with a {@see ExpandableNotificationRow}. Sends relevant
|
* Callback for when a user interacts with a {@see ExpandableNotificationRow}. Sends relevant
|
||||||
* information about the interaction to the notification pipeline.
|
* information about the interaction to the notification pipeline.
|
||||||
*/
|
*/
|
||||||
|
@SysUISingleton
|
||||||
public class OnUserInteractionCallbackImpl implements OnUserInteractionCallback {
|
public class OnUserInteractionCallbackImpl implements OnUserInteractionCallback {
|
||||||
private final NotificationVisibilityProvider mVisibilityProvider;
|
private final NotificationVisibilityProvider mVisibilityProvider;
|
||||||
private final NotifCollection mNotifCollection;
|
private final NotifCollection mNotifCollection;
|
||||||
@@ -44,6 +48,7 @@ public class OnUserInteractionCallbackImpl implements OnUserInteractionCallback
|
|||||||
private final StatusBarStateController mStatusBarStateController;
|
private final StatusBarStateController mStatusBarStateController;
|
||||||
private final VisualStabilityCoordinator mVisualStabilityCoordinator;
|
private final VisualStabilityCoordinator mVisualStabilityCoordinator;
|
||||||
|
|
||||||
|
@Inject
|
||||||
public OnUserInteractionCallbackImpl(
|
public OnUserInteractionCallbackImpl(
|
||||||
NotificationVisibilityProvider visibilityProvider,
|
NotificationVisibilityProvider visibilityProvider,
|
||||||
NotifCollection notifCollection,
|
NotifCollection notifCollection,
|
||||||
|
|||||||
@@ -1,100 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2010 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.collection.legacy;
|
|
||||||
|
|
||||||
import static com.android.systemui.statusbar.phone.CentralSurfaces.SPEW;
|
|
||||||
|
|
||||||
import android.service.notification.StatusBarNotification;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.android.internal.statusbar.NotificationVisibility;
|
|
||||||
import com.android.systemui.statusbar.notification.NotificationEntryListener;
|
|
||||||
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.render.NotifShadeEventSource;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is some logic extracted from the
|
|
||||||
* {@link com.android.systemui.statusbar.phone.StatusBarNotificationPresenter}
|
|
||||||
* into a class that implements a new-pipeline interface so that the new pipeline can implement it
|
|
||||||
* correctly.
|
|
||||||
*
|
|
||||||
* Specifically, this is the logic which updates notifications when uiMode and screen properties
|
|
||||||
* change, and which closes the shade when the last notification disappears.
|
|
||||||
*/
|
|
||||||
public class LegacyNotificationPresenterExtensions implements NotifShadeEventSource {
|
|
||||||
private static final String TAG = "LegacyNotifPresenter";
|
|
||||||
private final NotificationEntryManager mEntryManager;
|
|
||||||
private boolean mEntryListenerAdded;
|
|
||||||
private Runnable mShadeEmptiedCallback;
|
|
||||||
private Runnable mNotifRemovedByUserCallback;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public LegacyNotificationPresenterExtensions(NotificationEntryManager entryManager) {
|
|
||||||
mEntryManager = entryManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ensureEntryListenerAdded() {
|
|
||||||
if (mEntryListenerAdded) return;
|
|
||||||
mEntryListenerAdded = true;
|
|
||||||
mEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
|
|
||||||
@Override
|
|
||||||
public void onEntryRemoved(
|
|
||||||
@NotNull NotificationEntry entry,
|
|
||||||
NotificationVisibility visibility,
|
|
||||||
boolean removedByUser,
|
|
||||||
int reason) {
|
|
||||||
StatusBarNotification old = entry.getSbn();
|
|
||||||
if (SPEW) {
|
|
||||||
Log.d(TAG, "removeNotification key=" + entry.getKey()
|
|
||||||
+ " old=" + old + " reason=" + reason);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (old != null && !mEntryManager.hasActiveNotifications()) {
|
|
||||||
if (mShadeEmptiedCallback != null) mShadeEmptiedCallback.run();
|
|
||||||
}
|
|
||||||
if (removedByUser) {
|
|
||||||
if (mNotifRemovedByUserCallback != null) mNotifRemovedByUserCallback.run();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setNotifRemovedByUserCallback(@NonNull Runnable callback) {
|
|
||||||
if (mNotifRemovedByUserCallback != null) {
|
|
||||||
throw new IllegalStateException("mNotifRemovedByUserCallback already set");
|
|
||||||
}
|
|
||||||
mNotifRemovedByUserCallback = callback;
|
|
||||||
ensureEntryListenerAdded();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setShadeEmptiedCallback(@NonNull Runnable callback) {
|
|
||||||
if (mShadeEmptiedCallback != null) {
|
|
||||||
throw new IllegalStateException("mShadeEmptiedCallback already set");
|
|
||||||
}
|
|
||||||
mShadeEmptiedCallback = callback;
|
|
||||||
ensureEntryListenerAdded();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.collection.legacy;
|
|
||||||
|
|
||||||
import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_NEUTRAL;
|
|
||||||
|
|
||||||
import android.service.notification.NotificationListenerService;
|
|
||||||
import android.service.notification.NotificationStats;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
|
||||||
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifCollection.CancellationReason;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
|
|
||||||
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback;
|
|
||||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback for when a user interacts with a {@see ExpandableNotificationRow}.
|
|
||||||
*/
|
|
||||||
public class OnUserInteractionCallbackImplLegacy implements OnUserInteractionCallback {
|
|
||||||
private final NotificationEntryManager mNotificationEntryManager;
|
|
||||||
private final NotificationVisibilityProvider mVisibilityProvider;
|
|
||||||
private final HeadsUpManager mHeadsUpManager;
|
|
||||||
private final StatusBarStateController mStatusBarStateController;
|
|
||||||
private final VisualStabilityManager mVisualStabilityManager;
|
|
||||||
private final GroupMembershipManager mGroupMembershipManager;
|
|
||||||
|
|
||||||
public OnUserInteractionCallbackImplLegacy(
|
|
||||||
NotificationEntryManager notificationEntryManager,
|
|
||||||
NotificationVisibilityProvider visibilityProvider,
|
|
||||||
HeadsUpManager headsUpManager,
|
|
||||||
StatusBarStateController statusBarStateController,
|
|
||||||
VisualStabilityManager visualStabilityManager,
|
|
||||||
GroupMembershipManager groupMembershipManager
|
|
||||||
) {
|
|
||||||
mNotificationEntryManager = notificationEntryManager;
|
|
||||||
mVisibilityProvider = visibilityProvider;
|
|
||||||
mHeadsUpManager = headsUpManager;
|
|
||||||
mStatusBarStateController = statusBarStateController;
|
|
||||||
mVisualStabilityManager = visualStabilityManager;
|
|
||||||
mGroupMembershipManager = groupMembershipManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback triggered when a user:
|
|
||||||
* 1. Manually dismisses a notification {@see ExpandableNotificationRow}.
|
|
||||||
* 2. Clicks on a notification with flag {@link android.app.Notification#FLAG_AUTO_CANCEL}.
|
|
||||||
* {@see StatusBarNotificationActivityStarter}
|
|
||||||
*
|
|
||||||
* @param groupSummaryToDismiss the group summary that should be dismissed
|
|
||||||
* along with this dismissal. If null, does not additionally
|
|
||||||
* dismiss any notifications.
|
|
||||||
*/
|
|
||||||
private void onDismiss(
|
|
||||||
NotificationEntry entry,
|
|
||||||
@NotificationListenerService.NotificationCancelReason int cancellationReason,
|
|
||||||
@Nullable NotificationEntry groupSummaryToDismiss
|
|
||||||
) {
|
|
||||||
int dismissalSurface = NotificationStats.DISMISSAL_SHADE;
|
|
||||||
if (mHeadsUpManager.isAlerting(entry.getKey())) {
|
|
||||||
dismissalSurface = NotificationStats.DISMISSAL_PEEK;
|
|
||||||
} else if (mStatusBarStateController.isDozing()) {
|
|
||||||
dismissalSurface = NotificationStats.DISMISSAL_AOD;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (groupSummaryToDismiss != null) {
|
|
||||||
onDismiss(groupSummaryToDismiss, cancellationReason, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
mNotificationEntryManager.performRemoveNotification(
|
|
||||||
entry.getSbn(),
|
|
||||||
new DismissedByUserStats(
|
|
||||||
dismissalSurface,
|
|
||||||
DISMISS_SENTIMENT_NEUTRAL,
|
|
||||||
mVisibilityProvider.obtain(entry, true)),
|
|
||||||
cancellationReason
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onImportanceChanged(NotificationEntry entry) {
|
|
||||||
mVisualStabilityManager.temporarilyAllowReordering();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param entry that is being dismissed
|
|
||||||
* @return the group summary to dismiss along with this entry if this is the last entry in
|
|
||||||
* the group. Else, returns null.
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
private NotificationEntry getGroupSummaryToDismiss(NotificationEntry entry) {
|
|
||||||
if (mGroupMembershipManager.isOnlyChildInGroup(entry)) {
|
|
||||||
NotificationEntry groupSummary = mGroupMembershipManager.getLogicalGroupSummary(entry);
|
|
||||||
return groupSummary.isDismissable() ? groupSummary : null;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@NonNull
|
|
||||||
public Runnable registerFutureDismissal(@NonNull NotificationEntry entry,
|
|
||||||
@CancellationReason int cancellationReason) {
|
|
||||||
NotificationEntry groupSummaryToDismiss = getGroupSummaryToDismiss(entry);
|
|
||||||
return () -> onDismiss(entry, cancellationReason, groupSummaryToDismiss);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.systemui.statusbar.notification.collection.provider
|
package com.android.systemui.statusbar.notification.collection.provider
|
||||||
|
|
||||||
import com.android.internal.statusbar.NotificationVisibility
|
import com.android.internal.statusbar.NotificationVisibility
|
||||||
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore
|
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry
|
||||||
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
|
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
|
||||||
@@ -25,6 +26,7 @@ import com.android.systemui.statusbar.notification.logging.NotificationLogger
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/** pipeline-agnostic implementation for getting [NotificationVisibility]. */
|
/** pipeline-agnostic implementation for getting [NotificationVisibility]. */
|
||||||
|
@SysUISingleton
|
||||||
class NotificationVisibilityProviderImpl @Inject constructor(
|
class NotificationVisibilityProviderImpl @Inject constructor(
|
||||||
private val notifDataStore: NotifLiveDataStore,
|
private val notifDataStore: NotifLiveDataStore,
|
||||||
private val notifCollection: CommonNotifCollection
|
private val notifCollection: CommonNotifCollection
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.systemui.statusbar.notification.collection.render;
|
package com.android.systemui.statusbar.notification.collection.render;
|
||||||
|
|
||||||
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
import com.android.systemui.statusbar.notification.collection.GroupEntry;
|
import com.android.systemui.statusbar.notification.collection.GroupEntry;
|
||||||
import com.android.systemui.statusbar.notification.collection.ListEntry;
|
import com.android.systemui.statusbar.notification.collection.ListEntry;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
||||||
@@ -28,10 +29,13 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides grouping information for notification entries including information about a group's
|
* Provides grouping information for notification entries including information about a group's
|
||||||
* expanded state.
|
* expanded state.
|
||||||
*/
|
*/
|
||||||
|
@SysUISingleton
|
||||||
public class GroupExpansionManagerImpl implements GroupExpansionManager, Coordinator {
|
public class GroupExpansionManagerImpl implements GroupExpansionManager, Coordinator {
|
||||||
private final GroupMembershipManager mGroupMembershipManager;
|
private final GroupMembershipManager mGroupMembershipManager;
|
||||||
private final Set<OnGroupExpansionChangeListener> mOnGroupChangeListeners = new HashSet<>();
|
private final Set<OnGroupExpansionChangeListener> mOnGroupChangeListeners = new HashSet<>();
|
||||||
@@ -39,6 +43,7 @@ public class GroupExpansionManagerImpl implements GroupExpansionManager, Coordin
|
|||||||
// Set of summary keys whose groups are expanded
|
// Set of summary keys whose groups are expanded
|
||||||
private final Set<NotificationEntry> mExpandedGroups = new HashSet<>();
|
private final Set<NotificationEntry> mExpandedGroups = new HashSet<>();
|
||||||
|
|
||||||
|
@Inject
|
||||||
public GroupExpansionManagerImpl(GroupMembershipManager groupMembershipManager) {
|
public GroupExpansionManagerImpl(GroupMembershipManager groupMembershipManager) {
|
||||||
mGroupMembershipManager = groupMembershipManager;
|
mGroupMembershipManager = groupMembershipManager;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,23 +41,19 @@ import com.android.systemui.statusbar.notification.AssistantFeedbackController;
|
|||||||
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
|
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
|
||||||
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||||
import com.android.systemui.statusbar.notification.NotificationEntryManagerLogger;
|
import com.android.systemui.statusbar.notification.NotificationEntryManagerLogger;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifCollection;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifInflaterImpl;
|
import com.android.systemui.statusbar.notification.collection.NotifInflaterImpl;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore;
|
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStoreImpl;
|
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStoreImpl;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifPipelineChoreographerModule;
|
import com.android.systemui.statusbar.notification.collection.NotifPipelineChoreographerModule;
|
||||||
import com.android.systemui.statusbar.notification.collection.coordinator.ShadeEventCoordinator;
|
import com.android.systemui.statusbar.notification.collection.coordinator.ShadeEventCoordinator;
|
||||||
import com.android.systemui.statusbar.notification.collection.coordinator.VisualStabilityCoordinator;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorsModule;
|
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorsModule;
|
||||||
import com.android.systemui.statusbar.notification.collection.inflation.BindEventManager;
|
import com.android.systemui.statusbar.notification.collection.inflation.BindEventManager;
|
||||||
import com.android.systemui.statusbar.notification.collection.inflation.BindEventManagerImpl;
|
import com.android.systemui.statusbar.notification.collection.inflation.BindEventManagerImpl;
|
||||||
import com.android.systemui.statusbar.notification.collection.inflation.NotifInflater;
|
import com.android.systemui.statusbar.notification.collection.inflation.NotifInflater;
|
||||||
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
|
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
|
||||||
import com.android.systemui.statusbar.notification.collection.inflation.OnUserInteractionCallbackImpl;
|
import com.android.systemui.statusbar.notification.collection.inflation.OnUserInteractionCallbackImpl;
|
||||||
import com.android.systemui.statusbar.notification.collection.legacy.LegacyNotificationPresenterExtensions;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
|
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
|
||||||
import com.android.systemui.statusbar.notification.collection.legacy.OnUserInteractionCallbackImplLegacy;
|
|
||||||
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
|
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
|
||||||
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
|
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
|
||||||
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
|
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
|
||||||
@@ -90,7 +86,6 @@ import com.android.systemui.statusbar.phone.CentralSurfaces;
|
|||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.phone.NotifPanelEventsModule;
|
import com.android.systemui.statusbar.phone.NotifPanelEventsModule;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
|
||||||
import com.android.systemui.util.leak.LeakDetector;
|
import com.android.systemui.util.leak.LeakDetector;
|
||||||
import com.android.systemui.wmshell.BubblesManager;
|
import com.android.systemui.wmshell.BubblesManager;
|
||||||
|
|
||||||
@@ -116,12 +111,10 @@ import dagger.Provides;
|
|||||||
})
|
})
|
||||||
public interface NotificationsModule {
|
public interface NotificationsModule {
|
||||||
@Binds
|
@Binds
|
||||||
StackScrollAlgorithm.SectionProvider bindSectionProvider(
|
StackScrollAlgorithm.SectionProvider bindSectionProvider(NotificationSectionsManager impl);
|
||||||
NotificationSectionsManager impl);
|
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
StackScrollAlgorithm.BypassController bindBypassController(
|
StackScrollAlgorithm.BypassController bindBypassController(KeyguardBypassController impl);
|
||||||
KeyguardBypassController impl);
|
|
||||||
|
|
||||||
/** Provides an instance of {@link NotificationEntryManager} */
|
/** Provides an instance of {@link NotificationEntryManager} */
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
@@ -194,12 +187,8 @@ public interface NotificationsModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Provides an instance of {@link NotifGutsViewManager} */
|
/** Provides an instance of {@link NotifGutsViewManager} */
|
||||||
@SysUISingleton
|
@Binds
|
||||||
@Provides
|
NotifGutsViewManager bindNotifGutsViewManager(NotificationGutsManager notificationGutsManager);
|
||||||
static NotifGutsViewManager provideNotifGutsViewManager(
|
|
||||||
NotificationGutsManager notificationGutsManager) {
|
|
||||||
return notificationGutsManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Provides an instance of {@link VisualStabilityManager} */
|
/** Provides an instance of {@link VisualStabilityManager} */
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
@@ -253,25 +242,13 @@ public interface NotificationsModule {
|
|||||||
/** Provides an instance of {@link GroupMembershipManager} */
|
/** Provides an instance of {@link GroupMembershipManager} */
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
@Provides
|
@Provides
|
||||||
static GroupMembershipManager provideGroupMembershipManager(
|
static GroupMembershipManager provideGroupMembershipManager() {
|
||||||
NotifPipelineFlags notifPipelineFlags,
|
return new GroupMembershipManagerImpl();
|
||||||
Lazy<NotificationGroupManagerLegacy> groupManagerLegacy) {
|
|
||||||
return notifPipelineFlags.isNewPipelineEnabled()
|
|
||||||
? new GroupMembershipManagerImpl()
|
|
||||||
: groupManagerLegacy.get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Provides an instance of {@link GroupExpansionManager} */
|
/** Provides an instance of {@link GroupExpansionManager} */
|
||||||
@SysUISingleton
|
@Binds
|
||||||
@Provides
|
GroupExpansionManager provideGroupExpansionManager(GroupExpansionManagerImpl impl);
|
||||||
static GroupExpansionManager provideGroupExpansionManager(
|
|
||||||
NotifPipelineFlags notifPipelineFlags,
|
|
||||||
Lazy<GroupMembershipManager> groupMembershipManager,
|
|
||||||
Lazy<NotificationGroupManagerLegacy> groupManagerLegacy) {
|
|
||||||
return notifPipelineFlags.isNewPipelineEnabled()
|
|
||||||
? new GroupExpansionManagerImpl(groupMembershipManager.get())
|
|
||||||
: groupManagerLegacy.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Initializes the notification data pipeline (can be disabled via config). */
|
/** Initializes the notification data pipeline (can be disabled via config). */
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
@@ -290,69 +267,28 @@ public interface NotificationsModule {
|
|||||||
/**
|
/**
|
||||||
* Provide the active notification collection managing the notifications to render.
|
* Provide the active notification collection managing the notifications to render.
|
||||||
*/
|
*/
|
||||||
@Provides
|
@Binds
|
||||||
@SysUISingleton
|
CommonNotifCollection provideCommonNotifCollection(NotifPipeline pipeline);
|
||||||
static CommonNotifCollection provideCommonNotifCollection(
|
|
||||||
NotifPipelineFlags notifPipelineFlags,
|
|
||||||
Lazy<NotifPipeline> pipeline,
|
|
||||||
NotificationEntryManager entryManager) {
|
|
||||||
return notifPipelineFlags.isNewPipelineEnabled()
|
|
||||||
? pipeline.get() : entryManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide the object which can be used to obtain NotificationVisibility objects.
|
* Provide the object which can be used to obtain NotificationVisibility objects.
|
||||||
*/
|
*/
|
||||||
@Binds
|
@Binds
|
||||||
@SysUISingleton
|
|
||||||
NotificationVisibilityProvider provideNotificationVisibilityProvider(
|
NotificationVisibilityProvider provideNotificationVisibilityProvider(
|
||||||
NotificationVisibilityProviderImpl newProvider);
|
NotificationVisibilityProviderImpl impl);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide the active implementation for presenting notifications.
|
* Provide the active implementation for presenting notifications.
|
||||||
*/
|
*/
|
||||||
@Provides
|
@Binds
|
||||||
@SysUISingleton
|
NotifShadeEventSource provideNotifShadeEventSource(ShadeEventCoordinator shadeEventCoordinator);
|
||||||
static NotifShadeEventSource provideNotifShadeEventSource(
|
|
||||||
NotifPipelineFlags notifPipelineFlags,
|
|
||||||
Lazy<ShadeEventCoordinator> shadeEventCoordinatorLazy,
|
|
||||||
Lazy<LegacyNotificationPresenterExtensions> legacyNotificationPresenterExtensionsLazy) {
|
|
||||||
return notifPipelineFlags.isNewPipelineEnabled()
|
|
||||||
? shadeEventCoordinatorLazy.get()
|
|
||||||
: legacyNotificationPresenterExtensionsLazy.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide a dismissal callback that's triggered when a user manually dismissed a notification
|
* Provide a dismissal callback that's triggered when a user manually dismissed a notification
|
||||||
* from the notification shade or it gets auto-cancelled by click.
|
* from the notification shade or it gets auto-cancelled by click.
|
||||||
*/
|
*/
|
||||||
@Provides
|
@Binds
|
||||||
@SysUISingleton
|
OnUserInteractionCallback provideOnUserInteractionCallback(OnUserInteractionCallbackImpl impl);
|
||||||
static OnUserInteractionCallback provideOnUserInteractionCallback(
|
|
||||||
NotifPipelineFlags notifPipelineFlags,
|
|
||||||
HeadsUpManager headsUpManager,
|
|
||||||
StatusBarStateController statusBarStateController,
|
|
||||||
Lazy<NotifCollection> notifCollection,
|
|
||||||
Lazy<NotificationVisibilityProvider> visibilityProvider,
|
|
||||||
Lazy<VisualStabilityCoordinator> visualStabilityCoordinator,
|
|
||||||
NotificationEntryManager entryManager,
|
|
||||||
VisualStabilityManager visualStabilityManager,
|
|
||||||
Lazy<GroupMembershipManager> groupMembershipManagerLazy) {
|
|
||||||
return notifPipelineFlags.isNewPipelineEnabled()
|
|
||||||
? new OnUserInteractionCallbackImpl(
|
|
||||||
visibilityProvider.get(),
|
|
||||||
notifCollection.get(),
|
|
||||||
headsUpManager,
|
|
||||||
statusBarStateController,
|
|
||||||
visualStabilityCoordinator.get())
|
|
||||||
: new OnUserInteractionCallbackImplLegacy(
|
|
||||||
entryManager,
|
|
||||||
visibilityProvider.get(),
|
|
||||||
headsUpManager,
|
|
||||||
statusBarStateController,
|
|
||||||
visualStabilityManager,
|
|
||||||
groupMembershipManagerLazy.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
@Binds
|
@Binds
|
||||||
|
|||||||
Reference in New Issue
Block a user