diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MyUiInterfaceClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MyUiInterfaceClientProxy.kt
index 00ccc68..6aa0aae 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MyUiInterfaceClientProxy.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/callbacks/output/com/sdkwithcallbacks/MyUiInterfaceClientProxy.kt
@@ -2,6 +2,7 @@
 
 import android.content.Context
 import android.os.Bundle
+import android.os.IBinder
 import androidx.privacysandbox.ui.client.SandboxedUiAdapterFactory
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter.SessionClient
@@ -20,13 +21,14 @@
 
     public override fun openSession(
         context: Context,
+        windowInputToken: IBinder,
         initialWidth: Int,
         initialHeight: Int,
         isZOrderOnTop: Boolean,
         clientExecutor: Executor,
         client: SandboxedUiAdapter.SessionClient,
     ): Unit {
-        sandboxedUiAdapter.openSession(context, initialWidth, initialHeight, isZOrderOnTop,
-                clientExecutor, client)
+        sandboxedUiAdapter.openSession(context, windowInputToken, initialWidth, initialHeight,
+                isZOrderOnTop, clientExecutor, client)
     }
 }
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySecondInterfaceClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySecondInterfaceClientProxy.kt
index 2b6a244..48db338 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySecondInterfaceClientProxy.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySecondInterfaceClientProxy.kt
@@ -2,6 +2,7 @@
 
 import android.content.Context
 import android.os.Bundle
+import android.os.IBinder
 import androidx.privacysandbox.ui.client.SandboxedUiAdapterFactory
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter.SessionClient
@@ -20,13 +21,14 @@
 
     public override fun openSession(
         context: Context,
+        windowInputToken: IBinder,
         initialWidth: Int,
         initialHeight: Int,
         isZOrderOnTop: Boolean,
         clientExecutor: Executor,
         client: SandboxedUiAdapter.SessionClient,
     ): Unit {
-        sandboxedUiAdapter.openSession(context, initialWidth, initialHeight, isZOrderOnTop,
-                clientExecutor, client)
+        sandboxedUiAdapter.openSession(context, windowInputToken, initialWidth, initialHeight,
+                isZOrderOnTop, clientExecutor, client)
     }
 }
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MyUiInterfaceClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MyUiInterfaceClientProxy.kt
index 7a2c6e0..bd43324 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MyUiInterfaceClientProxy.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/values/output/com/sdkwithvalues/MyUiInterfaceClientProxy.kt
@@ -2,6 +2,7 @@
 
 import android.content.Context
 import android.os.Bundle
+import android.os.IBinder
 import androidx.privacysandbox.ui.client.SandboxedUiAdapterFactory
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter.SessionClient
@@ -20,13 +21,14 @@
 
     public override fun openSession(
         context: Context,
+        windowInputToken: IBinder,
         initialWidth: Int,
         initialHeight: Int,
         isZOrderOnTop: Boolean,
         clientExecutor: Executor,
         client: SandboxedUiAdapter.SessionClient,
     ): Unit {
-        sandboxedUiAdapter.openSession(context, initialWidth, initialHeight, isZOrderOnTop,
-                clientExecutor, client)
+        sandboxedUiAdapter.openSession(context, windowInputToken, initialWidth, initialHeight,
+                isZOrderOnTop, clientExecutor, client)
     }
 }
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientProxyTypeGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientProxyTypeGenerator.kt
index ec4f236..c562ae2 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientProxyTypeGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientProxyTypeGenerator.kt
@@ -139,6 +139,7 @@
         addParameters(
             listOf(
                 ParameterSpec(contextPropertyName, contextClass),
+                ParameterSpec("windowInputToken", ClassName("android.os", "IBinder")),
                 ParameterSpec("initialWidth", Types.int.poetClassName()),
                 ParameterSpec("initialHeight", Types.int.poetClassName()),
                 ParameterSpec("isZOrderOnTop", Types.boolean.poetClassName()),
@@ -151,8 +152,8 @@
             )
         )
         addStatement(
-            "$sandboxedUiAdapterPropertyName.openSession(%N, initialWidth, initialHeight, " +
-                "isZOrderOnTop, clientExecutor, client)",
+            "$sandboxedUiAdapterPropertyName.openSession(%N, windowInputToken, initialWidth, " +
+                "initialHeight, isZOrderOnTop, clientExecutor, client)",
             contextPropertyName,
         )
     }
