DO NOT MERGE: Fix array casting bug

Bug: 159701638
Test: presubmits
Change-Id: Ib11f899d9b612b6325fda53b61e165613c881972
This commit is contained in:
Soonil Nagarkar
2020-06-23 13:35:19 -07:00
parent 06ba19ff4e
commit e007303822
2 changed files with 8 additions and 6 deletions

View File

@@ -29,6 +29,8 @@ import android.util.ArrayMap;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.Preconditions; import com.android.internal.util.Preconditions;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -193,7 +195,7 @@ abstract class AbstractListenerManager<TRequest, TListener> {
protected abstract void unregisterService() throws RemoteException; protected abstract void unregisterService() throws RemoteException;
@Nullable @Nullable
protected TRequest merge(@NonNull TRequest[] requests) { protected TRequest merge(@NonNull List<TRequest> requests) {
for (TRequest request : requests) { for (TRequest request : requests) {
Preconditions.checkArgument(request == null, Preconditions.checkArgument(request == null,
"merge() has to be overridden for non-null requests."); "merge() has to be overridden for non-null requests.");
@@ -221,9 +223,9 @@ abstract class AbstractListenerManager<TRequest, TListener> {
return mListeners.valueAt(0).getRequest(); 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++) { for (int index = 0; index < mListeners.size(); index++) {
requests[index] = mListeners.valueAt(index).getRequest(); requests.add(mListeners.valueAt(index).getRequest());
} }
return merge(requests); return merge(requests);
} }

View File

@@ -3030,14 +3030,14 @@ public class LocationManager {
@Override @Override
@Nullable @Nullable
protected GnssRequest merge(@NonNull GnssRequest[] requests) { protected GnssRequest merge(@NonNull List<GnssRequest> requests) {
Preconditions.checkArgument(requests.length > 0); Preconditions.checkArgument(!requests.isEmpty());
for (GnssRequest request : requests) { for (GnssRequest request : requests) {
if (request.isFullTracking()) { if (request.isFullTracking()) {
return request; return request;
} }
} }
return requests[0]; return requests.get(0);
} }
private class GnssMeasurementsListener extends IGnssMeasurementsListener.Stub { private class GnssMeasurementsListener extends IGnssMeasurementsListener.Stub {