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

Commit c4a48337 authored by Soonil Nagarkar's avatar Soonil Nagarkar
Browse files

Prevent crash when invoking GNSS apis

GNSS APIs may crash when invoked on devices without GNSS, fix this
implementation.

Bug: 143591625
Test: manual
Change-Id: I6de563df96bc4605852989243c38e5d5278cbda0
parent 639701e8
Loading
Loading
Loading
Loading
+32 −14
Original line number Diff line number Diff line
@@ -2757,9 +2757,14 @@ public class LocationManager {
        protected boolean registerService() throws RemoteException {
            Preconditions.checkState(mListenerTransport == null);

            mListenerTransport = new GnssStatusListener();
            return mService.registerGnssStatusCallback(mListenerTransport,
                    mContext.getPackageName(), mContext.getFeatureId());
            GnssStatusListener transport = new GnssStatusListener();
            if (mService.registerGnssStatusCallback(transport, mContext.getPackageName(),
                    mContext.getFeatureId())) {
                mListenerTransport = transport;
                return true;
            } else {
                return false;
            }
        }

        @Override
@@ -2817,10 +2822,14 @@ public class LocationManager {
        protected boolean registerService() throws RemoteException {
            Preconditions.checkState(mListenerTransport == null);

            mListenerTransport = new GnssMeasurementsListener();
            return mService.addGnssMeasurementsListener(mListenerTransport,
                    mContext.getPackageName(), mContext.getFeatureId(),
                    "gnss measurement callback");
            GnssMeasurementsListener transport = new GnssMeasurementsListener();
            if (mService.addGnssMeasurementsListener(transport, mContext.getPackageName(),
                    mContext.getFeatureId(), "gnss measurement callback")) {
                mListenerTransport = transport;
                return true;
            } else {
                return false;
            }
        }

        @Override
@@ -2854,10 +2863,14 @@ public class LocationManager {
        protected boolean registerService() throws RemoteException {
            Preconditions.checkState(mListenerTransport == null);

            mListenerTransport = new GnssNavigationMessageListener();
            return mService.addGnssNavigationMessageListener(mListenerTransport,
                    mContext.getPackageName(), mContext.getFeatureId(),
                    "gnss navigation callback");
            GnssNavigationMessageListener transport = new GnssNavigationMessageListener();
            if (mService.addGnssNavigationMessageListener(transport, mContext.getPackageName(),
                    mContext.getFeatureId(), "gnss navigation callback")) {
                mListenerTransport = transport;
                return true;
            } else {
                return false;
            }
        }

        @Override
@@ -2891,9 +2904,14 @@ public class LocationManager {
        protected boolean registerService() throws RemoteException {
            Preconditions.checkState(mListenerTransport == null);

            mListenerTransport = new BatchedLocationCallback();
            return mService.addGnssBatchingCallback(mListenerTransport, mContext.getPackageName(),
                     mContext.getFeatureId(), "batched location callback");
            BatchedLocationCallback transport = new BatchedLocationCallback();
            if (mService.addGnssBatchingCallback(transport, mContext.getPackageName(),
                     mContext.getFeatureId(), "batched location callback")) {
                mListenerTransport = transport;
                return true;
            } else {
                return false;
            }
        }

        @Override