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

Commit 486dd293 authored by Soonil Nagarkar's avatar Soonil Nagarkar
Browse files

Add listenerId information to GNSS APIs

Bug: 180935385
Test: presubmits
Change-Id: Ic9534422d9de059e98dfc52292c57188f9aaffa9
parent d6eea182
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -48,13 +48,13 @@ import android.os.ICancellationSignal;
 */
interface ILocationManager
{
    @nullable Location getLastLocation(String provider, in LastLocationRequest request, String packageName, String attributionTag);
    @nullable ICancellationSignal getCurrentLocation(String provider, in LocationRequest request, in ILocationCallback callback, String packageName, String attributionTag, String listenerId);
    @nullable Location getLastLocation(String provider, in LastLocationRequest request, String packageName, @nullable String attributionTag);
    @nullable ICancellationSignal getCurrentLocation(String provider, in LocationRequest request, in ILocationCallback callback, String packageName, @nullable String attributionTag, String listenerId);

    void registerLocationListener(String provider, in LocationRequest request, in ILocationListener listener, String packageName, String attributionTag, String listenerId);
    void registerLocationListener(String provider, in LocationRequest request, in ILocationListener listener, String packageName, @nullable String attributionTag, String listenerId);
    void unregisterLocationListener(in ILocationListener listener);

    void registerLocationPendingIntent(String provider, in LocationRequest request, in PendingIntent pendingIntent, String packageName, String attributionTag);
    void registerLocationPendingIntent(String provider, in LocationRequest request, in PendingIntent pendingIntent, String packageName, @nullable String attributionTag);
    void unregisterLocationPendingIntent(in PendingIntent pendingIntent);

    void injectLocation(in Location location);
@@ -79,24 +79,24 @@ interface ILocationManager

    @nullable List<GnssAntennaInfo> getGnssAntennaInfos();

    void registerGnssStatusCallback(in IGnssStatusListener callback, String packageName, @nullable String attributionTag);
    void registerGnssStatusCallback(in IGnssStatusListener callback, String packageName, @nullable String attributionTag, String listenerId);
    void unregisterGnssStatusCallback(in IGnssStatusListener callback);

    void registerGnssNmeaCallback(in IGnssNmeaListener callback, String packageName, @nullable String attributionTag);
    void registerGnssNmeaCallback(in IGnssNmeaListener callback, String packageName, @nullable String attributionTag, String listenerId);
    void unregisterGnssNmeaCallback(in IGnssNmeaListener callback);

    void addGnssMeasurementsListener(in GnssMeasurementRequest request, in IGnssMeasurementsListener listener, String packageName, @nullable String attributionTag);
    void addGnssMeasurementsListener(in GnssMeasurementRequest request, in IGnssMeasurementsListener listener, String packageName, @nullable String attributionTag, String listenerId);
    void removeGnssMeasurementsListener(in IGnssMeasurementsListener listener);
    void injectGnssMeasurementCorrections(in GnssMeasurementCorrections corrections);

    void addGnssNavigationMessageListener(in IGnssNavigationMessageListener listener, String packageName, @nullable String attributionTag);
    void addGnssNavigationMessageListener(in IGnssNavigationMessageListener listener, String packageName, @nullable String attributionTag, String listenerId);
    void removeGnssNavigationMessageListener(in IGnssNavigationMessageListener listener);

    void addProviderRequestListener(in IProviderRequestListener listener);
    void removeProviderRequestListener(in IProviderRequestListener listener);

    int getGnssBatchSize();
    void startGnssBatch(long periodNanos, in ILocationListener listener, String packageName, @nullable String attributionTag, @nullable String listenerId);
    void startGnssBatch(long periodNanos, in ILocationListener listener, String packageName, @nullable String attributionTag, String listenerId);
    void flushGnssBatch();
    void stopGnssBatch();

+8 −4
Original line number Diff line number Diff line
@@ -2921,7 +2921,8 @@ public class LocationManager {
        protected void registerTransport(GnssStatusTransport transport)
                            throws RemoteException {
            getService().registerGnssStatusCallback(transport, transport.getPackage(),
                    transport.getAttributionTag());
                    transport.getAttributionTag(),
                    AppOpsManager.toReceiverId(transport.getListener()));
        }

        @Override
@@ -2938,7 +2939,8 @@ public class LocationManager {
        protected void registerTransport(GnssNmeaTransport transport)
                            throws RemoteException {
            getService().registerGnssNmeaCallback(transport, transport.getPackage(),
                    transport.getAttributionTag());
                    transport.getAttributionTag(),
                    AppOpsManager.toReceiverId(transport.getListener()));
        }

        @Override
@@ -2955,7 +2957,8 @@ public class LocationManager {
        protected void registerTransport(GnssMeasurementsTransport transport)
                            throws RemoteException {
            getService().addGnssMeasurementsListener(transport.getRequest(), transport,
                    transport.getPackage(), transport.getAttributionTag());
                    transport.getPackage(), transport.getAttributionTag(),
                    AppOpsManager.toReceiverId(transport.getListener()));
        }

        @Override
@@ -2987,7 +2990,8 @@ public class LocationManager {
        protected void registerTransport(GnssNavigationTransport transport)
                            throws RemoteException {
            getService().addGnssNavigationMessageListener(transport,
                    transport.getPackage(), transport.getAttributionTag());
                    transport.getPackage(), transport.getAttributionTag(),
                    AppOpsManager.toReceiverId(transport.getListener()));
        }

