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

Commit e82a2951 authored by Chris Göllner's avatar Chris Göllner Committed by Android (Google) Code Review
Browse files

Merge "Partial Screen Sharing - Use new app chooser base class" into udc-qpr-dev

parents 7bcdf0c0 ec80b12b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -87,5 +87,6 @@
        <permission name="android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS" />
        <permission name="android.permission.READ_SEARCH_INDEXABLES" />
        <permission name="android.permission.ACCESS_AMBIENT_CONTEXT_EVENT"/>
        <permission name="android.permission.QUERY_CLONED_APPS"/>
    </privapp-permissions>
</permissions>
+2 −0
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ android_library {
        "lottie",
        "LowLightDreamLib",
        "motion_tool_lib",
        "IntentResolver-core",
    ],
    manifest: "AndroidManifest.xml",

@@ -383,6 +384,7 @@ android_library {
        "motion_tool_lib",
        "androidx.core_core-animation-testing-nodeps",
        "androidx.compose.ui_ui",
        "IntentResolver-core",
    ],
}

+3 −3
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<com.android.internal.widget.ResolverDrawerLayout
<com.android.intentresolver.widget.ResolverDrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
    android:layout_width="match_parent"
@@ -84,7 +84,7 @@
                android:id="@*android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <com.android.internal.app.ResolverViewPager
                <com.android.intentresolver.ResolverViewPager
                    android:id="@*android:id/profile_pager"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
@@ -92,4 +92,4 @@
        </LinearLayout>
    </TabHost>

</com.android.internal.widget.ResolverDrawerLayout>
</com.android.intentresolver.widget.ResolverDrawerLayout>
+8 −41
Original line number Diff line number Diff line
@@ -30,16 +30,11 @@ import android.os.IBinder
import android.os.ResultReceiver
import android.os.UserHandle
import android.view.ViewGroup
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.EmptyStateProvider
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.MyUserIdProvider
import com.android.intentresolver.ChooserActivity
import com.android.intentresolver.chooser.TargetInfo
import com.android.internal.annotations.VisibleForTesting
import com.android.internal.app.AbstractMultiProfilePagerAdapter.EmptyStateProvider
import com.android.internal.app.AbstractMultiProfilePagerAdapter.MyUserIdProvider
import com.android.internal.app.ChooserActivity
import com.android.internal.app.ResolverListController
import com.android.internal.app.chooser.NotSelectableTargetInfo
import com.android.internal.app.chooser.TargetInfo
import com.android.systemui.R
import com.android.systemui.mediaprojection.appselector.MediaProjectionAppSelectorComponent
import com.android.systemui.mediaprojection.appselector.MediaProjectionAppSelectorController
@@ -56,12 +51,8 @@ class MediaProjectionAppSelectorActivity(
    private val activityLauncher: AsyncActivityLauncher,
    /** This is used to override the dependency in a screenshot test */
    @VisibleForTesting
    private val listControllerFactory: ((userHandle: UserHandle) -> ResolverListController)?
) :
    ChooserActivity(),
    MediaProjectionAppSelectorView,
    MediaProjectionAppSelectorResultHandler,
    LifecycleOwner {
    private val listControllerFactory: ((userHandle: UserHandle) -> ChooserListController)?
) : ChooserActivity(), MediaProjectionAppSelectorView, MediaProjectionAppSelectorResultHandler {

    @Inject
    constructor(
@@ -69,8 +60,6 @@ class MediaProjectionAppSelectorActivity(
        activityLauncher: AsyncActivityLauncher
    ) : this(componentFactory, activityLauncher, listControllerFactory = null)

    private val lifecycleRegistry = LifecycleRegistry(this)
    override val lifecycle = lifecycleRegistry
    private lateinit var configurationController: ConfigurationController
    private lateinit var controller: MediaProjectionAppSelectorController
    private lateinit var recentsViewController: MediaProjectionRecentsViewController
@@ -84,7 +73,6 @@ class MediaProjectionAppSelectorActivity(
    override fun getLayoutResource() = R.layout.media_projection_app_selector

    public override fun onCreate(bundle: Bundle?) {
        lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE)
        component = componentFactory.create(view = this, resultHandler = this)
        component.lifecycleObservers.forEach { lifecycle.addObserver(it) }

@@ -107,26 +95,6 @@ class MediaProjectionAppSelectorActivity(
        controller.init()
    }

    override fun onStart() {
        super.onStart()
        lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START)
    }

    override fun onResume() {
        super.onResume()
        lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME)
    }

    override fun onPause() {
        lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_PAUSE)
        super.onPause()
    }

    override fun onStop() {
        lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
        super.onStop()
    }

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        configurationController.onConfigurationChanged(newConfig)
@@ -137,13 +105,13 @@ class MediaProjectionAppSelectorActivity(
    override fun createBlockerEmptyStateProvider(): EmptyStateProvider =
        component.emptyStateProvider

    override fun createListController(userHandle: UserHandle): ResolverListController =
    override fun createListController(userHandle: UserHandle): ChooserListController =
        listControllerFactory?.invoke(userHandle) ?: super.createListController(userHandle)

    override fun startSelected(which: Int, always: Boolean, filtered: Boolean) {
        val currentListAdapter = mChooserMultiProfilePagerAdapter.activeListAdapter
        val targetInfo = currentListAdapter.targetInfoForPosition(which, filtered) ?: return
        if (targetInfo is NotSelectableTargetInfo) return
        if (targetInfo.isNotSelectableTargetInfo) return

        val intent = createIntent(targetInfo)

@@ -183,7 +151,6 @@ class MediaProjectionAppSelectorActivity(
    }

    override fun onDestroy() {
        lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY)
        component.lifecycleObservers.forEach { lifecycle.removeObserver(it) }
        // onDestroy is also called when an app is selected, in that case we only want to send
        // RECORD_CONTENT_TASK but not RECORD_CANCEL
+3 −3
Original line number Diff line number Diff line
@@ -17,10 +17,10 @@ package com.android.systemui.mediaprojection.appselector

import android.content.Context
import android.os.UserHandle
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.EmptyState
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.EmptyStateProvider
import com.android.intentresolver.ResolverListAdapter
import com.android.internal.R as AndroidR
import com.android.internal.app.AbstractMultiProfilePagerAdapter.EmptyState
import com.android.internal.app.AbstractMultiProfilePagerAdapter.EmptyStateProvider
import com.android.internal.app.ResolverListAdapter
import com.android.systemui.R
import com.android.systemui.mediaprojection.devicepolicy.PersonalProfile
import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDevicePolicyResolver