Loading core/java/android/view/ImeInsetsSourceConsumer.java +2 −7 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.annotation.Nullable; import android.os.IBinder; import android.os.Trace; import android.util.proto.ProtoOutputStream; import android.view.SurfaceControl.Transaction; import android.view.inputmethod.Flags; import android.view.inputmethod.ImeTracker; import android.view.inputmethod.InputMethodManager; Loading @@ -34,8 +33,6 @@ import android.view.inputmethod.InputMethodManager; import com.android.internal.inputmethod.ImeTracing; import com.android.internal.inputmethod.SoftInputShowHideReason; import java.util.function.Supplier; /** * Controls the visibility and animations of IME window insets source. * @hide Loading @@ -54,10 +51,8 @@ public final class ImeInsetsSourceConsumer extends InsetsSourceConsumer { */ private boolean mIsRequestedVisibleAwaitingLeash; public ImeInsetsSourceConsumer( int id, InsetsState state, Supplier<Transaction> transactionSupplier, InsetsController controller) { super(id, WindowInsets.Type.ime(), state, transactionSupplier, controller); public ImeInsetsSourceConsumer(int id, InsetsState state, InsetsController controller) { super(id, WindowInsets.Type.ime(), state, controller); } @Override Loading core/java/android/view/InsetsAnimationControlCallbacks.java +0 −7 Original line number Diff line number Diff line Loading @@ -53,13 +53,6 @@ public interface InsetsAnimationControlCallbacks { */ void notifyFinished(InsetsAnimationControlRunner runner, boolean shown); /** * Apply the new params to the surface. * @param params The {@link android.view.SyncRtSurfaceTransactionApplier.SurfaceParams} to * apply. */ void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params); /** * Post a message to release the Surface, guaranteed to happen after all * previous calls to applySurfaceParams. Loading core/java/android/view/InsetsAnimationControlImpl.java +9 −1 Original line number Diff line number Diff line Loading @@ -99,6 +99,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro private final @InsetsType int mTypes; private @InsetsType int mControllingTypes; private final InsetsAnimationControlCallbacks mController; private final SurfaceParamsApplier mSurfaceParamsApplier; private final WindowInsetsAnimation mAnimation; private final long mDurationMs; private final Interpolator mInterpolator; Loading @@ -123,6 +124,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro public InsetsAnimationControlImpl(SparseArray<InsetsSourceControl> controls, @Nullable Rect frame, InsetsState state, WindowInsetsAnimationControlListener listener, @InsetsType int types, InsetsAnimationControlCallbacks controller, SurfaceParamsApplier surfaceParamsApplier, InsetsAnimationSpec insetsAnimationSpec, @AnimationType int animationType, @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation, CompatibilityInfo.Translator translator, @Nullable ImeTracker.Token statsToken) { Loading @@ -131,6 +133,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro mTypes = types; mControllingTypes = types; mController = controller; mSurfaceParamsApplier = surfaceParamsApplier; mInitialInsetsState = new InsetsState(state, true /* copySources */); if (frame != null) { final SparseIntArray idSideMap = new SparseIntArray(); Loading Loading @@ -257,6 +260,11 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro return mAnimationType; } @Override public SurfaceParamsApplier getSurfaceParamsApplier() { return mSurfaceParamsApplier; } @Override @Nullable public ImeTracker.Token getStatsToken() { Loading Loading @@ -305,7 +313,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro updateLeashesForSide(SIDE_RIGHT, offset.right, params, outState, mPendingAlpha); updateLeashesForSide(SIDE_BOTTOM, offset.bottom, params, outState, mPendingAlpha); mController.applySurfaceParams(params.toArray(new SurfaceParams[params.size()])); mSurfaceParamsApplier.applySurfaceParams(params.toArray(new SurfaceParams[params.size()])); mCurrentInsets = mPendingInsets; mAnimation.setFraction(mPendingFraction); mCurrentAlpha = mPendingAlpha; Loading core/java/android/view/InsetsAnimationControlRunner.java +28 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,11 @@ public interface InsetsAnimationControlRunner { */ @AnimationType int getAnimationType(); /** * @return The {@link SurfaceParamsApplier} this runner is using. */ SurfaceParamsApplier getSurfaceParamsApplier(); /** * @return The token tracking the current IME request or {@code null} otherwise. */ Loading @@ -99,4 +104,27 @@ public interface InsetsAnimationControlRunner { * @param fieldId FieldId of the implementation class */ void dumpDebug(ProtoOutputStream proto, long fieldId); /** * Interface applying given surface operations. */ interface SurfaceParamsApplier { SurfaceParamsApplier DEFAULT = params -> { final SurfaceControl.Transaction t = new SurfaceControl.Transaction(); for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplier.applyParams(t, params[i], new float[9]); } t.apply(); t.close(); }; /** * Apply the new params to the surface. * * @param params The {@link SyncRtSurfaceTransactionApplier.SurfaceParams} to apply. */ void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params); } } core/java/android/view/InsetsAnimationThreadControlRunner.java +23 −19 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package android.view; import static android.view.InsetsController.DEBUG; import static android.view.SyncRtSurfaceTransactionApplier.applyParams; import android.annotation.Nullable; import android.annotation.UiThread; Loading @@ -30,7 +29,6 @@ import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import android.view.InsetsController.AnimationType; import android.view.InsetsController.LayoutInsetsDuringAnimation; import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams; import android.view.WindowInsets.Type.InsetsType; import android.view.WindowInsetsAnimation.Bounds; import android.view.inputmethod.ImeTracker; Loading @@ -50,8 +48,6 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro private final InsetsAnimationControlCallbacks mCallbacks = new InsetsAnimationControlCallbacks() { private final float[] mTmpFloat9 = new float[9]; @Override @UiThread public <T extends InsetsAnimationControlRunner & InternalInsetsAnimationController> Loading Loading @@ -80,19 +76,6 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro mOuterCallbacks.notifyFinished(InsetsAnimationThreadControlRunner.this, shown)); } @Override public void applySurfaceParams(SurfaceParams... params) { if (DEBUG) Log.d(TAG, "applySurfaceParams"); SurfaceControl.Transaction t = new SurfaceControl.Transaction(); for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplier.SurfaceParams surfaceParams = params[i]; applyParams(t, surfaceParams, mTmpFloat9); } t.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId()); t.apply(); t.close(); } @Override public void releaseSurfaceControlFromRt(SurfaceControl sc) { if (DEBUG) Log.d(TAG, "releaseSurfaceControlFromRt"); Loading @@ -106,6 +89,22 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro } }; private SurfaceParamsApplier mSurfaceParamsApplier = new SurfaceParamsApplier() { private final float[] mTmpFloat9 = new float[9]; @Override public void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params) { final SurfaceControl.Transaction t = new SurfaceControl.Transaction(); for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplier.applyParams(t, params[i], mTmpFloat9); } t.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId()); t.apply(); t.close(); } }; @UiThread public InsetsAnimationThreadControlRunner(SparseArray<InsetsSourceControl> controls, @Nullable Rect frame, InsetsState state, WindowInsetsAnimationControlListener listener, Loading @@ -117,8 +116,8 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro mMainThreadHandler = mainThreadHandler; mOuterCallbacks = controller; mControl = new InsetsAnimationControlImpl(controls, frame, state, listener, types, mCallbacks, insetsAnimationSpec, animationType, layoutInsetsDuringAnimation, translator, statsToken); mCallbacks, mSurfaceParamsApplier, insetsAnimationSpec, animationType, layoutInsetsDuringAnimation, translator, statsToken); InsetsAnimationThread.getHandler().post(() -> { if (mControl.isCancelled()) { return; Loading Loading @@ -186,6 +185,11 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro return mControl.getAnimationType(); } @Override public SurfaceParamsApplier getSurfaceParamsApplier() { return mSurfaceParamsApplier; } @Override public void updateLayoutInsetsDuringAnimation( @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation) { Loading Loading
core/java/android/view/ImeInsetsSourceConsumer.java +2 −7 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.annotation.Nullable; import android.os.IBinder; import android.os.Trace; import android.util.proto.ProtoOutputStream; import android.view.SurfaceControl.Transaction; import android.view.inputmethod.Flags; import android.view.inputmethod.ImeTracker; import android.view.inputmethod.InputMethodManager; Loading @@ -34,8 +33,6 @@ import android.view.inputmethod.InputMethodManager; import com.android.internal.inputmethod.ImeTracing; import com.android.internal.inputmethod.SoftInputShowHideReason; import java.util.function.Supplier; /** * Controls the visibility and animations of IME window insets source. * @hide Loading @@ -54,10 +51,8 @@ public final class ImeInsetsSourceConsumer extends InsetsSourceConsumer { */ private boolean mIsRequestedVisibleAwaitingLeash; public ImeInsetsSourceConsumer( int id, InsetsState state, Supplier<Transaction> transactionSupplier, InsetsController controller) { super(id, WindowInsets.Type.ime(), state, transactionSupplier, controller); public ImeInsetsSourceConsumer(int id, InsetsState state, InsetsController controller) { super(id, WindowInsets.Type.ime(), state, controller); } @Override Loading
core/java/android/view/InsetsAnimationControlCallbacks.java +0 −7 Original line number Diff line number Diff line Loading @@ -53,13 +53,6 @@ public interface InsetsAnimationControlCallbacks { */ void notifyFinished(InsetsAnimationControlRunner runner, boolean shown); /** * Apply the new params to the surface. * @param params The {@link android.view.SyncRtSurfaceTransactionApplier.SurfaceParams} to * apply. */ void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params); /** * Post a message to release the Surface, guaranteed to happen after all * previous calls to applySurfaceParams. Loading
core/java/android/view/InsetsAnimationControlImpl.java +9 −1 Original line number Diff line number Diff line Loading @@ -99,6 +99,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro private final @InsetsType int mTypes; private @InsetsType int mControllingTypes; private final InsetsAnimationControlCallbacks mController; private final SurfaceParamsApplier mSurfaceParamsApplier; private final WindowInsetsAnimation mAnimation; private final long mDurationMs; private final Interpolator mInterpolator; Loading @@ -123,6 +124,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro public InsetsAnimationControlImpl(SparseArray<InsetsSourceControl> controls, @Nullable Rect frame, InsetsState state, WindowInsetsAnimationControlListener listener, @InsetsType int types, InsetsAnimationControlCallbacks controller, SurfaceParamsApplier surfaceParamsApplier, InsetsAnimationSpec insetsAnimationSpec, @AnimationType int animationType, @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation, CompatibilityInfo.Translator translator, @Nullable ImeTracker.Token statsToken) { Loading @@ -131,6 +133,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro mTypes = types; mControllingTypes = types; mController = controller; mSurfaceParamsApplier = surfaceParamsApplier; mInitialInsetsState = new InsetsState(state, true /* copySources */); if (frame != null) { final SparseIntArray idSideMap = new SparseIntArray(); Loading Loading @@ -257,6 +260,11 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro return mAnimationType; } @Override public SurfaceParamsApplier getSurfaceParamsApplier() { return mSurfaceParamsApplier; } @Override @Nullable public ImeTracker.Token getStatsToken() { Loading Loading @@ -305,7 +313,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro updateLeashesForSide(SIDE_RIGHT, offset.right, params, outState, mPendingAlpha); updateLeashesForSide(SIDE_BOTTOM, offset.bottom, params, outState, mPendingAlpha); mController.applySurfaceParams(params.toArray(new SurfaceParams[params.size()])); mSurfaceParamsApplier.applySurfaceParams(params.toArray(new SurfaceParams[params.size()])); mCurrentInsets = mPendingInsets; mAnimation.setFraction(mPendingFraction); mCurrentAlpha = mPendingAlpha; Loading
core/java/android/view/InsetsAnimationControlRunner.java +28 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,11 @@ public interface InsetsAnimationControlRunner { */ @AnimationType int getAnimationType(); /** * @return The {@link SurfaceParamsApplier} this runner is using. */ SurfaceParamsApplier getSurfaceParamsApplier(); /** * @return The token tracking the current IME request or {@code null} otherwise. */ Loading @@ -99,4 +104,27 @@ public interface InsetsAnimationControlRunner { * @param fieldId FieldId of the implementation class */ void dumpDebug(ProtoOutputStream proto, long fieldId); /** * Interface applying given surface operations. */ interface SurfaceParamsApplier { SurfaceParamsApplier DEFAULT = params -> { final SurfaceControl.Transaction t = new SurfaceControl.Transaction(); for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplier.applyParams(t, params[i], new float[9]); } t.apply(); t.close(); }; /** * Apply the new params to the surface. * * @param params The {@link SyncRtSurfaceTransactionApplier.SurfaceParams} to apply. */ void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params); } }
core/java/android/view/InsetsAnimationThreadControlRunner.java +23 −19 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package android.view; import static android.view.InsetsController.DEBUG; import static android.view.SyncRtSurfaceTransactionApplier.applyParams; import android.annotation.Nullable; import android.annotation.UiThread; Loading @@ -30,7 +29,6 @@ import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import android.view.InsetsController.AnimationType; import android.view.InsetsController.LayoutInsetsDuringAnimation; import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams; import android.view.WindowInsets.Type.InsetsType; import android.view.WindowInsetsAnimation.Bounds; import android.view.inputmethod.ImeTracker; Loading @@ -50,8 +48,6 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro private final InsetsAnimationControlCallbacks mCallbacks = new InsetsAnimationControlCallbacks() { private final float[] mTmpFloat9 = new float[9]; @Override @UiThread public <T extends InsetsAnimationControlRunner & InternalInsetsAnimationController> Loading Loading @@ -80,19 +76,6 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro mOuterCallbacks.notifyFinished(InsetsAnimationThreadControlRunner.this, shown)); } @Override public void applySurfaceParams(SurfaceParams... params) { if (DEBUG) Log.d(TAG, "applySurfaceParams"); SurfaceControl.Transaction t = new SurfaceControl.Transaction(); for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplier.SurfaceParams surfaceParams = params[i]; applyParams(t, surfaceParams, mTmpFloat9); } t.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId()); t.apply(); t.close(); } @Override public void releaseSurfaceControlFromRt(SurfaceControl sc) { if (DEBUG) Log.d(TAG, "releaseSurfaceControlFromRt"); Loading @@ -106,6 +89,22 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro } }; private SurfaceParamsApplier mSurfaceParamsApplier = new SurfaceParamsApplier() { private final float[] mTmpFloat9 = new float[9]; @Override public void applySurfaceParams(SyncRtSurfaceTransactionApplier.SurfaceParams... params) { final SurfaceControl.Transaction t = new SurfaceControl.Transaction(); for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplier.applyParams(t, params[i], mTmpFloat9); } t.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId()); t.apply(); t.close(); } }; @UiThread public InsetsAnimationThreadControlRunner(SparseArray<InsetsSourceControl> controls, @Nullable Rect frame, InsetsState state, WindowInsetsAnimationControlListener listener, Loading @@ -117,8 +116,8 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro mMainThreadHandler = mainThreadHandler; mOuterCallbacks = controller; mControl = new InsetsAnimationControlImpl(controls, frame, state, listener, types, mCallbacks, insetsAnimationSpec, animationType, layoutInsetsDuringAnimation, translator, statsToken); mCallbacks, mSurfaceParamsApplier, insetsAnimationSpec, animationType, layoutInsetsDuringAnimation, translator, statsToken); InsetsAnimationThread.getHandler().post(() -> { if (mControl.isCancelled()) { return; Loading Loading @@ -186,6 +185,11 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro return mControl.getAnimationType(); } @Override public SurfaceParamsApplier getSurfaceParamsApplier() { return mSurfaceParamsApplier; } @Override public void updateLayoutInsetsDuringAnimation( @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation) { Loading