[4/n] Add client-side SharedUiAdapter support as param and return type
Adds client-side code generation for SharedUiAdapter
@PrivacySandboxInterface's when they are used as a method/callback
param, as a return type or a data class property.
Bug: 365553832
Test: ./gradlew :privacysandbox:tools:tools-{apigenerator,apicompiler,apipackager,core}:test
Change-Id: Ida0141f9c25880eaf06ffd6bb677cea4087a98f6
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/CallbacksApiGeneratorDiffTest.kt b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/CallbacksApiGeneratorDiffTest.kt
index e2e5a08..4aff59c 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/CallbacksApiGeneratorDiffTest.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/CallbacksApiGeneratorDiffTest.kt
@@ -29,6 +29,8 @@
"com/sdkwithcallbacks/ISdkService.java",
"com/sdkwithcallbacks/ParcelableResponse.java",
"com/sdkwithcallbacks/ParcelableMyEnum.java",
+ "com/sdkwithcallbacks/IMySharedUiInterface.java",
+ "com/sdkwithcallbacks/IMySharedUiInterfaceCoreLibInfoAndBinderWrapper.java",
"com/sdkwithcallbacks/IMyUiInterface.java",
"com/sdkwithcallbacks/IMyUiInterfaceCoreLibInfoAndBinderWrapper.java",
"com/sdkwithcallbacks/PrivacySandboxThrowableParcel.java",
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorDiffTest.kt b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorDiffTest.kt
index 6196eec..87fa540 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorDiffTest.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorDiffTest.kt
@@ -31,6 +31,7 @@
"com/sdk/IMyInterfaceTransactionCallback.java",
"com/sdk/IMySecondInterfaceTransactionCallback.java",
"com/sdk/IMySecondInterfaceCoreLibInfoAndBinderWrapper.java",
+ "com/sdk/IMySharedUiInterfaceTransactionCallback.java",
"com/sdk/IMySharedUiInterfaceCoreLibInfoAndBinderWrapper.java",
"com/sdk/IIntTransactionCallback.java",
"com/sdk/ICancellationSignal.java",
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/ValuesApiGeneratorDiffTest.kt b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/ValuesApiGeneratorDiffTest.kt
index 7e9a77c..565d4f5 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/ValuesApiGeneratorDiffTest.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/ValuesApiGeneratorDiffTest.kt
@@ -25,6 +25,7 @@
override val relativePathsToExpectedAidlClasses =
listOf(
"com/sdkwithvalues/IMyInterface.java",
+ "com/sdkwithvalues/IMySharedUiInterface.java",
"com/sdkwithvalues/IMyUiInterface.java",
"com/sdkwithvalues/ISdkInterface.java",
"com/sdkwithvalues/ISdkResponseTransactionCallback.java",
@@ -37,6 +38,7 @@
"com/sdkwithvalues/ICancellationSignal.java",
"com/sdkwithvalues/ParcelableStackFrame.java",
"com/sdkwithvalues/PrivacySandboxThrowableParcel.java",
+ "com/sdkwithvalues/IMySharedUiInterfaceCoreLibInfoAndBinderWrapper.java",
"com/sdkwithvalues/IMyUiInterfaceCoreLibInfoAndBinderWrapper.java"
)
}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/input/com/sdkwithcallbacks/SdkService.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/input/com/sdkwithcallbacks/SdkService.kt
index eb553ce..7da8ea3 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/input/com/sdkwithcallbacks/SdkService.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/input/com/sdkwithcallbacks/SdkService.kt
@@ -5,6 +5,7 @@
import androidx.privacysandbox.tools.PrivacySandboxValue
import androidx.privacysandbox.tools.PrivacySandboxInterface
import androidx.privacysandbox.ui.core.SandboxedUiAdapter
+import androidx.privacysandbox.ui.core.SharedUiAdapter
import androidx.privacysandbox.activity.core.SdkActivityLauncher
@PrivacySandboxService
@@ -28,7 +29,7 @@
}
@PrivacySandboxValue
-data class Response(val response: String, val uiInterface: MyUiInterface, val myEnum: MyEnum)
+data class Response(val response: String, val uiInterface: MyUiInterface, val sharedUiInterface: MySharedUiInterface, val myEnum: MyEnum)
@PrivacySandboxValue
enum class MyEnum { FLIP, FLOP }
@@ -42,3 +43,8 @@
interface MyUiInterface : SandboxedUiAdapter {
fun doUiStuff()
}
+
+@PrivacySandboxInterface
+interface MySharedUiInterface : SharedUiAdapter {
+ fun doUiStuff()
+}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.kt
new file mode 100644
index 0000000..0181bf6
--- /dev/null
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.kt
@@ -0,0 +1,13 @@
+package com.sdkwithcallbacks
+
+import android.os.Bundle
+
+public object IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter {
+ public fun toParcelable(coreLibInfo: Bundle, `interface`: IMySharedUiInterface):
+ IMySharedUiInterfaceCoreLibInfoAndBinderWrapper {
+ val parcelable = IMySharedUiInterfaceCoreLibInfoAndBinderWrapper()
+ parcelable.coreLibInfo = coreLibInfo
+ parcelable.binder = `interface`
+ return parcelable
+ }
+}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MySharedUiInterface.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MySharedUiInterface.kt
new file mode 100644
index 0000000..da98785
--- /dev/null
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MySharedUiInterface.kt
@@ -0,0 +1,7 @@
+package com.sdkwithcallbacks
+
+import androidx.privacysandbox.ui.core.SharedUiAdapter
+
+public interface MySharedUiInterface : SharedUiAdapter {
+ public fun doUiStuff()
+}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MySharedUiInterfaceClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MySharedUiInterfaceClientProxy.kt
new file mode 100644
index 0000000..89d299c
--- /dev/null
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MySharedUiInterfaceClientProxy.kt
@@ -0,0 +1,23 @@
+package com.sdkwithcallbacks
+
+import android.os.Bundle
+import androidx.privacysandbox.ui.client.SharedUiAdapterFactory
+import androidx.privacysandbox.ui.core.SharedUiAdapter
+import java.util.concurrent.Executor
+
+public class MySharedUiInterfaceClientProxy(
+ public val remote: IMySharedUiInterface,
+ public val coreLibInfo: Bundle,
+) : MySharedUiInterface {
+ public val sharedUiAdapter: SharedUiAdapter =
+ SharedUiAdapterFactory.createFromCoreLibInfo(coreLibInfo)
+
+ public override fun doUiStuff() {
+ remote.doUiStuff()
+ }
+
+ public override fun openSession(clientExecutor: Executor,
+ client: SharedUiAdapter.SessionClient) {
+ sharedUiAdapter.openSession(clientExecutor, client)
+ }
+}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/Response.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/Response.kt
index 752bbeb..2bacb48 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/Response.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/Response.kt
@@ -3,5 +3,6 @@
public data class Response(
public val response: String,
public val uiInterface: MyUiInterface,
+ public val sharedUiInterface: MySharedUiInterface,
public val myEnum: MyEnum,
)
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/ResponseConverter.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/ResponseConverter.kt
index 4a42a82..4fce71c 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/ResponseConverter.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/ResponseConverter.kt
@@ -6,6 +6,9 @@
response = parcelable.response,
uiInterface = MyUiInterfaceClientProxy(parcelable.uiInterface.binder,
parcelable.uiInterface.coreLibInfo),
+ sharedUiInterface =
+ MySharedUiInterfaceClientProxy(parcelable.sharedUiInterface.binder,
+ parcelable.sharedUiInterface.coreLibInfo),
myEnum = com.sdkwithcallbacks.MyEnumConverter.fromParcelable(parcelable.myEnum))
return annotatedValue
}
@@ -16,6 +19,10 @@
parcelable.uiInterface =
IMyUiInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((annotatedValue.uiInterface
as MyUiInterfaceClientProxy).coreLibInfo, annotatedValue.uiInterface.remote)
+ parcelable.sharedUiInterface =
+ IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((annotatedValue.sharedUiInterface
+ as MySharedUiInterfaceClientProxy).coreLibInfo,
+ annotatedValue.sharedUiInterface.remote)
parcelable.myEnum = com.sdkwithcallbacks.MyEnumConverter.toParcelable(annotatedValue.myEnum)
return parcelable
}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
index 43f5454..cd17d168 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
@@ -14,15 +14,17 @@
suspend fun maybeGetInterface(): MyInterface?
suspend fun getUiInterface(): MySecondInterface
+
+ suspend fun getSharedUiInterface(): MySharedUiInterface
}
@PrivacySandboxInterface
interface MyInterface {
suspend fun add(x: Int, y: Int): Int
- fun doSomething(firstInterface: MyInterface, secondInterface: MySecondInterface)
+ fun doSomething(firstInterface: MyInterface, secondInterface: MySecondInterface, sharedUiInterface: MySharedUiInterface)
- fun doSomethingWithNullableInterface(maybeInterface: MySecondInterface?)
+ fun doSomethingWithNullableInterface(maybeInterface: MySecondInterface?, maybeSharedUiInterface: MySharedUiInterface?)
public fun doSomethingWithSdkActivityLauncher(launcher: SdkActivityLauncher)
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterface.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterface.kt
index 8f8c45f..04cd14b 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterface.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterface.kt
@@ -5,9 +5,14 @@
public interface MyInterface {
public suspend fun add(x: Int, y: Int): Int
- public fun doSomething(firstInterface: MyInterface, secondInterface: MySecondInterface)
+ public fun doSomething(
+ firstInterface: MyInterface,
+ secondInterface: MySecondInterface,
+ sharedUiInterface: MySharedUiInterface,
+ )
- public fun doSomethingWithNullableInterface(maybeInterface: MySecondInterface?)
+ public fun doSomethingWithNullableInterface(maybeInterface: MySecondInterface?,
+ maybeSharedUiInterface: MySharedUiInterface?)
public fun doSomethingWithSdkActivityLauncher(launcher: SdkActivityLauncher)
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterfaceClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterfaceClientProxy.kt
index f8115b6..c32decf 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterfaceClientProxy.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MyInterfaceClientProxy.kt
@@ -31,17 +31,26 @@
}
}
- public override fun doSomething(firstInterface: MyInterface,
- secondInterface: MySecondInterface) {
+ public override fun doSomething(
+ firstInterface: MyInterface,
+ secondInterface: MySecondInterface,
+ sharedUiInterface: MySharedUiInterface,
+ ) {
remote.doSomething((firstInterface as MyInterfaceClientProxy).remote,
IMySecondInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((secondInterface
- as MySecondInterfaceClientProxy).coreLibInfo, secondInterface.remote))
+ as MySecondInterfaceClientProxy).coreLibInfo, secondInterface.remote),
+ IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((sharedUiInterface
+ as MySharedUiInterfaceClientProxy).coreLibInfo, sharedUiInterface.remote))
}
- public override fun doSomethingWithNullableInterface(maybeInterface: MySecondInterface?) {
+ public override fun doSomethingWithNullableInterface(maybeInterface: MySecondInterface?,
+ maybeSharedUiInterface: MySharedUiInterface?) {
remote.doSomethingWithNullableInterface(maybeInterface?.let { notNullValue ->
IMySecondInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((notNullValue as
- MySecondInterfaceClientProxy).coreLibInfo, notNullValue.remote) })
+ MySecondInterfaceClientProxy).coreLibInfo, notNullValue.remote) },
+ maybeSharedUiInterface?.let { notNullValue ->
+ IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((notNullValue
+ as MySharedUiInterfaceClientProxy).coreLibInfo, notNullValue.remote) })
}
public override fun doSomethingWithSdkActivityLauncher(launcher: SdkActivityLauncher) {
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
index df137b48..c5d389a 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
@@ -3,6 +3,8 @@
public interface MySdk {
public suspend fun getInterface(): MyInterface
+ public suspend fun getSharedUiInterface(): MySharedUiInterface
+
public suspend fun getUiInterface(): MySecondInterface
public suspend fun maybeGetInterface(): MyInterface?
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
index fcb3541..7b879e9 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
@@ -29,6 +29,30 @@
}
}
+ public override suspend fun getSharedUiInterface(): MySharedUiInterface =
+ suspendCancellableCoroutine {
+ var mCancellationSignal: ICancellationSignal? = null
+ val transactionCallback = object: IMySharedUiInterfaceTransactionCallback.Stub() {
+ override fun onCancellable(cancellationSignal: ICancellationSignal) {
+ if (it.isCancelled) {
+ cancellationSignal.cancel()
+ }
+ mCancellationSignal = cancellationSignal
+ }
+ override fun onSuccess(result: IMySharedUiInterfaceCoreLibInfoAndBinderWrapper) {
+ it.resumeWith(Result.success(MySharedUiInterfaceClientProxy(result.binder,
+ result.coreLibInfo)))
+ }
+ override fun onFailure(throwableParcel: PrivacySandboxThrowableParcel) {
+ it.resumeWithException(fromThrowableParcel(throwableParcel))
+ }
+ }
+ remote.getSharedUiInterface(transactionCallback)
+ it.invokeOnCancellation {
+ mCancellationSignal?.cancel()
+ }
+ }
+
public override suspend fun getUiInterface(): MySecondInterface = suspendCancellableCoroutine {
var mCancellationSignal: ICancellationSignal? = null
val transactionCallback = object: IMySecondInterfaceTransactionCallback.Stub() {
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/input/com/sdkwithvalues/SdkInterface.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/input/com/sdkwithvalues/SdkInterface.kt
index 1a42b78..867f088 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/input/com/sdkwithvalues/SdkInterface.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/input/com/sdkwithvalues/SdkInterface.kt
@@ -5,6 +5,7 @@
import androidx.privacysandbox.tools.PrivacySandboxService
import androidx.privacysandbox.tools.PrivacySandboxValue
import androidx.privacysandbox.ui.core.SandboxedUiAdapter
+import androidx.privacysandbox.ui.core.SharedUiAdapter
import androidx.privacysandbox.activity.core.SdkActivityLauncher
@PrivacySandboxService
@@ -29,6 +30,7 @@
val hugeNumber: Double,
val myInterface: MyInterface,
val myUiInterface: MyUiInterface,
+ val mySharedUiInterface: MySharedUiInterface,
val numbers: List<Int>,
val bundle: Bundle,
val maybeNumber: Int?,
@@ -72,4 +74,9 @@
@PrivacySandboxInterface
interface MyUiInterface : SandboxedUiAdapter {
fun doUiStuff()
+}
+
+@PrivacySandboxInterface
+interface MySharedUiInterface : SharedUiAdapter {
+ fun doUiStuff()
}
\ No newline at end of file
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.kt
new file mode 100644
index 0000000..a29d110
--- /dev/null
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.kt
@@ -0,0 +1,13 @@
+package com.sdkwithvalues
+
+import android.os.Bundle
+
+public object IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter {
+ public fun toParcelable(coreLibInfo: Bundle, `interface`: IMySharedUiInterface):
+ IMySharedUiInterfaceCoreLibInfoAndBinderWrapper {
+ val parcelable = IMySharedUiInterfaceCoreLibInfoAndBinderWrapper()
+ parcelable.coreLibInfo = coreLibInfo
+ parcelable.binder = `interface`
+ return parcelable
+ }
+}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValue.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValue.kt
index 1be6291..dea4733 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValue.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValue.kt
@@ -12,6 +12,7 @@
public val hugeNumber: Double,
public val myInterface: MyInterface,
public val myUiInterface: MyUiInterface,
+ public val mySharedUiInterface: MySharedUiInterface,
public val numbers: List<Int>,
public val bundle: Bundle,
public val maybeNumber: Int?,
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValueConverter.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValueConverter.kt
index 02315c4..6e41925 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValueConverter.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/InnerSdkValueConverter.kt
@@ -13,6 +13,9 @@
myInterface = MyInterfaceClientProxy(parcelable.myInterface),
myUiInterface = MyUiInterfaceClientProxy(parcelable.myUiInterface.binder,
parcelable.myUiInterface.coreLibInfo),
+ mySharedUiInterface =
+ MySharedUiInterfaceClientProxy(parcelable.mySharedUiInterface.binder,
+ parcelable.mySharedUiInterface.coreLibInfo),
numbers = parcelable.numbers.toList(),
bundle = parcelable.bundle,
maybeNumber = parcelable.maybeNumber.firstOrNull(),
@@ -35,6 +38,10 @@
parcelable.myUiInterface =
IMyUiInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((annotatedValue.myUiInterface
as MyUiInterfaceClientProxy).coreLibInfo, annotatedValue.myUiInterface.remote)
+ parcelable.mySharedUiInterface =
+ IMySharedUiInterfaceCoreLibInfoAndBinderWrapperConverter.toParcelable((annotatedValue.mySharedUiInterface
+ as MySharedUiInterfaceClientProxy).coreLibInfo,
+ annotatedValue.mySharedUiInterface.remote)
parcelable.numbers = annotatedValue.numbers.toIntArray()
parcelable.bundle = annotatedValue.bundle
parcelable.maybeNumber = if (annotatedValue.maybeNumber == null) intArrayOf() else
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MySharedUiInterface.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MySharedUiInterface.kt
new file mode 100644
index 0000000..6b845d8
--- /dev/null
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MySharedUiInterface.kt
@@ -0,0 +1,7 @@
+package com.sdkwithvalues
+
+import androidx.privacysandbox.ui.core.SharedUiAdapter
+
+public interface MySharedUiInterface : SharedUiAdapter {
+ public fun doUiStuff()
+}
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MySharedUiInterfaceClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MySharedUiInterfaceClientProxy.kt
new file mode 100644
index 0000000..b6668de
--- /dev/null
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MySharedUiInterfaceClientProxy.kt
@@ -0,0 +1,23 @@
+package com.sdkwithvalues
+
+import android.os.Bundle
+import androidx.privacysandbox.ui.client.SharedUiAdapterFactory
+import androidx.privacysandbox.ui.core.SharedUiAdapter
+import java.util.concurrent.Executor
+
+public class MySharedUiInterfaceClientProxy(
+ public val remote: IMySharedUiInterface,
+ public val coreLibInfo: Bundle,
+) : MySharedUiInterface {
+ public val sharedUiAdapter: SharedUiAdapter =
+ SharedUiAdapterFactory.createFromCoreLibInfo(coreLibInfo)
+
+ public override fun doUiStuff() {
+ remote.doUiStuff()
+ }
+
+ public override fun openSession(clientExecutor: Executor,
+ client: SharedUiAdapter.SessionClient) {
+ sharedUiAdapter.openSession(clientExecutor, client)
+ }
+}
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
index 06bb025..8661f37 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
@@ -36,7 +36,7 @@
annotatedInterface: AnnotatedInterface,
expression: String
): CodeBlock {
- if (annotatedInterface.inheritsSandboxedUiAdapter) {
+ if (annotatedInterface.inheritsUiAdapter) {
return CodeBlock.of(
"%T(%L.binder, %L.coreLibInfo)",
annotatedInterface.clientProxyNameSpec(),
@@ -51,7 +51,7 @@
annotatedInterface: AnnotatedInterface,
expression: String
): CodeBlock {
- if (annotatedInterface.inheritsSandboxedUiAdapter) {
+ if (annotatedInterface.inheritsUiAdapter) {
return CodeBlock.builder().build {
addNamed(
"%coreLibInfoConverter:T.%toParcelable:N(" +
@@ -79,7 +79,7 @@
}
override fun convertToInterfaceBinderType(annotatedInterface: AnnotatedInterface): TypeName {
- if (annotatedInterface.inheritsSandboxedUiAdapter) {
+ if (annotatedInterface.inheritsUiAdapter) {
return annotatedInterface.uiAdapterAidlWrapper().poetTypeName()
}
return annotatedInterface.aidlType().innerType.poetTypeName()