Skip to content

Commit 08ca104

Browse files
author
Nick Pelly
committed
Fix a couple of bugs from the location overhaul.
Marshall LocationRequest array correctly. Observe reportLocation from FusionEngine. Actually deliver the setRequest message to fusion engine. Change-Id: Iff64596fdd42f9fb06e563591dda9fbe0241533a
1 parent 3914e4b commit 08ca104

File tree

5 files changed

+13
-14
lines changed

5 files changed

+13
-14
lines changed

location/java/com/android/internal/location/ProviderRequest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ public final class ProviderRequest implements Parcelable {
3939
* is a high power slow interval request and a
4040
* low power fast interval request.
4141
*/
42-
public List<LocationRequest> locationRequests = null;
42+
public List<LocationRequest> locationRequests = new ArrayList<LocationRequest>();
4343

44-
public ProviderRequest() {
45-
}
44+
public ProviderRequest() { }
4645

4746
public static final Parcelable.Creator<ProviderRequest> CREATOR =
4847
new Parcelable.Creator<ProviderRequest>() {
@@ -52,7 +51,6 @@ public ProviderRequest createFromParcel(Parcel in) {
5251
request.reportLocation = in.readInt() == 1;
5352
request.interval = in.readLong();
5453
int count = in.readInt();
55-
request.locationRequests = new ArrayList<LocationRequest>(count);
5654
for (int i = 0; i < count; i++) {
5755
request.locationRequests.add(LocationRequest.CREATOR.createFromParcel(in));
5856
}
@@ -73,8 +71,10 @@ public int describeContents() {
7371
public void writeToParcel(Parcel parcel, int flags) {
7472
parcel.writeInt(reportLocation ? 1 : 0);
7573
parcel.writeLong(interval);
76-
parcel.writeParcelableArray(locationRequests.toArray(
77-
new LocationRequest[locationRequests.size()]), 0);
74+
parcel.writeInt(locationRequests.size());
75+
for (LocationRequest request : locationRequests) {
76+
request.writeToParcel(parcel, flags);
77+
}
7878
}
7979

8080
@Override

location/lib/java/com/android/location/provider/ProviderRequestUnbundled.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public long getInterval() {
4242
return mRequest.interval;
4343
}
4444

45+
/**
46+
* Never null.
47+
*/
4548
public List<LocationRequest> getLocationRequests() {
4649
return mRequest.locationRequests;
4750
}

packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void handleMessage(Message msg) {
7878
case MSG_SET_REQUEST:
7979
{
8080
RequestWrapper wrapper = (RequestWrapper) msg.obj;
81-
mEngine.setRequirements(wrapper.request, wrapper.source);
81+
mEngine.setRequest(wrapper.request, wrapper.source);
8282
break;
8383
}
8484
}
@@ -97,7 +97,7 @@ public void onDisable() {
9797

9898
@Override
9999
public void onSetRequest(ProviderRequestUnbundled request, WorkSource source) {
100-
mHandler.obtainMessage(MSG_SET_REQUEST, new RequestWrapper(request, source));
100+
mHandler.obtainMessage(MSG_SET_REQUEST, new RequestWrapper(request, source)).sendToTarget();
101101
}
102102

103103
@Override

packages/FusedLocation/src/com/android/location/fused/FusionEngine.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ public void disable() {
120120
}
121121

122122
/** Called on mLooper thread */
123-
public void setRequirements(ProviderRequestUnbundled request, WorkSource source) {
123+
public void setRequest(ProviderRequestUnbundled request, WorkSource source) {
124124
mRequest = request;
125-
mEnabled = true;
125+
mEnabled = request.getReportLocation();
126126
updateRequirements();
127127
}
128128

services/java/com/android/server/LocationManagerService.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -787,10 +787,6 @@ private void applyRequirementsLocked(String provider) {
787787
for (UpdateRecord record : records) {
788788
LocationRequest locationRequest = record.mRequest;
789789

790-
if (providerRequest.locationRequests == null) {
791-
providerRequest.locationRequests = new ArrayList<LocationRequest>();
792-
}
793-
794790
providerRequest.locationRequests.add(locationRequest);
795791
if (locationRequest.getInterval() < providerRequest.interval) {
796792
providerRequest.reportLocation = true;

0 commit comments

Comments
 (0)