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

Commit b1f8e32c authored by samcackett's avatar samcackett
Browse files

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
parent 03021851
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -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"

+4 −25
Original line number Diff line number Diff line
@@ -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