diff options
| author | 2024-06-03 17:58:18 +0000 | |
|---|---|---|
| committer | 2024-06-06 12:02:54 +0000 | |
| commit | a1d5023a172ef4082f90a0c8a790465f26edcb54 (patch) | |
| tree | 2384fec72ecaa772a723487f19fc44edd1d7c8b1 | |
| parent | 8a0a56902f3544cc615d5d32000f9dc04602dc58 (diff) | |
Use the new NotificationRowContentBinderImpl based on the flag.
Bug: 343942780
Flag: com.android.systemui.notification_row_content_binder_refactor
Test: atest SystemUITests
Change-Id: Ide57b3cb756eafdc1019cf50e68bb6c0c67903a1
6 files changed, 51 insertions, 13 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java index 6ba26d99419e..af5117e0b561 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java @@ -56,6 +56,7 @@ import com.android.systemui.statusbar.notification.InflationException; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.shared.AsyncGroupHeaderViewInflation; import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation; +import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor; import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineConversationViewBinder; import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineViewBinder; import com.android.systemui.statusbar.notification.row.ui.viewmodel.SingleLineViewModel; @@ -105,6 +106,7 @@ public class NotificationContentInflater implements NotificationRowContentBinder NotifLayoutInflaterFactory.Provider notifLayoutInflaterFactoryProvider, HeadsUpStyleProvider headsUpStyleProvider, NotificationRowContentBinderLogger logger) { + NotificationRowContentBinderRefactor.assertInLegacyMode(); mRemoteViewCache = remoteViewCache; mRemoteInputManager = remoteInputManager; mConversationProcessor = conversationProcessor; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt index 39b2d643e318..17980e5fca17 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt @@ -58,6 +58,7 @@ import com.android.systemui.statusbar.notification.row.NotificationRowContentBin import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag import com.android.systemui.statusbar.notification.row.shared.AsyncGroupHeaderViewInflation import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation +import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineConversationViewBinder import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineViewBinder import com.android.systemui.statusbar.notification.row.ui.viewmodel.SingleLineViewModel @@ -89,6 +90,11 @@ constructor( private val headsUpStyleProvider: HeadsUpStyleProvider, private val logger: NotificationRowContentBinderLogger ) : NotificationRowContentBinder { + + init { + /* check if */ NotificationRowContentBinderRefactor.isUnexpectedlyInLegacyMode() + } + private var inflateSynchronously = false override fun bindContent( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java index 17c20268bc1c..84f2f6670839 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java @@ -17,9 +17,13 @@ package com.android.systemui.statusbar.notification.row; import com.android.systemui.dagger.SysUISingleton; +import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor; import dagger.Binds; import dagger.Module; +import dagger.Provides; + +import javax.inject.Provider; /** * Dagger Module containing notification row and view inflation implementations. @@ -30,10 +34,18 @@ public abstract class NotificationRowModule { /** * Provides notification row content binder instance. */ - @Binds + @Provides @SysUISingleton - public abstract NotificationRowContentBinder provideNotificationRowContentBinder( - NotificationContentInflater contentBinderImpl); + public static NotificationRowContentBinder provideNotificationRowContentBinder( + Provider<NotificationContentInflater> legacyImpl, + Provider<NotificationRowContentBinderImpl> refactoredImpl + ) { + if (NotificationRowContentBinderRefactor.isEnabled()) { + return refactoredImpl.get(); + } else { + return legacyImpl.get(); + } + } /** * Provides notification remote view cache instance. diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java index 0d3ab865669e..b278f1a48b3d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java @@ -41,6 +41,7 @@ import android.os.AsyncTask; import android.os.CancellationSignal; import android.os.Handler; import android.os.Looper; +import android.platform.test.annotations.DisableFlags; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; import android.util.TypedValue; @@ -60,6 +61,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; +import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor; import com.android.systemui.statusbar.policy.InflatedSmartReplyState; import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder; import com.android.systemui.statusbar.policy.SmartReplyStateInflater; @@ -81,6 +83,7 @@ import java.util.concurrent.TimeUnit; @SmallTest @RunWith(AndroidJUnit4.class) @RunWithLooper(setAsMainLooper = true) +@DisableFlags(NotificationRowContentBinderRefactor.FLAG_NAME) public class NotificationContentInflaterTest extends SysuiTestCase { private NotificationContentInflater mNotificationInflater; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt index 636b3a1d2cb6..fdd1966db027 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImplTest.kt @@ -20,6 +20,7 @@ import android.content.Context import android.os.AsyncTask import android.os.Build import android.os.CancellationSignal +import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper.RunWithLooper import android.util.TypedValue import android.view.View @@ -35,6 +36,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag +import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor import com.android.systemui.statusbar.policy.InflatedSmartReplyState import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder import com.android.systemui.statusbar.policy.SmartReplyStateInflater @@ -58,6 +60,7 @@ import org.mockito.kotlin.whenever @SmallTest @RunWith(AndroidJUnit4::class) @RunWithLooper +@EnableFlags(NotificationRowContentBinderRefactor.FLAG_NAME) class NotificationRowContentBinderImplTest : SysuiTestCase() { private lateinit var mNotificationInflater: NotificationRowContentBinderImpl private lateinit var mBuilder: Notification.Builder 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 65941adf280e..21d586b1b5fc 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 @@ -84,6 +84,7 @@ import com.android.systemui.statusbar.notification.people.PeopleNotificationIden import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpandableNotificationRowLogger; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; +import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor; import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainerLogger; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.policy.HeadsUpManager; @@ -192,16 +193,27 @@ public class NotificationTestHelper { mBgCoroutineContext, mMainCoroutineContext); - NotificationRowContentBinder contentBinder = new NotificationContentInflater( - mock(NotifRemoteViewCache.class), - mock(NotificationRemoteInputManager.class), - mock(ConversationNotificationProcessor.class), - mock(MediaFeatureFlag.class), - mock(Executor.class), - new MockSmartReplyInflater(), - mock(NotifLayoutInflaterFactory.Provider.class), - mock(HeadsUpStyleProvider.class), - mock(NotificationRowContentBinderLogger.class)); + NotificationRowContentBinder contentBinder = + NotificationRowContentBinderRefactor.isEnabled() + ? new NotificationRowContentBinderImpl( + mock(NotifRemoteViewCache.class), + mock(NotificationRemoteInputManager.class), + mock(ConversationNotificationProcessor.class), + mock(Executor.class), + new MockSmartReplyInflater(), + mock(NotifLayoutInflaterFactory.Provider.class), + mock(HeadsUpStyleProvider.class), + mock(NotificationRowContentBinderLogger.class)) + : new NotificationContentInflater( + mock(NotifRemoteViewCache.class), + mock(NotificationRemoteInputManager.class), + mock(ConversationNotificationProcessor.class), + mock(MediaFeatureFlag.class), + mock(Executor.class), + new MockSmartReplyInflater(), + mock(NotifLayoutInflaterFactory.Provider.class), + mock(HeadsUpStyleProvider.class), + mock(NotificationRowContentBinderLogger.class)); contentBinder.setInflateSynchronously(true); mBindStage = new RowContentBindStage(contentBinder, mock(NotifInflationErrorManager.class), |