Merge "Fix bug in checking getLastLocation identities" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
05b801bd46
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user