diff options
| author | 2022-08-31 00:59:01 +0000 | |
|---|---|---|
| committer | 2022-08-31 00:59:01 +0000 | |
| commit | 30156a84e362bfcc4e0bde7ad14226cf1fd284aa (patch) | |
| tree | 6ef903bd049f304711188ed7f0ea3238b8a41f1c | |
| parent | 9fc9ab3d93ee2fa5b56829ebc096a3a5f94fc851 (diff) | |
| parent | b27aa70b5b8f87a235d96fd097cd17035bd4afc0 (diff) | |
Merge "Remove NotificationListController" into tm-qpr-dev
3 files changed, 7 insertions, 209 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationListController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationListController.java deleted file mode 100644 index c9c6f28b5b27..000000000000 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationListController.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2019 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; - -import com.android.internal.statusbar.NotificationVisibility; -import com.android.systemui.statusbar.notification.collection.NotificationEntry; -import com.android.systemui.statusbar.notification.stack.NotificationListContainer; -import com.android.systemui.statusbar.policy.DeviceProvisionedController; -import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; - -import java.util.Objects; - -/** - * Root controller for the list of notifications in the shade. - * - * TODO: Much of the code in NotificationPresenter should eventually move in here. It will proxy - * domain-specific behavior (ARC, etc) to subcontrollers. - */ -public class NotificationListController { - private final NotificationEntryManager mEntryManager; - private final NotificationListContainer mListContainer; - private final DeviceProvisionedController mDeviceProvisionedController; - - public NotificationListController( - NotificationEntryManager entryManager, - NotificationListContainer listContainer, - DeviceProvisionedController deviceProvisionedController) { - mEntryManager = Objects.requireNonNull(entryManager); - mListContainer = Objects.requireNonNull(listContainer); - mDeviceProvisionedController = Objects.requireNonNull(deviceProvisionedController); - } - - /** - * Causes the controller to register listeners on its dependencies. This method must be called - * before the controller is ready to perform its duties. - */ - public void bind() { - mEntryManager.addNotificationEntryListener(mEntryListener); - mDeviceProvisionedController.addCallback(mDeviceProvisionedListener); - } - - @SuppressWarnings("FieldCanBeLocal") - private final NotificationEntryListener mEntryListener = new NotificationEntryListener() { - @Override - public void onEntryRemoved( - NotificationEntry entry, - NotificationVisibility visibility, - boolean removedByUser, - int reason) { - mListContainer.cleanUpViewStateForEntry(entry); - } - }; - - // TODO: (b/145659174) remove after moving to NewNotifPipeline. Replaced by - // DeviceProvisionedCoordinator - private final DeviceProvisionedListener mDeviceProvisionedListener = - new DeviceProvisionedListener() { - @Override - public void onDeviceProvisionedChanged() { - mEntryManager.updateNotifications("device provisioned changed"); - } - }; -} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt index 0e9f1cda73fe..d38b6f9787bb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt @@ -26,19 +26,19 @@ import com.android.systemui.statusbar.notification.AnimatedImageNotificationMana import com.android.systemui.statusbar.notification.NotificationActivityStarter import com.android.systemui.statusbar.notification.NotificationClicker import com.android.systemui.statusbar.notification.NotificationEntryManager -import com.android.systemui.statusbar.notification.NotificationListController import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore import com.android.systemui.statusbar.notification.collection.NotifPipeline +import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.TargetSdkResolver import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection +import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener import com.android.systemui.statusbar.notification.collection.render.NotifStackController import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder import com.android.systemui.statusbar.notification.row.NotifBindPipelineInitializer import com.android.systemui.statusbar.notification.stack.NotificationListContainer import com.android.systemui.statusbar.phone.CentralSurfaces -import com.android.systemui.statusbar.policy.DeviceProvisionedController import com.android.wm.shell.bubbles.Bubbles import dagger.Lazy import java.io.PrintWriter @@ -63,7 +63,6 @@ class NotificationsControllerImpl @Inject constructor( private val targetSdkResolver: TargetSdkResolver, private val notifPipelineInitializer: Lazy<NotifPipelineInitializer>, private val notifBindPipelineInitializer: NotifBindPipelineInitializer, - private val deviceProvisionedController: DeviceProvisionedController, private val notificationRowBinder: NotificationRowBinderImpl, private val headsUpViewBinder: HeadsUpViewBinder, private val clickerBuilder: NotificationClicker.Builder, @@ -81,12 +80,11 @@ class NotificationsControllerImpl @Inject constructor( ) { notificationListener.registerAsSystemService() - val listController = - NotificationListController( - entryManager, - listContainer, - deviceProvisionedController) - listController.bind() + notifPipeline.get().addCollectionListener(object : NotifCollectionListener { + override fun onEntryRemoved(entry: NotificationEntry, reason: Int) { + listContainer.cleanUpViewStateForEntry(entry) + } + }) notificationRowBinder.setNotificationClicker( clickerBuilder.build( diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationListControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationListControllerTest.java deleted file mode 100644 index 19dd027daedd..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationListControllerTest.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2019 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; - -import static com.android.systemui.statusbar.notification.NotificationEntryManager.UNDEFINED_DISMISS_REASON; - -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.verify; - -import android.app.ActivityManager; -import android.app.Notification; -import android.os.UserHandle; -import android.testing.AndroidTestingRunner; -import android.testing.TestableLooper; - -import androidx.test.filters.SmallTest; - -import com.android.internal.statusbar.NotificationVisibility; -import com.android.systemui.R; -import com.android.systemui.SysuiTestCase; -import com.android.systemui.statusbar.NotificationLockscreenUserManager; -import com.android.systemui.statusbar.notification.collection.NotificationEntry; -import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; -import com.android.systemui.statusbar.notification.stack.NotificationListContainer; -import com.android.systemui.statusbar.policy.DeviceProvisionedController; -import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -@SmallTest -@RunWith(AndroidTestingRunner.class) -@TestableLooper.RunWithLooper -public class NotificationListControllerTest extends SysuiTestCase { - private NotificationListController mController; - - @Mock private NotificationEntryManager mEntryManager; - @Mock private NotificationListContainer mListContainer; - @Mock private DeviceProvisionedController mDeviceProvisionedController; - - @Captor private ArgumentCaptor<NotificationEntryListener> mEntryListenerCaptor; - @Captor private ArgumentCaptor<DeviceProvisionedListener> mProvisionedCaptor; - - private NotificationEntryListener mEntryListener; - private DeviceProvisionedListener mProvisionedListener; - - private int mNextNotifId = 0; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mDependency.injectMockDependency(NotificationLockscreenUserManager.class); - - mController = new NotificationListController( - mEntryManager, - mListContainer, - mDeviceProvisionedController); - mController.bind(); - - // Capture callbacks passed to mocks - verify(mEntryManager).addNotificationEntryListener(mEntryListenerCaptor.capture()); - mEntryListener = mEntryListenerCaptor.getValue(); - verify(mDeviceProvisionedController).addCallback(mProvisionedCaptor.capture()); - mProvisionedListener = mProvisionedCaptor.getValue(); - } - - @Test - public void testCleanUpViewStateOnEntryRemoved() { - final NotificationEntry entry = buildEntry(); - mEntryListener.onEntryRemoved( - entry, - NotificationVisibility.obtain(entry.getKey(), 0, 0, true), - false, - UNDEFINED_DISMISS_REASON); - verify(mListContainer).cleanUpViewStateForEntry(entry); - } - - @Test - public void testCallUpdateNotificationsOnDeviceProvisionedChange() { - mProvisionedListener.onDeviceProvisionedChanged(); - verify(mEntryManager).updateNotifications(anyString()); - } - - private NotificationEntry buildEntry() { - mNextNotifId++; - - Notification.Builder n = new Notification.Builder(mContext, "") - .setSmallIcon(R.drawable.ic_person) - .setContentTitle("Title") - .setContentText("Text"); - - return new NotificationEntryBuilder() - .setPkg(TEST_PACKAGE_NAME) - .setOpPkg(TEST_PACKAGE_NAME) - .setId(mNextNotifId) - .setUid(TEST_UID) - .setNotification(n.build()) - .setUser(new UserHandle(ActivityManager.getCurrentUser())) - .build(); - } - - private static final String TEST_PACKAGE_NAME = "test"; - private static final int TEST_UID = 0; -} |