From b1f8e32c81bbfa98d407b3223e36a7aadbd5bf2e Mon Sep 17 00:00:00 2001 From: samcackett <samcackett@google.com> Date: Wed, 20 Sep 2023 12:35:53 +0100 Subject: [PATCH] Fix duplicate dagger binding of MediaProjectionAppSelectorActivity Removed duplicate instance of activity and bound dependencies directly instead Fixes: 292682275 Test: Build & Run Open media projection and select a single app and select "Start recording" Flag: None Change-Id: I84e7d3535921fe3f84ca69437e94328e9d102caf --- .../MediaProjectionAppSelectorActivity.kt | 20 ++++++++++++- .../MediaProjectionAppSelectorComponent.kt | 29 +++---------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionAppSelectorActivity.kt b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionAppSelectorActivity.kt index 60fd10492628b..7bfd97ab686df 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionAppSelectorActivity.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionAppSelectorActivity.kt @@ -91,7 +91,13 @@ class MediaProjectionAppSelectorActivity( public override fun onCreate(bundle: Bundle?) { lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE) - component = componentFactory.create(activity = this, view = this, resultHandler = this) + component = + componentFactory.create( + hostUserHandle = hostUserHandle, + callingPackage = callingPackage, + view = this, + resultHandler = this + ) component.lifecycleObservers.forEach { lifecycle.addObserver(it) } // Create a separate configuration controller for this activity as the configuration @@ -286,6 +292,18 @@ class MediaProjectionAppSelectorActivity( override fun createContentPreviewView(parent: ViewGroup): ViewGroup = recentsViewController.createView(parent) + private val hostUserHandle: UserHandle + get() { + val extras = + intent.extras + ?: error("MediaProjectionAppSelectorActivity should be launched with extras") + return extras.getParcelable(EXTRA_HOST_APP_USER_HANDLE) + ?: error( + "MediaProjectionAppSelectorActivity should be provided with " + + "$EXTRA_HOST_APP_USER_HANDLE extra" + ) + } + companion object { const val TAG = "MediaProjectionAppSelectorActivity" diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/MediaProjectionAppSelectorComponent.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/MediaProjectionAppSelectorComponent.kt index 11538fadf24e4..33d9cc36c9b0b 100644 --- a/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/MediaProjectionAppSelectorComponent.kt +++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/appselector/MediaProjectionAppSelectorComponent.kt @@ -24,7 +24,6 @@ import androidx.lifecycle.DefaultLifecycleObserver import com.android.launcher3.icons.IconFactory import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.media.MediaProjectionAppSelectorActivity -import com.android.systemui.media.MediaProjectionAppSelectorActivity.Companion.EXTRA_HOST_APP_USER_HANDLE import com.android.systemui.media.MediaProjectionPermissionActivity import com.android.systemui.mediaprojection.appselector.data.ActivityTaskManagerLabelLoader import com.android.systemui.mediaprojection.appselector.data.ActivityTaskManagerThumbnailLoader @@ -118,29 +117,8 @@ interface MediaProjectionAppSelectorModule { @Provides @MediaProjectionAppSelector @MediaProjectionAppSelectorScope - fun provideCallerPackageName(activity: MediaProjectionAppSelectorActivity): String? = - activity.callingPackage - - @Provides - @MediaProjectionAppSelector - @MediaProjectionAppSelectorScope - fun bindConfigurationController( - activity: MediaProjectionAppSelectorActivity - ): ConfigurationController = ConfigurationControllerImpl(activity) - - @Provides - @HostUserHandle - @MediaProjectionAppSelectorScope - fun hostUserHandle(activity: MediaProjectionAppSelectorActivity): UserHandle { - val extras = - activity.intent.extras - ?: error("MediaProjectionAppSelectorActivity should be launched with extras") - return extras.getParcelable(EXTRA_HOST_APP_USER_HANDLE) - ?: error( - "MediaProjectionAppSelectorActivity should be provided with " + - "$EXTRA_HOST_APP_USER_HANDLE extra" - ) - } + fun bindConfigurationController(context: Context): ConfigurationController = + ConfigurationControllerImpl(context) @Provides fun bindIconFactory(context: Context): IconFactory = IconFactory.obtain(context) @@ -161,7 +139,8 @@ interface MediaProjectionAppSelectorComponent { interface Factory { /** Create a factory to inject the activity into the graph */ fun create( - @BindsInstance activity: MediaProjectionAppSelectorActivity, + @BindsInstance @HostUserHandle hostUserHandle: UserHandle, + @BindsInstance @MediaProjectionAppSelector callingPackage: String?, @BindsInstance view: MediaProjectionAppSelectorView, @BindsInstance resultHandler: MediaProjectionAppSelectorResultHandler, ): MediaProjectionAppSelectorComponent -- GitLab