Merge "Fix a couple of bugs from the location overhaul." into jb-mr1-dev

This commit is contained in:
Nick Pelly
2012-08-10 17:19:09 -07:00
committed by Android (Google) Code Review
5 changed files with 13 additions and 14 deletions

View File

@@ -39,10 +39,9 @@ public final class ProviderRequest implements Parcelable {
* is a high power slow interval request and a * is a high power slow interval request and a
* low power fast interval request. * low power fast interval request.
*/ */
public List<LocationRequest> locationRequests = null; public List<LocationRequest> locationRequests = new ArrayList<LocationRequest>();
public ProviderRequest() { public ProviderRequest() { }
}
public static final Parcelable.Creator<ProviderRequest> CREATOR = public static final Parcelable.Creator<ProviderRequest> CREATOR =
new Parcelable.Creator<ProviderRequest>() { new Parcelable.Creator<ProviderRequest>() {
@@ -52,7 +51,6 @@ public final class ProviderRequest implements Parcelable {
request.reportLocation = in.readInt() == 1; request.reportLocation = in.readInt() == 1;
request.interval = in.readLong(); request.interval = in.readLong();
int count = in.readInt(); int count = in.readInt();
request.locationRequests = new ArrayList<LocationRequest>(count);
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
request.locationRequests.add(LocationRequest.CREATOR.createFromParcel(in)); request.locationRequests.add(LocationRequest.CREATOR.createFromParcel(in));
} }
@@ -73,8 +71,10 @@ public final class ProviderRequest implements Parcelable {
public void writeToParcel(Parcel parcel, int flags) { public void writeToParcel(Parcel parcel, int flags) {
parcel.writeInt(reportLocation ? 1 : 0); parcel.writeInt(reportLocation ? 1 : 0);
parcel.writeLong(interval); parcel.writeLong(interval);
parcel.writeParcelableArray(locationRequests.toArray( parcel.writeInt(locationRequests.size());
new LocationRequest[locationRequests.size()]), 0); for (LocationRequest request : locationRequests) {
request.writeToParcel(parcel, flags);
}
} }
@Override @Override

View File

@@ -42,6 +42,9 @@ public final class ProviderRequestUnbundled {
return mRequest.interval; return mRequest.interval;
} }
/**
* Never null.
*/
public List<LocationRequest> getLocationRequests() { public List<LocationRequest> getLocationRequests() {
return mRequest.locationRequests; return mRequest.locationRequests;
} }

View File

@@ -78,7 +78,7 @@ public class FusedLocationProvider extends LocationProviderBase implements Fusio
case MSG_SET_REQUEST: case MSG_SET_REQUEST:
{ {
RequestWrapper wrapper = (RequestWrapper) msg.obj; RequestWrapper wrapper = (RequestWrapper) msg.obj;
mEngine.setRequirements(wrapper.request, wrapper.source); mEngine.setRequest(wrapper.request, wrapper.source);
break; break;
} }
} }
@@ -97,7 +97,7 @@ public class FusedLocationProvider extends LocationProviderBase implements Fusio
@Override @Override
public void onSetRequest(ProviderRequestUnbundled request, WorkSource source) { public void onSetRequest(ProviderRequestUnbundled request, WorkSource source) {
mHandler.obtainMessage(MSG_SET_REQUEST, new RequestWrapper(request, source)); mHandler.obtainMessage(MSG_SET_REQUEST, new RequestWrapper(request, source)).sendToTarget();
} }
@Override @Override

View File

@@ -120,9 +120,9 @@ public class FusionEngine implements LocationListener {
} }
/** Called on mLooper thread */ /** Called on mLooper thread */
public void setRequirements(ProviderRequestUnbundled request, WorkSource source) { public void setRequest(ProviderRequestUnbundled request, WorkSource source) {
mRequest = request; mRequest = request;
mEnabled = true; mEnabled = request.getReportLocation();
updateRequirements(); updateRequirements();
} }

View File

@@ -787,10 +787,6 @@ public class LocationManagerService extends ILocationManager.Stub implements Obs
for (UpdateRecord record : records) { for (UpdateRecord record : records) {
LocationRequest locationRequest = record.mRequest; LocationRequest locationRequest = record.mRequest;
if (providerRequest.locationRequests == null) {
providerRequest.locationRequests = new ArrayList<LocationRequest>();
}
providerRequest.locationRequests.add(locationRequest); providerRequest.locationRequests.add(locationRequest);
if (locationRequest.getInterval() < providerRequest.interval) { if (locationRequest.getInterval() < providerRequest.interval) {
providerRequest.reportLocation = true; providerRequest.reportLocation = true;