diff --git a/core/api/current.txt b/core/api/current.txt index eef2d4ef3943e..82977ec1dab0e 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -48968,6 +48968,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 85a9dbd736edf..0eb2328373577 100644 --- a/core/java/android/view/SurfaceControlViewHost.java +++ b/core/java/android/view/SurfaceControlViewHost.java @@ -25,6 +25,7 @@ import android.graphics.PixelFormat; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; +import android.os.RemoteException; import android.view.accessibility.IAccessibilityEmbeddedConnection; import java.util.Objects; @@ -168,6 +169,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;