diff --git a/core/api/current.txt b/core/api/current.txt index c4df0b326592e..8074d6c7752d1 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -49166,6 +49166,8 @@ package android.view { public static final class SurfaceControlViewHost.SurfacePackage implements android.os.Parcelable { ctor public SurfaceControlViewHost.SurfacePackage(@NonNull android.view.SurfaceControlViewHost.SurfacePackage); method public int describeContents(); + method public void notifyConfigurationChanged(@NonNull android.content.res.Configuration); + method public void notifyDetachedFromWindow(); method public void release(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; diff --git a/core/java/android/view/SurfaceControlViewHost.java b/core/java/android/view/SurfaceControlViewHost.java index b461faf70296d..7e0d887a8f797 100644 --- a/core/java/android/view/SurfaceControlViewHost.java +++ b/core/java/android/view/SurfaceControlViewHost.java @@ -26,6 +26,7 @@ import android.graphics.Rect; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; +import android.os.RemoteException; import android.view.accessibility.IAccessibilityEmbeddedConnection; import android.view.InsetsState; @@ -180,6 +181,36 @@ public class SurfaceControlViewHost { return mRemoteInterface; } + /** + * Forward a configuration to the remote SurfaceControlViewHost. + * This will cause View#onConfigurationChanged to be invoked on the remote + * end. This does not automatically cause the SurfaceControlViewHost + * to be resized. The root View of a SurfaceControlViewHost + * is more akin to a PopupWindow in that the size is user specified + * independent of configuration width and height. + * + * @param c The configuration to forward + */ + public void notifyConfigurationChanged(@NonNull Configuration c) { + try { + getRemoteInterface().onConfigurationChanged(c); + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); + } + } + + /** + * Tear down the remote SurfaceControlViewHost and cause + * View#onDetachedFromWindow to be invoked on the other side. + */ + public void notifyDetachedFromWindow() { + try { + getRemoteInterface().onDispatchDetachedFromWindow(); + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); + } + } + @Override public int describeContents() { return 0;