Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08ca1046 authored by Nick Pelly's avatar Nick Pelly
Browse files

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
parent 3914e4b7
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -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
+3 −0
Original line number Original line Diff line number Diff line
@@ -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;
    }
    }
+2 −2
Original line number Original line Diff line number Diff line
@@ -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
+2 −2
Original line number Original line Diff line number Diff line
@@ -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();
    }
    }


+0 −4
Original line number Original line Diff line number Diff line
@@ -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;