Add listenerId information to GNSS APIs

Bug: 180935385
Test: presubmits
Change-Id: Ic9534422d9de059e98dfc52292c57188f9aaffa9
This commit is contained in:
Soonil Nagarkar
2021-02-22 11:39:33 -08:00
parent d6eea18272
commit 486dd29332
4 changed files with 46 additions and 35 deletions

View File

@@ -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();

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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);
}