Merge "Fix bug in checking getLastLocation identities" into tm-dev am: 05b801bd46

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16997763

Change-Id: I9b83c0f6ea8e609a7cc22ac72e2bb32094284dec
This commit is contained in:
TreeHugger Robot
2022-02-24 17:54:21 +00:00
committed by Automerger Merge Worker
3 changed files with 14 additions and 13 deletions

View File

@@ -1127,7 +1127,7 @@ public class LocationManagerService extends ILocationManager.Stub implements
if (provider != null && !provider.equals(manager.getName())) { if (provider != null && !provider.equals(manager.getName())) {
continue; continue;
} }
CallerIdentity identity = manager.getIdentity(); CallerIdentity identity = manager.getProviderIdentity();
if (identity == null) { if (identity == null) {
continue; continue;
} }
@@ -1149,7 +1149,7 @@ public class LocationManagerService extends ILocationManager.Stub implements
return Collections.emptyList(); return Collections.emptyList();
} }
CallerIdentity identity = manager.getIdentity(); CallerIdentity identity = manager.getProviderIdentity();
if (identity == null) { if (identity == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
@@ -1536,7 +1536,7 @@ public class LocationManagerService extends ILocationManager.Stub implements
if (!enabled) { if (!enabled) {
PackageTagsList.Builder builder = new PackageTagsList.Builder(); PackageTagsList.Builder builder = new PackageTagsList.Builder();
for (LocationProviderManager manager : mProviderManagers) { for (LocationProviderManager manager : mProviderManagers) {
CallerIdentity identity = manager.getIdentity(); CallerIdentity identity = manager.getProviderIdentity();
if (identity != null) { if (identity != null) {
builder.add(identity.getPackageName(), identity.getAttributionTag()); builder.add(identity.getPackageName(), identity.getAttributionTag());
} }
@@ -1624,7 +1624,7 @@ public class LocationManagerService extends ILocationManager.Stub implements
if (provider != null && !provider.equals(manager.getName())) { if (provider != null && !provider.equals(manager.getName())) {
continue; continue;
} }
if (identity.equals(manager.getIdentity())) { if (identity.equals(manager.getProviderIdentity())) {
return true; return true;
} }
} }
@@ -1665,7 +1665,7 @@ public class LocationManagerService extends ILocationManager.Stub implements
if (listener != null) { if (listener != null) {
ArraySet<Integer> uids = new ArraySet<>(mProviderManagers.size()); ArraySet<Integer> uids = new ArraySet<>(mProviderManagers.size());
for (LocationProviderManager manager : mProviderManagers) { for (LocationProviderManager manager : mProviderManagers) {
CallerIdentity identity = manager.getIdentity(); CallerIdentity identity = manager.getProviderIdentity();
if (identity != null) { if (identity != null) {
uids.add(identity.getUid()); uids.add(identity.getUid());
} }

View File

@@ -1468,7 +1468,7 @@ public class LocationProviderManager extends
return mProvider.getState(); return mProvider.getState();
} }
public @Nullable CallerIdentity getIdentity() { public @Nullable CallerIdentity getProviderIdentity() {
return mProvider.getState().identity; return mProvider.getState().identity;
} }
@@ -1607,7 +1607,7 @@ public class LocationProviderManager extends
public @Nullable Location getLastLocation(LastLocationRequest request, public @Nullable Location getLastLocation(LastLocationRequest request,
CallerIdentity identity, @PermissionLevel int permissionLevel) { CallerIdentity identity, @PermissionLevel int permissionLevel) {
request = calculateLastLocationRequest(request); request = calculateLastLocationRequest(request, identity);
if (!isActive(request.isBypass(), identity)) { if (!isActive(request.isBypass(), identity)) {
return null; return null;
@@ -1636,15 +1636,16 @@ public class LocationProviderManager extends
return location; return location;
} }
private LastLocationRequest calculateLastLocationRequest(LastLocationRequest baseRequest) { private LastLocationRequest calculateLastLocationRequest(LastLocationRequest baseRequest,
CallerIdentity identity) {
LastLocationRequest.Builder builder = new LastLocationRequest.Builder(baseRequest); LastLocationRequest.Builder builder = new LastLocationRequest.Builder(baseRequest);
boolean locationSettingsIgnored = baseRequest.isLocationSettingsIgnored(); boolean locationSettingsIgnored = baseRequest.isLocationSettingsIgnored();
if (locationSettingsIgnored) { if (locationSettingsIgnored) {
// if we are not currently allowed use location settings ignored, disable it // if we are not currently allowed use location settings ignored, disable it
if (!mSettingsHelper.getIgnoreSettingsAllowlist().contains( if (!mSettingsHelper.getIgnoreSettingsAllowlist().contains(
getIdentity().getPackageName(), getIdentity().getAttributionTag()) identity.getPackageName(), identity.getAttributionTag())
&& !mLocationManagerInternal.isProvider(null, getIdentity())) { && !mLocationManagerInternal.isProvider(null, identity)) {
locationSettingsIgnored = false; locationSettingsIgnored = false;
} }
@@ -1658,7 +1659,7 @@ public class LocationProviderManager extends
Log.e(TAG, "adas gnss bypass request received in non-gps provider"); Log.e(TAG, "adas gnss bypass request received in non-gps provider");
adasGnssBypass = false; adasGnssBypass = false;
} else if (!mLocationSettings.getUserSettings( } else if (!mLocationSettings.getUserSettings(
getIdentity().getUserId()).isAdasGnssLocationEnabled()) { identity.getUserId()).isAdasGnssLocationEnabled()) {
adasGnssBypass = false; adasGnssBypass = false;
} }

View File

@@ -213,7 +213,7 @@ public class LocationProviderManagerTest {
public void testProperties() { public void testProperties() {
assertThat(mManager.getName()).isEqualTo(NAME); assertThat(mManager.getName()).isEqualTo(NAME);
assertThat(mManager.getProperties()).isEqualTo(PROPERTIES); assertThat(mManager.getProperties()).isEqualTo(PROPERTIES);
assertThat(mManager.getIdentity()).isEqualTo(IDENTITY); assertThat(mManager.getProviderIdentity()).isEqualTo(IDENTITY);
assertThat(mManager.hasProvider()).isTrue(); assertThat(mManager.hasProvider()).isTrue();
ProviderProperties newProperties = new ProviderProperties.Builder() ProviderProperties newProperties = new ProviderProperties.Builder()
@@ -230,7 +230,7 @@ public class LocationProviderManagerTest {
CallerIdentity newIdentity = CallerIdentity.forTest(OTHER_USER, 1, "otherpackage", CallerIdentity newIdentity = CallerIdentity.forTest(OTHER_USER, 1, "otherpackage",
"otherattribution"); "otherattribution");
mProvider.setIdentity(newIdentity); mProvider.setIdentity(newIdentity);
assertThat(mManager.getIdentity()).isEqualTo(newIdentity); assertThat(mManager.getProviderIdentity()).isEqualTo(newIdentity);
mManager.setRealProvider(null); mManager.setRealProvider(null);
assertThat(mManager.hasProvider()).isFalse(); assertThat(mManager.hasProvider()).isFalse();