diff options
| author | 2024-07-31 13:02:26 +0000 | |
|---|---|---|
| committer | 2024-07-31 13:02:26 +0000 | |
| commit | aa6636ffd63d0510970cdd137757aa698470fc6c (patch) | |
| tree | 57ecd3a665ec2daeac6a8611cbff460136042e6e | |
| parent | bc5ae315c72e3aeebb0fe90e44c7cc91b4ddee64 (diff) | |
| parent | 4bcf419a0dae3bc95e04525a95977f55c1278d92 (diff) | |
Merge "Fix VibrationEffect creation from parcel" into main
| -rw-r--r-- | core/java/android/os/VibrationEffect.java | 2 | ||||
| -rw-r--r-- | core/tests/vibrator/src/android/os/VibrationEffectTest.java | 21 |
2 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java index 475984e4a751..f3ef9e15b8f0 100644 --- a/core/java/android/os/VibrationEffect.java +++ b/core/java/android/os/VibrationEffect.java @@ -1024,6 +1024,7 @@ public abstract class VibrationEffect implements Parcelable { new Creator<Composed>() { @Override public Composed createFromParcel(Parcel in) { + in.readInt(); // Skip the parcel type token return new Composed(in); } @@ -1298,6 +1299,7 @@ public abstract class VibrationEffect implements Parcelable { new Creator<VendorEffect>() { @Override public VendorEffect createFromParcel(Parcel in) { + in.readInt(); // Skip the parcel type token return new VendorEffect(in); } diff --git a/core/tests/vibrator/src/android/os/VibrationEffectTest.java b/core/tests/vibrator/src/android/os/VibrationEffectTest.java index 098ade4c1334..bd3d94467ead 100644 --- a/core/tests/vibrator/src/android/os/VibrationEffectTest.java +++ b/core/tests/vibrator/src/android/os/VibrationEffectTest.java @@ -1071,6 +1071,27 @@ public class VibrationEffectTest { .isHapticFeedbackCandidate()); } + @Test + public void testParcelingComposed() { + Parcel p = Parcel.obtain(); + VibrationEffect effect = VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK); + effect.writeToParcel(p, 0); + p.setDataPosition(0); + VibrationEffect parceledEffect = VibrationEffect.Composed.CREATOR.createFromParcel(p); + assertThat(parceledEffect).isEqualTo(effect); + } + + @Test + @RequiresFlagsEnabled(android.os.vibrator.Flags.FLAG_VENDOR_VIBRATION_EFFECTS) + public void testParcelingVendorEffect() { + Parcel p = Parcel.obtain(); + VibrationEffect effect = VibrationEffect.createVendorEffect(createNonEmptyBundle()); + effect.writeToParcel(p, 0); + p.setDataPosition(0); + VibrationEffect parceledEffect = VibrationEffect.VendorEffect.CREATOR.createFromParcel(p); + assertThat(parceledEffect).isEqualTo(effect); + } + private void assertArrayEq(long[] expected, long[] actual) { assertTrue( String.format("Expected pattern %s, but was %s", |