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

Commit e4cf77de authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix two location bugs" into sc-dev am: 9d1e7a6e am: 7455dc46

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14792502

Change-Id: Ifcb523ea97fc359ba8fec17d6c172115aa241c9b
parents 4e0e1437 7455dc46
Loading
Loading
Loading
Loading
+20 −10
Original line number Diff line number Diff line
@@ -35,17 +35,17 @@ public class SystemEmergencyHelper extends EmergencyHelper {

    private final Context mContext;

    private TelephonyManager mTelephonyManager;
    TelephonyManager mTelephonyManager;

    private boolean mIsInEmergencyCall;
    private long mEmergencyCallEndRealtimeMs = Long.MIN_VALUE;
    boolean mIsInEmergencyCall;
    long mEmergencyCallEndRealtimeMs = Long.MIN_VALUE;

    public SystemEmergencyHelper(Context context) {
        mContext = context;
    }

    /** Called when system is ready. */
    public void onSystemReady() {
    public synchronized void onSystemReady() {
        if (mTelephonyManager != null) {
            return;
        }
@@ -64,14 +64,20 @@ public class SystemEmergencyHelper extends EmergencyHelper {
                    return;
                }

                synchronized (SystemEmergencyHelper.this) {
                    mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber(
                            intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER));
                }
            }
        }, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL));
    }

    @Override
    public boolean isInEmergency(long extensionTimeMs) {
    public synchronized boolean isInEmergency(long extensionTimeMs) {
        if (mTelephonyManager == null) {
            return false;
        }

        boolean isInExtensionTime = mEmergencyCallEndRealtimeMs != Long.MIN_VALUE
                && (SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs;

@@ -84,9 +90,12 @@ public class SystemEmergencyHelper extends EmergencyHelper {
    private class EmergencyCallTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.CallStateListener{

        EmergencyCallTelephonyCallback() {}

        @Override
        public void onCallStateChanged(int state) {
            if (state == TelephonyManager.CALL_STATE_IDLE) {
                synchronized (SystemEmergencyHelper.this) {
                    if (mIsInEmergencyCall) {
                        mEmergencyCallEndRealtimeMs = SystemClock.elapsedRealtime();
                        mIsInEmergencyCall = false;
@@ -95,3 +104,4 @@ public class SystemEmergencyHelper extends EmergencyHelper {
            }
        }
    }
}
+8 −8
Original line number Diff line number Diff line
@@ -1527,8 +1527,6 @@ public class LocationProviderManager extends
                throw new IllegalArgumentException(mName + " provider is not a test provider");
            }

            final long identity = Binder.clearCallingIdentity();
            try {
            String locationProvider = location.getProvider();
            if (!TextUtils.isEmpty(locationProvider) && !mName.equals(locationProvider)) {
                // The location has an explicit provider that is different from the mock
@@ -1537,6 +1535,8 @@ public class LocationProviderManager extends
                        mName + "!=" + locationProvider);
            }

            final long identity = Binder.clearCallingIdentity();
            try {
                mProvider.setMockProviderLocation(location);
            } finally {
                Binder.restoreCallingIdentity(identity);