Loading services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java +20 −10 Original line number Original line Diff line number Diff line Loading @@ -35,17 +35,17 @@ public class SystemEmergencyHelper extends EmergencyHelper { private final Context mContext; private final Context mContext; private TelephonyManager mTelephonyManager; TelephonyManager mTelephonyManager; private boolean mIsInEmergencyCall; boolean mIsInEmergencyCall; private long mEmergencyCallEndRealtimeMs = Long.MIN_VALUE; long mEmergencyCallEndRealtimeMs = Long.MIN_VALUE; public SystemEmergencyHelper(Context context) { public SystemEmergencyHelper(Context context) { mContext = context; mContext = context; } } /** Called when system is ready. */ /** Called when system is ready. */ public void onSystemReady() { public synchronized void onSystemReady() { if (mTelephonyManager != null) { if (mTelephonyManager != null) { return; return; } } Loading @@ -64,14 +64,20 @@ public class SystemEmergencyHelper extends EmergencyHelper { return; return; } } synchronized (SystemEmergencyHelper.this) { mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber( mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber( intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER)); intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER)); } } } }, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL)); }, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL)); } } @Override @Override public boolean isInEmergency(long extensionTimeMs) { public synchronized boolean isInEmergency(long extensionTimeMs) { if (mTelephonyManager == null) { return false; } boolean isInExtensionTime = mEmergencyCallEndRealtimeMs != Long.MIN_VALUE boolean isInExtensionTime = mEmergencyCallEndRealtimeMs != Long.MIN_VALUE && (SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs; && (SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs; Loading @@ -84,9 +90,12 @@ public class SystemEmergencyHelper extends EmergencyHelper { private class EmergencyCallTelephonyCallback extends TelephonyCallback implements private class EmergencyCallTelephonyCallback extends TelephonyCallback implements TelephonyCallback.CallStateListener{ TelephonyCallback.CallStateListener{ EmergencyCallTelephonyCallback() {} @Override @Override public void onCallStateChanged(int state) { public void onCallStateChanged(int state) { if (state == TelephonyManager.CALL_STATE_IDLE) { if (state == TelephonyManager.CALL_STATE_IDLE) { synchronized (SystemEmergencyHelper.this) { if (mIsInEmergencyCall) { if (mIsInEmergencyCall) { mEmergencyCallEndRealtimeMs = SystemClock.elapsedRealtime(); mEmergencyCallEndRealtimeMs = SystemClock.elapsedRealtime(); mIsInEmergencyCall = false; mIsInEmergencyCall = false; Loading @@ -95,3 +104,4 @@ public class SystemEmergencyHelper extends EmergencyHelper { } } } } } } } services/core/java/com/android/server/location/provider/LocationProviderManager.java +8 −8 Original line number Original line Diff line number Diff line Loading @@ -1527,8 +1527,6 @@ public class LocationProviderManager extends throw new IllegalArgumentException(mName + " provider is not a test provider"); throw new IllegalArgumentException(mName + " provider is not a test provider"); } } final long identity = Binder.clearCallingIdentity(); try { String locationProvider = location.getProvider(); String locationProvider = location.getProvider(); if (!TextUtils.isEmpty(locationProvider) && !mName.equals(locationProvider)) { if (!TextUtils.isEmpty(locationProvider) && !mName.equals(locationProvider)) { // The location has an explicit provider that is different from the mock // The location has an explicit provider that is different from the mock Loading @@ -1537,6 +1535,8 @@ public class LocationProviderManager extends mName + "!=" + locationProvider); mName + "!=" + locationProvider); } } final long identity = Binder.clearCallingIdentity(); try { mProvider.setMockProviderLocation(location); mProvider.setMockProviderLocation(location); } finally { } finally { Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity); Loading Loading
services/core/java/com/android/server/location/injector/SystemEmergencyHelper.java +20 −10 Original line number Original line Diff line number Diff line Loading @@ -35,17 +35,17 @@ public class SystemEmergencyHelper extends EmergencyHelper { private final Context mContext; private final Context mContext; private TelephonyManager mTelephonyManager; TelephonyManager mTelephonyManager; private boolean mIsInEmergencyCall; boolean mIsInEmergencyCall; private long mEmergencyCallEndRealtimeMs = Long.MIN_VALUE; long mEmergencyCallEndRealtimeMs = Long.MIN_VALUE; public SystemEmergencyHelper(Context context) { public SystemEmergencyHelper(Context context) { mContext = context; mContext = context; } } /** Called when system is ready. */ /** Called when system is ready. */ public void onSystemReady() { public synchronized void onSystemReady() { if (mTelephonyManager != null) { if (mTelephonyManager != null) { return; return; } } Loading @@ -64,14 +64,20 @@ public class SystemEmergencyHelper extends EmergencyHelper { return; return; } } synchronized (SystemEmergencyHelper.this) { mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber( mIsInEmergencyCall = mTelephonyManager.isEmergencyNumber( intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER)); intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER)); } } } }, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL)); }, new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL)); } } @Override @Override public boolean isInEmergency(long extensionTimeMs) { public synchronized boolean isInEmergency(long extensionTimeMs) { if (mTelephonyManager == null) { return false; } boolean isInExtensionTime = mEmergencyCallEndRealtimeMs != Long.MIN_VALUE boolean isInExtensionTime = mEmergencyCallEndRealtimeMs != Long.MIN_VALUE && (SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs; && (SystemClock.elapsedRealtime() - mEmergencyCallEndRealtimeMs) < extensionTimeMs; Loading @@ -84,9 +90,12 @@ public class SystemEmergencyHelper extends EmergencyHelper { private class EmergencyCallTelephonyCallback extends TelephonyCallback implements private class EmergencyCallTelephonyCallback extends TelephonyCallback implements TelephonyCallback.CallStateListener{ TelephonyCallback.CallStateListener{ EmergencyCallTelephonyCallback() {} @Override @Override public void onCallStateChanged(int state) { public void onCallStateChanged(int state) { if (state == TelephonyManager.CALL_STATE_IDLE) { if (state == TelephonyManager.CALL_STATE_IDLE) { synchronized (SystemEmergencyHelper.this) { if (mIsInEmergencyCall) { if (mIsInEmergencyCall) { mEmergencyCallEndRealtimeMs = SystemClock.elapsedRealtime(); mEmergencyCallEndRealtimeMs = SystemClock.elapsedRealtime(); mIsInEmergencyCall = false; mIsInEmergencyCall = false; Loading @@ -95,3 +104,4 @@ public class SystemEmergencyHelper extends EmergencyHelper { } } } } } } }
services/core/java/com/android/server/location/provider/LocationProviderManager.java +8 −8 Original line number Original line Diff line number Diff line Loading @@ -1527,8 +1527,6 @@ public class LocationProviderManager extends throw new IllegalArgumentException(mName + " provider is not a test provider"); throw new IllegalArgumentException(mName + " provider is not a test provider"); } } final long identity = Binder.clearCallingIdentity(); try { String locationProvider = location.getProvider(); String locationProvider = location.getProvider(); if (!TextUtils.isEmpty(locationProvider) && !mName.equals(locationProvider)) { if (!TextUtils.isEmpty(locationProvider) && !mName.equals(locationProvider)) { // The location has an explicit provider that is different from the mock // The location has an explicit provider that is different from the mock Loading @@ -1537,6 +1535,8 @@ public class LocationProviderManager extends mName + "!=" + locationProvider); mName + "!=" + locationProvider); } } final long identity = Binder.clearCallingIdentity(); try { mProvider.setMockProviderLocation(location); mProvider.setMockProviderLocation(location); } finally { } finally { Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity); Loading