[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()