# TestEmbeddedPhotoPickerProvider

Artifact: [androidx.photopicker:photopicker-embedded-testing](https://developer.android.com/jetpack/androidx/releases/photopicker) [View Source](https://cs.android.com/search?q=file:androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider.kt+class:androidx.photopicker.embedded.testing.TestEmbeddedPhotoPickerProvider) Added in [1.0.0-alpha03](https://developer.android.com/jetpack/androidx/releases/photopicker#1.0.0-alpha03)

*** ** * ** ***


```
@RequiresApi(value = 34)
@RequiresExtension(extension = 34, version = 15)
class TestEmbeddedPhotoPickerProvider : EmbeddedPhotoPickerProvider
```

<br />

*** ** * ** ***

A test implementation of `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerProvider.html` which provides a fake of the Embedded PhotoPicker and provides additional methods to allow tests to fake user interactions so that the client side flows can be tested.

## Summary

| ### Public companion functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider` | `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#get()()` Construct a `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerProvider.html` that runs a fake embedded photopicker view using the InstrumentedTests context for the underlying empty View. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#TestEmbeddedPhotoPickerProvider(android.content.Context)(context: https://developer.android.com/reference/android/content/Context.html)` |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#notifyDeselectedUris(android.widget.photopicker.EmbeddedPhotoPickerSession,kotlin.collections.List)( session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html, uris: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/android/net/Uri.html> )` Direct the `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to emit the provided list of `https://developer.android.com/reference/android/net/Uri.html` as deselected by the user. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#notifySelectedUris(android.widget.photopicker.EmbeddedPhotoPickerSession,kotlin.collections.List)(session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html, uris: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/android/net/Uri.html>)` Direct the `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to emit the provided list of `https://developer.android.com/reference/android/net/Uri.html` as selected by the user. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#notifySelectionComplete(android.widget.photopicker.EmbeddedPhotoPickerSession)(session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html)` Direct the `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to emit the user has completed selection media. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#notifySessionError(android.widget.photopicker.EmbeddedPhotoPickerSession,kotlin.Throwable)( session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html, throwable: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-throwable/index.html )` Direct the provided `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to throw an error to the client. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#openSession(android.os.IBinder,kotlin.Int,kotlin.Int,kotlin.Int,android.widget.photopicker.EmbeddedPhotoPickerFeatureInfo,java.util.concurrent.Executor,android.widget.photopicker.EmbeddedPhotoPickerClient)( hostToken: https://developer.android.com/reference/android/os/IBinder.html, displayId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, width: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, height: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, featureInfo: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerFeatureInfo.html, clientExecutor: https://developer.android.com/reference/java/util/concurrent/Executor.html, callback: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerClient.html )` Opens a fake `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` that can be used for testing. |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-set/index.html<https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html>` | `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider#sessions()` The list of sessions opened with this provider. |

## Public companion functions

### get

Added in [1.0.0-alpha03](https://developer.android.com/jetpack/androidx/releases/photopicker#1.0.0-alpha03)

```
fun get(): TestEmbeddedPhotoPickerProvider
```

Construct a `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerProvider.html` that runs a fake embedded photopicker view using the InstrumentedTests context for the underlying empty View.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider` | A test only implementation of `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerProvider.html`. |

## Public constructors

### TestEmbeddedPhotoPickerProvider

Added in [1.0.0-alpha03](https://developer.android.com/jetpack/androidx/releases/photopicker#1.0.0-alpha03)

```
TestEmbeddedPhotoPickerProvider(context: Context)
```

## Public functions

### notifyDeselectedUris

```
fun notifyDeselectedUris(
    session: EmbeddedPhotoPickerSession,
    uris: List<Uri>
): Unit
```

Direct the `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to emit the provided list of `https://developer.android.com/reference/android/net/Uri.html` as deselected by the user.

This will allow test cases to properly test the EmbeddedPhotoPickerClient#onUriPermissionRevoked callback.

| Parameters |
|---|---|
| `session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` | The EmbeddedPhotoPickerSession, created by calling openSession on this provider. |
| `uris: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/android/net/Uri.html>` | The list of Uris that the session should mark as deselected by the user. |

### notifySelectedUris

```
fun notifySelectedUris(session: EmbeddedPhotoPickerSession, uris: List<Uri>): Unit
```

Direct the `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to emit the provided list of `https://developer.android.com/reference/android/net/Uri.html` as selected by the user.

This will allow test cases to properly test the EmbeddedPhotoPickerClient#onUriPermissionGranted callback.

| Parameters |
|---|---|
| `session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` | The EmbeddedPhotoPickerSession, created by calling openSession on this provider. |
| `uris: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/android/net/Uri.html>` | The list of Uris that the session should mark as selected by the user. |

### notifySelectionComplete

Added in [1.0.0-alpha03](https://developer.android.com/jetpack/androidx/releases/photopicker#1.0.0-alpha03)

```
fun notifySelectionComplete(session: EmbeddedPhotoPickerSession): Unit
```

Direct the `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to emit the user has completed selection media.

This will allow test cases to properly test the EmbeddedPhotoPickerClient#onSelectionComplete callback.

| Parameters |
|---|---|
| `session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` | The EmbeddedPhotoPickerSession, created by calling openSession on this provider. |

### notifySessionError

Added in [1.0.0-alpha03](https://developer.android.com/jetpack/androidx/releases/photopicker#1.0.0-alpha03)

```
fun notifySessionError(
    session: EmbeddedPhotoPickerSession,
    throwable: Throwable
): Unit
```

Direct the provided `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` to throw an error to the client.

| Parameters |
|---|---|
| `session: https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` | The EmbeddedPhotoPickerSession, created by calling openSession on this provider. |
| `throwable: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-throwable/index.html` | The `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-throwable/index.html` this session should throw. The `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerClient.html` will receive this error via the EmbeddedPhotoPickerClient#onSessionError callback. |

### openSession

Added in [1.0.0-alpha03](https://developer.android.com/jetpack/androidx/releases/photopicker#1.0.0-alpha03)

```
open fun openSession(
    hostToken: IBinder,
    displayId: Int,
    width: Int,
    height: Int,
    featureInfo: EmbeddedPhotoPickerFeatureInfo,
    clientExecutor: Executor,
    callback: EmbeddedPhotoPickerClient
): Unit
```

Opens a fake `https://developer.android.com/reference/android/widget/photopicker/EmbeddedPhotoPickerSession.html` that can be used for testing.

The session that is opened will render real, but empty Views in the client application, and the `https://developer.android.com/reference/kotlin/androidx/photopicker/embedded/testing/TestEmbeddedPhotoPickerProvider` provides additional method for faking user intections between the client and EmbeddedPhotoPicker service.

## Public properties

### sessions

Added in [1.0.0-alpha03](https://developer.android.com/jetpack/androidx/releases/photopicker#1.0.0-alpha03)

```
val sessions: Set<EmbeddedPhotoPickerSession>
```

The list of sessions opened with this provider.