Fix a bug where LocationManager's addGpsStatusListener does not throw a
SecurityException if LocationManagerService.mGpsStatusProvider is null even when ACCESS_FINE_LOCATION permission is not present. Tested under Nexus 5 and Molly with lmp-mr1-dev build with android.location2.cts.LocationManagerTest#testGpsStatusListener CTS test case such that it has been modified to expect SecurityException only from .addGpsStatusListener. Bug: 18095673 Change-Id: I09f9e7224a3b0eab91001f5092f0ef6e0ada7b08
This commit is contained in:
@@ -1796,9 +1796,6 @@ public class LocationManagerService extends ILocationManager.Stub {
|
||||
|
||||
@Override
|
||||
public boolean addGpsStatusListener(IGpsStatusListener listener, String packageName) {
|
||||
if (mGpsStatusProvider == null) {
|
||||
return false;
|
||||
}
|
||||
int allowedResolutionLevel = getCallerAllowedResolutionLevel();
|
||||
checkResolutionLevelIsSufficientForProviderUse(allowedResolutionLevel,
|
||||
LocationManager.GPS_PROVIDER);
|
||||
@@ -1813,6 +1810,10 @@ public class LocationManagerService extends ILocationManager.Stub {
|
||||
Binder.restoreCallingIdentity(ident);
|
||||
}
|
||||
|
||||
if (mGpsStatusProvider == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
mGpsStatusProvider.addGpsStatusListener(listener);
|
||||
} catch (RemoteException e) {
|
||||
|
||||
Reference in New Issue
Block a user