AppOwnedSdkSandboxInterfaceCompat.kt
/*
* Copyright 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package androidx.privacysandbox.sdkruntime.core
import android.os.IBinder
/**
* Represents a channel for an SDK in the sandbox process to interact with the app.
*
* The SDK and the app can agree on a binder interface to be implemented by the app and shared
* via an object of [AppOwnedSdkSandboxInterfaceCompat].
*
* The app registers the AppOwnedSdkSandboxInterfaces using SdkSandboxManagerCompat.
* The SDK can then query the list of registered interfaces using SdkSandboxControllerCompat.
*
* Once SDK has the [AppOwnedSdkSandboxInterfaceCompat] it wants to communicate with, it will have
* to cast the binder object from [getInterface] to the prearranged interface before initiating
* the communication.
*/
class AppOwnedSdkSandboxInterfaceCompat(
private val name: String,
private val version: Long,
private val binder: IBinder
) {
/**
* Returns the name used to register the [AppOwnedSdkSandboxInterfaceCompat].
*
* App can register only one interface of given name.
*/
fun getName(): String = name
/**
* Returns the version used to register the [AppOwnedSdkSandboxInterfaceCompat].
*
* A version may be chosen by an app, and used to communicate any updates the app makes to
* this implementation.
*/
fun getVersion(): Long = version
/**
* Returns binder object associated with [AppOwnedSdkSandboxInterfaceCompat].
*
* The SDK and the app can agree on a binder interface to be implemented by the app and
* shared via this object.
*
* The SDK in the sandbox will have to cast the binder object received from this method to
* the agreed upon interface before using it.
*/
fun getInterface(): IBinder = binder
}