summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSoonil Nagarkar <sooniln@google.com>2020-06-23 13:35:19 -0700
committerSoonil Nagarkar <sooniln@google.com>2020-06-23 14:32:12 -0700
commite0073038224e24e7f033d6862df894f0677476fc (patch)
treeb88ca138f8b023608f8bf8733f4ad7b092cc74b9
parent06ba19ff4eac9cd4d178884bcb202015780dcdbc (diff)
DO NOT MERGE: Fix array casting bug
Bug: 159701638 Test: presubmits Change-Id: Ib11f899d9b612b6325fda53b61e165613c881972
-rw-r--r--location/java/android/location/AbstractListenerManager.java8
-rw-r--r--location/java/android/location/LocationManager.java6
2 files changed, 8 insertions, 6 deletions
diff --git a/location/java/android/location/AbstractListenerManager.java b/location/java/android/location/AbstractListenerManager.java
index 36b86899f2d8..f5595e89b807 100644
--- a/location/java/android/location/AbstractListenerManager.java
+++ b/location/java/android/location/AbstractListenerManager.java
@@ -29,6 +29,8 @@ import android.util.ArrayMap;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.Preconditions;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
@@ -193,7 +195,7 @@ abstract class AbstractListenerManager<TRequest, TListener> {
protected abstract void unregisterService() throws RemoteException;
@Nullable
- protected TRequest merge(@NonNull TRequest[] requests) {
+ protected TRequest merge(@NonNull List<TRequest> requests) {
for (TRequest request : requests) {
Preconditions.checkArgument(request == null,
"merge() has to be overridden for non-null requests.");
@@ -221,9 +223,9 @@ abstract class AbstractListenerManager<TRequest, TListener> {
return mListeners.valueAt(0).getRequest();
}
- TRequest[] requests = (TRequest[]) new Object[mListeners.size()];
+ ArrayList<TRequest> requests = new ArrayList<>(mListeners.size());
for (int index = 0; index < mListeners.size(); index++) {
- requests[index] = mListeners.valueAt(index).getRequest();
+ requests.add(mListeners.valueAt(index).getRequest());
}
return merge(requests);
}
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 7d15bbd46697..f3c9e9435417 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -3030,14 +3030,14 @@ public class LocationManager {
@Override
@Nullable
- protected GnssRequest merge(@NonNull GnssRequest[] requests) {
- Preconditions.checkArgument(requests.length > 0);
+ protected GnssRequest merge(@NonNull List<GnssRequest> requests) {
+ Preconditions.checkArgument(!requests.isEmpty());
for (GnssRequest request : requests) {
if (request.isFullTracking()) {
return request;
}
}
- return requests[0];
+ return requests.get(0);
}
private class GnssMeasurementsListener extends IGnssMeasurementsListener.Stub {