Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3932a331 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix ExternalVibrationTest for parcelable serialization" into main

parents b3d50393 b77103f7
Loading
Loading
Loading
Loading
+10 −4
Original line number Original line Diff line number Diff line
@@ -23,6 +23,8 @@ import android.util.Slog;


import com.android.internal.util.Preconditions;
import com.android.internal.util.Preconditions;


import java.util.NoSuchElementException;

/**
/**
 * An ExternalVibration represents an on-going vibration being controlled by something other than
 * An ExternalVibration represents an on-going vibration being controlled by something other than
 * the core vibrator service.
 * the core vibrator service.
@@ -149,7 +151,7 @@ public class ExternalVibration implements Parcelable {
        try {
        try {
            mToken.linkToDeath(recipient, 0);
            mToken.linkToDeath(recipient, 0);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            return;
            Slog.wtf(TAG, "Failed to link to token death: " + this, e);
        }
        }
    }
    }


@@ -157,7 +159,11 @@ public class ExternalVibration implements Parcelable {
     * Unlinks a recipient to death against this external vibration token
     * Unlinks a recipient to death against this external vibration token
     */
     */
    public void unlinkToDeath(IBinder.DeathRecipient recipient) {
    public void unlinkToDeath(IBinder.DeathRecipient recipient) {
        try {
            mToken.unlinkToDeath(recipient, 0);
            mToken.unlinkToDeath(recipient, 0);
        } catch (NoSuchElementException e) {
            Slog.wtf(TAG, "Failed to unlink to token death", e);
        }
    }
    }


    @Override
    @Override
@@ -184,12 +190,12 @@ public class ExternalVibration implements Parcelable {
    public void writeToParcel(Parcel out, int flags) {
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mUid);
        out.writeInt(mUid);
        out.writeString(mPkg);
        out.writeString(mPkg);
        writeAudioAttributes(mAttrs, out, flags);
        writeAudioAttributes(mAttrs, out);
        out.writeStrongBinder(mController.asBinder());
        out.writeStrongBinder(mController.asBinder());
        out.writeStrongBinder(mToken);
        out.writeStrongBinder(mToken);
    }
    }


    private static void writeAudioAttributes(AudioAttributes attrs, Parcel out, int flags) {
    private static void writeAudioAttributes(AudioAttributes attrs, Parcel out) {
        out.writeInt(attrs.getUsage());
        out.writeInt(attrs.getUsage());
        out.writeInt(attrs.getContentType());
        out.writeInt(attrs.getContentType());
        out.writeInt(attrs.getCapturePreset());
        out.writeInt(attrs.getCapturePreset());
+17 −14
Original line number Original line Diff line number Diff line
@@ -16,34 +16,37 @@


package android.os;
package android.os;


import static junit.framework.Assert.assertEquals;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.mock;


import android.media.AudioAttributes;
import android.media.AudioAttributes;


import org.junit.Ignore;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.junit.runners.JUnit4;


@RunWith(MockitoJUnitRunner.class)
@RunWith(JUnit4.class)
public class ExternalVibrationTest {
public class ExternalVibrationTest {
    @Ignore("b/291713224")

    @Test
    @Test
    public void testSerialization() {
    public void testSerialization() {
        AudioAttributes audio = new AudioAttributes.Builder().build();
        IExternalVibrationController controller = mock(IExternalVibrationController.class);
        ExternalVibration original = new ExternalVibration(
        ExternalVibration original = new ExternalVibration(
                123, // uid
                /* uid= */ 123,
                "pkg",
                "pkg",
                audio,
                new AudioAttributes.Builder()
                controller);
                        .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                        .setFlags(AudioAttributes.FLAG_BYPASS_MUTE)
                        .build(),
                IExternalVibrationController.Stub.asInterface(new Binder()));
        Parcel p = Parcel.obtain();
        Parcel p = Parcel.obtain();
        original.writeToParcel(p, 0);
        original.writeToParcel(p, 0);
        p.setDataPosition(0);
        p.setDataPosition(0);
        ExternalVibration restored = ExternalVibration.CREATOR.createFromParcel(p);
        ExternalVibration restored = ExternalVibration.CREATOR.createFromParcel(p);
        assertEquals(original, restored);
        assertThat(restored).isEqualTo(original);
        // ExternalVibration.equals relies on the binder token only, check other attributes as well
        assertThat(restored.getUid()).isEqualTo(original.getUid());
        assertThat(restored.getPackage()).isEqualTo(original.getPackage());
        assertThat(restored.getAudioAttributes()).isEqualTo(original.getAudioAttributes());
        assertThat(restored.getToken()).isEqualTo(original.getToken());
    }
    }
}
}