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

Commit 6651eb21 authored by Jiyong Park's avatar Jiyong Park
Browse files

Add workaround for b/124210145

Problem description:
Metalava emits signature of a method under a class, even when the method
is not defined in the class when the method is inherited from a hidden
ancestor and the method is part of the public interface that the class
is expected to implement.

To be specific, inside the api signature, MmbmsDownloadServiceBase has
asBinder() and onTransact(). The methods are not defined in the class
but inherited from the auto-generated hidden class
IMbmsDownloadService.Stub. However, since the methods are also declared
in the public ancestors of the class, e.g., Binder and IInterface,
the methods are force-included in the class. Omitting the methods will
cause problem when building the stub version of the class.

This inclusion of the inherited method is breaking
SystemApiAnnotationTest. That's because the test ensures that a symbol
listed in the API signature file for the System API is actually
annotated with @SystemApi.

Solution:
To workaround the issue, actually implement the auto-generated methods
inside the class and annotate them.

Bug: 124210145
Test: atest CtsSystemApiAnnotationTestCases
Change-Id: I6760f6e4068239361c495ae7c0de3e25f91d38e1
parent 60d2586b
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -549,4 +549,22 @@ public class MbmsDownloadServiceBase extends IMbmsDownloadService.Stub {
     */
    public void onAppCallbackDied(int uid, int subscriptionId) {
    }

    // Following two methods exist to workaround b/124210145
    /** @hide */
    @SystemApi
    @TestApi
    @Override
    public android.os.IBinder asBinder() {
        return super.asBinder();
    }

    /** @hide */
    @SystemApi
    @TestApi
    @Override
    public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply,
            int flags) throws RemoteException {
        return super.onTransact(code, data, reply, flags);
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -294,4 +294,23 @@ public class MbmsStreamingServiceBase extends IMbmsStreamingService.Stub {
     */
    public void onAppCallbackDied(int uid, int subscriptionId) {
    }


    // Following two methods exist to workaround b/124210145
    /** @hide */
    @SystemApi
    @TestApi
    @Override
    public android.os.IBinder asBinder() {
        return super.asBinder();
    }

    /** @hide */
    @SystemApi
    @TestApi
    @Override
    public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply,
            int flags) throws RemoteException {
        return super.onTransact(code, data, reply, flags);
    }
}