diff --git a/privacysandbox/ui/integration-tests/testsdkprovider/src/main/java/androidx/privacysandbox/ui/integration/testsdkprovider/SdkApi.kt b/privacysandbox/ui/integration-tests/testsdkprovider/src/main/java/androidx/privacysandbox/ui/integration/testsdkprovider/SdkApi.kt
index c855ee2..4ceebcb 100644
--- a/privacysandbox/ui/integration-tests/testsdkprovider/src/main/java/androidx/privacysandbox/ui/integration/testsdkprovider/SdkApi.kt
+++ b/privacysandbox/ui/integration-tests/testsdkprovider/src/main/java/androidx/privacysandbox/ui/integration/testsdkprovider/SdkApi.kt
@@ -24,6 +24,7 @@
 import android.graphics.Paint
 import android.net.Uri
 import android.os.Bundle
+import android.os.IBinder
 import android.provider.Settings
 import android.util.Log
 import android.view.View
@@ -54,11 +55,12 @@
         SandboxedUiAdapter {
         override fun openSession(
             context: Context,
+            windowInputToken: IBinder,
             initialWidth: Int,
             initialHeight: Int,
             isZOrderOnTop: Boolean,
             clientExecutor: Executor,
-            client: SandboxedUiAdapter.SessionClient
+            client: SandboxedUiAdapter.SessionClient,
         ) {
             Log.d(TAG, "Session requested")
             lateinit var adView: View
@@ -90,7 +92,8 @@
 
             override fun notifyResized(width: Int, height: Int) {
                 Log.i(TAG, "Resized $width $height")
-                view.layoutParams = ViewGroup.LayoutParams(width, height)
+                view.layoutParams.width = width
+                view.layoutParams.height = height
             }
 
             override fun notifyZOrderChanged(isZOrderOnTop: Boolean) {
diff --git a/privacysandbox/ui/ui-client/src/androidTest/java/androidx/privacysandbox/ui/client/test/SandboxedSdkViewTest.kt b/privacysandbox/ui/ui-client/src/androidTest/java/androidx/privacysandbox/ui/client/test/SandboxedSdkViewTest.kt
index 9670896..f545175 100644
--- a/privacysandbox/ui/ui-client/src/androidTest/java/androidx/privacysandbox/ui/client/test/SandboxedSdkViewTest.kt
+++ b/privacysandbox/ui/ui-client/src/androidTest/java/androidx/privacysandbox/ui/client/test/SandboxedSdkViewTest.kt
@@ -21,6 +21,8 @@
 import android.content.pm.ActivityInfo
 import android.content.res.Configuration
 import android.os.Build
+import android.os.IBinder
+import android.view.SurfaceView
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewTreeObserver
@@ -74,6 +76,7 @@
     class FailingTestSandboxedUiAdapter : SandboxedUiAdapter {
         override fun openSession(
             context: Context,
+            windowInputToken: IBinder,
             initialWidth: Int,
             initialHeight: Int,
             isZOrderOnTop: Boolean,
@@ -96,6 +99,7 @@
         var internalClient: SandboxedUiAdapter.SessionClient? = null
         var testSession: TestSession? = null
         var isZOrderOnTop = true
+        var inputToken: IBinder? = null
 
         // When set to true, the onSessionOpened callback will only be invoked when specified
         // by the test. This is to test race conditions when the session is being loaded.
@@ -103,6 +107,7 @@
 
         override fun openSession(
             context: Context,
+            windowInputToken: IBinder,
             initialWidth: Int,
             initialHeight: Int,
             isZOrderOnTop: Boolean,
@@ -117,6 +122,7 @@
             }
             isSessionOpened = true
             this.isZOrderOnTop = isZOrderOnTop
+            this.inputToken = windowInputToken
             openSessionLatch?.countDown()
         }
 
@@ -248,7 +254,6 @@
     @Test
     fun childViewRemovedOnErrorTest() {
         assertTrue(view.childCount == 0)
-
         addViewToLayout()
 
         openSessionLatch.await(TIMEOUT, TimeUnit.MILLISECONDS)
@@ -404,6 +409,49 @@
         )
     }
 
+    /**
+     * Ensures that the input token passed when opening a session is non-null and is the same host
+     * token as another [SurfaceView] in the same activity.
+     */
+    @Test
+    fun inputTokenIsCorrect() {
+        lateinit var layout: LinearLayout
+        val surfaceView = SurfaceView(context)
+        val surfaceViewLatch = CountDownLatch(1)
+
+        // Attach SurfaceView
+        activity.runOnUiThread {
+            layout = activity.findViewById(
+                R.id.mainlayout
+            )
+            layout.addView(surfaceView)
+        }
+        var token: IBinder? = null
+        surfaceView.addOnAttachStateChangeListener(
+            object : View.OnAttachStateChangeListener {
+                override fun onViewAttachedToWindow(p0: View) {
+                    token = surfaceView.hostToken
+                    surfaceViewLatch.countDown()
+                }
+
+                override fun onViewDetachedFromWindow(p0: View) {
+                }
+            }
+        )
+
+        // Verify SurfaceView has a non-null token when attached.
+        assertThat(surfaceViewLatch.await(TIMEOUT, TimeUnit.MILLISECONDS)).isTrue()
+        assertThat(surfaceView.hostToken).isNotNull()
+        activity.runOnUiThread {
+            layout.removeView(surfaceView)
+        }
+
+        // Verify that the UI adapter receives the same host token object when opening a session.
+        addViewToLayout()
+        assertThat(openSessionLatch.await(TIMEOUT, TimeUnit.MILLISECONDS)).isTrue()
+        assertThat(testSandboxedUiAdapter.inputToken).isEqualTo(token)
+    }
+
     private fun addViewToLayout() {
         activity.runOnUiThread {
             activity.findViewById<LinearLayout>(
diff --git a/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/SandboxedUiAdapterFactory.kt b/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/SandboxedUiAdapterFactory.kt
index f4d3d5c..de5b048 100644
--- a/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/SandboxedUiAdapterFactory.kt
+++ b/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/SandboxedUiAdapterFactory.kt
@@ -19,9 +19,9 @@
 import android.content.Context
 import android.content.res.Configuration
 import android.hardware.display.DisplayManager
-import android.os.Binder
 import android.os.Build
 import android.os.Bundle
+import android.os.IBinder
 import android.view.Display
 import android.view.SurfaceControlViewHost
 import android.view.SurfaceView
@@ -62,6 +62,7 @@
 
         override fun openSession(
             context: Context,
+            windowInputToken: IBinder,
             initialWidth: Int,
             initialHeight: Int,
             isZOrderOnTop: Boolean,
@@ -73,7 +74,7 @@
             val displayId = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY).displayId
 
             adapterInterface.openRemoteSession(
-                Binder(), // Host Token
+                windowInputToken,
                 displayId,
                 initialWidth,
                 initialHeight,
diff --git a/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt b/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt
index fdd5e4a..0b6b31c 100644
--- a/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt
+++ b/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt
@@ -19,7 +19,9 @@
 import android.content.Context
 import android.content.res.Configuration
 import android.os.Build
+import android.os.IBinder
 import android.util.AttributeSet
+import android.view.SurfaceView
 import android.view.View
 import android.view.ViewGroup
 import androidx.annotation.RequiresApi
@@ -85,10 +87,13 @@
 
 // TODO(b/268014171): Remove API requirements once S- support is added
 @RequiresApi(Build.VERSION_CODES.TIRAMISU)
-class SandboxedSdkView @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null
-) : ViewGroup(context, attrs) {
+class SandboxedSdkView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
+    ViewGroup(context, attrs) {
+
+    // TODO(b/284147223): Remove this logic in V+
+    private val surfaceView = SurfaceView(context).apply {
+        visibility = GONE
+    }
 
     private var adapter: SandboxedUiAdapter? = null
     private var client: Client? = null
@@ -97,6 +102,7 @@
     private var requestedWidth = -1
     private var requestedHeight = -1
     private var isTransitionGroupSet = false
+    private var windowInputToken: IBinder? = null
     internal val stateListenerManager: StateListenerManager = StateListenerManager()
 
     /**
@@ -136,11 +142,13 @@
 
     private fun checkClientOpenSession() {
         val adapter = adapter
-        if (client == null && adapter != null && isAttachedToWindow && width > 0 && height > 0) {
+        if (client == null && adapter != null && windowInputToken != null &&
+            width > 0 && height > 0) {
             stateListenerManager.currentUiSessionState = SandboxedSdkUiSessionState.Loading
             client = Client(this)
             adapter.openSession(
                 context,
+                windowInputToken!!,
                 width,
                 height,
                 isZOrderOnTop,
@@ -150,6 +158,33 @@
         }
     }
 
+    /**
+     * Attaches a temporary [SurfaceView] to the view hierarchy. This [SurfaceView] will be removed
+     * once it has been attached to the window and its host token is non-null.
+     *
+     * TODO(b/284147223): Remove this logic in V+
+     */
+    private fun attachTemporarySurfaceView() {
+        val onSurfaceViewAttachedListener =
+            object : OnAttachStateChangeListener {
+                override fun onViewAttachedToWindow(view: View) {
+                    view.removeOnAttachStateChangeListener(this)
+                    removeSurfaceViewAndOpenSession()
+                }
+
+                override fun onViewDetachedFromWindow(view: View) {
+                }
+            }
+        surfaceView.addOnAttachStateChangeListener(onSurfaceViewAttachedListener)
+        super.addView(surfaceView, 0, generateDefaultLayoutParams())
+    }
+
+    internal fun removeSurfaceViewAndOpenSession() {
+        windowInputToken = surfaceView.hostToken
+        super.removeView(surfaceView)
+        checkClientOpenSession()
+    }
+
     internal fun requestSize(width: Int, height: Int) {
         if (width == this.width && height == this.height) return
         requestedWidth = width
@@ -157,7 +192,7 @@
         requestLayout()
     }
 
-    internal fun removeContentView() {
+    private fun removeContentView() {
         if (childCount == 1) {
             super.removeViewAt(0)
         }
@@ -243,12 +278,13 @@
 
     override fun onAttachedToWindow() {
         super.onAttachedToWindow()
-        checkClientOpenSession()
+        attachTemporarySurfaceView()
     }
 
     override fun onDetachedFromWindow() {
         client?.close()
         client = null
+        windowInputToken = null
         super.onDetachedFromWindow()
     }
 
diff --git a/privacysandbox/ui/ui-core/api/current.txt b/privacysandbox/ui/ui-core/api/current.txt
index db32e1e..7aef7ba 100644
--- a/privacysandbox/ui/ui-core/api/current.txt
+++ b/privacysandbox/ui/ui-core/api/current.txt
@@ -2,7 +2,7 @@
 package androidx.privacysandbox.ui.core {
 
   public interface SandboxedUiAdapter {
-    method public void openSession(android.content.Context context, int initialWidth, int initialHeight, boolean isZOrderOnTop, java.util.concurrent.Executor clientExecutor, androidx.privacysandbox.ui.core.SandboxedUiAdapter.SessionClient client);
+    method public void openSession(android.content.Context context, android.os.IBinder windowInputToken, int initialWidth, int initialHeight, boolean isZOrderOnTop, java.util.concurrent.Executor clientExecutor, androidx.privacysandbox.ui.core.SandboxedUiAdapter.SessionClient client);
   }
 
   public static interface SandboxedUiAdapter.Session {
diff --git a/privacysandbox/ui/ui-core/api/restricted_current.txt b/privacysandbox/ui/ui-core/api/restricted_current.txt
index db32e1e..7aef7ba 100644
--- a/privacysandbox/ui/ui-core/api/restricted_current.txt
+++ b/privacysandbox/ui/ui-core/api/restricted_current.txt
@@ -2,7 +2,7 @@
 package androidx.privacysandbox.ui.core {
 
   public interface SandboxedUiAdapter {
-    method public void openSession(android.content.Context context, int initialWidth, int initialHeight, boolean isZOrderOnTop, java.util.concurrent.Executor clientExecutor, androidx.privacysandbox.ui.core.SandboxedUiAdapter.SessionClient client);
+    method public void openSession(android.content.Context context, android.os.IBinder windowInputToken, int initialWidth, int initialHeight, boolean isZOrderOnTop, java.util.concurrent.Executor clientExecutor, androidx.privacysandbox.ui.core.SandboxedUiAdapter.SessionClient client);
   }
 
   public static interface SandboxedUiAdapter.Session {
diff --git a/privacysandbox/ui/ui-core/src/main/java/androidx/privacysandbox/ui/core/SandboxedUiAdapter.kt b/privacysandbox/ui/ui-core/src/main/java/androidx/privacysandbox/ui/core/SandboxedUiAdapter.kt
index 2ebe9a8..1a724ed 100644
--- a/privacysandbox/ui/ui-core/src/main/java/androidx/privacysandbox/ui/core/SandboxedUiAdapter.kt
+++ b/privacysandbox/ui/ui-core/src/main/java/androidx/privacysandbox/ui/core/SandboxedUiAdapter.kt
@@ -18,6 +18,7 @@
 
 import android.content.Context
 import android.content.res.Configuration
+import android.os.IBinder
 import android.view.View
 import java.util.concurrent.Executor
 
@@ -36,6 +37,7 @@
      */
     fun openSession(
         context: Context,
+        windowInputToken: IBinder,
         initialWidth: Int,
         initialHeight: Int,
         isZOrderOnTop: Boolean,
diff --git a/privacysandbox/ui/ui-provider/src/main/java/androidx/privacysandbox/ui/provider/BinderAdapterDelegate.kt b/privacysandbox/ui/ui-provider/src/main/java/androidx/privacysandbox/ui/provider/BinderAdapterDelegate.kt
index 9163257..76008d1 100644
--- a/privacysandbox/ui/ui-provider/src/main/java/androidx/privacysandbox/ui/provider/BinderAdapterDelegate.kt
+++ b/privacysandbox/ui/ui-provider/src/main/java/androidx/privacysandbox/ui/provider/BinderAdapterDelegate.kt
@@ -58,6 +58,7 @@
 
     fun openSession(
         context: Context,
+        windowInputToken: IBinder,
         initialWidth: Int,
         initialHeight: Int,
         isZOrderOnTop: Boolean,
@@ -65,13 +66,13 @@
         client: SandboxedUiAdapter.SessionClient
     ) {
         adapter.openSession(
-            context, initialWidth, initialHeight, isZOrderOnTop, clientExecutor,
+            context, windowInputToken, initialWidth, initialHeight, isZOrderOnTop, clientExecutor,
             client
         )
     }
 
     override fun openRemoteSession(
-        hostToken: IBinder,
+        windowInputToken: IBinder,
         displayId: Int,
         initialWidth: Int,
         initialHeight: Int,
@@ -87,13 +88,13 @@
                     sandboxContext.createDisplayContext(mDisplayManager.getDisplay(displayId))
                 val surfaceControlViewHost = SurfaceControlViewHost(
                     windowContext,
-                    mDisplayManager.getDisplay(displayId), hostToken
+                    mDisplayManager.getDisplay(displayId), windowInputToken
                 )
                 val sessionClient = SessionClientProxy(
                     surfaceControlViewHost, initialWidth, initialHeight, remoteSessionClient
                 )
                 openSession(
-                    windowContext, initialWidth, initialHeight, isZOrderOnTop,
+                    windowContext, windowInputToken, initialWidth, initialHeight, isZOrderOnTop,
                     Runnable::run, sessionClient
                 )
             } catch (exception: Throwable) {
diff --git a/privacysandbox/ui/ui-tests/src/androidTest/java/androidx/privacysandbox/ui/tests/endtoend/IntegrationTests.kt b/privacysandbox/ui/ui-tests/src/androidTest/java/androidx/privacysandbox/ui/tests/endtoend/IntegrationTests.kt
index a2ea2da..ae63942 100644
--- a/privacysandbox/ui/ui-tests/src/androidTest/java/androidx/privacysandbox/ui/tests/endtoend/IntegrationTests.kt
+++ b/privacysandbox/ui/ui-tests/src/androidTest/java/androidx/privacysandbox/ui/tests/endtoend/IntegrationTests.kt
@@ -19,7 +19,9 @@
 import android.content.Context
 import android.content.pm.ActivityInfo
 import android.content.res.Configuration
+import android.os.Binder
 import android.os.Build
+import android.os.IBinder
 import android.view.View
 import android.view.View.OnLayoutChangeListener
 import android.view.ViewGroup
@@ -168,6 +170,7 @@
 
         adapterFromCoreLibInfo.openSession(
             context,
+            Binder(),
             10 /* initialWidth */,
             10 /* initialHeight */,
             true,
@@ -242,6 +245,7 @@
 
         override fun openSession(
             context: Context,
+            windowInputToken: IBinder,
             initialWidth: Int,
             initialHeight: Int,
             isZOrderOnTop: Boolean,
