Merge "Include provider tag in complete attribution tag list" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9f8a57ebf5
@@ -2271,22 +2271,28 @@ public class LocationProviderManager extends
|
||||
}
|
||||
|
||||
if (mOnLocationTagsChangeListener != null) {
|
||||
if (!oldState.extraAttributionTags.equals(newState.extraAttributionTags)) {
|
||||
if (!oldState.extraAttributionTags.equals(newState.extraAttributionTags)
|
||||
|| !Objects.equals(oldState.identity, newState.identity)) {
|
||||
if (oldState.identity != null) {
|
||||
FgThread.getHandler().sendMessage(PooledLambda.obtainMessage(
|
||||
OnProviderLocationTagsChangeListener::onLocationTagsChanged,
|
||||
mOnLocationTagsChangeListener, new LocationTagInfo(
|
||||
oldState.identity.getUid(), oldState.identity.getPackageName(),
|
||||
Collections.emptySet())
|
||||
));
|
||||
));
|
||||
}
|
||||
if (newState.identity != null) {
|
||||
ArraySet<String> attributionTags = new ArraySet<>(
|
||||
newState.extraAttributionTags.size() + 1);
|
||||
attributionTags.addAll(newState.extraAttributionTags);
|
||||
attributionTags.add(newState.identity.getAttributionTag());
|
||||
|
||||
FgThread.getHandler().sendMessage(PooledLambda.obtainMessage(
|
||||
OnProviderLocationTagsChangeListener::onLocationTagsChanged,
|
||||
mOnLocationTagsChangeListener, new LocationTagInfo(
|
||||
newState.identity.getUid(), newState.identity.getPackageName(),
|
||||
newState.extraAttributionTags)
|
||||
));
|
||||
attributionTags)
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,6 +61,8 @@ import android.location.ILocationListener;
|
||||
import android.location.LastLocationRequest;
|
||||
import android.location.Location;
|
||||
import android.location.LocationManagerInternal;
|
||||
import android.location.LocationManagerInternal.LocationTagInfo;
|
||||
import android.location.LocationManagerInternal.OnProviderLocationTagsChangeListener;
|
||||
import android.location.LocationManagerInternal.ProviderEnabledListener;
|
||||
import android.location.LocationRequest;
|
||||
import android.location.LocationResult;
|
||||
@@ -90,6 +92,7 @@ import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.InOrder;
|
||||
import org.mockito.Mock;
|
||||
|
||||
@@ -215,6 +218,21 @@ public class LocationProviderManagerTest {
|
||||
assertThat(mManager.hasProvider()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttributionTags() {
|
||||
OnProviderLocationTagsChangeListener listener = mock(
|
||||
OnProviderLocationTagsChangeListener.class);
|
||||
mManager.setOnProviderLocationTagsChangeListener(listener);
|
||||
|
||||
mProvider.setExtraAttributionTags(Collections.singleton("extra"));
|
||||
|
||||
ArgumentCaptor<LocationTagInfo> captor = ArgumentCaptor.forClass(LocationTagInfo.class);
|
||||
verify(listener, times(2)).onLocationTagsChanged(captor.capture());
|
||||
|
||||
assertThat(captor.getAllValues().get(0).getTags()).isEmpty();
|
||||
assertThat(captor.getAllValues().get(1).getTags()).containsExactly("extra", "attribution");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveProvider() {
|
||||
mManager.setRealProvider(null);
|
||||
|
||||
Reference in New Issue
Block a user