diff options
| author | 2022-02-23 08:37:43 -0800 | |
|---|---|---|
| committer | 2022-02-24 02:55:00 +0000 | |
| commit | d7ca4765650fd5f73e4c6097ea44898d5c95e5b8 (patch) | |
| tree | d7bebc78c9418bd2fb9e81c955cb4a48ee081648 | |
| parent | 629b6946635cd39a83e2138c9545f831cd9b084e (diff) | |
Fix bug in checking getLastLocation identities
Also renames getIdentity() to getProviderIdentity() for less confusion
in the future.
Bug: 219835125
Test: Presubmits
Change-Id: I823be97ee23740ed4a4ca10e81542ed717e0f1e9
3 files changed, 14 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/location/LocationManagerService.java b/services/core/java/com/android/server/location/LocationManagerService.java index 45d9822205ec..fac510651878 100644 --- a/services/core/java/com/android/server/location/LocationManagerService.java +++ b/services/core/java/com/android/server/location/LocationManagerService.java @@ -1127,7 +1127,7 @@ public class LocationManagerService extends ILocationManager.Stub implements              if (provider != null && !provider.equals(manager.getName())) {                  continue;              } -            CallerIdentity identity = manager.getIdentity(); +            CallerIdentity identity = manager.getProviderIdentity();              if (identity == null) {                  continue;              } @@ -1149,7 +1149,7 @@ public class LocationManagerService extends ILocationManager.Stub implements              return Collections.emptyList();          } -        CallerIdentity identity = manager.getIdentity(); +        CallerIdentity identity = manager.getProviderIdentity();          if (identity == null) {              return Collections.emptyList();          } @@ -1536,7 +1536,7 @@ public class LocationManagerService extends ILocationManager.Stub implements          if (!enabled) {              PackageTagsList.Builder builder = new PackageTagsList.Builder();              for (LocationProviderManager manager : mProviderManagers) { -                CallerIdentity identity = manager.getIdentity(); +                CallerIdentity identity = manager.getProviderIdentity();                  if (identity != null) {                      builder.add(identity.getPackageName(), identity.getAttributionTag());                  } @@ -1624,7 +1624,7 @@ public class LocationManagerService extends ILocationManager.Stub implements                  if (provider != null && !provider.equals(manager.getName())) {                      continue;                  } -                if (identity.equals(manager.getIdentity())) { +                if (identity.equals(manager.getProviderIdentity())) {                      return true;                  }              } @@ -1665,7 +1665,7 @@ public class LocationManagerService extends ILocationManager.Stub implements                  if (listener != null) {                      ArraySet<Integer> uids = new ArraySet<>(mProviderManagers.size());                      for (LocationProviderManager manager : mProviderManagers) { -                        CallerIdentity identity = manager.getIdentity(); +                        CallerIdentity identity = manager.getProviderIdentity();                          if (identity != null) {                              uids.add(identity.getUid());                          } diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java index 0b8f94c574c6..acbee11f3b72 100644 --- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java +++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java @@ -1468,7 +1468,7 @@ public class LocationProviderManager extends          return mProvider.getState();      } -    public @Nullable CallerIdentity getIdentity() { +    public @Nullable CallerIdentity getProviderIdentity() {          return mProvider.getState().identity;      } @@ -1607,7 +1607,7 @@ public class LocationProviderManager extends      public @Nullable Location getLastLocation(LastLocationRequest request,              CallerIdentity identity, @PermissionLevel int permissionLevel) { -        request = calculateLastLocationRequest(request); +        request = calculateLastLocationRequest(request, identity);          if (!isActive(request.isBypass(), identity)) {              return null; @@ -1636,15 +1636,16 @@ public class LocationProviderManager extends          return location;      } -    private LastLocationRequest calculateLastLocationRequest(LastLocationRequest baseRequest) { +    private LastLocationRequest calculateLastLocationRequest(LastLocationRequest baseRequest, +            CallerIdentity identity) {          LastLocationRequest.Builder builder = new LastLocationRequest.Builder(baseRequest);          boolean locationSettingsIgnored = baseRequest.isLocationSettingsIgnored();          if (locationSettingsIgnored) {              // if we are not currently allowed use location settings ignored, disable it              if (!mSettingsHelper.getIgnoreSettingsAllowlist().contains( -                    getIdentity().getPackageName(), getIdentity().getAttributionTag()) -                    && !mLocationManagerInternal.isProvider(null, getIdentity())) { +                    identity.getPackageName(), identity.getAttributionTag()) +                    && !mLocationManagerInternal.isProvider(null, identity)) {                  locationSettingsIgnored = false;              } @@ -1658,7 +1659,7 @@ public class LocationProviderManager extends                  Log.e(TAG, "adas gnss bypass request received in non-gps provider");                  adasGnssBypass = false;              } else if (!mLocationSettings.getUserSettings( -                    getIdentity().getUserId()).isAdasGnssLocationEnabled()) { +                    identity.getUserId()).isAdasGnssLocationEnabled()) {                  adasGnssBypass = false;              } diff --git a/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java b/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java index 4e4854c6688d..d8f409dfce66 100644 --- a/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/location/provider/LocationProviderManagerTest.java @@ -213,7 +213,7 @@ public class LocationProviderManagerTest {      public void testProperties() {          assertThat(mManager.getName()).isEqualTo(NAME);          assertThat(mManager.getProperties()).isEqualTo(PROPERTIES); -        assertThat(mManager.getIdentity()).isEqualTo(IDENTITY); +        assertThat(mManager.getProviderIdentity()).isEqualTo(IDENTITY);          assertThat(mManager.hasProvider()).isTrue();          ProviderProperties newProperties = new ProviderProperties.Builder() @@ -230,7 +230,7 @@ public class LocationProviderManagerTest {          CallerIdentity newIdentity = CallerIdentity.forTest(OTHER_USER, 1, "otherpackage",                  "otherattribution");          mProvider.setIdentity(newIdentity); -        assertThat(mManager.getIdentity()).isEqualTo(newIdentity); +        assertThat(mManager.getProviderIdentity()).isEqualTo(newIdentity);          mManager.setRealProvider(null);          assertThat(mManager.hasProvider()).isFalse();  |