        @Override
+16 −13
Original line number Diff line number Diff line
@@ -479,7 +479,7 @@ public class LocationManagerService extends ILocationManager.Stub {

    @Override
    public void startGnssBatch(long periodNanos, ILocationListener listener, String packageName,
            String attributionTag, String listenerId) {
            @Nullable String attributionTag, String listenerId) {
        mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);

        if (mGnssManagerService == null) {
@@ -616,7 +616,7 @@ public class LocationManagerService extends ILocationManager.Stub {
    @Nullable
    @Override
    public ICancellationSignal getCurrentLocation(String provider, LocationRequest request,
            ILocationCallback consumer, String packageName, String attributionTag,
            ILocationCallback consumer, String packageName, @Nullable String attributionTag,
            String listenerId) {
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag,
                listenerId);
@@ -640,7 +640,7 @@ public class LocationManagerService extends ILocationManager.Stub {
    @Override
    public void registerLocationListener(String provider, LocationRequest request,
            ILocationListener listener, String packageName, @Nullable String attributionTag,
            @Nullable String listenerId) {
            String listenerId) {
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag,
                listenerId);
        int permissionLevel = LocationPermissions.getPermissionLevel(mContext, identity.getUid(),
@@ -791,7 +791,7 @@ public class LocationManagerService extends ILocationManager.Stub {

    @Override
    public Location getLastLocation(String provider, LastLocationRequest request,
            String packageName, String attributionTag) {
            String packageName, @Nullable String attributionTag) {
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
        int permissionLevel = LocationPermissions.getPermissionLevel(mContext, identity.getUid(),
                identity.getPid());
@@ -858,9 +858,10 @@ public class LocationManagerService extends ILocationManager.Stub {

    @Override
    public void registerGnssStatusCallback(IGnssStatusListener listener, String packageName,
            String attributionTag) {
            @Nullable String attributionTag, String listenerId) {
        if (mGnssManagerService != null) {
            mGnssManagerService.registerGnssStatusCallback(listener, packageName, attributionTag);
            mGnssManagerService.registerGnssStatusCallback(listener, packageName, attributionTag,
                    listenerId);
        }
    }

@@ -873,9 +874,10 @@ public class LocationManagerService extends ILocationManager.Stub {

    @Override
    public void registerGnssNmeaCallback(IGnssNmeaListener listener, String packageName,
            String attributionTag) {
            @Nullable String attributionTag, String listenerId) {
        if (mGnssManagerService != null) {
            mGnssManagerService.registerGnssNmeaCallback(listener, packageName, attributionTag);
            mGnssManagerService.registerGnssNmeaCallback(listener, packageName, attributionTag,
                    listenerId);
        }
    }

@@ -887,11 +889,12 @@ public class LocationManagerService extends ILocationManager.Stub {
    }

    @Override
    public void addGnssMeasurementsListener(@Nullable GnssMeasurementRequest request,
            IGnssMeasurementsListener listener, String packageName, String attributionTag) {
    public void addGnssMeasurementsListener(GnssMeasurementRequest request,
            IGnssMeasurementsListener listener, String packageName, @Nullable String attributionTag,
            String listenerId) {
        if (mGnssManagerService != null) {
            mGnssManagerService.addGnssMeasurementsListener(request, listener, packageName,
                    attributionTag);
                    attributionTag, listenerId);
        }
    }

@@ -937,10 +940,10 @@ public class LocationManagerService extends ILocationManager.Stub {

    @Override
    public void addGnssNavigationMessageListener(IGnssNavigationMessageListener listener,
            String packageName, String attributionTag) {
            String packageName, @Nullable String attributionTag, String listenerId) {
        if (mGnssManagerService != null) {
            mGnssManagerService.addGnssNavigationMessageListener(listener, packageName,
                    attributionTag);
                    attributionTag, listenerId);
        }
    }

+13 −9
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ public class GnssManagerService {

    private static final String ATTRIBUTION_ID = "GnssService";

    private final Context mContext;
    final Context mContext;
    private final GnssNative mGnssNative;

    private final GnssLocationProvider mGnssLocationProvider;
@@ -154,10 +154,11 @@ public class GnssManagerService {
     * Registers listener for GNSS status changes.
     */
    public void registerGnssStatusCallback(IGnssStatusListener listener, String packageName,
            @Nullable String attributionTag) {
            @Nullable String attributionTag, String listenerId) {
        mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);

        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag,
                listenerId);
        mGnssStatusProvider.addListener(identity, listener);
    }

@@ -172,10 +173,11 @@ public class GnssManagerService {
     * Registers listener for GNSS NMEA messages.
     */
    public void registerGnssNmeaCallback(IGnssNmeaListener listener, String packageName,
            @Nullable String attributionTag) {
            @Nullable String attributionTag, String listenerId) {
        mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);

        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag,
                listenerId);
        mGnssNmeaProvider.addListener(identity, listener);
    }

@@ -191,12 +193,13 @@ public class GnssManagerService {
     */
    public void addGnssMeasurementsListener(GnssMeasurementRequest request,
            IGnssMeasurementsListener listener, String packageName,
            @Nullable String attributionTag) {
            @Nullable String attributionTag, String listenerId) {
        mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
        if (request.isCorrelationVectorOutputsEnabled()) {
            mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
        }
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag,
                listenerId);
        mGnssMeasurementsProvider.addListener(request, identity, listener);
    }

@@ -223,10 +226,11 @@ public class GnssManagerService {
     * Adds a GNSS navigation message listener.
     */
    public void addGnssNavigationMessageListener(IGnssNavigationMessageListener listener,
            String packageName, @Nullable String attributionTag) {
            String packageName, @Nullable String attributionTag, String listenerId) {
        mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);

        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
        CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag,
                listenerId);
        mGnssNavigationMessageProvider.addListener(identity, listener);
    }